【问题标题】:Haskell Stack doesn't use system GhcHaskell Stack 不使用系统 Ghc
【发布时间】:2017-06-09 14:16:57
【问题描述】:

我正在尝试使用 Haskell Stack 设置项目,但使用提供的 ghc 堆栈我遇到 -fPIC 错误 GitHub issue

为了绕过 fPIC 问题,我尝试使用包管理器提供的 GHC,使用 7.10.3 版本(堆栈当前使用 8.0.2)

当我尝试强制堆栈使用系统 ghc 时,它会忽略我。 我尝试使用 /home/user/.stack/config.yaml 和 {project}/stack.yaml system-ghc 覆盖:true 选项...但堆栈在设置中使用 8.0.2 版本。

我错过了什么吗?

TL;DR

堆栈忽略 system-ghc : true 选项

我正在运行 Sabayon 16


“haskell-primer”是项目名称

stack list-dependencies

base 4.9.1.0
ghc-prim 0.5.0.0
haskell-primer 0.1.0.0
integer-gmp 1.0.0.1
rts 1.0

【问题讨论】:

  • 我认为(不确定)如果依赖解析器认为它合适,堆栈只会使用系统 ghc。检查您的依赖项之一是否需要 ghc8。
  • 感谢您的评论。我检查了 stack list-dependencies ` stack list-dependencies base 4.9.1.0 ghc-prim 0.5.0.0 haskell-primer 0.1.0.0 integer-gmp 1.0.0.1 rts 1.0`
  • 覆盖解析器进入 stack.yaml 似乎有效。我将它编辑为使用 lts-6.35,现在它映射到 system-ghc。但是......我不知道这是否是解决问题的方法。我不想手动编辑我所有的 stack.yaml 文件...
  • 为什么需要使用系统GHC?在stack.yaml 文件中指定您所需的lts,堆栈将使用您需要的任何版本的GHC。这是为特定项目选择特定 GHC 版本的正确方法。

标签: haskell haskell-stack


【解决方案1】:

设置system-ghc: true 允许 如果系统 GHC 与解析器的约束匹配,则堆栈可以使用它。如果不匹配约束,它不会强制 Stack 使用系统 GHC。如果您的解析器需要 GHC 8 但您的系统具有 GHC 7,那么无论您给 system-ghc 提供什么值,Stack 都不会使用您的系统 GHC。相反,如果 system-ghc: false 则 Stack 将从不使用系统 GHC,无论其版本是否匹配。

来自Stack FAQ,强调我的:

如果您希望堆栈使用您的系统 GHC 安装,请使用 --system-ghc 标志或运行 stack config set system-ghc --global true 以使堆栈默认检查您的 PATH 是否有合适的 GHC。

请注意,stack 只能使用系统 GHC 安装,前提是其版本与当前项目的配置兼容,尤其是 resolver 设置

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多