haskell - Cabal/Stack 忽略自定义安装脚本的 ghc-options

我正在尝试让 Stack 在 Arch 系统上运行。我做了通常的:

pacman -S ghc stack cabal-install

然后把下面的放在~/.stack/config.yaml里,这样就可以使用系统GHC和动态库了(上面的包包括静态库):

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

而且我的选项没有被接受,所以构建尝试使用静态库(但失败了)。有什么方法可以让 Stack/Cabal 在构建 Setup.hs 时使用某些选项?

最佳答案

编辑:我发现了相关问题;这似乎是不可能的:

stack: Can't use system GHC without static libraries at all (#3409) 强>
cabal: executable-dynamic: True should apply to build-type: Custom setup #1720

相关:在某些情况下,cabal 似乎总是会尝试构建静态 + 动态,即使您另有说明也是如此。


目前,我最终使用的部分解决方案是使用包装器强制该选项。

在 ~/.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 中,您就可以开始了。

https://stackoverflow.com/questions/58559840/

相关文章:

python - 如何理解 4x4 混淆矩阵?

python-3.x - 模块错误 : Rasterio has no attribute open

amazon-web-services - Cloudwatch 中未显示 Cognito 的指标

postgresql - 通过 EC2 从 sqlalchemy 连接 AWS RDS

javascript - 如何使用 yarn 将 NodeJS/React 应用程序部署到 Hero

azure-devops - "kubeconfig"选项的 Azure Devops kubern

django - 重定向到 Django Admin 中的过滤列表

python - Jupyter 循环播放声音

python - 在 Python 中打印大型 JSON 文件的前几行

c# - .Net Core Linux 不支持 SecurityIdentifier?