Стек использует неверную версию GH C - PullRequest
0 голосов
/ 05 марта 2020

Я установил версию 8.6.5 ghc в моей системе (Debian 9), и это единственная доступная версия (подробности см. Ниже). Я пытаюсь построить этот проект: https://github.com/deech/fltkhs-themes-demo

Итак, я установил последний стек (Version 2.1.3, Git revision 636e3a759d51127df2b62f90772def126cdf6d1f (7735 commits) x86_64 hpack-0.31.2) и пытаюсь скомпилировать проект:

git clone git@github.com:deech/fltkhs-themes-demo.git
cd fltkhs-themes-demo/
stack build --flag fltkhs:bundled

Сначала я получаю следующее:

Stack has not been tested with GHC versions above 8.6, and using 8.8.2, this may fail
Stack has not been tested with Cabal versions above 2.4, but version 3.0.1.0 was found, this may fail
asset-bundle      > configure

Теперь я установил ~/.stack/config.yaml для системы gh c:

% stack config set system-ghc --global true
/home/mark/.stack/config.yaml has been updated.

Настройки кажутся правильными:

% cat ~/.stack/config.yaml
templates:
  params: null
system-ghc: true

Так почему же стек использует gh c 8.8.2?

Это тем более странно, потому что проект, похоже, использует указанную версию gh c в своей stack.yaml:

cat fltkhs-themes-demo/stack.yaml
resolver: lts-15.0
allow-newer: true
extra-deps:
- fltkhs-0.8.0.3
- fltkhs-themes-0.2.0.3
- load-font-0.1.0.3
- asset-bundle-0.1.0.1

Как заставить его использовать gh c 8.6.5?

Подробнее о моей системе:

user@system ~ % ls -1 .ghcup/bin
cabal
ghc
ghc-8.6
ghc-8.6.5
ghci
ghci-8.6
ghci-8.6.5
ghc-pkg
ghc-pkg-8.6
ghc-pkg-8.6.5
ghcup
haddock
haddock-8.6
haddock-8.6.5
haddock-ghc
haddock-ghc-8.6
haddock-ghc-8.6.5
hp2ps
hp2ps-8.6
hp2ps-8.6.5
hpc
hpc-8.6
hpc-8.6.5
hsc2hs
hsc2hs-8.6
hsc2hs-8.6.5
runghc
runghc-8.6
runghc-8.6.5
runhaskell
runhaskell-8.6
runhaskell-8.6.5

user@system ~ % cabal --version
cabal-install version 3.0.0.0
compiled using version 3.0.0.0 of the Cabal library 

user@system ~ % ghc --version
The Glorious Glasgow Haskell Compilation System, version 8.6.5

user@system ~ % which ghc
/home/user/.ghcup/bin/ghc

1 Ответ

1 голос
/ 06 марта 2020

Каждый распознаватель стека связан с определенной c GH C версией. В этом случае, если вы выберете распознаватель, который использует версию GH C, отличную от той, которую вы установили для всей системы, Stack установит ее независимо от параметра system-ghc. * * * * * * * * * * * * * * *

* * * * * * * * * *1006* * * * * * * Примечание: стек может использовать системную установку GH C, только если его версия совместима с конфигурацией текущего проекта, в частности, с определителем.

В вашем случае lts-15.0 использует GH C 8.8.2, как это видно на на странице стека . Если вы хотите использовать 8.6.5 вашей системы, вы можете переключить преобразователь на lts-14.27, , который на данный момент является самым последним LTS, который использует 8.6.5 .

...