I installed Haskell via ghcup
I have installed the HLS via ghcup
I have ghcup set 9.6.1
I have the VS Code extension: https://marketplace.visualstudio.com/items?itemName=haskell.haskell
When I open the project in VS Code I get the following error:
Failed to find the GHC version of this Stack project. Error when calling stack setup --silent
So far I have been using Cabal in the terminal outside of VS Code e.g. cabal build
cabal repl
etc
I notice that VS Code is trying to use stack
... if I try and use Stack in the terminal I get errors like:
$ stack build
Error: [S-9443]
No setup information found for ghc-8.6.5 on your platform.
This probably means a GHC bindist has not yet been added for OS key 'macosx-aarch64'.
Supported versions: ghc-8.10.5, ghc-8.10.6, ghc-8.10.7, ghc-9.0.2, ghc-9.2.1, ghc-9.2.2, ghc-9.2.3, ghc-9.2.4, ghc-9.2.5, ghc-9.2.6, ghc-9.2.7, ghc-9.4.1, ghc-9.4.2, ghc-9.4.3, ghc-9.4.4, ghc-9.6.1
I don't know why Stack wants to use GHC 8.6.5, or if this is related to the problem that VS Code extension is having
No idea really what to do, the instructions are ...minimal https://www.haskell.org/ghcup/install/#vscode-integration
Issue discussed in more detail here: https://github.com/haskell/vscode-haskell/issues/841
Essentially I had a collection of problems, some because the project I was trying to open was old, and some because I am still finding my way around the ghcup toolchain:
ghcup
and thus needed some config tweaks.cabal
and a stack.yaml
filestack.yaml
defined resolver: lts-14.4
... this represents a "stackage snapshot" version. I'm not entirely sure what that is, I think it is a concept that doesn't exist in package managers I have used in other languages. I think it is a frozen set of package versions, in this case so old they are only compatible with the old GHC 8.6.5 version, thus was unusable with the GHC 9.x I was trying to use currently, leading to errors - VS Code extension was trying to use this to install dependenciesghcup
but apparently it's not possible to install a Haskell Language Server for that version yetSo a bunch of fixes were needed:
stack.yaml
... it had an obsolete resolver
and also defined:
packages:
- '.'
which seemed to prevent VS Code from installing any dependencies.
The stack.yaml
didn't seem to be doing anything useful.build-depends: base >=4.0 && <4.13
so that a version compatible with GHC 9.x could be resolved)ghcup set ghc
to end up with older GHC 9.2.5, this seems to have a compatible HLS version installed.$ ghcup set 9.6.1
[ Warn ] This is an old-style command for setting GHC. Use 'ghcup set ghc' instead.
I do still have "haskell.manageHLS": "GHCup"
in my VS Code settings.json
, not sure if this is needed or not.