Closed Ptival closed 3 years ago
So I looked into this some more, I thought I needed to add:
const exeOptions: ExecutableOptions = {
cwd: folder ? folder.uri.fsPath : path.dirname(uri.fsPath),
env: process.env, // this
};
to the executable options of the server, but it did not help, so I dug further.
I printed out all the process.env
keys and values from extension.ts
, and made a wrapper script for haskell-language-server
that prints out to a file the environment variables it sees.
It turns out a lot of the variables are passed to the server, except DYLD_LIBRARY_PATH
is missing!
I don't know yet why... still thinking :-\
So it turns out it is a MacOS-specific problem with the System Integrity Protection mechanism, as mentioned here: https://github.com/nodejs/node/issues/31184 https://github.com/microsoft/vscode/issues/88306
So not a vscode-haskell
problem!
Is the VSCode Haskell plug-in direnv-compatible, and if so, does it try to respect the ambient environment when calling HLS?
I'm encoutering an issue where my shell sets
DYLD_LIBRARY_PATH
with some dynamic libraries thatcabal
will need to see for the compilation to work.Compilation works in my terminal, but when the plug-in runs HLS,
cabal
complains about the missing dynamic library. I'm using direnv and the VSCode direnv plug-in, which supposedly sets environment variables but could be at fault too.