Bogdanp / setup-racket

A GH action for installing Racket.
MIT License
52 stars 9 forks source link

Racket 6.5 SSL_library_init error #35

Closed LiberalArtist closed 3 years ago

LiberalArtist commented 3 years ago

I am finally moving my CI setup over from travis-racket—thanks for all your work on this!

Apparently I still support Racket 6.5 for my package icns. However, my Github Actions job for Racket 6.5 failed with this error:

Run raco pkg install --auto --batch --name $RKT_PKG
  raco pkg install --auto --batch --name $RKT_PKG
  shell: /usr/bin/bash -e {0}
  env:
    RKT_PKG: icns
SSL_library_init: implementation not found; no arguments provided
  context...:
   /usr/share/racket/collects/openssl/mzssl.rkt: [running body]
   /usr/share/racket/collects/pkg/raco.rkt: [traversing imports]
Error: Process completed with exit code 1.

I have absolutely no idea what's going wrong—it may have nothing to do with setup-racket—but, since the Travis job for Racket 6.5 passed, it seems to have something to do with Github Actions.

LiberalArtist commented 3 years ago

Using "full" rather than minimal Racket helped with a different error in https://github.com/LiberalArtist/_-exp/commit/7bc80bb, but https://github.com/LiberalArtist/icns/commit/b74257dd2122e2eea4d22fc2c6dfb21bd39e8a30 failed on Racket 6.5 in the same way: here are the logs.

LiberalArtist commented 3 years ago

But maybe you just haven't intended to support such old versions of Racket: I just migrated https://github.com/LiberalArtist/icns/commit/8a26ebbff2e4083eebe9e91942c0683d2f38fc58, which built against everything since Racket 6.1 on Travis, and setup-racket couldn't download Racket 6.1.

I see now that @greghendershott wrote in https://github.com/Bogdanp/setup-racket/issues/15#issuecomment-733929477:

I think yours might work back to 6.5. At least, from glancing at install-racket.sh that is where there was a URL change (and more for even older Rackets). Honestly, maintaining that I felt more like a domain name server or old-school Yahoo index maintainer, than anything else. :)

Anyway, for my own projects, I'm not sure I need to go older than 6.9.

If that's the case, it's not a problem for me to just drop these antique versions. In my packages, I always develop against the latest stable Racket: I don't "support" any old versions in the sense of refraining from using new features to maintain compatibility. I build against old versions in CI mostly to tell me to update my ["base" #:version ...] dependency if I've broken compatibility without realizing it.

I see that Debian stable packages Racket 7.2, and even Debian oldstable has Racket 6.7: it seems like going back much further than that probably has rapidly diminishing returns for the effort. It was far from the scale of yours or Greg's, but maintaining a low-key download-racket.sh for AppVeyor (which I haven't actually used in a while) gave me at least a little sense of the thicket of complications that grows ever more dense the further back one ventures in Racket history.

Bogdanp commented 3 years ago

I think the SSL issue with 6.5 might be caused by some misconfiguration of SSL within that particular build that happens to still work on old versions of Ubuntu, but won't work on more recent ones. I have a vague memory of investigating this at some point, but I don't remember all the details. I could be wrong, but I think the Travis build you linked to is running on Ubuntu 16.04 based on the GCC blurb:

gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609

so that may explain the difference here.

Racket 6.5 is already 5 years old now (released in April 2016) so I think there's probably not much benefit in supporting older versions than it (especially since that would require supporting yet another URL versioning scheme, like Greg mentioned).

LiberalArtist commented 3 years ago

That sounds reasonable. I pruned my builds to 6.7 and up, and everything's working nicely now. (Racket 6.6 might work, too: I didn't check.) For the couple packages that even can build with Racket older than that, I've left my .travis.yml to build against only those very old versions. Maybe however many free Travis minutes I have left will even be enough to last until I break compatibility anyway :)

I'm happy for you to close this now.

Maybe setup-racket could give a warning or error on versions it knows it doesn't support, though?

Thanks again for maintaining this! I'd been putting off dealing with the necessary CI transition, but this has been about as quick and painless as I could have hoped.

Bogdanp commented 3 years ago

Maybe setup-racket could give a warning or error on versions it knows it doesn't support, though?

This is a good idea. I've changed the action in v1.4 to fail with a descriptive error on known bad versions.

Thanks again for maintaining this! I'd been putting off dealing with the necessary CI transition, but this has been about as quick and painless as I could have hoped.

Glad to hear it!