-
Notifications
You must be signed in to change notification settings - Fork 13k
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: Move dist-aarch64-linux to an aarch64 runner #135262
Conversation
528f263
to
7d9903c
Compare
Same as before, plus a couple small changes to account for the LTO+clang workarounds that were merged in the meantime |
@bors try |
…=<try> ci: Move dist-aarch64-linux to an aarch64 runner Move the dist-aarch64-linux CI job to an aarch64 runner instead of cross-compiling it from an x86 one. This will make it possible to perform optimisations such as LTO, PGO and BOLT later on. r? `@Kobzol` Reland of rust-lang#133809 now that the higher page sizes are fixed. try-job: dist-aarch64-linux try-job: dist-x86_64-linux try-job: dist-i686-linux
💥 Test timed out |
Do we need a longer timeout here again? |
We probably turned that one to a free runner recently-ish, so it times out now. With the cache primed, it should be fine. @bors try |
…=<try> ci: Move dist-aarch64-linux to an aarch64 runner Move the dist-aarch64-linux CI job to an aarch64 runner instead of cross-compiling it from an x86 one. This will make it possible to perform optimisations such as LTO, PGO and BOLT later on. r? `@Kobzol` Reland of rust-lang#133809 now that the higher page sizes are fixed. try-job: dist-aarch64-linux try-job: dist-x86_64-linux try-job: dist-i686-linux
☔ The latest upstream changes (presumably #135286) made this pull request unmergeable. Please resolve the merge conflicts. |
💥 Test timed out |
Ahh I see, I think we need to apply the same fix as in #134690 to i686 as well. But then it already seems like it was tested there when that PR was merged? build-clang.sh is failing with some errors mentioning Gold and that's causing the timeout in any case. |
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.
There is the path src/ci/docker/host-*/disabled
for jobs that are still useful but don't run in CI. I'm not sure what the policy is, but maybe it would be good to move this there instead of removing it? I would find it occasionally useful for verifying aarch64 builds on x86 machines. (non-dist would be better yet, but leaving the dist job around still seems convenient).
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.
Jobs in the disabled
directory rot fast, and they can be restored from git history, so I personally don't see a lot of value in this. You can always copy-paste the contents locally to test it.
src/ci/docker/scripts/build-clang.sh
Outdated
-DLLVM_INCLUDE_BENCHMARKS=OFF \ | ||
-DLLVM_INCLUDE_TESTS=OFF \ | ||
-DLLVM_INCLUDE_EXAMPLES=OFF \ | ||
-DLLVM_ENABLE_PROJECTS="clang;lld;compiler-rt;bolt" \ | ||
-DLLVM_BINUTILS_INCDIR="/rustroot/lib/gcc/x86_64-pc-linux-gnu/$GCC_VERSION/plugin/include/" \ | ||
-DLLVM_BINUTILS_INCDIR="/rustroot/lib/gcc/$GCC_BUILD_TARGET/$GCC_VERSION/plugin/include/" \ |
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.
It seems to me that this is the only change that happened to the 32-bit runner. I think that the problem is that only the 64-bit version of binutils is installed in the CentOS image:
2025-01-09T14:25:36.9324939Z #13 5.216 ---> Package binutils.x86_64 0:2.27-44.base.el7 will be updated
2025-01-09T14:25:36.9325811Z #13 5.217 ---> Package binutils.x86_64 0:2.27-44.base.el7_9.1 will be an update
So either this should be reverted (keep it hardcoded for 64-bit), or the 32-bit image should install also the 32-bit version of binutils.
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'm fairly sure the problem is here
-DLLVM_BINUTILS_INCDIR="/rustroot/lib/gcc/$GCC_BUILD_TARGET/$GCC_VERSION/plugin/include/" \
Because GCC_BUILD_TARGET will be i686 for the i686 job but the plugin/include will end up under x86_64 because that's where the job is running. I'm running a local build to confirm atm
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 don't think that the cause is necessarily that the host is x64, rather than just the binutils package is installed only in the x64 version, not the i686 version. So downloading a binutils.i686 CentOS package should hopefully fix it. If not, I would just hardcode the previous x64 path.
7d9903c
to
1ee0062
Compare
Some changes occurred in src/tools/cargo cc @ehuss |
ah sorry about that |
Move the dist-aarch64-linux CI job to an aarch64 runner instead of cross-compiling it from an x86 one. This will make it possible to perform optimisations such as LTO, PGO and BOLT later on.
1ee0062
to
307480a
Compare
It seems like you did both, i.e. install 32-bit binutils, but use the x64 path? :D Anyway, let's see if it helped. @bors try |
…=<try> ci: Move dist-aarch64-linux to an aarch64 runner Move the dist-aarch64-linux CI job to an aarch64 runner instead of cross-compiling it from an x86 one. This will make it possible to perform optimisations such as LTO, PGO and BOLT later on. r? `@Kobzol` Reland of rust-lang#133809 now that the higher page sizes are fixed. try-job: dist-aarch64-linux try-job: dist-x86_64-linux try-job: dist-i686-linux
Well I figured the builds take so long to run that I might as well try the more conservative approach :) I think if it needed the i686 binutils it probably would have failed sooner, but it failing on the linking stage of building clang suggests that it's the linker plugin include that was messed up |
☀️ Try build successful - checks-actions |
…=Kobzol ci: Move dist-aarch64-linux to an aarch64 runner Move the dist-aarch64-linux CI job to an aarch64 runner instead of cross-compiling it from an x86 one. This will make it possible to perform optimisations such as LTO, PGO and BOLT later on. r? `@Kobzol` Reland of rust-lang#133809 now that the higher page sizes are fixed. try-job: dist-aarch64-linux try-job: dist-x86_64-linux try-job: dist-i686-linux
💔 Test failed - checks-actions |
Huh, I don' think this is related to the PR?
But then I know nothing about windows, so if someone who does could chime in that'd be great.. |
Yeah, that's sadly a known flaky failure. @bors retry |
…=Kobzol ci: Move dist-aarch64-linux to an aarch64 runner Move the dist-aarch64-linux CI job to an aarch64 runner instead of cross-compiling it from an x86 one. This will make it possible to perform optimisations such as LTO, PGO and BOLT later on. r? `@Kobzol` Reland of rust-lang#133809 now that the higher page sizes are fixed. try-job: dist-aarch64-linux try-job: dist-x86_64-linux try-job: dist-i686-linux
💔 Test failed - checks-actions |
It seems the CI gods are not with us tonight
|
@bors retry |
☀️ Test successful - checks-actions |
Finished benchmarking commit (c0f6a1c): comparison URL. Overall result: ✅ improvements - no action needed@rustbot label: -perf-regression Instruction countThis is the most reliable metric that we have; it was used to determine the overall result at the top of this comment. However, even this metric can sometimes exhibit noise.
Max RSS (memory usage)This benchmark run did not return any relevant results for this metric. CyclesResults (secondary -3.0%)This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
Binary sizeThis benchmark run did not return any relevant results for this metric. Bootstrap: 761.975s -> 761.573s (-0.05%) |
Move the dist-aarch64-linux CI job to an aarch64 runner instead of cross-compiling it from an x86 one. This will make it possible to perform optimisations such as LTO, PGO and BOLT later on.
r? @Kobzol
Reland of #133809 now that the higher page sizes are fixed.
try-job: dist-aarch64-linux
try-job: dist-x86_64-linux
try-job: dist-i686-linux