Skip to content

Failing to auto-download HLS on macOS #500

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
lylek opened this issue Nov 15, 2021 · 9 comments
Closed

Failing to auto-download HLS on macOS #500

lylek opened this issue Nov 15, 2021 · 9 comments
Labels
os: macOS macOS related issues status: needs attention type: bug A bug or unintended effect

Comments

@lylek
Copy link

lylek commented Nov 15, 2021

When I open a project, I get errors from the extension that it crashed 5 times in the last 3 minutes. Looking at the log, it appears that it's correctly deducing the project GHC version as 8.10.7. Then it's complaining that it can't find any HLS executable. But isn't it supposed to automatically download it? It's a supported version. Do I need to manually download and install it?

Using latest version of the extension, latest VS Code. Have tried restarting VS Code, reinstalling the extension. Here's the log:

Module "/Users/lyle/Sync/devel/haskell/clockify-api/a" is loaded by Cradle: Cradle {cradleRootDir = "/Users/lyle/Sync/devel/haskell/clockify-api", cradleOptsProg = CradleAction: Stack}
Run entered for haskell-language-server-wrapper(haskell-language-server-wrapper) Version 1.1.0.0, Git revision f1c096927186a93d8e3ccd4fe8385cc1b070350b (dirty) x86_64 ghc-8.10.4
Current directory: /Users/lyle/Sync/devel/haskell/clockify-api
Operating system: darwin
Arguments: ["--lsp","-d"]
Cradle directory: /Users/lyle/Sync/devel/haskell/clockify-api
Cradle type: Stack

Tool versions found on the $PATH
cabal:		3.6.2.0
stack:		2.7.3
ghc:		9.2.1


Consulting the cradle to get project GHC version...
Project GHC version: 8.10.7
haskell-language-server exe candidates: ["haskell-language-server-8.10.7","haskell-language-server-8.10","haskell-language-server"]
Cannot find any haskell-language-server exe, looked for: haskell-language-server-8.10.7, haskell-language-server-8.10, haskell-language-server
[Info  - 10:02:26 PM] Connection to server got closed. Server will restart.
Module "/Users/lyle/Sync/devel/haskell/clockify-api/a" is loaded by Cradle: Cradle {cradleRootDir = "/Users/lyle/Sync/devel/haskell/clockify-api", cradleOptsProg = CradleAction: Stack}
Run entered for haskell-language-server-wrapper(haskell-language-server-wrapper) Version 1.1.0.0, Git revision f1c096927186a93d8e3ccd4fe8385cc1b070350b (dirty) x86_64 ghc-8.10.4
Current directory: /Users/lyle/Sync/devel/haskell/clockify-api
Operating system: darwin
Arguments: ["--lsp","-d"]
Cradle directory: /Users/lyle/Sync/devel/haskell/clockify-api
Cradle type: Stack

Tool versions found on the $PATH
cabal:		3.6.2.0
stack:		2.7.3
ghc:		9.2.1


Consulting the cradle to get project GHC version...
Project GHC version: 8.10.7
haskell-language-server exe candidates: ["haskell-language-server-8.10.7","haskell-language-server-8.10","haskell-language-server"]
Cannot find any haskell-language-server exe, looked for: haskell-language-server-8.10.7, haskell-language-server-8.10, haskell-language-server
[Info  - 10:02:27 PM] Connection to server got closed. Server will restart.
Module "/Users/lyle/Sync/devel/haskell/clockify-api/a" is loaded by Cradle: Cradle {cradleRootDir = "/Users/lyle/Sync/devel/haskell/clockify-api", cradleOptsProg = CradleAction: Stack}
Run entered for haskell-language-server-wrapper(haskell-language-server-wrapper) Version 1.1.0.0, Git revision f1c096927186a93d8e3ccd4fe8385cc1b070350b (dirty) x86_64 ghc-8.10.4
Current directory: /Users/lyle/Sync/devel/haskell/clockify-api
Operating system: darwin
Arguments: ["--lsp","-d"]
Cradle directory: /Users/lyle/Sync/devel/haskell/clockify-api
Cradle type: Stack

Tool versions found on the $PATH
cabal:		3.6.2.0
stack:		2.7.3
ghc:		9.2.1


Consulting the cradle to get project GHC version...
Project GHC version: 8.10.7
haskell-language-server exe candidates: ["haskell-language-server-8.10.7","haskell-language-server-8.10","haskell-language-server"]
Cannot find any haskell-language-server exe, looked for: haskell-language-server-8.10.7, haskell-language-server-8.10, haskell-language-server
[Info  - 10:02:28 PM] Connection to server got closed. Server will restart.
Module "/Users/lyle/Sync/devel/haskell/clockify-api/a" is loaded by Cradle: Cradle {cradleRootDir = "/Users/lyle/Sync/devel/haskell/clockify-api", cradleOptsProg = CradleAction: Stack}
Run entered for haskell-language-server-wrapper(haskell-language-server-wrapper) Version 1.1.0.0, Git revision f1c096927186a93d8e3ccd4fe8385cc1b070350b (dirty) x86_64 ghc-8.10.4
Current directory: /Users/lyle/Sync/devel/haskell/clockify-api
Operating system: darwin
Arguments: ["--lsp","-d"]
Cradle directory: /Users/lyle/Sync/devel/haskell/clockify-api
Cradle type: Stack

Tool versions found on the $PATH
cabal:		3.6.2.0
stack:		2.7.3
ghc:		9.2.1


Consulting the cradle to get project GHC version...
Project GHC version: 8.10.7
haskell-language-server exe candidates: ["haskell-language-server-8.10.7","haskell-language-server-8.10","haskell-language-server"]
Cannot find any haskell-language-server exe, looked for: haskell-language-server-8.10.7, haskell-language-server-8.10, haskell-language-server
[Info  - 10:02:29 PM] Connection to server got closed. Server will restart.
Module "/Users/lyle/Sync/devel/haskell/clockify-api/a" is loaded by Cradle: Cradle {cradleRootDir = "/Users/lyle/Sync/devel/haskell/clockify-api", cradleOptsProg = CradleAction: Stack}
Run entered for haskell-language-server-wrapper(haskell-language-server-wrapper) Version 1.1.0.0, Git revision f1c096927186a93d8e3ccd4fe8385cc1b070350b (dirty) x86_64 ghc-8.10.4
Current directory: /Users/lyle/Sync/devel/haskell/clockify-api
Operating system: darwin
Arguments: ["--lsp","-d"]
Cradle directory: /Users/lyle/Sync/devel/haskell/clockify-api
Cradle type: Stack

Tool versions found on the $PATH
cabal:		3.6.2.0
stack:		2.7.3
ghc:		9.2.1


Consulting the cradle to get project GHC version...
Project GHC version: 8.10.7
haskell-language-server exe candidates: ["haskell-language-server-8.10.7","haskell-language-server-8.10","haskell-language-server"]
Cannot find any haskell-language-server exe, looked for: haskell-language-server-8.10.7, haskell-language-server-8.10, haskell-language-server
[Error - 10:02:30 PM] Connection to server got closed. Server will not be restarted.
@lylek
Copy link
Author

lylek commented Nov 15, 2021

I was able to get it to work by running ghcup install hls, which downloaded version 1.4.0. Is this now a required part of the process?

@jneira
Copy link
Member

jneira commented Nov 15, 2021

@lylek hi! thanks for the bug report, from the report i guess you are on a new mac with the new arm chipset:

Could you confirm that such is your case? thanks!

@jneira jneira added os: macOS macOS related issues status: need confirmation type: bug A bug or unintended effect labels Nov 15, 2021
@lylek
Copy link
Author

lylek commented Nov 15, 2021

Hi @jneira, thanks for your response. I'm using a late-2016 model (Touch Bar) Intel Mac, with Big Sur. Not a new Mac with the Arm chipset, though I will be getting one of those soon.

@jneira
Copy link
Member

jneira commented Nov 15, 2021

Ok, thanks for confirming it, i dont see the output from the client side in the log, could you change the config as described here: https://github.com/haskell/vscode-haskell#investigating-and-reporting-problems to see if we can see something more in the output?. does the extension shows any alert about downloading hls?

@lylek
Copy link
Author

lylek commented Nov 16, 2021

OK, I set the extension config as you requested, uninstalled HLS, and restarted VS Code. I got the output below. I don't see anything in there about downloading.

[client][INFO] Searching for server executables haskell-language-server-wrapper,haskell-language-server in $PATH
[client][INFO] Found server executable in $PATH: haskell-language-server-wrapper
[client][INFO] Activating the language server in the workspace folder: /Users/lyle/Sync/devel/haskell/clockify-api
[client][INFO] run command: haskell-language-server-wrapper --lsp -d
[client][INFO] debug command: haskell-language-server-wrapper --lsp -d
[client][INFO] document selector patten: /Users/lyle/Sync/devel/haskell/clockify-api/**/*
[client][INFO] Starting language server
Module "/Users/lyle/Sync/devel/haskell/clockify-api/a" is loaded by Cradle: Cradle {cradleRootDir = "/Users/lyle/Sync/devel/haskell/clockify-api", cradleOptsProg = CradleAction: Stack}
Run entered for haskell-language-server-wrapper(haskell-language-server-wrapper) Version 1.1.0.0, Git revision f1c096927186a93d8e3ccd4fe8385cc1b070350b (dirty) x86_64 ghc-8.10.4
Current directory: /Users/lyle/Sync/devel/haskell/clockify-api
Operating system: darwin
Arguments: ["--lsp","-d"]
Cradle directory: /Users/lyle/Sync/devel/haskell/clockify-api
Cradle type: Stack

Tool versions found on the $PATH
cabal:		3.6.2.0
stack:		2.7.3
ghc:		9.2.1


Consulting the cradle to get project GHC version...
Project GHC version: 8.10.7
haskell-language-server exe candidates: ["haskell-language-server-8.10.7","haskell-language-server-8.10","haskell-language-server"]
Cannot find any haskell-language-server exe, looked for: haskell-language-server-8.10.7, haskell-language-server-8.10, haskell-language-server
[Info  - 10:47:47 PM] Connection to server got closed. Server will restart.
Module "/Users/lyle/Sync/devel/haskell/clockify-api/a" is loaded by Cradle: Cradle {cradleRootDir = "/Users/lyle/Sync/devel/haskell/clockify-api", cradleOptsProg = CradleAction: Stack}
Run entered for haskell-language-server-wrapper(haskell-language-server-wrapper) Version 1.1.0.0, Git revision f1c096927186a93d8e3ccd4fe8385cc1b070350b (dirty) x86_64 ghc-8.10.4
Current directory: /Users/lyle/Sync/devel/haskell/clockify-api
Operating system: darwin
Arguments: ["--lsp","-d"]
Cradle directory: /Users/lyle/Sync/devel/haskell/clockify-api
Cradle type: Stack

Tool versions found on the $PATH
cabal:		3.6.2.0
stack:		2.7.3
ghc:		9.2.1


Consulting the cradle to get project GHC version...
Project GHC version: 8.10.7
haskell-language-server exe candidates: ["haskell-language-server-8.10.7","haskell-language-server-8.10","haskell-language-server"]
Cannot find any haskell-language-server exe, looked for: haskell-language-server-8.10.7, haskell-language-server-8.10, haskell-language-server
[Info  - 10:47:48 PM] Connection to server got closed. Server will restart.
Module "/Users/lyle/Sync/devel/haskell/clockify-api/a" is loaded by Cradle: Cradle {cradleRootDir = "/Users/lyle/Sync/devel/haskell/clockify-api", cradleOptsProg = CradleAction: Stack}
Run entered for haskell-language-server-wrapper(haskell-language-server-wrapper) Version 1.1.0.0, Git revision f1c096927186a93d8e3ccd4fe8385cc1b070350b (dirty) x86_64 ghc-8.10.4
Current directory: /Users/lyle/Sync/devel/haskell/clockify-api
Operating system: darwin
Arguments: ["--lsp","-d"]
Cradle directory: /Users/lyle/Sync/devel/haskell/clockify-api
Cradle type: Stack

Tool versions found on the $PATH
cabal:		3.6.2.0
stack:		2.7.3
ghc:		9.2.1


Consulting the cradle to get project GHC version...
Project GHC version: 8.10.7
haskell-language-server exe candidates: ["haskell-language-server-8.10.7","haskell-language-server-8.10","haskell-language-server"]
Cannot find any haskell-language-server exe, looked for: haskell-language-server-8.10.7, haskell-language-server-8.10, haskell-language-server
[Info  - 10:47:49 PM] Connection to server got closed. Server will restart.
Module "/Users/lyle/Sync/devel/haskell/clockify-api/a" is loaded by Cradle: Cradle {cradleRootDir = "/Users/lyle/Sync/devel/haskell/clockify-api", cradleOptsProg = CradleAction: Stack}
Run entered for haskell-language-server-wrapper(haskell-language-server-wrapper) Version 1.1.0.0, Git revision f1c096927186a93d8e3ccd4fe8385cc1b070350b (dirty) x86_64 ghc-8.10.4
Current directory: /Users/lyle/Sync/devel/haskell/clockify-api
Operating system: darwin
Arguments: ["--lsp","-d"]
Cradle directory: /Users/lyle/Sync/devel/haskell/clockify-api
Cradle type: Stack

Tool versions found on the $PATH
cabal:		3.6.2.0
stack:		2.7.3
ghc:		9.2.1


Consulting the cradle to get project GHC version...
Project GHC version: 8.10.7
haskell-language-server exe candidates: ["haskell-language-server-8.10.7","haskell-language-server-8.10","haskell-language-server"]
Cannot find any haskell-language-server exe, looked for: haskell-language-server-8.10.7, haskell-language-server-8.10, haskell-language-server
[Info  - 10:47:50 PM] Connection to server got closed. Server will restart.
Module "/Users/lyle/Sync/devel/haskell/clockify-api/a" is loaded by Cradle: Cradle {cradleRootDir = "/Users/lyle/Sync/devel/haskell/clockify-api", cradleOptsProg = CradleAction: Stack}
Run entered for haskell-language-server-wrapper(haskell-language-server-wrapper) Version 1.1.0.0, Git revision f1c096927186a93d8e3ccd4fe8385cc1b070350b (dirty) x86_64 ghc-8.10.4
Current directory: /Users/lyle/Sync/devel/haskell/clockify-api
Operating system: darwin
Arguments: ["--lsp","-d"]
Cradle directory: /Users/lyle/Sync/devel/haskell/clockify-api
Cradle type: Stack

Tool versions found on the $PATH
cabal:		3.6.2.0
stack:		2.7.3
ghc:		9.2.1


Consulting the cradle to get project GHC version...
Project GHC version: 8.10.7
haskell-language-server exe candidates: ["haskell-language-server-8.10.7","haskell-language-server-8.10","haskell-language-server"]
Cannot find any haskell-language-server exe, looked for: haskell-language-server-8.10.7, haskell-language-server-8.10, haskell-language-server
[Error - 10:47:51 PM] Connection to server got closed. Server will not be restarted.

@jneira
Copy link
Member

jneira commented Nov 16, 2021

How you installed haskell-language-server-wrapper? using ghcup? if that is the case, could you check you have set a hls version?

@lylek
Copy link
Author

lylek commented Nov 17, 2021

Apparently, yes, because I had used ghcup to install prior versions of hls (1.0.0 and 1.1.0), there was a haskell-language-server-wrapper in my .ghcup directory. When I shut down VS Code, then used ghcup to remove all its versions of hls, then started up VS Code, the Haskell extension downloaded the latest version of HLS, and everything worked fine. So I guess because HLS already had haskell-language-server-wrapper in the path, and it was an old version (1.1.0), the VS Code extension was stuck using that?

Here's what I got when I ran haskell-language-server-wrapper-1.1.0 on the command line:

MacBook-Pro:clockify-api lyle$ haskell-language-server-wrapper
No 'hie.yaml' found. Try to discover the project type!
Run entered for haskell-language-server-wrapper(haskell-language-server-wrapper) Version 1.4.0.0, Git revision 253547816ee216c53ee7dacc0ad3cac43e863d30 (dirty) x86_64 ghc-8.10.4
Current directory: /Users/lyle/Sync/devel/haskell/clockify-api
Operating system: darwin
Arguments: []
Cradle directory: /Users/lyle/Sync/devel/haskell/clockify-api
Cradle type: Stack

Tool versions found on the $PATH
cabal:		3.6.2.0
stack:		2.7.3
ghc:		9.2.1


Consulting the cradle to get project GHC version...
Project GHC version: 8.10.7
haskell-language-server exe candidates: ["haskell-language-server-8.10.7","haskell-language-server"]
Launching haskell-language-server exe at:/Users/lyle/.ghcup/bin/haskell-language-server-8.10.7
haskell-language-server version: 1.4.0.0 (GHC: 8.10.7) (PATH: /Users/lyle/.ghcup/bin/haskell-language-server-8.10.7~1.4.0) (GIT hash: 253547816ee216c53ee7dacc0ad3cac43e863d30)
 ghcide setup tester in /Users/lyle/Sync/devel/haskell/clockify-api.
Report bugs at https://github.com/haskell/haskell-language-server/issues

Step 1/4: Finding files to test in /Users/lyle/Sync/devel/haskell/clockify-api
Found 2 files

Step 2/4: Looking for hie.yaml files that control setup
Found 1 cradle
  ()

Step 3/4: Initializing the IDE

Step 4/4: Type checking the files
2021-11-16 22:56:40.802267 [ThreadId 21] INFO hls:	Consulting the cradle for "Setup.hs"
2021-11-16 22:56:40.806374 [ThreadId 21] WARNING hls:	No [cradle](https://github.com/mpickering/hie-bios#hie-bios) found for Setup.hs.
 Proceeding with [implicit cradle](https://hackage.haskell.org/package/implicit-hie).
You should ignore this message, unless you see a 'Multi Cradle: No prefixes matched' error.
Output from setting up the cradle Cradle {cradleRootDir = "/Users/lyle/Sync/devel/haskell/clockify-api", cradleOptsProg = CradleAction: Stack}
2021-11-16 22:56:40.826313 [ThreadId 18] INFO hls:	File:     /Users/lyle/Sync/devel/haskell/clockify-api/Setup.hs
Hidden:   no
Range:    1:1-2:1
Source:   cradle
Severity: DsError
Message:
  Multi Cradle: No prefixes matched
  pwd: /Users/lyle/Sync/devel/haskell/clockify-api
  filepath: /Users/lyle/Sync/devel/haskell/clockify-api/Setup.hs
  prefixes:
  ("./src",Stack {component = Just "clockify-api:lib", stackYaml = Nothing})
2021-11-16 22:56:40.830265 [ThreadId 25] INFO hls:	Consulting the cradle for "src/Clockify.hs"
2021-11-16 22:56:40.830385 [ThreadId 25] WARNING hls:	No [cradle](https://github.com/mpickering/hie-bios#hie-bios) found for src/Clockify.hs.
 Proceeding with [implicit cradle](https://hackage.haskell.org/package/implicit-hie).
You should ignore this message, unless you see a 'Multi Cradle: No prefixes matched' error.
Output from setting up the cradle Cradle {cradleRootDir = "/Users/lyle/Sync/devel/haskell/clockify-api", cradleOptsProg = CradleAction: Stack}
2021-11-16 22:56:43.123459 [ThreadId 29] INFO hie-bios:	Configuring GHCi with the following packages: clockify-api
2021-11-16 22:56:44.921248 [ThreadId 37] INFO hie-bios:	/Users/lyle/Sync/devel/haskell/clockify-api/.stack-work/install/x86_64-osx/d664d16416c4682b7495b356d2191d3f0a42fefc76139cebfed00977dcf6938e/8.10.7/pkgdb:/Users/lyle/.stack/snapshots/x86_64-osx/d664d16416c4682b7495b356d2191d3f0a42fefc76139cebfed00977dcf6938e/8.10.7/pkgdb:/Users/lyle/.stack/programs/x86_64-osx/ghc-8.10.7/lib/ghc-8.10.7/package.conf.d
2021-11-16 22:56:47.891832 [ThreadId 25] INFO hls:	Using interface files cache dir: /Users/lyle/.cache/ghcide/main-c9c322ff246524f40b80aa571842d9dbf6fae311
2021-11-16 22:56:47.891962 [ThreadId 25] INFO hls:	Making new HscEnv[main]
2021-11-16 22:56:47.914059 [ThreadId 63] INFO hls:	Consulting the cradle for "Setup.hs"
2021-11-16 22:56:47.914149 [ThreadId 63] WARNING hls:	No [cradle](https://github.com/mpickering/hie-bios#hie-bios) found for Setup.hs.
 Proceeding with [implicit cradle](https://hackage.haskell.org/package/implicit-hie).
You should ignore this message, unless you see a 'Multi Cradle: No prefixes matched' error.
Output from setting up the cradle Cradle {cradleRootDir = "/Users/lyle/Sync/devel/haskell/clockify-api", cradleOptsProg = CradleAction: Stack}
2021-11-16 22:56:48.181208 [ThreadId 101] INFO hls:	finish: User TypeCheck (took 0.27s)
2021-11-16 22:56:48.200462 [ThreadId 110] INFO hls:	finish: GetHie (took 0.02s)
2021-11-16 22:56:48.200783 [ThreadId 111] INFO hls:	finish: GenerateCore (took 0.00s)
Files that failed:
 * /Users/lyle/Sync/devel/haskell/clockify-api/Setup.hs

Completed (1 file worked, 1 file failed)
haskell-language-server-wrapper: callProcess: /Users/lyle/.ghcup/bin/haskell-language-server-8.10.7 (exit 1): failed

@jneira
Copy link
Member

jneira commented Nov 17, 2021

So I guess because HLS already had haskell-language-server-wrapper in the path, and it was an old version (1.1.0), the VS Code extension was stuck using that?

Yeah, the extension honours the hls-wrapper/hls in PATH and it even dont try to download the new version as it assumes user will upgrade manually it.
But we can improve things: there is an issue about #456 and even a pr which adds the option to download the latest version if the PATH one is obsolete #461. It is somewhat stalled 😟
But at minimum the extension should warn about the outdated hls in PATH

If you dont mind i am gonna close this as duplicate of #456, if you want and have the opportunity to contribute feel free to take over #461 or open a new one, addressing the changes or simply create the warning.

@jneira jneira closed this as completed Nov 17, 2021
@lylek
Copy link
Author

lylek commented Nov 18, 2021

Thanks @jneira, yes, closing this makes sense in light of those other issues.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
os: macOS macOS related issues status: needs attention type: bug A bug or unintended effect
Projects
None yet
Development

No branches or pull requests

2 participants