创建可以使用堆栈安装的hackage包

时间:2016-10-26 09:51:19

标签: haskell haskell-stack

在我的项目目录中运行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?闻起来污染全球文件...

1 个答案:

答案 0 :(得分:1)

正如@mgsloan在上面的评论中提到的那样:开放stack issue about using stack.yaml from hackage package

我想直到它被修复我才会告诉人们从GitHub(或者@MichaelSnoyman提到stack unpack)然后cd克隆到新创建的目录中和stack install那里。