dom96 / choosenim

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

choosenim binary builds for macOS need 10.13 #183

Open dom96 opened 4 years ago

dom96 commented 4 years ago

So I just got this error after upgrading:

~ » choosenim update devel
   Updating devel
Downloading Nim devel from GitHub
[##################################################] 100.0% 0kb/s
 Extracting nim-1.1.1-osx.tar.xz
dyld: lazy symbol binding failed: Symbol not found: _futimens
  Referenced from: /Users/dom/.nimble/bin/choosenim (which was built for Mac OS X 10.13)
  Expected in: /usr/lib/libSystem.B.dylib

dyld: Symbol not found: _futimens
  Referenced from: /Users/dom/.nimble/bin/choosenim (which was built for Mac OS X 10.13)
  Expected in: /usr/lib/libSystem.B.dylib

[1]    34238 trace trap  choosenim update devel

@genotrance any way we can fix that in the CI? I guess I will rebuild choosenim on my machine manually and upload the release there so that it's more compatible with older macOS versions.

genotrance commented 4 years ago

So we need an older osx to build on?

genotrance commented 4 years ago

Looks like Travis allows you to use older versions of OSX x Xcode.

What version should we pick?

https://docs.travis-ci.com/user/reference/osx#macos-version

dom96 commented 4 years ago

Oldest one they offer would be ideal

genotrance commented 4 years ago

Is this error from Nim/Nimble or a general OpenSSL error?

https://travis-ci.org/github/dom96/choosenim/jobs/662606144#L7838

Could not download: Please upgrade your OpenSSL library, it does not support the necessary protocols. OpenSSL error is: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure

Any idea how to work around this? I've already gone as far as 10.11.

Edit: On 10.12, that error goes away but then curl is failing:

https://travis-ci.org/github/dom96/choosenim/jobs/662749414#L12119

curl: (35) SSL peer handshake failed, the server most likely requires a client certificate to connect [AssertionError]

dom96 commented 4 years ago

This is a general openssl error. But it can happen in Nimble, since Nimble uses httpclient. You can get around it by installing a newer openssl using homebrew (and setting DYLB_LIBRARY_PATH).

Strange that the curl error happens on 10.12, it works for me on 10.11.

genotrance commented 4 years ago

It seems like we need to ditch openssl altogether and statically link to libressl or something else. Cannot expect users to fight with openssl on OSX. Thoughts?

dom96 commented 4 years ago

I don't understand how curl fails on 10.12 when it worked fine for me on 10.11 for a long time, the reason I implemented curl in the first place is because I was running 10.11 and wanted something that worked. Are you sure that curl doesn't work on 10.12?

genotrance commented 3 years ago

All deps are now statically linked - wonder if the new OSX binary will run with older versions of the OS.