swiftlang / swiftly

A Swift toolchain installer and manager, written in Swift.
https://swiftlang.github.io/swiftly/
Apache License 2.0
420 stars 18 forks source link

Handle platform EOL #100

Open patrickfreed opened 2 months ago

patrickfreed commented 2 months ago

We should decide how we want to handle platforms that no longer receive support from swift.org. The immediately obvious choice is to drop support for them in swiftly as well, but swiftly is still useful on these platforms for installing older releases, so it may not make sense to do that. We may want to instead just stop testing for that platform in CI, and then make sure swiftly prints helpful messages when it encounters a release it can't find a toolchain for. Alternatively, we could keep testing on Ubuntu 18.04 until swiftly declares it does not support it, but just run a subset of the tests.

As an example, Ubuntu 18.04 support was recently dropped by the Swift project, meaning no more nightly releases or regular releases will be published by that platform. As a result, the swiftly tests for it have started failing. https://forums.swift.org/t/dropping-support-for-ubuntu-18-04/69561

adam-fowler commented 2 months ago

Can we support 18.04 for the versions of Swift that support it? And somehow limit CI to that.

patrickfreed commented 1 month ago

Yeah I think that's probably the best path. Today, what will happen is if you run swiftly install <some version not supported>, it'll just print "\<toolchain name> does not exist, exiting", but for older versions it'll succeed. We should probably improve this message to be more helpful on platforms that are no longer supported, but otherwise I think that behavior is fine. I don't think we should bother trying to make swiftly install latest work for unsupported platforms, at least not until we use a swift.org API for swiftly.

As far as limiting CI, that should be pretty easy. We'll just need to verify in a few tests that the platform supports installing the latest releases/snapshots before proceeding. We can just hard code this info I think.