![](/img/trans.png)
[英]Haskell stack ignores -Wall -Werror cabal ghc-options flags when building
[英]Cabal / Stack ignores ghc-options for custom Setup scripts
我正在尝试让 Stack 在 Arch 系统上工作。 我已经做了通常的:
pacman -S ghc stack cabal-install
然后在~/.stack/config.yaml
中放入以下内容,这样就可以使用系统 GHC 和动态库了(上面的包不包括 static 库):
system-ghc: true
ghc-options:
"$everything": -dynamic
configure-options:
"$everything":
- -dynamic
但是当我尝试安装某些东西时(即stack install wai
)我看到它试图构建一个自定义安装脚本:
/usr/bin/ghc-8.6.5 -rtsopts -threaded -clear-package-db -global-package-db -hide-all-packages -package base -main-is StackSetupShim.mainOverride -package Cabal-2.4.0.1 /home/alba/.stack/setup-exe-src/setup-mPHDZzAJ.hs /home/alba/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs -o /home/alba/.stack/setup-exe-cache/x86_64-linux/tmp-Cabal-simple_mPHDZzAJ_2.4.0.1_ghc-8.6.5
而且我的选择没有得到尊重,因此构建尝试使用 static 库(并且失败)。 有什么方法可以让 Stack/Cabal 在构建Setup.hs
时使用某些选项?
编辑:我发现了相关问题; 似乎不可能:
堆栈:根本无法使用没有 static 库的系统 GHC (#3409)
cabal: executable-dynamic: True
应该适用于build-type: Custom
设置 #1720
相关:在某些情况下,阴谋集团似乎总是会尝试构建 static + dynamic,即使您另有说明。
目前,我最终使用的部分解决方案是使用包装器强制选项。
在 ~/.local/bin/ghc-8.6.5 放:
#!/bin/sh
exec /usr/bin/ghc-8.6.5 -dynamic "$@"
然后:
cd ~/.local/bin
chmod +x ghc-8.6.5
ln -s ghc{-8.6.5,}
ln -s {/usr/bin,.}/ghc-pkg-8.6.5
ln -s {/usr/bin,.}/runghc-8.6.5
ln -s {/usr/bin,.}/haddock-ghc-8.6.5
确保它在您的 PATH 中,并且您对 go 很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.