-
-
Notifications
You must be signed in to change notification settings - Fork 14.7k
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
stdenv: aarch64-linux: gcc9 -> gcc12 #207135
Conversation
f723a0c
to
6205ab3
Compare
I think it is no secret that updating the bootstraps to a more recent GCC will (probably, I haven't independently confirmed yet) work, the question is if we want to do it? I am not sure what the official process is for updating the bootstraps, or what constraints there might be on GCC versions in them. And even right now there is a draft PR to upgrade to GCC 12 by default which might cause the bootstrap to need to be re-updated if there is a big change which needs a new bootstrap |
Looks like this does in fact fix I propose we wait and see how the GCC 12 upgrade moves. If that goes smoothly we can simply bump the bootstrap and mitigate this problem for longer than if we did it now. Though at some point pragmatism has to outweigh purity and I have heard there are problems with modern packages (particularly KDE) and GCC 9, so this really needs to be solved soon. While that is happening, we can explore the possibility of revamping the bootstrap sequence to put this issue to bed. I don't personally feel too confident about having time/skill to do that, and there are some concerns about excessive iteration time for people who need to touch the stdenv. But it's the right thing to do in the end. |
Also worth noting, this is the last time the aarch64-linux bootstrap tarballs were updated and there is some info on people and process if we decide to go that route: #151399 |
I added a Also, the bootstrap version of GCC is already at 9.3.0 after #151399. |
I think we should do this if it get us GCC 12, but I also think we should really fix the bootstrap properly before things explode again. |
I can confirm that a basic desktop system with Xfce and Firefox builds, boots, and seems to work okay. One comment is that I would prefer this be one commit instead of two, with the message clarifying that the bootstrap tools in the commit are generated after the commit's other changes. This would avoid a unique and broken environment during e.g. bisection. |
332bbf2
to
ec58249
Compare
@ofborg build stdenv stdenv.passthru.tests |
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.
I've tested this change and it appears to work well for me (e.g. it fixes the icu
build problem). I'd support merging it ASAP.
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.
Just reminding that this cannot be merged until the files are uploaded to nixos.org and the appropriate URLs inserted.
I am also working on independently verifying the hashes here.
I cannot reproduce your hashes. It looks like you built glibc against kernel 6.0 and I built it against kernel 6.1. I made the change which removes the aarch64-linux exception to the default GCC on top of nixpkgs commit It's great that we've shown this is a viable path forward to fix the issue but it's definitely not mergeable as-is. We need reliable provenance for the bootstrap components. I'm not sure of the protocol for that, looking through the history most times they have been built by Hydra as the "official" versions. But it would be awkward to break half of aarch64-linux for a week trying to get the bootstrap tools rebuilt, even on staging. Someone might be able to create a special branch and job though. |
@tpwrules |
@lovesegfault: so, let me ask explicitly for the upload. Target paths are a bit trickier than usual. Customarily we use name of the commit from which the new tools were generated and which was already merged at that point. Here we need to switch the gcc version first to build the bootstrap tools, but that commit isn't well usable until the new tools get used. (That's why aarch64-linux has been stuck on old gcc in the first place.) Still, I think we can include such a commit in history; in particular I'll suggest this commit and upload path: vcunat@7c026ba |
Built my VM test environment which is a stock Xfce + Firefox + a few miscellaneous daemons and packages. Everything seems to build and work except for two simple issues:
|
Hmm, let me try pinging again: @lovesegfault (I've tried other people with permissions in the meantime.) |
I don't have access to my AWS keys to upload right now, since I'm traveling, and it's not on my work laptop. I'm home next week, so that's the earliest I'd be able to help. I'll try to see if I have them in a backup or something, if so, I can do it today. Furthermore, I do need a bit more detail to do the upload, just because it's very hard not to mess up. Here's an example of a good request: #183487 |
I've put the hashes in the description of changes. This should roughly translate to
The targeted commit is Let me know if you need more information. |
This upcoming week would be nice, given the other (non-)responses I've got so far. Perhaps you missed some description in the commit which I had linked and proposed to merge later (vcunat@7c026ba). I prefer to have these important bits directly in there, signed and not (just) in some discussion thread which might be harder to find or even disappear. You don't need so complicated downloads from Hydra and adding. I think it's much better to directly get |
Alright, I've uploaded them:
|
Thank you! I guess these files should be available soon from the links below?
|
Yup! It can take a couple of hours for them to pop-up on the http endpoint, for whatever reason. |
Okay, the issue was: I had forgotten to set the ACL to public-read. Now fixed, and the links are working. Once you update this PR with the right bootstrap links, I think it can be landed? |
06418d9
to
612b49c
Compare
Anyone want to go through the GCC9 workarounds after this? |
Well, different commit/URL than I posted and explained, but it's just a convention and the files are the same, so I don't really care. |
Well, that's what I get for trying to do anything with the flu 🤧 If you tell me where you want them, I can re-upload to the correct place. Sorry for the mistake, wanted to get this done ASAP and ended up messing up. |
The commit would be |
60db348
to
866a239
Compare
Hopefully, I got it right now, heading to sleep. |
Hydra job building them: https://hydra.nixos.org/build/208909151 The bootstrap files can be reproduced on the commit 21ec906, e.g. by: cat $(nix-build pkgs/top-level/release.nix -QA stdenvBootstrapTools.aarch64-linux.dist)/nix-support/hydra-build-products file tarball /nix/store/kdpbw0plmjqlafjnpbz31ja51m4bd2dk-stdenv-bootstrap-tools/on-server/bootstrap-tools.tar.xz file busybox /nix/store/kdpbw0plmjqlafjnpbz31ja51m4bd2dk-stdenv-bootstrap-tools/on-server/busybox and the hashes as well: nix hash file /nix/store/kdpbw0plmjqlafjnpbz31ja51m4bd2dk-stdenv-bootstrap-tools/on-server/bootstrap-tools.tar.xz sha256-aJvtsWeuQHbb14BGZ2EiOKzjQn46h3x3duuPEawG0eE= nix hash path /nix/store/kdpbw0plmjqlafjnpbz31ja51m4bd2dk-stdenv-bootstrap-tools/on-server/busybox sha256-0MuIeQlBUaeisqoFSu8y+8oB6K4ZG5Lhq8RcS9JqkFQ= You can check this on any machine, as the builds are on cache.nixos.org but also you can reproduce the hashes when rebuilt on aarch64-linux HW.
866a239
to
f05b5d4
Compare
@ofborg build icu |
@vcunat Is the PR good to go? |
Yes, I think so, after another look. |
Description of changes
A roadblock for bumping the aarch64-linux GCC version is #167726 (comment), or simply #36947. A proper fix would then be
to add an extra stage5 to build glibc against the newer GCC.But, what if the bootstrap version of
libgcc_s.so
is recent enough? This PR therefore does the following:Observe that
icu
does not build at this time.nix build -f ./pkgs/stdenv/linux/make-bootstrap-tools.nix bootstrapFiles
The bootstrap files build successfully.
Observe that
icu
,dejagnu
andprotobuf
now build successfully.Closes #108305.
Things done
sandbox = true
set 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/
)nixos/doc/manual/md-to-db.sh
to update generated release notes