在我自己的项目中包含Hackage已发布库的分支和未发布版本的最佳方法

时间:2019-04-22 08:14:42

标签: haskell haskell-stack

我正在使用stack在Haskell中构建一个项目,并且需要更新我的项目所依赖的库之一-让我们将其命名为otherlib

我分叉了otherlib并进行了必要的更改,增加了版本号(我们称之为0.9.1版),并使用cabal(该项目使用的版本)进行了构建,并且运行cabal install otherlib将修改后的版本放入本地缓存。现在,我想尽可能合理地将其包含在自己的项目中。

我对otherlib所做的更改是(IMO)相当合理的,一旦创建PR,维护者就有机会接受更改。但与此同时,我有一个版本不在stack的解决方案集中。

在我的otherlib-0.9.1依赖项中包含package.yaml无效,也没有将其添加到我的stack.yaml的{​​{1}}中。

是否有很好的设置方法?

2 个答案:

答案 0 :(得分:4)

您可以在stack.yaml的ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 中指定Git存储库(及其修订版)。

下面是the document的示例:

extra-deps

仅当存储库包含多个软件包(例如yesodweb)时,才需要注意extra-deps: - git: git@github.com:yesodweb/wai commit: 2f8a8e1b771829f4a8a77c0111352ce45a14c30f subdirs: - auto-update - wai

答案 1 :(得分:0)

除了yuji-yamamoto正确正确的答案外,我还发现我也可以从otherlib目录建立符号链接,直接将其链接到我自己项目的基本目录中,并将其名称添加到packages中的stack.yaml。具体来说,修改后的部分将显示为:

packages:
- .
- otherlib-0.9.1

..,目录本身也称为otherlib-0.9.1

在其他liblib在本地文件系统之外的任何地方仍不可用的情况下,此解决方案将起作用。