在我的项目目录中运行stack sdist
时,stack.yaml
文件不包含在tarball中(这似乎是be expected)。
因此,当我将tarball上传到hackage时,stack install mypackage
它会抱怨我在extra-deps
文件中指定的缺少依赖项(stack.yaml
)。
$ stack install pandoc-placetable
Run from outside a project, using implicit global project config
Using resolver: lts-5.17 from implicit global project's config file: ~/.stack/global-project/stack.yaml
While constructing the BuildPlan the following exceptions were encountered:
-- Failure when adding dependencies:
spreadsheet: needed (>=0.1.3 && <0.1.4), not present in build plan (latest applicable is 0.1.3.4)
needed for package: pandoc-placetable-0.4
-- While attempting to add dependency,
Could not find package spreadsheet in known packages
Recommended action: try adding the following to your extra-deps in /Users/maurobieg/.stack/global-project/stack.yaml
- spreadsheet-0.1.3.4
或者制作hackage包stack
的推荐方法是什么 - 如果它有进一步的hackage依赖性,可以安装吗?
更新:我刚刚将extra-source-files: stack.yaml
添加到cabal文件中,stack.yaml
确实包含在新发布版本的tarbal中。尽管如此,stack install pandoc-placetable-0.4.1
仍然会出现同样的错误。
我还可以告诉那些不希望在他们的系统上安装cabal-install
的人从GitHub克隆,然后使用stack
进行构建。这是小包裹的推荐方法吗?或者我应该要求他们将pandoc-placetable
(即spreadsheet
)的依赖关系纳入其全球stack.yaml
?闻起来污染全球文件...
答案 0 :(得分:1)
正如@mgsloan在上面的评论中提到的那样:开放stack issue about using stack.yaml from hackage package。
我想直到它被修复我才会告诉人们从GitHub(或者@MichaelSnoyman提到stack unpack
)然后cd
克隆到新创建的目录中和stack install
那里。