Skip to content
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

Windows Support #102

Open
RoboZoom opened this issue Jul 8, 2023 · 35 comments
Open

Windows Support #102

RoboZoom opened this issue Jul 8, 2023 · 35 comments
Labels
enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed

Comments

@RoboZoom
Copy link
Contributor

RoboZoom commented Jul 8, 2023

I attempted to enable NextLS via the VSCode Extension, however the client was not created.

The first question is, in a general sense, is NextLS viable in windows?

If NextLS supports windows, but the initialization script is unsupported in windows, then there is an issue packaging and initializing it for windows users of VSCode.

@mhanberg mhanberg added enhancement New feature or request help wanted Extra attention is needed good first issue Good for newcomers labels Jul 8, 2023
@simonmcconnell
Copy link

Trying to use NextLS in WSL:

[Error - 9:56:36 PM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 9:56:36 PM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
	at _.shutdown (/home/cmo/.vscode-server/extensions/elixir-tools.elixir-tools-0.3.0/dist/extension.js:2:96701)
	at _.stop (/home/cmo/.vscode-server/extensions/elixir-tools.elixir-tools-0.3.0/dist/extension.js:2:96282)
	at _.stop (/home/cmo/.vscode-server/extensions/elixir-tools.elixir-tools-0.3.0/dist/extension.js:2:258296)
	at _.handleConnectionError (/home/cmo/.vscode-server/extensions/elixir-tools.elixir-tools-0.3.0/dist/extension.js:2:102789)
	at processTicksAndRejections (node:internal/process/task_queues:96:5)

Trying to use NextLS on Windows:

[Error - 9:58:50 PM] NextLS client: couldn't create connection to server.
Launching server using command c:\Users\simon\scoop\apps\vscode\1.80.1\data\extensions\elixir-tools.elixir-tools-0.3.0\bin\nextls failed. Error: spawn c:\Users\simon\scoop\apps\vscode\1.80.1\data\extensions\elixir-tools.elixir-tools-0.3.0\bin\nextls ENOENT

@apoorv-2204
Copy link

windows is very weird, when dealing with dev tools.

@mhanberg
Copy link
Collaborator

mhanberg commented Aug 9, 2023

I now have windows binaries uploaded to the releases, but I still use a bash script so I'll need to convert that to a bat script or might not need it at all.

Should be good to test on windows after that

@cvkmohan
Copy link

#144 - now that binaries are getting downloaded - will it work in WSL?

@mhanberg
Copy link
Collaborator

@cvkmohan i believe so. @zachallaun has gotten it working in WSL2 i believe, but he needed to update to a more recent Ubuntu version. he tried on 20.XX and the version of glibc was too old.

@cvkmohan
Copy link

I can confirm that on WSL2, with Ubuntu 22.04, it is working. It downloaded the executable.
Thanks a lot. BTW, I am a big fan of your Temple library.

One question: what is the correct place for the code completion of definitions? I mean - when you type defmodule or def end automatically appearing. In this extension or code snippets?

@mhanberg

This comment was marked as off-topic.

@spapas
Copy link

spapas commented Nov 1, 2023

Hey friends, tried installing it on windows and getting:

2023-11-01 12:45:45.869 [error] Error: Download failed (https://github.com/elixir-tools/next-ls/releases/latest/download/next_ls_windows_amd64, status=404)
    at c:\Users\serafeim\.vscode\extensions\elixir-tools.elixir-tools-0.11.0\dist\extension.js:2:432487
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at l.force (c:\Users\serafeim\.vscode\extensions\elixir-tools.elixir-tools-0.11.0\dist\extension.js:2:432228)
    at c:\Users\serafeim\.vscode\extensions\elixir-tools.elixir-tools-0.11.0\dist\extension.js:2:431445
    at e.activate (c:\Users\serafeim\.vscode\extensions\elixir-tools.elixir-tools-0.11.0\dist\extension.js:2:430807)
    at v.n (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:125:6205)
    at v.m (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:125:6168)
    at v.l (c:\Program Files\Microsoft VS Code\resources\app\out\vs\workbench\api\node\extensionHostProcess.js:125:5625)
2023-11-01 12:49:48.601 [info] ExtensionService#_doActivateExtension vscode.simple-browser, startup: false, activationEvent: 'onOpenExternalUri:https'

Plase notice that the correct filename is next_ls_windows_amd64.exe !

@chgeuer
Copy link

chgeuer commented Jan 19, 2024

Yes, like @spapas mentioned

2024-01-19 09:20:06.744 [info] ExtensionService#_doActivateExtension elixir-tools.elixir-tools, startup: false, activationEvent: 'onLanguage:elixir'
2024-01-19 09:20:10.850 [error] Activating extension elixir-tools.elixir-tools failed due to an error:
2024-01-19 09:20:10.850 [error] Error: Download failed (https://github.com/elixir-tools/next-ls/releases/latest/download/next_ls_windows_amd64, status=404)
    at c:\Users\chgeuer\.vscode\extensions\elixir-tools.elixir-tools-0.12.1\dist\extension.js:2:432487
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
  • Tool tries to fetch https://github.com/elixir-tools/next-ls/releases/latest/download/next_ls_windows_amd64
  • Correct (I guess) would be https://github.com/elixir-tools/next-ls/releases/download/latest/next_ls_windows_amd64.exe

@cvkmohan
Copy link

I tried all I could - but - had to come back here. After reinstalling wsl2 on my system, next-ls stopped working.
image
glibc is 2.35 - and I tried all troubleshooting in https://www.elixir-tools.dev/docs/next-ls/troubleshooting/

  1. No logs are getting recorded.
  2. I have pasted vscode Output tab error in the above image.
  3. When I start nextls independently and run it in tcp mode it is working fine.

However, when I install the latest vscode extension and reopen the download is not happening into /.cache/elixir-tools directory. Even if I have downloaded the executable manually and placed in the directory - vscode extension is not picking it up - and - autostart is not working.

@mhanberg
Copy link
Collaborator

I'll try and get windows installed today and try it out.

Sorry about that!

@cvkmohan
Copy link

cvkmohan commented Feb 28, 2024

My frustration in the question is more about - It was working earlier - not working now - what did I miss?
I installed lexical-vscode package and it shows a message that it is downloading lexical executable. I am not getting the same message with elixir-tools.vscode package. Problem might be mostly there. Unable to overwrite older version?
Thinking aloud... if it helps.
You are doing amazing work. We should be thankful - you should not be sorry!

@mhanberg
Copy link
Collaborator

It was working earlier - not working now - what did I miss?

There is a bug in the auto updater that I fixed yesterday, but if you delete Next LS and reopen VSCode, it should prompt you to install it.

I just tested on my Mac and it worked, so I'm not really sure what is different about running VSCode on Windows using WSL2, which will require me to install and debug.

You are doing amazing work. We should be thankful - you should not be sorry!

🙇

@cvkmohan
Copy link

That updater is in 0.19.1 and that is not yet released?

I tried reinstalling.

  1. Removed elixir-tools.vscode from vscode
  2. rm -rf ~/.cache/elixir-tools
  3. Restart vscode
  4. Install elixir-tols.vscode
    Even on restart, it is not prompting to download. Socket Closed is the message in Output window.

@mhanberg
Copy link
Collaborator

That updater is in 0.19.1 and that is not yet released?

Correct, but that should only effect an existing Next LS installation trying to update itself.

Thanks for the repro steps.

Can you also include your Windows versions and WSL2 information? like what distro do you have installed with WSL2, also VSCode version

@cvkmohan
Copy link

Windows 11. WSL2 - Ubuntu 22.04

@mhanberg
Copy link
Collaborator

Thanks, downloading as ISO now

@mhanberg
Copy link
Collaborator

Okay, sort of bad-ish news...

Works on my machine 😅.

Link to a video recording of me installing the extension for the first time: https://f005.backblazeb2.com/file/elixir-tools/elixir-tools-wsl-test.mp4

Timeline is basically

  • install extension
  • it doesn't work because i hadn't restarted vscode since installing elixir, so it wasn't in the path
  • restart, it fails because i had never run mix local.hex --force on this elixir install
  • i run that and restart
  • it boots and prompts me to install deps, i click yes (this is a new feature in 0.19.1)
  • it installs them and then continues on and works as expected

@cvkmohan
Copy link

Thanks. You took a lot of effort. One difference I could spot is - you are using nix for everything - and - I am using asdf for elixir. Not sure if it makes any difference.
Another thing to ponder is the burrito file is not there in the local/.hex folder.
I guess some caching somewhere in my system with the old version and is not getting deleted.
I will come back to you when I find something. Till then, please ignore this and move on.
Again, thanks a lot for the prompt response and huge time you put in.

@mhanberg
Copy link
Collaborator

it did actually crash after i let it sit there for a minute, investigating that now, but seems orthogonal to your issue.

I don't think asdf vs nix will make a difference for yours not even prompting you to install it

Another thing to ponder is the burrito file is not there in the local/.hex folder.

i'm not sure what you mean here

I guess some caching somewhere in my system with the old version and is not getting deleted.

you can uninstall from the command palette (search elixir tools and it will be there), then restart to see if it prompts you to download

Till then, please ignore this and move on.

no 😎

@cvkmohan
Copy link

Interestingly, when I try to uninstall from the command palette, it gives an error message that Failed to uninstall NextLS from nextls
image
However, when I uninstall from Extensions tab, it is getting removed without any warnings/notices.
image

Does that trigger anything?

@mhanberg
Copy link
Collaborator

Hmm, could you audit your settings to see what the value of elixir-tools.nextLS.installationDirectory is?

@cvkmohan
Copy link

It was showing empty. I clicked on the gear icon and asked it to reset it. ~/.cache/elixir-tools/nextls/bin/ is what it is. After that I did a couple of restarts - but same status. Socket closed before connection is established.

@mhanberg
Copy link
Collaborator

Can you confirm is that directory exists at all?

@cvkmohan
Copy link

No. The directory does not exist.

@mhanberg
Copy link
Collaborator

As an experiment, can you manually create that directory and then restart VScode to see if it tries to install it?

@cvkmohan
Copy link

No. nothing happened. This is the full error log.

[Error - 1:27:21 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:21 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:21 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
	at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
	at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
	at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:21 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
	at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
	at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
	at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Info  - 1:27:21 AM] Connection to server got closed. Server will restart.
true
[Error - 1:27:21 AM] Server initialization failed.
  Message: Socket closed before the connection was established
  Code: -32099 
[Error - 1:27:21 AM] NextLS client: couldn't create connection to server.
  Message: Socket closed before the connection was established
  Code: -32099 
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: startFailed
	at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
	at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
	at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: startFailed
	at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
	at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
	at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Server initialization failed.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] NextLS client: couldn't create connection to server.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] Restarting server failed
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Info  - 1:27:22 AM] Connection to server got closed. Server will restart.
true
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
	at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
	at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
	at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
	at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
	at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
	at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Server initialization failed.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] NextLS client: couldn't create connection to server.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] Restarting server failed
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Info  - 1:27:22 AM] Connection to server got closed. Server will restart.
true
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
	at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
	at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
	at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
	at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
	at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
	at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Server initialization failed.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] NextLS client: couldn't create connection to server.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] Restarting server failed
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Info  - 1:27:22 AM] Connection to server got closed. Server will restart.
true
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Client NextLS: connection to server is erroring. Shutting down server.
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
	at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
	at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
	at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Stopping server failed
Error: Client is not running and can't be stopped. It's current state is: starting
	at _.shutdown (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96701)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:96282)
	at _.stop (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:258296)
	at _.handleConnectionError (/home/krishna/.vscode-server/extensions/elixir-tools.elixir-tools-0.13.0/dist/extension.js:2:102789)
	at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[Error - 1:27:22 AM] Server initialization failed.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] NextLS client: couldn't create connection to server.
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] Restarting server failed
  Message: Cannot call write after a stream was destroyed
  Code: -32099 
[Error - 1:27:22 AM] The NextLS server crashed 5 times in the last 3 minutes. The server will not be restarted. See the output for more information.

@mhanberg
Copy link
Collaborator

can you check the permissions on that directory?

@cvkmohan
Copy link

image

@mhanberg
Copy link
Collaborator

and there is nothing in there in any of the dirs?

@cvkmohan
Copy link

yes, the directories are empty.

@mhanberg
Copy link
Collaborator

Can you confirm your adapter is set to stdio and not tcp? In elixir tools settings

@cvkmohan
Copy link

cvkmohan commented Mar 1, 2024

Yes. I confirm. It is stdio.

@cvkmohan
Copy link

cvkmohan commented Mar 8, 2024

Not sure what happened. Today I uninstalled the vscode extension restarted WSL and installed nextls vscode extension. It downloaded the latest version and is working. Same process was not working earlier. Maybe your new release solved the issue?

Anyway, thanks a lot for the effort.

@mhanberg
Copy link
Collaborator

mhanberg commented Mar 8, 2024

Nice!

I added more logging so if it happens again we'll have more to go on

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

7 participants