Skip to content

Compiling HLS with custom bindist creates haskell-language-server-<ghcver>-<customtag>.exe shim and HLS fails #1150

@jasagredo

Description

@jasagredo

After compiling HLS for my 9.6.6-patched GHC (see #1149), the process terminates succesfully:

Copying 'haskell-language-server.exe' to
'C:\ghcup\tmp\ghcup-2e4270a6ac1940a3\haskell-language-server-2.9.0.1\out\9.6.6-patched\haskell-language-server.exe'
Copying 'haskell-language-server-wrapper.exe' to
'C:\ghcup\tmp\ghcup-2e4270a6ac1940a3\haskell-language-server-2.9.0.1\out\9.6.6-patched\haskell-language-server-wrapper.exe'
Copying 'ghcide-bench.exe' to
'C:\ghcup\tmp\ghcup-2e4270a6ac1940a3\haskell-language-server-2.9.0.1\out\9.6.6-patched\ghcide-bench.exe'
[ Info  ] Installing HLS
[ Info  ] HLS successfully compiled and installed
2.9.0.1Success
[ Info  ] downloading: https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-0.0.8.yaml as file C:\ghcup\cache\ghcup-0.0.8.yaml
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
Press enter to continue

There is no haskell-language-server-9.6.6.exe binary, but there is a haskell-language-server-wrapper.exe which fails because the former is missing:

➜ ls /c/ghcup/bin/haskell-language* -l
-rwxr-xr-x 1 Javier Javier    115712 May  6  2024 /c/ghcup/bin/haskell-language-server-9.6.6-patched.exe
-rw-r--r-- 1 Javier Javier        69 Nov 11 10:07 /c/ghcup/bin/haskell-language-server-9.6.6-patched.shim
-rwxr-xr-x 1 Javier Javier 532895232 Nov 11 10:07 /c/ghcup/bin/haskell-language-server-9.6.6-patched~2.9.0.1.exe
-rwxr-xr-x 1 Javier Javier    115712 May  6  2024 /c/ghcup/bin/haskell-language-server-wrapper.exe
-rw-r--r-- 1 Javier Javier        63 Nov 11 10:07 /c/ghcup/bin/haskell-language-server-wrapper.shim
-rwxr-xr-x 1 Javier Javier 394523136 Nov 11 10:07 /c/ghcup/bin/haskell-language-server-wrapper-2.9.0.1.exe

➜ haskell-language-server-wrapper
Found "C:\Users\Javier\code\project\hie.yaml" for "C:\Users\Javier\code\project\a"
Run entered for haskell-language-server-wrapper(haskell-language-server-wrapper-2.9.0.1.exe) Version 2.9.0.1 x86_64 ghc-9.6.6
Current directory: C:\Users\Javier\code\project
Operating system: mingw32
Arguments: []
Cradle directory: C:\Users\Javier\code\project
Cradle type: Cabal

Tool versions found on the $PATH
cabal:          3.12.1.0
stack:          3.1.1
ghc:            9.6.6


Consulting the cradle to get project GHC version...
2024-11-11T09:09:13.121493Z | Debug | cabal exec -v0 -- ghc --print-libdir
2024-11-11T09:09:23.647506Z | Debug | cabal exec -v0 -- ghc -package-env=- -ignore-dot-ghci -e Control.Monad.join (Control.Monad.fmap System.IO.putStr System.Environment.getExecutablePath)
2024-11-11T09:09:29.597046Z | Debug | cabal --builddir=C:\Users\Javier\AppData\Local\hie-bios\dist-project-0b0ebd4d52f9efb7adc911c1cfe3dd69 v2-exec --with-compiler C:\Users\Javier\AppData\Local\hie-bios\wrapper-340ffcbd9b6dc8c3bed91eb5c533e4e3.exe --with-hc-pkg C:\ghcup\ghc\9.6.6-patched\bin\ghc-pkg-9.6.6.exe ghc -v0 -- --numeric-version
  Environment Variables
    HIE_BIOS_GHC: C:\ghcup\ghc\9.6.6-patched\bin\ghc-9.6.6.exe
    HIE_BIOS_GHC_ARGS: -BC:\ghcup\ghc\9.6.6-patched\lib
Project GHC version: 9.6.6
haskell-language-server exe candidates: ["haskell-language-server-9.6.6.exe","haskell-language-server.exe"]
Failed to find a HLS version for GHC 9.6.6
Executable names we failed to find: haskell-language-server-9.6.6.exe,haskell-language-server.exe

My understanding is that compiling HLS should create a haskell-language-server-<ghcver>.exe even if the custom ghc has a tag at the end, otherwise HLS-wrapper won't be able to find it.

Manually creating the shim works:

➜ cp haskell-language-server-9.6.6-patched.exe haskell-language-server-9.6.6.exe
➜ cp haskell-language-server-9.6.6-patched.shim haskell-language-server-9.6.6.shim
➜ haskell-language-server-wrapper
...
haskell-language-server exe candidates: ["haskell-language-server-9.6.6.exe","haskell-language-server.exe"]
Launching haskell-language-server exe at:C:\ghcup\bin\haskell-language-server-9.6.6.exe
2024-11-11T09:17:24.638034Z | Info | haskell-language-server version: 2.9.0.1 (GHC: 9.6.6) (PATH: C:\ghcup\bin\haskell-language-server-9.6.6-patched~2.9.0.1.exe)
...

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions