-
Notifications
You must be signed in to change notification settings - Fork 12.9k
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
[CI] Update binutils for powerpc64 and powerpc64le #58986
Conversation
Cargo powerpc64 and powerpc64le are seeing `SIGILL` crashes in openssl, which was found to be a linking problem, fixed by newer binutils. See <rust-lang#57345 (comment)> For powerpc64 we're using crosstool-ng, which doesn't offer a newer binutils version, but we can just compile it separately. On powerpc64le we're already building binutils. Both are now updated to binutils 2.32. Closes rust-lang/cargo#6320 Closes rust-lang#57345 Closes rust-lang/rustup#1620
The job Click to expand the log.
I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact |
@bors: r+ Nice finds! |
📌 Commit c843fe7 has been approved by |
🌲 The tree is currently closed for pull requests below priority 500, this pull request will be tested once the tree is reopened |
[CI] Update binutils for powerpc64 and powerpc64le Cargo powerpc64 and powerpc64le are seeing `SIGILL` crashes in openssl, which was found to be a linking problem, fixed by newer binutils. See <rust-lang#57345 (comment)> For powerpc64 we're using crosstool-ng, which doesn't offer a newer binutils version, but we can just compile it separately. On powerpc64le we're already building binutils. Both are now updated to binutils 2.32. Closes rust-lang/cargo#6320 Closes rust-lang#57345 Closes rust-lang/rustup#1620
[CI] Update binutils for powerpc64 and powerpc64le Cargo powerpc64 and powerpc64le are seeing `SIGILL` crashes in openssl, which was found to be a linking problem, fixed by newer binutils. See <rust-lang#57345 (comment)> For powerpc64 we're using crosstool-ng, which doesn't offer a newer binutils version, but we can just compile it separately. On powerpc64le we're already building binutils. Both are now updated to binutils 2.32. Closes rust-lang/cargo#6320 Closes rust-lang#57345 Closes rust-lang/rustup#1620 r? @alexcrichton
[CI] Update binutils for powerpc64 and powerpc64le Cargo powerpc64 and powerpc64le are seeing `SIGILL` crashes in openssl, which was found to be a linking problem, fixed by newer binutils. See <rust-lang#57345 (comment)> For powerpc64 we're using crosstool-ng, which doesn't offer a newer binutils version, but we can just compile it separately. On powerpc64le we're already building binutils. Both are now updated to binutils 2.32. Closes rust-lang/cargo#6320 Closes rust-lang#57345 Closes rust-lang/rustup#1620 r? @alexcrichton
[CI] Update binutils for powerpc64 and powerpc64le Cargo powerpc64 and powerpc64le are seeing `SIGILL` crashes in openssl, which was found to be a linking problem, fixed by newer binutils. See <rust-lang#57345 (comment)> For powerpc64 we're using crosstool-ng, which doesn't offer a newer binutils version, but we can just compile it separately. On powerpc64le we're already building binutils. Both are now updated to binutils 2.32. Closes rust-lang/cargo#6320 Closes rust-lang#57345 Closes rust-lang/rustup#1620 r? @alexcrichton
Rollup of 5 pull requests (all of which changes `src/ci/docker`) Successful merges: - #58986 ([CI] Update binutils for powerpc64 and powerpc64le) - #59038 (Track embedded-book in the toolstate) - #59055 (CI: Set job names.) - #59253 (Calculate Docker cache hash precisely from Dockerfile's dependencies) - #59257 (Update CI configuration for building Redox libraries) Failed merges: r? @ghost
I've nominated this for beta and stable to get the fixed builds out sooner, though I'm aware that we'll only get stable if there's a point release. cc @rust-lang/release |
@rust-lang/infra -- please consider this for beta. |
We discussed this at the infra meeting, and decided not to backport this. |
@pietroalbini What is the cost of making a working build for ppc64le? Really don't understand the behavior here. |
Backporting CI changes is always risky for us, so we tend to reject most of the backports that are not essential for a Tier 1 platform, as it happened with this PR. Most of our CI is built around custom Docker images which are rebuilt every time the CI configuration is changed. In a perfect world rebuilding a Docker image twice with the same Dockerfile would result in the same image being produced, but making Docker builds deterministic and reproducible is hard. It's not rare that a change on an image breaks an unrelated platform (for example it happened a few days ago with Android and its SDK that doesn't support pinning at all), and we can't afford these kinds of breakages on beta. I hope you understand. |
You don't have a way to make changes specific to each platform? |
Sort of. The main issue is we have to cache the Docker images, since we don't have the CI capacity to rebuild them every time (our time cap is 3 hours, and for example rebuilding the linux x86 ones take 2.5 hours), so we need to decide at the start of the build whether to use the cached one or rebuild the image. In our cache the images are identified by the hash of all the related Also we share lots of scripts between Docker images, so rebuilding one could trigger the rebuild of another one even if all the previous issues didn't exist. Rest assured we don't want to ship broken lower-tier platforms, but backporting those kinds of changes is too risky, and there is a reason why we have an (informal) policy against it. |
I feel like something could be done to make this situation easier, it sounds like a mess. Making stuff works should never be risky. @madscientist159 can and will donate ppc64 hardware from IntegriCloud, that way you can build things with more capacity. |
Even with native hardware (which would be nice!), we still need to take care with toolchain compatibility, so that wouldn't remove problems like this. |
Yeah, as you saw our CI is quirky and messy, but it gets its job done and it has some really nice features (like the ability to run the same exact build locally with
We still need to figure out a way to properly make use of hardware donations, but thanks for the offer! When all the stuff on our end is sorted out we'll try to remember to ping y'all again! To be clear though, the problem is not the lack of hardware to test things on, but the time it takes to run a full test: x86 tests at the moment take around 2 to 3 hours to execute, and the Docker image takes 2.5 hours to build. Since we test only one PR at the time (not for capacity issues, but to ensure all the commits on master are always working -- more details if you're curious) being able to land a PR every 4/5 hours instead of one every 2/3 hours would be really bad for our queue. |
@pietroalbini It is lack of hardware to test things on, if the hardware is faster or you have more, then that takes less time and your problem is solved. |
Yes, I think there should be a way to edit the build process, per platform and per release quality (stable, beta, nightly). AIUI it's not the case and they're scared to make changes because a fix for powerpc64/le can break the others. |
Well, sort of. To be fair the main problem if we skipped caching altogether is not PowerPC but x86, and even throwing a lot of money at the problem won't help too much since it's not possible to distribute building the docker container.
The build process is already clearly split between stable, beta and nightly. The line between the platforms' build processes is a bit fuzzy though, and I agree with you we should strive to improve that. Kenny already improved in #59253 the cache hashing code so it's more precise, and that's included in the 1.35 CI configuration. If you have any ideas on how to improve the caching invalidation (without rebuilding the image every time) I'd love to hear them!
By the way, we're wary of making changes to the CI only for beta and stable, we have no problems tweaking things on nightly and let the changes ride the trains as it's happening with this PR ;) |
We (ppc64 users) will wait, we wish it was in our hands to have a working build through rustup and it would already have been fixed, thankfully there's workarounds available. |
I second this; the fact that Rust is having issues on POWER is making it very hard to recommend Rust for secure applications. While I understand the x86 focus, x86 is a very poor platform to be tied exclusively to for a language that is focusing on security aspects -- a safe language will not paper over the serious issues that the x86 platform presents at a firmware and hardware level, and for many applications it's more important to control the base platform and use something like C++ than it is to use Rust and deal with the unfixable x86 platform security problems. We can get you direct dedicated access to a fairly large POWER9 box if build / test time is the main problem. In terms of benchmarks, the POWER9 systems compete directly with expensive x86 machines for build time; it's not like you're going to be waiting for the POWER9 box to finish when the x86 machine is done. 😉 |
Cargo powerpc64 and powerpc64le are seeing
SIGILL
crashes in openssl,which was found to be a linking problem, fixed by newer binutils. See
#57345 (comment)
For powerpc64 we're using crosstool-ng, which doesn't offer a newer
binutils version, but we can just compile it separately. On powerpc64le
we're already building binutils. Both are now updated to binutils 2.32.
Closes rust-lang/cargo#6320
Closes #57345
Closes rust-lang/rustup#1620
r? @alexcrichton