Rom*_*aka 7 haskell ghc haskell-stack
我想拥有相同版本的GHC的不同的,非ABI兼容的版本,并在不同的项目中使用它们.
(在我的例子中,构建之间的差异是整数 - 简单与gmp.)
本期中的评论显示了如何添加ghc的自定义风格stack-setup-2.yaml
.但是,如何指定在每个特定情况或项目中使用哪个ghc构建?
即我正在寻找一个(更好的,两个):
stack.yaml
是使用整数简单还是gmp构建.stack build
要生成的构建.您可以使用该ghc-variant
选项或--ghc-variant
标志.
如果您使用的是Windows并使用默认的stack-setup-2.yaml,则构建--ghc-variant integersimple
时应使用与使用时不同的GHC --ghc-variant standard
.
其他答案很好,但这是一个完整的示例,因此您不必从提供的链接中将其拼凑在一起。
把它放在你的stack.yaml
文件中:
resolver: lts-12.20
setup-info:
ghc:
linux64-custom-dwarf:
8.4.4:
url: "https://downloads.haskell.org/~ghc/8.4.4/ghc-8.4.4-x86_64-deb9-linux-dwarf.tar.xz"
sha256: f9cac6e402c71d7251f2e22f412fb4abd72c64f34481a1e548cd7f6ff2352a07
ghc-variant: dwarf
Run Code Online (Sandbox Code Playgroud)
在这setup-info
部分中,我提供了 bindist 的路径、校验和(可选但推荐用于可重复性),然后说我想使用这个自定义 ghc with ghc-variant: dwarf
(它似乎通过将单词附加dwarf
到linux64-custom-dwarf
来将in 变成linux64-custom-
)。
如果要跨项目共享该自定义 ghc 的定义,也可以将该setup-info
部分放入$HOME/.stack/config.yaml
.
GHC 黑客注意:如果你想破解 ghc 本身并使用经常更新的 GHC 快速迭代你的包,那么这种你只覆盖 GHC 二进制文件而不是声明一个完全构建的绑定器的方法更好(因为你没有每次重新编译时都构建一个绑定器)。
归档时间: |
|
查看次数: |
912 次 |
最近记录: |