-
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
Regression on cross compiling to aarch64-unknown-linux-musl using nightly #128401
Comments
cc @Emilgardis (of cross-rs fame) in case he has any insight on this regression |
I have hit the same issue in a similar situation. Link to pipeline failing logs: ci logs |
Seems rune isn't needed based on the comment by @drdo |
This is probably #128358 |
WG-prioritization assigning priority (Zulip discussion). @rustbot label -I-prioritize +P-high |
Yeah that's probably it. We used to build the C version of those symbols but switched to Rust versions with the compiler builtins update. Unfortunately we can't enable them on all platforms because LLVM has crashes, and the logic that would allow optional configuration is apparently not working. After that part is fixed, we will need to enable the symbols on all platforms where I think anyone who needs a quick workaround can add |
@tgross35 Is it possible to add a dependency conditionally based on if it is nightly? (In a specific range of dates even?) I cannot and will not depend on nightly, but I do test my code on nightly in CI (in order to find breakages like this early). For now I just disabled that nightly build on aarch64 musl. |
Same for me. Not using cross-rs though. |
Same for me, both using |
By moving the logic for which platforms get symbols to `compiler_builtins` rather than rust-lang/rust, we can control where symbols get enabled without relying on Cargo features. Using Cargo features turned out to be a problem in [1]. This will help resolve errors like [2]. [1]: rust-lang/rust#128358 [2]: rust-lang/rust#128401
By moving the logic for which platforms get symbols to `compiler_builtins` rather than rust-lang/rust, we can control where symbols get enabled without relying on Cargo features. Using Cargo features turned out to be a problem in [1]. This will help resolve errors like [2]. [1]: rust-lang/rust#128358 [2]: rust-lang/rust#128401
By moving the logic for which platforms get symbols to `compiler_builtins` rather than rust-lang/rust, we can control where symbols get enabled without relying on Cargo features. Using Cargo features turned out to be a problem in [1]. This will help resolve errors like [2]. [1]: rust-lang/rust#128358 [2]: rust-lang/rust#128401
By moving the logic for which platforms get symbols to `compiler_builtins` rather than rust-lang/rust, we can control where symbols get enabled without relying on Cargo features. Using Cargo features turned out to be a problem in [1]. This will help resolve errors like [2]. [1]: rust-lang/rust#128358 [2]: rust-lang/rust#128401
By moving the logic for which platforms get symbols to `compiler_builtins` rather than rust-lang/rust, we can control where symbols get enabled without relying on Cargo features. Using Cargo features turned out to be a problem in [1]. This will help resolve errors like [2]. [1]: rust-lang/rust#128358 [2]: rust-lang/rust#128401
By moving the logic for which platforms get symbols to `compiler_builtins` rather than rust-lang/rust, we can control where symbols get enabled without relying on Cargo features. Using Cargo features turned out to be a problem in [1]. This will help resolve errors like [2]. [1]: rust-lang/rust#128358 [2]: rust-lang/rust#128401
By moving the logic for which platforms get symbols to `compiler_builtins` rather than rust-lang/rust, we can control where symbols get enabled without relying on Cargo features. Using Cargo features turned out to be a problem in [1]. This will help resolve errors like [2]. [1]: rust-lang/rust#128358 [2]: rust-lang/rust#128401
By moving the logic for which platforms get symbols to `compiler_builtins` rather than rust-lang/rust, we can control where symbols get enabled without relying on Cargo features. Using Cargo features turned out to be a problem in [1]. This will help resolve errors like [2]. [1]: rust-lang/rust#128358 [2]: rust-lang/rust#128401
By moving the logic for which platforms get symbols to `compiler_builtins` rather than rust-lang/rust, we can control where symbols get enabled without relying on Cargo features. Using Cargo features turned out to be a problem in [1]. This will help resolve errors like [2]. [1]: rust-lang/rust#128358 [2]: rust-lang/rust#128401
By moving the logic for which platforms get symbols to `compiler_builtins` rather than rust-lang/rust, we can control where symbols get enabled without relying on Cargo features. Using Cargo features turned out to be a problem in [1]. This will help resolve errors like [2]. [1]: rust-lang/rust#128358 [2]: rust-lang/rust#128401
This comment was marked as off-topic.
This comment was marked as off-topic.
@BlackDex Not for my projects, so you should probably provide a reproducer on x86-64 GNU if possible, since that is a tier 1 platform (unlike Aarch64 on Musl). Or is this about some other x86_64 variation that is also tier 2? |
Woops, sorry, the x86_64 build failed too, but then i looked at the aarch64 build logs :) which still fail. |
This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang#128401. [1]: rust-lang/compiler-builtins#652
This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang#128401. [1]: rust-lang/compiler-builtins#652
Update `compiler-builtins` to 0.1.115 This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang#128401. [1]: rust-lang/compiler-builtins#652
Update `compiler-builtins` to 0.1.115 This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang#128401. [1]: rust-lang/compiler-builtins#652 try-job: dist-various-1
This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang#128401. [1]: rust-lang/compiler-builtins#652
This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang#128401. [1]: rust-lang/compiler-builtins#652
Update `compiler-builtins` to 0.1.117 This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang#128401. [1]: rust-lang/compiler-builtins#652 try-job: dist-various-1
Update `compiler-builtins` to 0.1.117 This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang#128401. [1]: rust-lang/compiler-builtins#652 try-job: dist-various-1
After testing more thoroughly on my box, it turned out that the libgcc linking workaround should indeed fix our build errors, but on CI that did not happen because the `RUSTFLAGS` environment variable is set, which takes precedence over any configuration at `.cargo/config.toml`. Therefore, let's also add the workaround to `RUSTFLAGS` on the CI workflow definition. This should be a satisfactory enough stopgap solution that does not require ourselves to be pinned to a specific nightly or drop these builds until rust-lang/rust#128401 is sorted out.
Update `compiler-builtins` to 0.1.117 This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang#128401. [1]: rust-lang/compiler-builtins#652 try-job: dist-various-1
Rollup merge of rust-lang#128691 - tgross35:update-builtins, r=Amanieu Update `compiler-builtins` to 0.1.117 This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang#128401. [1]: rust-lang/compiler-builtins#652 try-job: dist-various-1
This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang/rust#128401. [1]: rust-lang/compiler-builtins#652 Ferrocene-backport-of: #128691
Code
I do not have minimised code. This was a sudden CI build failure on nightly for aarch64-unknown-linux-musl (ci logs)
Note that this is a cross compile using cross-rs.
It fails on rust version 1.82.0-nightly (612a33f 2024-07-29) but works on 1.82.0-nightly (2cbbe8b 2024-07-28). Needless to say it also works perfectly fine on stable.
As such I'm forced to conclude that the blame lies with Rustc.
Steps to reproduce:
git clone https://github.com/VorpalBlade/paketkoll cd paketkoll git checkout 48867a025c0f2192317b7e75ddaf75fce7da3f58 cross +nightly build --target aarch64-unknown-linux-musl
I expected to see this happen: Compilation successful (as it is with stable for same target, or with -gnu and nightly)
Instead, this happened (full ci logs)
Version it worked on
It most recently worked on: 1.82.0-nightly (2cbbe8b 2024-07-28) (or stable 1.80.0 or beta 1.81.0, take your pick for triaging)
Version with regression
rustc --version --verbose
:The text was updated successfully, but these errors were encountered: