For RPMs, I have a little info I can share.
For folks unfamiliar with the Fedora/RHEL-side of things, I've cobbled together some background:
RPM is the package type for Red Hat-based distros which include
- Oracle Unbreakable Linux
- Red Hat Enterprise Linux
- Other flavors that have sprung up due to CentOS being deprecated
Every distro that isn't Fedora can install Swift via the EPEL (Extra Packages for Enterprise Linux). EPEL is typically not enabled by default so the system administrator has to explicitly enable it.
Fedora has Swift available out-of-the-box via
sudo dnf install -y swift-lang which will also install its dependencies. Within Fedora, there are always three, sometimes four active versions:
- Rawhide, which is is always the latest, cutting edge version which will typically have the latest kernel soon after it's released. It is where packages are typically released and updated first. This is the permanent beta release of, well, everything.
- Current, which is the, well, current version (as of right now it's Fedora 34). It tracks behind Rawhide but is still typically very up-to-date with the kernel, packages, etc.
- Previous, always the Current -1 version which will get three months of updates, and then it will be cut off and no longer receive anything
A typical release of Swift to the Fedora ecosystem means providing it for all four environments, which can sometimes be tricky because Rawhide may introduce problems that have to be resolved (e.g., I'm currently working on putting a PR together to remove Cyclades from the LLVM-part of Swift because it was removed in the latest kernel). Paradoxically, while Rawhide is the most aggressive, EPEL is the most conservative and some packages lag behind Fedora significantly (e.g., CMake) which requires some creative workarounds (for example, I download and build my own version of CMake and set it at the front of the path before building Swift).
One thing that is non-negotiable in the Fedora/RHEL environment is that every package that is offered via the official repositories must be built from source using their build system; binary blobs are not allowed. That said, it's possible to download an RPM file from anywhere and install it manually the downside to this is that there is no automatic updating mechanism so the package will not be automatically updated (which has its pros and cons).
The TL;DR is that building a Swift RPM requires a fair amount of constant tweaking between versions of Swift and versions of Fedora (with Rawhide being the proverbial canary-in-a-coal mine; what happens there ultimately filters down to Linux distros everywhere).
if anyone is interested in the gory details, I maintain a GitHub repo of what I use to create the RPM file that is basically my current working state.
I'm happy to work with everyone to make Swift more accessible to Linux users.