dom96 / choosenim

Tool for easily installing and managing multiple versions of the Nim programming language.
BSD 3-Clause "New" or "Revised" License
682 stars 65 forks source link

Invalid argument OSError on practically every command #240

Closed squattingmonk closed 2 years ago

squattingmonk commented 3 years ago

Installing 0.7.4 on Arch Linux using either the prebuilt binary or the curl method yields an OSError on practically every command:

Using curl:

$ curl https://nim-lang.org/choosenim/init.sh -sSf > init.sh
$ sh init.sh -y
choosenim-init: Downloading choosenim-0.7.4_linux_amd64
oserr.nim(94)            raiseOSError
Error: unhandled exception: Invalid argument
Additional info: "Try again" [OSError]

$ export CHOOSENIM_CHOOSE_VERSION=1.4.0
$ sh init.sh -y
choosenim-init: Downloading choosenim-0.7.4_linux_amd64
Downloading Nim 1.4.0 from nim-lang.org
oserr.nim(94)            raiseOSError
Error: unhandled exception: Invalid argument

$ export CHOOSENIM_CHOOSE_VERSION=1.0.8
$ sh init.sh -y
choosenim-init: Downloading choosenim-0.7.4_linux_amd64
Downloading Nim 1.0.8 from nim-lang.org
oserr.nim(94)            raiseOSError
Error: unhandled exception: Invalid argument
Additional info: "Try again" [OSError]

Using binary:

$ choosenim 1.4.0
choosenim 1.4.0
    Prompt: Can choosenim record and send anonymised telemetry data? [y/n]
        ... Anonymous aggregate user analytics allow us to prioritise
        ... fixes and features based on how, where and when people use Nim.
        ... For more details see: https://goo.gl/NzUEPf.
y
    Answer: Downloading Nim 1.4.0 from nim-lang.org
oserr.nim(94)            raiseOSError
Error: unhandled exception: Invalid argument
Additional info: "Try again" [OSError]

$ choosenim 1.0.8
Downloading Nim 1.0.8 from nim-lang.org
oserr.nim(94)            raiseOSError
Error: unhandled exception: Invalid argument
Additional info: "Try again" [OSError]

$ choosenim update stable
   Updating stable
oserr.nim(94)            raiseOSError
Error: unhandled exception: Invalid argument
Additional info: "Try again" [OSError]

$ choosenim versions
oserr.nim(94)            raiseOSError
Error: unhandled exception: Invalid argument
Additional info: "Try again" [OSError]

The only arguments that appear to work when passed to the binary are --help and --version.

I've also tried installing choosenim with nimble, but it fails to build (#239).

Details

OS: Arch Linux 5.9.1 Nim: 1.4.0 Nimble: 0.11.0

genotrance commented 3 years ago

I just tried this on the latest Arch Linux docker image and it worked fine for me. Can you try the debug build of choosenim and see what you get?

squattingmonk commented 3 years ago

Here's with the debug build:

$ ./choosenim-0.7.4_linux_amd64_debug update stable
    Prompt: Can choosenim record and send anonymised telemetry data? [y/n]
        ... Anonymous aggregate user analytics allow us to prioritise
        ... fixes and features based on how, where and when people use Nim.
        ... For more details see: https://goo.gl/NzUEPf.
y
    Answer:    Updating stable
/home/travis/build/dom96/choosenim/src/choosenim.nim(331) choosenim
/home/travis/build/dom96/choosenim/src/choosenim.nim(304) performAction
/home/travis/build/dom96/choosenim/src/choosenim.nim(159) update
/home/travis/build/dom96/choosenim/src/choosenimpkg/channel.nim(37) getChannelVersion
/home/travis/build/dom96/choosenim/src/choosenimpkg/download.nim(373) retrieveUrl
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/httpclient.nim(1080) getContent
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/httpclient.nim(1075) get
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/httpclient.nim(1051) request
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/httpclient.nim(1027) request
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/httpclient.nim(977) requestAux
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/httpclient.nim(864) newConnection
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/net.nim(1657) dial
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/nativesockets.nim(266) getAddrInfo
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/includes/oserr.nim(94) raiseOSError
Error: unhandled exception: Invalid argument
Additional info: "Try again" [OSError]

$ ./choosenim-0.7.4_linux_amd64_debug 1.4.0
Downloading Nim 1.4.0 from nim-lang.org
/home/travis/build/dom96/choosenim/src/choosenim.nim(331) choosenim
/home/travis/build/dom96/choosenim/src/choosenim.nim(312) performAction
/home/travis/build/dom96/choosenim/src/choosenim.nim(105) choose
/home/travis/build/dom96/choosenim/src/choosenim.nim(88) chooseVersion
/home/travis/build/dom96/choosenim/src/choosenim.nim(24) installVersion
/home/travis/build/dom96/choosenim/src/choosenimpkg/download.nim(290) download
/home/travis/build/dom96/choosenim/src/choosenimpkg/download.nim(275) downloadImpl
/home/travis/build/dom96/choosenim/src/choosenimpkg/download.nim(193) downloadFile
/home/travis/build/dom96/choosenim/src/choosenimpkg/download.nim(175) downloadFileNim
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/httpclient.nim(1141) downloadFile
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/httpclient.nim(1075) get
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/httpclient.nim(1051) request
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/httpclient.nim(1027) request
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/httpclient.nim(977) requestAux
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/httpclient.nim(864) newConnection
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/net.nim(1657) dial
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/nativesockets.nim(266) getAddrInfo
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/includes/oserr.nim(94) raiseOSError
Error: unhandled exception: Invalid argument
Additional info: "Try again" [OSError]

$ ./choosenim-0.7.4_linux_amd64_debug versions
/home/travis/build/dom96/choosenim/src/choosenim.nim(331) choosenim
/home/travis/build/dom96/choosenim/src/choosenim.nim(308) performAction
/home/travis/build/dom96/choosenim/src/choosenim.nim(228) versions
/home/travis/build/dom96/choosenim/src/choosenimpkg/versions.nim(35) getAvailableVersions
/home/travis/build/dom96/choosenim/src/choosenimpkg/download.nim(376) getOfficialReleases
/home/travis/build/dom96/choosenim/src/choosenimpkg/download.nim(373) retrieveUrl
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/httpclient.nim(1080) getContent
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/httpclient.nim(1075) get
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/httpclient.nim(1051) request
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/httpclient.nim(1027) request
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/httpclient.nim(977) requestAux
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/httpclient.nim(864) newConnection
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/net.nim(1657) dial
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/nativesockets.nim(266) getAddrInfo
/home/travis/.choosenim/toolchains/nim-1.2.6/lib/pure/includes/oserr.nim(94) raiseOSError
Error: unhandled exception: Invalid argument
Additional info: "Try again" [OSError]
dom96 commented 3 years ago

Fun, can you check if choosenim 0.6.0 works for you? Guessing this is caused by static-musl libc?

squattingmonk commented 3 years ago

0.6.0 hangs indefinitely when attempting to download anything. The versions command works as expected, though.

hronro commented 3 years ago

Same error for me with Arch Linux, is there any updates?

dom96 commented 3 years ago

We need help from someone that can repro this, can you try installing Nim manually (via pacman or otherwise) and seeing if you can use httpclient to retrieve a URL via getContent? (1.2.6 if you can since that appears to be the version that choosenim is built with right now)

hronro commented 3 years ago

@dom96 I just download the version 1.4.2 from the pre-built binaries of nim-lang.org, and the getContent works fine for me.

dom96 commented 3 years ago

It looks like it's trying to getAddrInfo asynchronously and the OS is asking it to call it again because the DNS is not ready. It's possible this was resolved in 1.4. Can you reproduce it with 1.2.6? If so this will be resolved as soon as choosenim is built with 1.4.

squattingmonk commented 3 years ago

getContent works for me on 1.2.6 as well.

Also, I've found that a nimble build of the latest tagged version works as expected. It works correctly on 1.2.6, 1.4.0, and 1.4.2. However, the binary release fails to work due to #248.

dom96 commented 2 years ago

This should be resolved by now. Feel free to reopen if not.