Skip to content

Commit 4f71ff0

Browse files
committed
updpatch: rust 1:1.82.0-1
Musl Patch ========== riscv64gc-unknown-linux-musl gets promoted to tier 2 and `crt_static_default` is updated to false in rust-lang/rust#122049, which triggers rust-lang/rust#82521 (comment) when building stage2 library artifacts (riscv64gc-unknown-linux-gnu -> riscv64gc-unknown-linux-musl). I patched it to re-enable `crt_static_default` for `riscv64gc-unknown-linux-musl` to fix the build and align with the behavior on x86 Arch Linux, where `rust-musl` defaults to statically link musl. Wasm compiler_builtins bug ========================== Wasm compiler_builtins rlib from built `rust-wasm` package includes objects for host architecture(riscv64 in our case, and x86_64 for x86 Arch Linux). This is not reproducible for toolchains installed via rustup so I have reported it to Arch Linux: https://gitlab.archlinux.org/archlinux/packaging/packages/rust/-/issues/3 Complications when building 1.82.0 ================================== rust-lang/rust#125016 landed in 1.82.0, which breaks building rust 1.82.0 using our packaged rust 1.81.0. Compiling the new compiler_builtins component requires a rustc compiler that includes rust-lang/rust@99e6a28 but unfortunately 1.81.0 does not, leading to the following ICE: https://archriscv.felixc.at/.status/log.htm?url=logs/rust/rust-1:1.82.0-1.log internal compiler error: compiler/rustc_codegen_llvm/src/abi.rs:126:22: unsupported float: Reg { kind: Float, size: Size(2 bytes) } This is mitigated upstream by bumping stage0 to 1.82: rust-lang/rust#129268 (comment) So we need to first build 1.82.0 rustc once without the f16/f128 handling part in compiler_builtins, to get a compiler that is capable of handling f16/f128. And then we can use this compiler to compile compiler_builtins with f16/f128 handling. It's not easy to do so in one patch. The most easy way is to build and package rust 1.82.0 twice. This PR covers the first part and disable-f16-f128.diff will be removed in the second part.
1 parent 42dc89d commit 4f71ff0

File tree

3 files changed

+65
-4
lines changed

3 files changed

+65
-4
lines changed

rust/disable-f16-f128.diff

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
diff --git a/library/alloc/Cargo.toml b/library/alloc/Cargo.toml
2+
index 4365bcc4ad0..7849d463b6d 100644
3+
--- a/library/alloc/Cargo.toml
4+
+++ b/library/alloc/Cargo.toml
5+
@@ -10,7 +10,7 @@ edition = "2021"
6+
7+
[dependencies]
8+
core = { path = "../core" }
9+
-compiler_builtins = { version = "0.1.123", features = ['rustc-dep-of-std'] }
10+
+compiler_builtins = { version = "0.1.123", features = ['rustc-dep-of-std', 'no-f16-f128'] }
11+
12+
[dev-dependencies]
13+
rand = { version = "0.8.5", default-features = false, features = ["alloc"] }
+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
diff --git a/compiler/rustc_target/src/spec/targets/riscv64gc_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/targets/riscv64gc_unknown_linux_musl.rs
2+
index 8b401329868..3e575fdd528 100644
3+
--- a/compiler/rustc_target/src/spec/targets/riscv64gc_unknown_linux_musl.rs
4+
+++ b/compiler/rustc_target/src/spec/targets/riscv64gc_unknown_linux_musl.rs
5+
@@ -21,7 +21,6 @@ pub fn target() -> Target {
6+
llvm_abiname: "lp64d".into(),
7+
max_atomic_width: Some(64),
8+
supported_split_debuginfo: Cow::Borrowed(&[SplitDebuginfo::Off]),
9+
- crt_static_default: false,
10+
..base::linux_musl::opts()
11+
},
12+
}

rust/riscv64.patch

+40-4
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,43 @@
1717
libffi
1818
lld
1919
llvm
20-
@@ -99,9 +96,8 @@ link-shared = true
20+
@@ -61,6 +58,8 @@ source=(
21+
0003-compiler-Change-LLVM-targets.patch
22+
0004-compiler-Use-wasm-ld-for-wasm-targets.patch
23+
0005-Fix-enabling-wasm-component-ld-to-match-other-tools.patch
24+
+ disable-f16-f128.diff
25+
+ riscv-musl-crt-default-static.diff
26+
)
27+
b2sums=('c95ee180622a7984d03d43bcb3dd2ae16c41f95dde88426f972f32cac6ece904ced00d90967a32829db64d8790ee042192d1102426e7a2c4f6b2ff9d14c7cf70'
28+
'SKIP'
29+
@@ -68,7 +67,9 @@ b2sums=('c95ee180622a7984d03d43bcb3dd2ae16c41f95dde88426f972f32cac6ece904ced00d9
30+
'365d53955a5ccf4b603ed39dd06384db063441477ed76fbbb31d7a0d46c6a297d86a0b306fcb616485c229ec8965eaa36a5b91b2398991b51f37ff58bd461054'
31+
'b0e5c8054f5364fbbc5619674923931e5d896bf56dc1cb1b09e906b7b451d44b7af78dca848e9f8e2de4f15d014187dd25301d6e704005a1efafffe586e120de'
32+
'963aa64d27763f063b9fac483a870563f5a71a49ec02d17b7ca0c14dbf67064ba56028bbc45f2ee50b16eada725cb55c2aa2ab17ceadff65ba9e40cb220f7a0c'
33+
- 'b99ff1689f92ac50b2f64e00150ae6959cf5350dab28e773d9256ec33457684289cef37297c66943a4aa15e0128d043676fa3e498a63bd264bdff34e165e1bcc')
34+
+ 'b99ff1689f92ac50b2f64e00150ae6959cf5350dab28e773d9256ec33457684289cef37297c66943a4aa15e0128d043676fa3e498a63bd264bdff34e165e1bcc'
35+
+ 'cc08fcde954217dd00d64f8554fa676730192209d96c8bad6444f283560c40589eeecdea4c93a596ba678ad470d49304208f1218595a900ab35588ff21f2bbe9'
36+
+ 'a49b3a586b6ed62ec19a4f84f3ef297d926ce584faa640697c71e806f74012908a84d6a87a31bc8b3e70a6ce3049c1075ab13de3581374decf19cd9ee719cc65')
37+
validpgpkeys=(
38+
108F66205EAEB0AAA8DD5E1C85AB96E6FA1BE5FE # Rust Language (Tag and Release Signing Key) <[email protected]>
39+
)
40+
@@ -93,6 +94,15 @@ prepare() {
41+
# https://github.com/rust-lang/rust/pull/130034
42+
patch -Np1 -i ../0005-Fix-enabling-wasm-component-ld-to-match-other-tools.patch
43+
44+
+ # Disable f16 f128 once
45+
+ patch -Np1 -i ../disable-f16-f128.diff
46+
+
47+
+ # Some musl targets(like x86_64) by default crt-static, while others are not.
48+
+ # riscv musl target gets changed to not crt-static by default and triggers
49+
+ # https://github.com/rust-lang/rust/issues/82521
50+
+ # Re-enable default crt-static to align with x86_64 Arch Linux and fix build.
51+
+ patch -Np1 -i ../riscv-musl-crt-default-static.diff
52+
+
53+
cat >config.toml <<END
54+
# see src/bootstrap/defaults/
55+
profile = "dist"
56+
@@ -105,9 +115,8 @@ link-shared = true
2157

2258
[build]
2359
target = [
@@ -29,9 +65,9 @@
2965
"wasm32-unknown-unknown",
3066
"wasm32-wasi",
3167
"wasm32-wasip1",
32-
@@ -148,22 +144,18 @@ jemalloc = true
33-
[dist]
68+
@@ -157,22 +166,18 @@ jemalloc = true
3469
compression-formats = ["gz"]
70+
compression-profile = "fast"
3571

3672
-[target.x86_64-unknown-linux-gnu]
3773
+[target.riscv64gc-unknown-linux-gnu]
@@ -56,7 +92,7 @@
5692

5793
[target.wasm32-unknown-unknown]
5894
sanitizers = false
59-
@@ -229,12 +221,9 @@ build() {
95+
@@ -238,12 +243,9 @@ build() {
6096

6197
# rustbuild always installs copies of the shared libraries to /usr/lib,
6298
# overwrite them with symlinks to the per-architecture versions

0 commit comments

Comments
 (0)