首页 文章

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

提问于
浏览
1

在我的项目目录中运行 stack sdist 时, stack.yaml 文件不包含在tarball中(这似乎是be expected) .

因此,当我将tarball上传到hackage时, stack install mypackage 它抱怨我在 stack.yaml 文件中指定的缺少依赖项( extra-deps ) .

$ 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包具有进一步的hackage依赖性,那么建议使用hackage包 stack -installable的方法是什么?

Update :我刚刚将 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 回答

  • 1

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

    我想直到's fixed I' ll告诉人们从GitHub(或者@MichaelSnoyman提到 stack unpack )然后 cd 克隆到新创建的目录和 stack install 那里 .

相关问题