为什么每晚进行堆栈构建时,GHC版本不符合预期?

时间:2018-07-10 22:24:01

标签: ghc haskell-stack

使用堆栈时如何确定GHC版本?

我认为这将是解决方案,但是...

我有以下堆栈文件:

resolver: nightly-2018-07-10
packages:
- .

这就是堆放中的内容:

Stackage Nightly 2018-07-10 (ghc-8.4.3)
Published on 2018-07-10
View changes
stack resolver: nightly-2018-07-10 

然后我建立:

$ stack clean
$ stack build
Building all executables for `PyrethrumPre' once. After a successful build      
of all of them, only specified executables will be rebuilt.
PyrethrumPre-0.1.0.0: configure (exe)
Configuring PyrethrumPre-0.1.0.0...
PyrethrumPre-0.1.0.0: build (exe)
Preprocessing executable 'PyrethrumPre' for PyrethrumPre-0.1.0.0..
Building executable 'PyrethrumPre' for PyrethrumPre-0.1.0.0..
[1 of 2] Compiling MTLPlusLens      ( src\MTLPlusLens.hs, .stack-work\dist  \7d103d30\build\PyrethrumPre\PyrethrumPre-tmp\MTLPlusLens.o )
[2 of 2] Compiling Main             ( src\Main.hs, .stack-work\dist\7d103d30\build\PyrethrumPre\PyrethrumPre-tmp\Main.o )
Linking .stack-work\dist\7d103d30\build\PyrethrumPre\PyrethrumPre.exe ...
PyrethrumPre-0.1.0.0: copy/register
Installing executable PyrethrumPre in C:\PyrethrumPre\.stack-work\install\cd327184\bin

目前,我预计解析器的GHC值将为8.4.3:

$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 8.2.2

为什么GHC版本不符合预期?

谢谢

1 个答案:

答案 0 :(得分:2)

Stack在~/.stack下的“专用”位置安装了项目所需的GHC版本,该位置不在常规$ PATH上的ghc位置。您看到的ghc版本是系统范围内安装的版本(可能是系统的程序包管理器安装的版本),Stack默认会忽略该版本。要查看Stack实际用于构建项目的版本,请使用stack exec -- ghc --versionstack exec创建一个shell上下文,其中包括$ PATH上正确版本的ghc,以及其他更改。