-
-
Notifications
You must be signed in to change notification settings - Fork 18k
release.nix: generate bootstrap tools for musl #258564
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
2563a79 to
621a68e
Compare
RaitoBezarius
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changes are reasonable, checked with a character diff before and after using nix-eval-jobs as suggested.
Ericson2314
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very excited about this! Just a few small questions to try to make sure no one ends up trying to revert it later :)
This will allow buliding bootstrap tools for platforms with
non-default libcs, like *-unknown-linux-musl.
This gets rid of limitedSupportSystems/systemsWithAnySupport. There
was no need to use systemsWithAnySupport for supportDarwin, because it
was always equivalent to supportedSystems for that purpose, and the
only other way it was used was for determining which platforms to
build the bootstrap tools for, so we might as well use a more explicit
parameter for that, and then we can change how it works without
affecting the rest of the Hydra jobs.
Not affecting the rest of the Hydra jobs is important, because if we
changed all jobs to use config triples, we'd end up renaming every
Hydra job. That might still be worth thinking about at some point,
but it's unnecessary at this point (and would be a lot of work).
I've checked by running
nix-eval-jobs --force-recurse pkgs/top-level/release.nix
that the actual bootstrap tools derivations are unaffected by this
change, and that the only other jobs that change are ones that depend
on the hash of all of Nixpkgs. Of the other jobset entrypoints that
end up importing pkgs/top-level/release.nix, none used the
limitedSupportedSystems parameter, so they should all be unaffected as
well.
This will allow us to regenerate our woefully out-of-date aarch64-unknown-linux-gnu musl bootstrap tools, which can't compile lots of modern code. We could technically also do i686-unknown-linux-musl bootstrap tools, but I don't know if there's demand for that, so it's best to wait and see if somebody asks for it before we commit Hydra to it.
621a68e to
ac279b4
Compare
|
I've now pushed a third attempt at this, that avoids the complexity the second attempt still hadn't figured out. The problem in both previous attempts has been that converting everything to use config triples is a huge job, with various side effects like renaming almost every single Hydra job. This new attempt recognises that the list of platforms with bootstrap tools built on Hydra was already distinct from the list of platforms everything else was built for, so it just makes that a bit clearer, and then changes just that list to config triples. This way, we can achieve the goal of musl bootstrap tools built by Hydra, without doing a total overhaul of Hydra job generation in Nixpkgs. More info in commit messages. |
Ericson2314
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK great, that's do this!
Description of changes
This is a fresh attempt at #169793, done in a way that should make @Ericson2314 happier — i.e., all
bootstrapToolsjobs are switched to use config triples.This will allow us to regenerate our woefully out-of-date aarch64-unknown-linux-gnu musl bootstrap tools, which can't compile lots of modern code.
We could technically also do i686-unknown-linux-musl bootstrap tools, but I don't know if there's demand for that, so it's best to wait and see if somebody asks for it before we commit Hydra to it.
I've tested the switch to triples by running
both before and after this change, and diffing the results to verify that no new errors are introduced, the derivations for all bootstrap tools are the same, and that the only changes aside from the bootstrap tool jobs being renamed are to derivations that include the Nixpkgs source tree.
Closes #169793.
Things done
sandbox = trueset innix.conf? (See Nix manual)nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage./result/bin/)