39

情况是,我正在尝试使用 Stack 安装 Netwire。但是,最新的 netwire 5.0.1 中存在问题,正如 dhobbs 报告的那样:http: //hub.darcs.net/ertes/netwire/issue/13

由于我不知道问题何时会得到解决,所以我下载了 repo 并自己进行了更改。但是,我不明白如何安装这样的本地补丁版本。stack install不会将其安装到~/.stack. 有人有想法吗?

更新

现在我正在使用 Stack 开发其他一些库。如何让另一个项目使用该库?硬编码相对路径看起来非常难看。

4

1 回答 1

26

因此,您有一个项目,您想在其中使用本地修补的 Netwire 版本,并且在您的项目中,您有一个stack.yml.,例如:

flags: {}
packages:
- '.'
extra-deps: {}
resolver: lts-3.7

您还依赖于netwirecabal 文件中声明的内容。

要在你的这个项目中使用你修补过的 Netwire,你只需将修补过的 Netwire 包放在你的项目的子目录中,可能叫做netwire,然后更新你stack.yml的:

flags: {}
packages:
- '.'
- netwire
extra-deps: {}
resolver: lts-3.7

现在stack build将使用修补过的 Netwire 版本构建您的项目。

您还可以将修改后的源放到网上(如果许可证允许)并使用 tarball URL引用

- https://example.com/netwire.tar.gz

或 git 存储库和提交参考:

- location:
    git: git@example.com/netwire
    commit: 6a86ee32e5b869a877151f74064572225e1a0398

(查看文档以获取更多信息:https ://docs.haskellstack.org/en/stable/yaml_configuration/#packages-and-extra-deps )

于 2015-09-29T20:00:39.727 回答