Description
Note: I'll edit this post to keep it up-to-date.
We do have LLVM maintainers that improve the Nix expressions, handle PRs, etc. but we do severely lack maintainers to package new LLVM versions. Adding new LLVM versions is currently handled by me but I neither have enough time nor motivation to handle LLVM (which is also why I often (have to) take some shortcuts, e.g.: https://github.com/NixOS/nixpkgs/pull/162423/files). I'm basically only doing that work because Chromium requires bleeding-edge LLVM versions to compile (it's currently already difficult to compile Chromium with LLVM 14 even tough there isn't even a RC for LLVM 15 out - Google simply chooses to pick Git commits from the main branch...).
The most relevant tasks that need help are:
- Keeping
llvmPackages_git
up-to-date (this is mostly important to enable us to quickly package new LLVM versions as soon as the first RC is out without having to put in too much work at once). This requires most of the time. It currently requires resolving a lot of merge conflicts due to our GNU install dirs patches (it wasn't really difficult so far and didn't require knowing the code but it takes a fair bit of time as there are a lot of those patches and often a few other build failures that require fixing).llvmPackages_git
is currently severely out-of-date and it would probably be best to replace it with the content ofllvmPackages_14
first (rm -r pkgs/development/compilers/llvm/git/ && cp -r pkgs/development/compilers/llvm/14/ pkgs/development/compilers/llvm/git
but one needs to check the Git log first)
- Packaging new LLVM versions as soon as the first RC is out (that's pretty simple/straightforward as it's basically just copying
llvmPackages_git
and switching to the right version, e.g.: llvmPackages_14: init at 2022-01-07 #162104 (I prefer doing it in two commits but one could also diff it againstllvmPackages_git
)).- LLVM recently switched to a bi-weekly release schedule (vs. just 1-2 additional releases per major version) so this will also require more time/effort. But we might not even want to package every bi-weekly release (especially since our staging workflow is probably to slow for that and it should cause quite a few rebuilds if
llvmPackages_latest
points to it).
- LLVM recently switched to a bi-weekly release schedule (vs. just 1-2 additional releases per major version) so this will also require more time/effort. But we might not even want to package every bi-weekly release (especially since our staging workflow is probably to slow for that and it should cause quite a few rebuilds if
- Updating
llvmPackages_latest
a super easy change (just one line) but testing is challenging (a full nixpkgs-review might be doable but one needs to exclude the transient dependencies from Mesa - using Hydra might be easier).- This work is already behind: llvmPackages_latest: 13 -> 14 #165701.
- And of course we could also really need testers/maintainers for other platforms (AArch64, Darwin, etc.).
- Remove old LLVM versions from Nixpkgs. We currently package everything from version 5 (released in 2017) up to version 14 (i.e., 10 different versions - and that number is likely growing).
LLVM is one of currently five release critical packages and some notable packages that depend on recent versions are:
- Chromium (often even requires RCs - currently it would require an unreleased LLVM version for PGO and some build flags)
- Mesa (uses
llvmPackages_latest
and is responsible for most of the rebuilds) - Rust (already depends on
llvmPackages_14
)
And for documentation:
- We currently have two update scripts
- pkgs/development/compilers/llvm/update.sh
- pkgs/development/compilers/llvm/update-git.py
I'll try to answer questions / help during the transition but tbh I don't know that much about LLVM (just enough to update it without too much breakage).
cc existing LLVM maintainers: @lovek323 @7c6f434c @dtzWill @primeos
And (AFAIK) @sternenseemann and @Ericson2314 do most of the Nix expression maintenance (refactorings/improvements/cleanups/cross-fixes/etc.)