-
-
Notifications
You must be signed in to change notification settings - Fork 14.8k
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: update ARM bootstrap tarballs #79793
Conversation
I figure those are the Assuming one doesn't trust your tarballs, they could use those instead, right? The next step might be to somewhat automatize this step of taking the latest bootstrap tarballs? Any issues with the idea? I'm thinking a maintainer script that could be run manually to produce the update and a list of tarballs to download from hydra, with appropriate names. |
I downloaded them from the individual jobs ( |
7f7bbf4
to
aaaf42d
Compare
I updated the URLs to point to Hydra. The busybox gcc in the bootstrap tarball is nonfunctional because it is missing libssp. |
This seems to get a little further, but fails on xz:
|
In any case I believe updates of bootstrap tarball (or busybox) should be rather rare events, hopefully years apart. Right now the various failures and fixups seem to need much more work than the automatizable parts. |
For me it failed building GCC. I ran into the the same error as on i686 in #66528 (comment). I am currently testing to see if disabling LTO works around the problem. |
Yes, I agree, hence "somewhat" automatize. My main thought here is that each time it happens it's years apart, people come and go, people forget what needs to happen to do this properly. |
For that it's enough to write some docs/howto :-) |
I can't reproduce the xz failure. I was able to build armv7l stdenv except for a failing |
883d722
to
7e7bbcb
Compare
I'm testing this again, but there's a bit being left unsaid in this thread so I'm not sure I'm testing the right thing. Check my working and see where I'm going wrong. First off, this branch doesn't evaluate as is due to infinite recursion.
So I'm testing against the merge, which as of writing is:
Rebuild the tools:
I then plug the results into
To reduce error I made a quick script to glue the two halves together. |
My testing was done by applying 7e7bbcb on top of ac241fb (the latest commit that Hydra had finished building bootstrap tools for at the time I started testing) in order to build the bootstrap tools. I was planning to split 7e7bbcbc29bc689c58a8430da3529ad5c70fa0d0 into its own PR and then let Hydra build a new version of the bootstrap tools. Based on your error, it looks like now some other change has broken the bootstrap tools again. |
1f1b31c
to
cfbda29
Compare
Fixes building glibc 2.30, which requires at least GCC 6. Picked from the following cross-trunk evaluation: https://hydra.nixos.org/eval/1568864 based on nixpkgs commit ac241fb. armv5tel job: https://hydra.nixos.org/build/111556418 armv6l job: https://hydra.nixos.org/build/111556521 armv7l job: https://hydra.nixos.org/build/111556551
cfbda29
to
0c5194d
Compare
0c5194d
to
a9d5f71
Compare
I've successfully built |
Now that the bootstrap tools have glibc 2.30, LTO works again but will probably break with the next glibc update. I'm not sure if I should keep it disabled, or wait and see if it becomes a problem next time glibc is updated. |
Also, I have tested building armv6l stdenv on an armv7l machine (using lopsided98@001be94, which is how I normally build for armv6l). I have not tested armv5tel, but this PR can't make it any more broken than it currently is. |
PR #79391 for glibc 2.31 is there already, if you want to try now. |
The linker scripts no longer contain store paths, so this does nothing. More importantly, libpthread.so is not longer a linker script on ARM, so the patching would corrupt it.
a9d5f71
to
5026ae2
Compare
|
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.
deleted we need to regenerate the bootstrap tarballs after #79793.
export PATH=$out/bin | ||
cat $out/lib/libc.so | sed "s|/nix/store/e*-[^/]*/|$out/|g" > $out/lib/libc.so.tmp |
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's not entirely clear to me if this could cause problems. I would expect this to be unnecessary with allowedReferences = [];
, but it seems like that already existed these where introduced.
@FRidh This should not have been merged. |
The problem part is the bootstrap URLs, right? If so, we can follow-up with an update. |
Yes, this shouldn't break anything any more than it already is. Just so everything is clear, these are the required next steps:
|
Combination of NixOS#79793 and NixOS#82051
Motivation for this change
Updates the 32-bit ARM bootstrap tarballs to the latest cross-compiled versions built by Hydra in the
cross-trunk
jobset. This is required because glibc 2.30 requires at least GCC6 (see #66528).This update is based on the previous one in 28f87e4.
I have not tested this at all yet, but @thefloweringash reported armv7l build failures.
The tools are currently hosted on my server, but will need to be moved to tarballs.nixos.org before this is merged.
Things done
sandbox
innix.conf
on non-NixOS linux)nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
./result/bin/
)nix path-info -S
before and after)cc @samueldr @thefloweringash @vcunat