dev-lang/rust: Sync with Gentoo

It's from Gentoo commit dd9aab5ab8ca0c4e94e1854fa2be5bc2fdcd33e9.
This commit is contained in:
Flatcar Buildbot 2025-01-27 07:05:23 +00:00 committed by Krzesimir Nowak
parent f6e274a12a
commit 757fba3abc
20 changed files with 439 additions and 1139 deletions

View File

@ -1,7 +1,3 @@
DIST openssl-0.10.35.crate 204462 BLAKE2B fb58a3be883bac3d5aa3e971172a281a80e9e100c51585db3d2828ecfd89d0b3b19edfacba2039056fa3aefb79717e03cd2ecbf932afb1acac2e74e1c29d3551 SHA512 5ebe4626a894ccc6e5c159cef72357654aa1a20dcc863fdab495f10a574b49b0b9d4e85a069b8b9297544ea0d09fd88a976396c3a8e8faaee9d01d79d943126f
DIST openssl-sys-0.9.65.crate 54405 BLAKE2B f0e09accf076653f172199d36bfe0b7547a738f962e9ee8c15563c4d27587aade3e44830022a1787dfc932ae1f162336e3a110a34b1459656631c7ea50e58b75 SHA512 4c14ff5258a35b86e35d352c5702c90e1f70954c8f33d17160694b63305057b97da3ac6846d3e8f8e7293c40f15b76effd1e34fad4be613b8d815b90148406f7
DIST rustc-1.54.0-src.tar.xz 116286856 BLAKE2B 5ac47822646a0b6205f09282168b4d4ddcace9f6bc8f242c890327ca4074626f129514f8bcae5c5556015745f718990cce490658076f5cd3526623439540416b SHA512 5162f85b43ca2c5af93fdbfb2597d75df8a838f7fcc025a5298499ce1043db50f1ea2fbba753e47ce5daad3d80d4b612acf6527ef902c34117763e687fdbbcfa
DIST rustc-1.54.0-src.tar.xz.asc 801 BLAKE2B 5ee9166eaa00e4ffec10fb82b18946d403bc2030c6e04de6449311cbccc2ef1b017044f451a1c19be3a0a9640c4a9a9e4bd22d28e2115509f333ae38eb25e9d4 SHA512 5ad91f43515de14114964db0348cd28c08adc6dc935f110bf339053414b8eab8a40f1074ceffa44ed2df61254f8368d867479400618c44efaa0333642ab49d07
DIST rustc-1.71.1-src.tar.xz 151983068 BLAKE2B 3dfdbc246feb84a79ae94c2de978c5585ee06cf6b683d2245869b62e28f7c79f89cc589f5431537713bf088236a0b824acefc1b68e418e9eb72e1eea98054e3f SHA512 fd0e5a16bdbeb539184513583089e55f681cb772810df357b6b1464853f7022ac02edab3dd155b2262ed0047e2a25dea3808dd078dcdfce9d399384465009db4
DIST rustc-1.71.1-src.tar.xz.asc 801 BLAKE2B a88c073a70552d73e2d7695eceabdaa478f34501b7271fabf7f4a09f3efa545181f34353e45776b05918e6aeba88adb02f9731454f7085a7abf1602fc6589983 SHA512 9dd0406cf22f1daa7fcfd015fc1c6f8d36586aa99bf14c1491ee464c1f892ab759feb83e8b55b64713170fb777fdbe038fb5fd01a59c911b6599223baaba0677
DIST rustc-1.74.1-src.tar.xz 155968724 BLAKE2B e05f2379ac94b286f85791a138e1928e5b5b5a7749f0981d82c40c2a12860f55bf96bb2f0e924e35a0f8b2447b13052d38adea909aaa3199105787bb5a4861b3 SHA512 14c7e7ed2f38ab60299d8c7d41d78f042b6b57ef822d577b5138e60bdde31cf141eccd4332a25bc5da3d58eb5313d63c1448b5dfe9e11b8055bb8ea133a9038d

View File

@ -1,75 +0,0 @@
From 1879d1d1a284bf51c752e47db284ce22701ed5d0 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Sun, 16 Sep 2018 16:38:48 +0000
Subject: [PATCH 12/15] Ignore broken and non-applicable tests
c-link-to-rust-va-list-fn: unstable feature, broken on aarch64, #56475
env-funky-keys: can't handle LD_PRELOAD (e.g. sandbox)
long-linker-command-lines: takes >10 minutes to run (but still passes)
simd-intrinsic-generic-bitmask.rs: broken on BE, #59356
sparc-struct-abi: no sparc target
sysroot-crates-are-unstable: can't run rustc without RPATH
---
src/test/codegen/sparc-struct-abi.rs | 1 +
src/test/run-make-fulldeps/c-link-to-rust-va-list-fn/Makefile | 2 ++
src/test/run-make-fulldeps/long-linker-command-lines/Makefile | 2 ++
src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile | 2 ++
src/test/ui/env-funky-keys.rs | 1 +
6 files changed, 10 insertions(+)
diff --git a/src/test/codegen/sparc-struct-abi.rs b/src/test/codegen/sparc-struct-abi.rs
index 78e5b14a212..6f93e93286b 100644
--- a/src/test/codegen/sparc-struct-abi.rs
+++ b/src/test/codegen/sparc-struct-abi.rs
@@ -4,6 +4,7 @@
// only-sparc64
// compile-flags: -O --target=sparc64-unknown-linux-gnu --crate-type=rlib
+// ignore-test
#![feature(no_core, lang_items)]
#![no_core]
diff --git a/src/test/run-make-fulldeps/c-link-to-rust-va-list-fn/Makefile b/src/test/run-make-fulldeps/c-link-to-rust-va-list-fn/Makefile
index f124ca2ab61..363b18f0985 100644
--- a/src/test/run-make-fulldeps/c-link-to-rust-va-list-fn/Makefile
+++ b/src/test/run-make-fulldeps/c-link-to-rust-va-list-fn/Makefile
@@ -1,3 +1,5 @@
+# ignore-aarch64
+
-include ../tools.mk
all:
diff --git a/src/test/run-make-fulldeps/long-linker-command-lines/Makefile b/src/test/run-make-fulldeps/long-linker-command-lines/Makefile
index 5876fbc94bc..5f167ece1a2 100644
--- a/src/test/run-make-fulldeps/long-linker-command-lines/Makefile
+++ b/src/test/run-make-fulldeps/long-linker-command-lines/Makefile
@@ -1,3 +1,5 @@
+# ignore-test
+
-include ../tools.mk
all:
diff --git a/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile b/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile
index 9e770706857..6d92ec5cec8 100644
--- a/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile
+++ b/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile
@@ -1,1 +1,3 @@
+# ignore-test
+
all:
python2.7 test.py
diff --git a/src/test/ui/env-funky-keys.rs b/src/test/ui/env-funky-keys.rs
index c5c824ac58d..f3fe047a79c 100644
--- a/src/test/ui/env-funky-keys.rs
+++ b/src/test/ui/env-funky-keys.rs
@@ -1,6 +1,7 @@
// run-pass
// Ignore this test on Android, because it segfaults there.
+// ignore-test
// ignore-android
// ignore-windows
// ignore-cloudabi no execve
--
2.24.1

View File

@ -1,164 +0,0 @@
From 671ef2d1c228aed031b4232b8bea96f17b825263 Mon Sep 17 00:00:00 2001
From: Georgy Yakovlev <gyakovlev@gentoo.org>
Date: Mon, 23 Nov 2020 14:52:04 -0800
Subject: [PATCH] add gentoo musl target specs
---
.../src/spec/aarch64_gentoo_linux_musl.rs | 11 +++++++++++
.../src/spec/armv7_gentoo_linux_musleabihf.rs | 11 +++++++++++
.../rustc_target/src/spec/i686_gentoo_linux_musl.rs | 11 +++++++++++
compiler/rustc_target/src/spec/mod.rs | 8 ++++++++
.../src/spec/powerpc64_gentoo_linux_musl.rs | 11 +++++++++++
.../src/spec/powerpc64le_gentoo_linux_musl.rs | 11 +++++++++++
.../src/spec/powerpc_gentoo_linux_musl.rs | 11 +++++++++++
.../rustc_target/src/spec/x86_64_gentoo_linux_musl.rs | 11 +++++++++++
8 files changed, 85 insertions(+)
create mode 100644 compiler/rustc_target/src/spec/aarch64_gentoo_linux_musl.rs
create mode 100644 compiler/rustc_target/src/spec/armv7_gentoo_linux_musleabihf.rs
create mode 100644 compiler/rustc_target/src/spec/i686_gentoo_linux_musl.rs
create mode 100644 compiler/rustc_target/src/spec/powerpc64_gentoo_linux_musl.rs
create mode 100644 compiler/rustc_target/src/spec/powerpc64le_gentoo_linux_musl.rs
create mode 100644 compiler/rustc_target/src/spec/powerpc_gentoo_linux_musl.rs
create mode 100644 compiler/rustc_target/src/spec/x86_64_gentoo_linux_musl.rs
diff --git a/compiler/rustc_target/src/spec/aarch64_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/aarch64_gentoo_linux_musl.rs
new file mode 100644
index 0000000..420fe7c
--- /dev/null
+++ b/compiler/rustc_target/src/spec/aarch64_gentoo_linux_musl.rs
@@ -0,0 +1,11 @@
+use crate::spec::Target;
+
+pub fn target() -> Target {
+ let mut base = super::aarch64_unknown_linux_musl::target();
+
+ base.llvm_target = "aarch64-gentoo-linux-musl".to_string();
+ base.options.vendor = "gentoo".to_string();
+ base.options.crt_static_default = false;
+
+ base
+}
diff --git a/compiler/rustc_target/src/spec/armv7_gentoo_linux_musleabihf.rs b/compiler/rustc_target/src/spec/armv7_gentoo_linux_musleabihf.rs
new file mode 100644
index 0000000..067e2d6
--- /dev/null
+++ b/compiler/rustc_target/src/spec/armv7_gentoo_linux_musleabihf.rs
@@ -0,0 +1,11 @@
+use crate::spec::Target;
+
+pub fn target() -> Target {
+ let mut base = super::armv7_unknown_linux_musleabihf::target();
+
+ base.llvm_target = "armv7-gentoo-linux-musleabihf".to_string();
+ base.options.vendor = "gentoo".to_string();
+ base.options.crt_static_default = false;
+
+ base
+}
diff --git a/compiler/rustc_target/src/spec/i686_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/i686_gentoo_linux_musl.rs
new file mode 100644
index 0000000..1cd39cd
--- /dev/null
+++ b/compiler/rustc_target/src/spec/i686_gentoo_linux_musl.rs
@@ -0,0 +1,11 @@
+use crate::spec::Target;
+
+pub fn target() -> Target {
+ let mut base = super::i686_unknown_linux_musl::target();
+
+ base.llvm_target = "i686-gentoo-linux-musl".to_string();
+ base.options.vendor = "gentoo".to_string();
+ base.options.crt_static_default = false;
+
+ base
+}
diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs
index f1e8330..d8c0ba0 100644
--- a/compiler/rustc_target/src/spec/mod.rs
+++ b/compiler/rustc_target/src/spec/mod.rs
@@ -490,6 +490,14 @@ macro_rules! supported_targets {
}
supported_targets! {
+ ("aarch64-gentoo-linux-musl", aarch64_gentoo_linux_musl),
+ ("armv7-gentoo-linux-musleabihf", armv7_gentoo_linux_musleabihf),
+ ("i686-gentoo-linux-musl", i686_gentoo_linux_musl),
+ ("powerpc-gentoo-linux-musl", powerpc_gentoo_linux_musl),
+ ("powerpc64-gentoo-linux-musl", powerpc64_gentoo_linux_musl),
+ ("powerpc64le-gentoo-linux-musl", powerpc64le_gentoo_linux_musl),
+ ("x86_64-gentoo-linux-musl", x86_64_gentoo_linux_musl),
+
("x86_64-unknown-linux-gnu", x86_64_unknown_linux_gnu),
("x86_64-unknown-linux-gnux32", x86_64_unknown_linux_gnux32),
("i686-unknown-linux-gnu", i686_unknown_linux_gnu),
diff --git a/compiler/rustc_target/src/spec/powerpc64_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/powerpc64_gentoo_linux_musl.rs
new file mode 100644
index 0000000..e840bb2
--- /dev/null
+++ b/compiler/rustc_target/src/spec/powerpc64_gentoo_linux_musl.rs
@@ -0,0 +1,11 @@
+use crate::spec::Target;
+
+pub fn target() -> Target {
+ let mut base = super::powerpc64_unknown_linux_musl::target();
+
+ base.llvm_target = "powerpc64-gentoo-linux-musl".to_string();
+ base.options.vendor = "gentoo".to_string();
+ base.options.crt_static_default = false;
+
+ base
+}
diff --git a/compiler/rustc_target/src/spec/powerpc64le_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/powerpc64le_gentoo_linux_musl.rs
new file mode 100644
index 0000000..1037d82
--- /dev/null
+++ b/compiler/rustc_target/src/spec/powerpc64le_gentoo_linux_musl.rs
@@ -0,0 +1,11 @@
+use crate::spec::Target;
+
+pub fn target() -> Target {
+ let mut base = super::powerpc64le_unknown_linux_musl::target();
+
+ base.llvm_target = "powerpc64le-gentoo-linux-musl".to_string();
+ base.options.vendor = "gentoo".to_string();
+ base.options.crt_static_default = false;
+
+ base
+}
diff --git a/compiler/rustc_target/src/spec/powerpc_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/powerpc_gentoo_linux_musl.rs
new file mode 100644
index 0000000..a623ffe
--- /dev/null
+++ b/compiler/rustc_target/src/spec/powerpc_gentoo_linux_musl.rs
@@ -0,0 +1,11 @@
+use crate::spec::Target;
+
+pub fn target() -> Target {
+ let mut base = super::powerpc_unknown_linux_musl::target();
+
+ base.llvm_target = "powerpc-gentoo-linux-musl".to_string();
+ base.options.vendor = "gentoo".to_string();
+ base.options.crt_static_default = false;
+
+ base
+}
diff --git a/compiler/rustc_target/src/spec/x86_64_gentoo_linux_musl.rs b/compiler/rustc_target/src/spec/x86_64_gentoo_linux_musl.rs
new file mode 100644
index 0000000..f330473
--- /dev/null
+++ b/compiler/rustc_target/src/spec/x86_64_gentoo_linux_musl.rs
@@ -0,0 +1,11 @@
+use crate::spec::Target;
+
+pub fn target() -> Target {
+ let mut base = super::x86_64_unknown_linux_musl::target();
+
+ base.llvm_target = "x86_64-gentoo-linux-musl".to_string();
+ base.options.vendor = "gentoo".to_string();
+ base.options.crt_static_default = false;
+
+ base
+}
--
2.29.2

View File

@ -1,234 +0,0 @@
From 12efa21eb88cb43d3b927952da0c5635373ac92b Mon Sep 17 00:00:00 2001
From: David Tolnay <dtolnay@gmail.com>
Date: Thu, 17 Jun 2021 22:34:55 -0700
Subject: [PATCH] Update rustversion to 1.0.5
---
Cargo.lock | 4 +--
vendor/rustversion/.cargo-checksum.json | 2 +-
vendor/rustversion/Cargo.toml | 2 +-
vendor/rustversion/build/build.rs | 6 ++++
vendor/rustversion/build/rustc.rs | 30 +++++++++-----------
vendor/rustversion/src/lib.rs | 15 ++++++++++
vendor/rustversion/src/time.rs | 13 +++++++--
vendor/rustversion/tests/test_parse.rs | 10 +++++++
vendor/rustversion/tests/ui/bad-bound.stderr | 4 +--
vendor/rustversion/tests/ui/bad-date.stderr | 4 +--
10 files changed, 63 insertions(+), 27 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index 0939f19cdfe..26a89caf050 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4582,9 +4582,9 @@ dependencies = [
[[package]]
name = "rustversion"
-version = "1.0.4"
+version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb5d2a036dc6d2d8fd16fde3498b04306e29bd193bf306a57427019b823d5acd"
+checksum = "61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088"
[[package]]
name = "ryu"
diff --git a/vendor/rustversion/.cargo-checksum.json b/vendor/rustversion/.cargo-checksum.json
index e1277df7b59..0a134695aaf 100644
--- a/vendor/rustversion/.cargo-checksum.json
+++ b/vendor/rustversion/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"1a91782510461d54726e816ae776042b95c79c9949d49c11b8782caefc22ead2","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"01dc6a1bf499a12bd0bfbbfe4db2ca8460b2c151235bcf2aad2356de4c2ec50a","build/build.rs":"481daf363b7004c90ffc3e012863a4102e9f26b9aaa2a4a295c2dd78f690be28","build/rustc.rs":"4dc8f1764672137bd15758cc19242740b0d6ab99e4a69171ad0999f9112a15a6","src/attr.rs":"9301cd4aff5a9648c057d5d8de9eb66921f0c3a715c51ada4459576bd49c8b19","src/bound.rs":"44bda74d3aacfeeeac9dae2f7eef3acc844d4c3c7eaa9d3e6288e5aeff269dff","src/constfn.rs":"613b8f53b21cc06b4f619fce9000993d3e7873b650701ca01cef1e53bed5b40a","src/date.rs":"454c749a60db8144a706a813e06fe3ae39c981920ba9832ef82f3f9debe1f052","src/error.rs":"cb37102f03ebbaca313d80f9714fe08dfef92fe956789ee87d93eb6121705f4f","src/expr.rs":"8e8ca76f4f5838436d9d7273f499c698bb41f6c15bc07d32ec5c1cb8bd3dd731","src/iter.rs":"8d4b817b9abc4e817105b673e15f29ef9bb8284a010ce01ac2d83387fe136947","src/lib.rs":"f8347832d8072058dbb4af6b8d67a834a02fe9c5460bbaa26defec4b66317f1b","src/release.rs":"abb8ddd877c39a023bf5e7bd67063d6e4144e79758a8bafa338167f9d15b89f1","src/time.rs":"45fb48ff0a0046a5a1b108b9ce53b14885637ad868ede1d66970379c2b7f16ef","src/token.rs":"824ce765f692db73afa02d3ebb0281c750748035efc98fa547be29d3072665ce","src/version.rs":"afdb048bba95bbb885945eba5527b6bf0eca0105642bfc304c2f82a8b7d556df","tests/compiletest.rs":"0a52a44786aea1c299c695bf948b2ed2081e4cc344e5c2cadceab4eb03d0010d","tests/test_const.rs":"a8297ca6559f895a3b2664964a42b6f82bbbc3c8faa9556a513006e6e1827995","tests/test_eval.rs":"6f0ee3f49c9a0d0c374a4d0e9a9dce753cd9fc2ca7725e000a435dbd5f4a9ce3","tests/test_parse.rs":"fbf9695f4208263743715e6c8b6294dfffee21462a65dfeb9339a70c0e18dbc6","tests/ui/bad-bound.rs":"25bde278fcaabf62868417148a5e5f2006bf589d7ebd7bf6004fb8d78e47594f","tests/ui/bad-bound.stderr":"bc9297f758c2541fb0a8b48d5785f4bbcd0d2a07d876ba0baf2fc9de9275e7e6","tests/ui/bad-date.rs":"6e23714dae8b6346fefe50dacd4abba3265248bbadfdd60c739138aa8a0037ba","tests/ui/bad-date.stderr":"1ac3cab13ee900fc8344e8fab21ff4d9cad476aca44925a4c1b2293a6b59b742","tests/ui/bad-not.rs":"f003df8bd245e9dd8edc3a6d94078ee5162fac7a98db881271f0f5b6db98d45d","tests/ui/bad-not.stderr":"d4ef78fae4a82419e737757158796cb103a5920df498956eaf57ed201797b463","tests/ui/bad-version.rs":"f4ea2cd038e6c63deb9c2e3ceffce93dbf179d9ce18c16d88f3b6cd7138a8c8e","tests/ui/bad-version.stderr":"60ed51c62f4c2fb6ff95cff7523cfca379ed434f319da9d82704318588792338","tests/ui/const-not-fn.rs":"10bbe38f0d89391fff0698756e4cfd4e72a41090360393a0c951b67df14d1c35","tests/ui/const-not-fn.stderr":"9551f7f222445b31d7af2415d467301c332d55bb3d5a143846484f2f00047a01"},"package":"cb5d2a036dc6d2d8fd16fde3498b04306e29bd193bf306a57427019b823d5acd"}
\ No newline at end of file
+{"files":{"Cargo.toml":"a09ee758f816eddff8a8c7fb5be54dd95e74caad18a207251faedd251ecfaf1c","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"01dc6a1bf499a12bd0bfbbfe4db2ca8460b2c151235bcf2aad2356de4c2ec50a","build/build.rs":"bae427f344972e6e0e348ec48dce0947274b3ec6cac0938497a8d3da5c9834e5","build/rustc.rs":"3e4acf7ea679f9331dd4e8dbe42a08a312f58379ea1eee5898793a9848d06d8c","src/attr.rs":"9301cd4aff5a9648c057d5d8de9eb66921f0c3a715c51ada4459576bd49c8b19","src/bound.rs":"44bda74d3aacfeeeac9dae2f7eef3acc844d4c3c7eaa9d3e6288e5aeff269dff","src/constfn.rs":"613b8f53b21cc06b4f619fce9000993d3e7873b650701ca01cef1e53bed5b40a","src/date.rs":"454c749a60db8144a706a813e06fe3ae39c981920ba9832ef82f3f9debe1f052","src/error.rs":"cb37102f03ebbaca313d80f9714fe08dfef92fe956789ee87d93eb6121705f4f","src/expr.rs":"8e8ca76f4f5838436d9d7273f499c698bb41f6c15bc07d32ec5c1cb8bd3dd731","src/iter.rs":"8d4b817b9abc4e817105b673e15f29ef9bb8284a010ce01ac2d83387fe136947","src/lib.rs":"5652f6f84fc80136bd29b2125f7676e80e0df7d40aac274b0658c99cecbd871d","src/release.rs":"abb8ddd877c39a023bf5e7bd67063d6e4144e79758a8bafa338167f9d15b89f1","src/time.rs":"bdd05a743b07a6bbfa0dbc9d4e415e051aba4a51a430c3be1e23447eae298c8b","src/token.rs":"824ce765f692db73afa02d3ebb0281c750748035efc98fa547be29d3072665ce","src/version.rs":"afdb048bba95bbb885945eba5527b6bf0eca0105642bfc304c2f82a8b7d556df","tests/compiletest.rs":"0a52a44786aea1c299c695bf948b2ed2081e4cc344e5c2cadceab4eb03d0010d","tests/test_const.rs":"a8297ca6559f895a3b2664964a42b6f82bbbc3c8faa9556a513006e6e1827995","tests/test_eval.rs":"6f0ee3f49c9a0d0c374a4d0e9a9dce753cd9fc2ca7725e000a435dbd5f4a9ce3","tests/test_parse.rs":"cdfe376020b9391330292968046117b0935c828d73385e8faeb2e333ec897088","tests/ui/bad-bound.rs":"25bde278fcaabf62868417148a5e5f2006bf589d7ebd7bf6004fb8d78e47594f","tests/ui/bad-bound.stderr":"a03dc78b380191c10d3b3406b1fd3208bb2609d4c26b9c33ccd335721e3cd072","tests/ui/bad-date.rs":"6e23714dae8b6346fefe50dacd4abba3265248bbadfdd60c739138aa8a0037ba","tests/ui/bad-date.stderr":"3a607fb950a69f7dc1b503295bce53541f9dee9f4674edc5d13ee3a69ff0e8cd","tests/ui/bad-not.rs":"f003df8bd245e9dd8edc3a6d94078ee5162fac7a98db881271f0f5b6db98d45d","tests/ui/bad-not.stderr":"d4ef78fae4a82419e737757158796cb103a5920df498956eaf57ed201797b463","tests/ui/bad-version.rs":"f4ea2cd038e6c63deb9c2e3ceffce93dbf179d9ce18c16d88f3b6cd7138a8c8e","tests/ui/bad-version.stderr":"60ed51c62f4c2fb6ff95cff7523cfca379ed434f319da9d82704318588792338","tests/ui/const-not-fn.rs":"10bbe38f0d89391fff0698756e4cfd4e72a41090360393a0c951b67df14d1c35","tests/ui/const-not-fn.stderr":"9551f7f222445b31d7af2415d467301c332d55bb3d5a143846484f2f00047a01"},"package":"61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088"}
\ No newline at end of file
diff --git a/vendor/rustversion/Cargo.toml b/vendor/rustversion/Cargo.toml
index 56995ff0792..c72b1b2b343 100644
--- a/vendor/rustversion/Cargo.toml
+++ b/vendor/rustversion/Cargo.toml
@@ -13,7 +13,7 @@
[package]
edition = "2018"
name = "rustversion"
-version = "1.0.4"
+version = "1.0.5"
authors = ["David Tolnay <dtolnay@gmail.com>"]
build = "build/build.rs"
description = "Conditional compilation according to rustc compiler version"
diff --git a/vendor/rustversion/build/build.rs b/vendor/rustversion/build/build.rs
index 2a8bc4af39f..15312510d68 100644
--- a/vendor/rustversion/build/build.rs
+++ b/vendor/rustversion/build/build.rs
@@ -1,3 +1,9 @@
+#![allow(
+ clippy::enum_glob_use,
+ clippy::must_use_candidate,
+ clippy::single_match_else
+)]
+
mod rustc;
use std::env;
diff --git a/vendor/rustversion/build/rustc.rs b/vendor/rustversion/build/rustc.rs
index 723e6bdd0e2..dfc6a05166f 100644
--- a/vendor/rustversion/build/rustc.rs
+++ b/vendor/rustversion/build/rustc.rs
@@ -48,23 +48,21 @@ pub fn parse(string: &str) -> Option<Version> {
Some(channel) if channel == "dev" => Dev,
Some(channel) if channel.starts_with("beta") => Beta,
Some(channel) if channel == "nightly" => match words.next() {
- Some(hash) => {
- if !hash.starts_with('(') {
- return None;
+ Some(hash) if hash.starts_with('(') => match words.next() {
+ None if hash.ends_with(')') => Dev,
+ Some(date) if date.ends_with(')') => {
+ let mut date = date[..date.len() - 1].split('-');
+ let year = date.next()?.parse().ok()?;
+ let month = date.next()?.parse().ok()?;
+ let day = date.next()?.parse().ok()?;
+ match date.next() {
+ None => Nightly(Date { year, month, day }),
+ Some(_) => return None,
+ }
}
- let date = words.next()?;
- if !date.ends_with(')') {
- return None;
- }
- let mut date = date[..date.len() - 1].split('-');
- let year = date.next()?.parse().ok()?;
- let month = date.next()?.parse().ok()?;
- let day = date.next()?.parse().ok()?;
- match date.next() {
- None => Nightly(Date { year, month, day }),
- Some(_) => return None,
- }
- }
+ None | Some(_) => return None,
+ },
+ Some(_) => return None,
None => Dev,
},
Some(_) => return None,
diff --git a/vendor/rustversion/src/lib.rs b/vendor/rustversion/src/lib.rs
index 2614105dd1a..172eb89382f 100644
--- a/vendor/rustversion/src/lib.rs
+++ b/vendor/rustversion/src/lib.rs
@@ -145,6 +145,21 @@
//!
//! <br>
+#![allow(
+ clippy::cast_lossless,
+ clippy::cast_possible_truncation,
+ clippy::doc_markdown,
+ clippy::enum_glob_use,
+ clippy::from_iter_instead_of_collect,
+ clippy::module_name_repetitions,
+ clippy::must_use_candidate,
+ clippy::needless_doctest_main,
+ clippy::needless_pass_by_value,
+ clippy::redundant_else,
+ clippy::toplevel_ref_arg,
+ clippy::unreadable_literal
+)]
+
extern crate proc_macro;
mod attr;
diff --git a/vendor/rustversion/src/time.rs b/vendor/rustversion/src/time.rs
index 1e6dd9066b4..3c21463dd80 100644
--- a/vendor/rustversion/src/time.rs
+++ b/vendor/rustversion/src/time.rs
@@ -1,4 +1,5 @@
use crate::date::Date;
+use std::env;
use std::time::{SystemTime, UNIX_EPOCH};
// Timestamp of 2016-03-01 00:00:00 in UTC.
@@ -13,14 +14,20 @@
pub fn today() -> Date {
let default = Date {
- year: 2019,
- month: 1,
- day: 1,
+ year: 2020,
+ month: 2,
+ day: 25,
};
try_today().unwrap_or(default)
}
fn try_today() -> Option<Date> {
+ if let Some(pkg_name) = env::var_os("CARGO_PKG_NAME") {
+ if pkg_name.to_str() == Some("rustversion-tests") {
+ return None; // Stable date for ui testing.
+ }
+ }
+
let now = SystemTime::now();
let since_epoch = now.duration_since(UNIX_EPOCH).ok()?;
let secs = since_epoch.as_secs();
diff --git a/vendor/rustversion/tests/test_parse.rs b/vendor/rustversion/tests/test_parse.rs
index 843bd73d3e5..cb39b3179f5 100644
--- a/vendor/rustversion/tests/test_parse.rs
+++ b/vendor/rustversion/tests/test_parse.rs
@@ -1,3 +1,5 @@
+#![allow(clippy::enum_glob_use, clippy::must_use_candidate)]
+
include!("../build/rustc.rs");
#[test]
@@ -76,6 +78,14 @@ fn test_parse() {
}),
},
),
+ (
+ "rustc 1.52.1-nightly (gentoo)",
+ Version {
+ minor: 52,
+ patch: 1,
+ channel: Dev,
+ },
+ ),
];
for (string, expected) in cases {
diff --git a/vendor/rustversion/tests/ui/bad-bound.stderr b/vendor/rustversion/tests/ui/bad-bound.stderr
index f8c498c8577..2c56acbdb33 100644
--- a/vendor/rustversion/tests/ui/bad-bound.stderr
+++ b/vendor/rustversion/tests/ui/bad-bound.stderr
@@ -1,10 +1,10 @@
-error: expected rustc release number like 1.31, or nightly date like 2020-10-26
+error: expected rustc release number like 1.31, or nightly date like 2020-02-25
--> $DIR/bad-bound.rs:1:22
|
1 | #[rustversion::since(stable)]
| ^^^^^^
-error: expected rustc release number like 1.31, or nightly date like 2020-10-26
+error: expected rustc release number like 1.31, or nightly date like 2020-02-25
--> $DIR/bad-bound.rs:4:26
|
4 | #[rustversion::any(since(stable))]
diff --git a/vendor/rustversion/tests/ui/bad-date.stderr b/vendor/rustversion/tests/ui/bad-date.stderr
index 734d7889075..c523ccc02bf 100644
--- a/vendor/rustversion/tests/ui/bad-date.stderr
+++ b/vendor/rustversion/tests/ui/bad-date.stderr
@@ -1,10 +1,10 @@
-error: expected nightly date, like 2020-10-26
+error: expected nightly date, like 2020-02-25
--> $DIR/bad-date.rs:1:24
|
1 | #[rustversion::nightly(stable)]
| ^^^^^^
-error: expected nightly date, like 2020-10-26
+error: expected nightly date, like 2020-02-25
--> $DIR/bad-date.rs:4:28
|
4 | #[rustversion::any(nightly(stable))]
--
2.32.0

View File

@ -1,43 +0,0 @@
From a789b49e4c0e7d742cc39713484596293d844537 Mon Sep 17 00:00:00 2001
From: hyd-dev <yd-huang@outlook.com>
Date: Fri, 30 Jul 2021 21:28:34 +0800
Subject: [PATCH] Use `Lrc` instead of `Rc` in `MiriCompilerCalls::config()`
---
src/bin/miri.rs | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/tools/miri/src/bin/miri.rs b/src/tools/miri/src/bin/miri.rs
index 5a8f07263..18c393815 100644
--- a/src/tools/miri/src/bin/miri.rs
+++ b/src/tools/miri/src/bin/miri.rs
@@ -1,5 +1,6 @@
#![feature(rustc_private, bool_to_option, stmt_expr_attributes)]
+extern crate rustc_data_structures;
extern crate rustc_driver;
extern crate rustc_errors;
extern crate rustc_hir;
@@ -12,12 +13,12 @@ use std::convert::TryFrom;
use std::env;
use std::num::NonZeroU64;
use std::path::PathBuf;
-use std::rc::Rc;
use std::str::FromStr;
use hex::FromHexError;
use log::debug;
+use rustc_data_structures::sync::Lrc;
use rustc_driver::Compilation;
use rustc_errors::emitter::{ColorConfig, HumanReadableErrorType};
use rustc_hir::{self as hir, def_id::LOCAL_CRATE, Node};
@@ -42,7 +43,7 @@ impl rustc_driver::Callbacks for MiriCompilerCalls {
// HACK: rustc will emit "crate ... required to be available in rlib format, but
// was not found in this form" errors once we use `tcx.dependency_formats()` if
// there's no rlib provided, so setting a dummy path here to workaround those errors.
- Rc::make_mut(&mut crate_source).rlib = Some((PathBuf::new(), PathKind::All));
+ Lrc::make_mut(&mut crate_source).rlib = Some((PathBuf::new(), PathKind::All));
crate_source
};
});

View File

@ -1,24 +0,0 @@
https://gitweb.gentoo.org/fork/llvm-project.git/commit/llvm/include/llvm/Support/Signals.h?h=gentoo-15.0.7-r7&id=ff1681ddb303223973653f7f5f3f3435b48a1983
From: Sergei Trofimovich <slyich@gmail.com>
Date: Mon, 23 May 2022 08:03:23 +0100
Subject: [Support] Add missing <cstdint> header to Signals.h
Without the change llvm build fails on this week's gcc-13 snapshot as:
[ 0%] Building CXX object lib/Support/CMakeFiles/LLVMSupport.dir/Signals.cpp.o
In file included from llvm/lib/Support/Signals.cpp:14:
llvm/include/llvm/Support/Signals.h:119:8: error: variable or field 'CleanupOnSignal' declared void
119 | void CleanupOnSignal(uintptr_t Context);
| ^~~~~~~~~~~~~~~
--- a/src/llvm-project/llvm/include/llvm/Support/Signals.h
+++ b/src/llvm-project/llvm/include/llvm/Support/Signals.h
@@ -14,6 +14,7 @@
#ifndef LLVM_SUPPORT_SIGNALS_H
#define LLVM_SUPPORT_SIGNALS_H
+#include <cstdint>
#include <string>
namespace llvm {
--
cgit v1.2.3-65-gdbad

View File

@ -21,6 +21,7 @@
<flag name="clippy">Install clippy, Rust code linter</flag>
<flag name="dist">Install dist tarballs (used for bootstrapping)</flag>
<flag name="miri">Install miri, an interpreter for Rust's mid-level intermediate representation (requires USE=nightly, sometimes is broken)</flag>
<flag name="mrustc-bootstrap">Use <pkg>dev-lang/mrustc</pkg> to build the bootstrap Rust sysroot from this package's source</flag>
<flag name="nightly">Enable nightly (UNSTABLE) features (NOTE: it does not install nightly version, just enables features marked as nightly at time of release)</flag>
<flag name="parallel-compiler">Build a multi-threaded rustc (experimental, not tested by upstream)</flag>
<flag name="rustfmt">Install rustfmt, Rust code formatter</flag>

View File

@ -1,559 +0,0 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{10..13} )
CARGO_BOOTSTRAP="yes"
RUST_MAX_VER=${PV}
RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
# Requried to build against openssl-3.*
CRATE_PATHS_OVERRIDE="
openssl@0.10.35
openssl-sys@0.9.65
"
inherit cargo check-reqs estack flag-o-matic multiprocessing \
multilib multilib-build python-any-r1 rust-toolchain toolchain-funcs verify-sig
DESCRIPTION="Systems programming language from Mozilla"
HOMEPAGE="https://www.rust-lang.org/"
SRC_URI="
https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz
${CARGO_CRATE_URIS}
verify-sig? (
https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz.asc
)
"
S="${WORKDIR}/rustc-${PV}-src"
ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai Mips MSP430
NVPTX PowerPC RISCV Sparc SystemZ WebAssembly X86 XCore )
ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
LICENSE="|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA"
SLOT="${PV}"
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
IUSE="clippy cpu_flags_x86_sse2 debug doc miri nightly parallel-compiler rustfmt test wasm ${ALL_LLVM_TARGETS[*]}"
BDEPEND="${PYTHON_DEPS}
app-eselect/eselect-rust
|| (
>=sys-devel/gcc-4.7
>=llvm-core/clang-3.5
)
>=dev-build/cmake-3.13.4
dev-build/ninja
test? ( dev-debug/gdb )
verify-sig? ( sec-keys/openpgp-keys-rust )
"
DEPEND="
>=app-arch/xz-utils-5.2
net-misc/curl:=[http2,ssl]
sys-libs/zlib:=
dev-libs/openssl:0=
elibc_musl? ( sys-libs/libunwind:= )
"
RDEPEND="${DEPEND}
app-eselect/eselect-rust
!dev-lang/rust:stable
!dev-lang/rust-bin:stable
"
REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )
miri? ( nightly )
parallel-compiler? ( nightly )
test? ( ${ALL_LLVM_TARGETS[*]} )
wasm? ( llvm_targets_WebAssembly )
x86? ( cpu_flags_x86_sse2 )
"
# we don't use cmake.eclass, but can get a warnings
CMAKE_WARN_UNUSED_CLI=no
QA_FLAGS_IGNORED="
usr/lib/${PN}/${PV}/bin/.*
usr/lib/${PN}/${PV}/libexec/.*
usr/lib/${PN}/${PV}/lib/lib.*.so
usr/lib/${PN}/${PV}/lib/rustlib/.*/bin/.*
usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
"
QA_SONAME="
usr/lib/${PN}/${PV}/lib/lib.*.so.*
usr/lib/${PN}/${PV}/lib/rustlib/.*/lib/lib.*.so
"
# An rmeta file is custom binary format that contains the metadata for the crate.
# rmeta files do not support linking, since they do not contain compiled object files.
# so we can safely silence the warning for this QA check.
QA_EXECSTACK="usr/lib/${PN}/${PV}/lib/rustlib/*/lib*.rlib:lib.rmeta"
# causes double bootstrap
RESTRICT="test"
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/rust.asc
PATCHES=(
"${FILESDIR}"/1.47.0-ignore-broken-and-non-applicable-tests.patch
"${FILESDIR}"/1.49.0-gentoo-musl-target-specs.patch
"${FILESDIR}"/1.53.0-rustversion-1.0.5.patch # https://github.com/rust-lang/rust/pull/86425
"${FILESDIR}"/1.54.0-parallel-miri.patch # https://github.com/rust-lang/miri/pull/1863
"${FILESDIR}/llvm/12/cstdint-signals-h.patch"
)
toml_usex() {
usex "${1}" true false
}
pre_build_checks() {
local M=7680
# multiply requirements by 1.5 if we are doing x86-multilib
if use amd64; then
M=$(( $(usex abi_x86_32 15 10) * ${M} / 10 ))
fi
M=$(( $(usex clippy 128 0) + ${M} ))
M=$(( $(usex miri 128 0) + ${M} ))
M=$(( $(usex rustfmt 256 0) + ${M} ))
local ltarget
for ltarget in ${ALL_LLVM_TARGETS[@]}; do
M=$(( $(usex ${ltarget} 256 0) + ${M} ))
done
M=$(( $(usex wasm 256 0) + ${M} ))
M=$(( $(usex debug 2 1) * ${M} ))
eshopts_push -s extglob
if is-flagq '-g?(gdb)?([1-9])'; then
M=$(( 15 * ${M} / 10 ))
fi
eshopts_pop
M=$(( $(usex doc 256 0) + ${M} ))
CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
}
pkg_pretend() {
pre_build_checks
}
pkg_setup() {
pre_build_checks
python-any-r1_pkg_setup
export LIBGIT2_NO_PKG_CONFIG=1 #749381
rust_pkg_setup
}
src_unpack() {
verify-sig_src_unpack
cargo_src_unpack
# Vendored sources here override crates-io sources (repo) from cargo eclass.
sed -i '/\[source.crates-io\]/,+2d' "${ECARGO_HOME}"/config.toml
}
src_configure() {
local rust_target="" rust_targets="" arch_cflags
# Collect rust target names to compile standard libs for all ABIs.
for v in $(multilib_get_enabled_abi_pairs); do
rust_targets="${rust_targets},\"$(rust_abi $(get_abi_CHOST ${v##*.}))\""
done
if use wasm; then
rust_targets="${rust_targets},\"wasm32-unknown-unknown\""
fi
rust_targets="${rust_targets#,}"
local tools="\"cargo\",\"rls\",\"analysis\",\"src\","
if use clippy; then
tools="\"clippy\",$tools"
fi
if use miri; then
tools="\"miri\",$tools"
fi
if use rustfmt; then
tools="\"rustfmt\",$tools"
fi
local rust_stage0_root
rust_stage0_root="$(rustc --print sysroot || die "Can't determine rust's sysroot")"
# in case of prefix it will be already prefixed, as --print sysroot returns full path
[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
rust_target="$(rust_abi)"
cat <<- _EOF_ > "${S}"/config.toml
changelog-seen = 2
[llvm]
download-ci-llvm = false
optimize = $(toml_usex !debug)
release-debuginfo = $(toml_usex debug)
assertions = $(toml_usex debug)
ninja = true
targets = "${LLVM_TARGETS// /;}"
experimental-targets = ""
link-shared = false
[build]
build-stage = 2
test-stage = 2
doc-stage = 2
build = "${rust_target}"
host = ["${rust_target}"]
target = [${rust_targets}]
cargo = "${rust_stage0_root}/bin/cargo"
rustc = "${rust_stage0_root}/bin/rustc"
rustfmt = "${rust_stage0_root}/bin/rustfmt"
docs = $(toml_usex doc)
compiler-docs = false
submodules = false
python = "${EPYTHON}"
locked-deps = true
vendor = true
extended = true
tools = [${tools}]
verbose = 2
sanitizers = false
profiler = false
cargo-native-static = false
[install]
prefix = "${EPREFIX}/usr/lib/${PN}/${PV}"
sysconfdir = "etc"
docdir = "share/doc/rust"
bindir = "bin"
libdir = "lib"
mandir = "share/man"
[rust]
# https://github.com/rust-lang/rust/issues/54872
codegen-units-std = 1
optimize = true
debug = $(toml_usex debug)
debug-assertions = $(toml_usex debug)
debug-assertions-std = $(toml_usex debug)
debuginfo-level = $(usex debug 2 0)
debuginfo-level-rustc = $(usex debug 2 0)
debuginfo-level-std = $(usex debug 2 0)
debuginfo-level-tools = $(usex debug 2 0)
debuginfo-level-tests = 0
backtrace = true
incremental = false
default-linker = "$(tc-getCC)"
parallel-compiler = $(toml_usex parallel-compiler)
channel = "$(usex nightly nightly stable)"
description = "gentoo"
rpath = false
verbose-tests = true
optimize-tests = $(toml_usex !debug)
codegen-tests = true
dist-src = false
remap-debuginfo = true
lld = $(toml_usex wasm)
# only deny warnings if doc+wasm are NOT requested, documenting stage0 wasm std fails without it
# https://github.com/rust-lang/rust/issues/74976
# https://github.com/rust-lang/rust/issues/76526
deny-warnings = $(usex wasm $(usex doc false true) true)
backtrace-on-ice = true
jemalloc = false
[dist]
src-tarball = false
compression-formats = ["gz"]
_EOF_
for v in $(multilib_get_enabled_abi_pairs); do
rust_target=$(rust_abi $(get_abi_CHOST ${v##*.}))
arch_cflags="$(get_abi_CFLAGS ${v##*.})"
cat <<- _EOF_ >> "${S}"/config.env
CFLAGS_${rust_target}=${arch_cflags}
_EOF_
cat <<- _EOF_ >> "${S}"/config.toml
[target.${rust_target}]
cc = "$(tc-getBUILD_CC)"
cxx = "$(tc-getBUILD_CXX)"
linker = "$(tc-getCC)"
ar = "$(tc-getAR)"
_EOF_
# librustc_target/spec/linux_musl_base.rs sets base.crt_static_default = true;
if use elibc_musl; then
cat <<- _EOF_ >> "${S}"/config.toml
crt-static = false
_EOF_
fi
done
if use wasm; then
cat <<- _EOF_ >> "${S}"/config.toml
[target.wasm32-unknown-unknown]
linker = "rust-lld"
_EOF_
fi
if [[ -n ${I_KNOW_WHAT_I_AM_DOING_CROSS} ]]; then # whitespace intentionally shifted below
# experimental cross support
# discussion: https://bugs.gentoo.org/679878
# TODO: c*flags, clang, cargo.eclass target support
# it would be much better if we could split out stdlib
# complilation to separate ebuild and abuse CATEGORY to
# just install to /usr/lib/rustlib/<target>
# extra targets defined as a bash array
# spec format: <LLVM target>:<rust-target>:<CTARGET>
# best place would be /etc/portage/env/dev-lang/rust
# Example:
# RUST_CROSS_TARGETS=(
# "AArch64:aarch64-unknown-linux-gnu:aarch64-unknown-linux-gnu"
# )
# no extra hand holding is done, no target transformations, all
# values are passed as-is with just basic checks, so it's up to user to supply correct values
# valid rust targets can be obtained with
# rustc --print target-list
# matching cross toolchain has to be installed
# matching LLVM_TARGET has to be enabled for both rust and llvm (if using system one)
# only gcc toolchains installed with crossdev are checked for now.
# BUG: we can't pass host flags to cross compiler, so just filter for now
# BUG: this should be more fine-grained.
filter-flags '-mcpu=*' '-march=*' '-mtune=*'
local cross_target_spec
for cross_target_spec in "${RUST_CROSS_TARGETS[@]}";do
# extracts first element form <LLVM target>:<rust-target>:<CTARGET>
local cross_llvm_target="${cross_target_spec%%:*}"
# extracts toolchain triples, <rust-target>:<CTARGET>
local cross_triples="${cross_target_spec#*:}"
# extracts first element after before : separator
local cross_rust_target="${cross_triples%%:*}"
# extracts last element after : separator
local cross_toolchain="${cross_triples##*:}"
use llvm_targets_${cross_llvm_target} || die "need llvm_targets_${cross_llvm_target} target enabled"
command -v ${cross_toolchain}-gcc > /dev/null 2>&1 || die "need ${cross_toolchain} cross toolchain"
cat <<- _EOF_ >> "${S}"/config.toml
[target.${cross_rust_target}]
cc = "${cross_toolchain}-gcc"
cxx = "${cross_toolchain}-g++"
linker = "${cross_toolchain}-gcc"
ar = "${cross_toolchain}-ar"
_EOF_
if [[ "${cross_toolchain}" == *-musl* ]]; then
cat <<- _EOF_ >> "${S}"/config.toml
musl-root = "$(${cross_toolchain}-gcc -print-sysroot)/usr"
_EOF_
fi
# append cross target to "normal" target list
# example 'target = ["powerpc64le-unknown-linux-gnu"]'
# becomes 'target = ["powerpc64le-unknown-linux-gnu","aarch64-unknown-linux-gnu"]'
rust_targets="${rust_targets},\"${cross_rust_target}\""
sed -i "/^target = \[/ s#\[.*\]#\[${rust_targets}\]#" config.toml || die
ewarn
ewarn "Enabled ${cross_rust_target} rust target"
ewarn "Using ${cross_toolchain} cross toolchain"
ewarn
if ! has_version -b 'sys-devel/binutils[multitarget]' ; then
ewarn "'sys-devel/binutils[multitarget]' is not installed"
ewarn "'strip' will be unable to strip cross libraries"
ewarn "cross targets will be installed with full debug information"
ewarn "enable 'multitarget' USE flag for binutils to be able to strip object files"
ewarn
ewarn "Alternatively llvm-strip can be used, it supports stripping any target"
ewarn "define STRIP=\"llvm-strip\" to use it (experimental)"
ewarn
fi
done
fi # I_KNOW_WHAT_I_AM_DOING_CROSS
einfo "Rust configured with the following flags:"
echo
echo RUSTFLAGS="${RUSTFLAGS:-}"
echo RUSTFLAGS_BOOTSTRAP="${RUSTFLAGS_BOOTSTRAP:-}"
echo RUSTFLAGS_NOT_BOOTSTRAP="${RUSTFLAGS_NOT_BOOTSTRAP:-}"
env | grep "CARGO_TARGET_.*_RUSTFLAGS="
cat "${S}"/config.env || die
echo
einfo "config.toml contents:"
cat "${S}"/config.toml || die
echo
}
src_compile() {
# we need \n IFS to have config.env with spaces loaded properly. #734018
(
IFS=$'\n'
env $(cat "${S}"/config.env) RUST_BACKTRACE=1\
"${EPYTHON}" ./x.py build -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
)
}
src_test() {
# https://rustc-dev-guide.rust-lang.org/tests/intro.html
# those are basic and codegen tests.
local tests=(
assembly
codegen
codegen-units
compile-fail
incremental
mir-opt
pretty
run-make
)
# fragile/expensive/less important tests
# or tests that require extra builds
# TODO: instead of skipping, just make some nonfatal.
if [[ ${ERUST_RUN_EXTRA_TESTS:-no} != no ]]; then
tests+=(
rustdoc
rustdoc-js
rustdoc-js-std
rustdoc-ui
run-make-fulldeps
ui
ui-fulldeps
)
fi
local i failed=()
einfo "rust_src_test: enabled tests ${tests[@]/#/src/test/}"
for i in "${tests[@]}"; do
local t="src/test/${i}"
einfo "rust_src_test: running ${t}"
if ! (
IFS=$'\n'
env $(cat "${S}"/config.env) RUST_BACKTRACE=1 \
"${EPYTHON}" ./x.py test -vv --config="${S}"/config.toml \
-j$(makeopts_jobs) --no-doc --no-fail-fast "${t}"
)
then
failed+=( "${t}" )
eerror "rust_src_test: ${t} failed"
fi
done
if [[ ${#failed[@]} -ne 0 ]]; then
eerror "rust_src_test: failure summary: ${failed[@]}"
die "aborting due to test failures"
fi
}
src_install() {
(
IFS=$'\n'
env $(cat "${S}"/config.env) DESTDIR="${D}" \
"${EPYTHON}" ./x.py install -vv --config="${S}"/config.toml -j$(makeopts_jobs) || die
)
# bug #689562, #689160
rm -v "${ED}/usr/lib/${PN}/${PV}/etc/bash_completion.d/cargo" || die
rmdir -v "${ED}/usr/lib/${PN}/${PV}"/etc{/bash_completion.d,} || die
local symlinks=(
cargo
rls
rust-gdb
rust-gdbgui
rust-lldb
rustc
rustdoc
)
use clippy && symlinks+=( clippy-driver cargo-clippy )
use miri && symlinks+=( miri cargo-miri )
use rustfmt && symlinks+=( rustfmt cargo-fmt )
einfo "installing eselect-rust symlinks and paths: ${symlinks[@]}"
local i
for i in "${symlinks[@]}"; do
# we need realpath on /usr/bin/* symlink return version-appended binary path.
# so /usr/bin/rustc should point to /usr/lib/rust/<ver>/bin/rustc-<ver>
# need to fix eselect-rust to remove this hack.
local ver_i="${i}-${PV}"
if [[ -f "${ED}/usr/lib/${PN}/${PV}/bin/${i}" ]]; then
einfo "Installing ${i} symlink"
ln -v "${ED}/usr/lib/${PN}/${PV}/bin/${i}" "${ED}/usr/lib/${PN}/${PV}/bin/${ver_i}" || die
else
ewarn "${i} symlink requested, but source file not found"
ewarn "please report this"
fi
dosym "../lib/${PN}/${PV}/bin/${ver_i}" "/usr/bin/${ver_i}"
done
# symlinks to switch components to active rust in eselect
dosym "${PV}/lib" "/usr/lib/${PN}/lib-${PV}"
dosym "${PV}/libexec" "/usr/lib/${PN}/libexec-${PV}"
dosym "${PV}/share/man" "/usr/lib/${PN}/man-${PV}"
dosym "rust/${PV}/lib/rustlib" "/usr/lib/rustlib-${PV}"
dosym "../../lib/${PN}/${PV}/share/doc/rust" "/usr/share/doc/${P}"
newenvd - "50${P}" <<-_EOF_
LDPATH="${EPREFIX}/usr/lib/rust/lib-${PV}"
MANPATH="${EPREFIX}/usr/lib/rust/man-${PV}"
$(use amd64 && usex elibc_musl 'CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
$(use arm64 && usex elibc_musl 'CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static"' '')
_EOF_
rm -rf "${ED}/usr/lib/${PN}/${PV}"/*.old || die
rm -rf "${ED}/usr/lib/${PN}/${PV}/doc"/*.old || die
# note: eselect-rust adds EROOT to all paths below
cat <<-_EOF_ > "${T}/provider-${P}"
/usr/bin/cargo
/usr/bin/rls
/usr/bin/rust-gdb
/usr/bin/rust-gdbgui
/usr/bin/rust-lldb
/usr/bin/rustdoc
/usr/lib/rust/lib
/usr/lib/rust/libexec
/usr/lib/rust/man
/usr/lib/rustlib
/usr/share/doc/rust
_EOF_
if use clippy; then
echo /usr/bin/clippy-driver >> "${T}/provider-${P}"
echo /usr/bin/cargo-clippy >> "${T}/provider-${P}"
fi
if use miri; then
echo /usr/bin/miri >> "${T}/provider-${P}"
echo /usr/bin/cargo-miri >> "${T}/provider-${P}"
fi
if use rustfmt; then
echo /usr/bin/rustfmt >> "${T}/provider-${P}"
echo /usr/bin/cargo-fmt >> "${T}/provider-${P}"
fi
insinto /etc/env.d/rust
doins "${T}/provider-${P}"
}
pkg_postinst() {
eselect rust update
if has_version dev-debug/gdb || has_version dev-util/lldb; then
elog "Rust installs a helper script for calling GDB and LLDB,"
elog "for your convenience it is installed under /usr/bin/rust-{gdb,lldb}-${PV}."
fi
if has_version app-editors/emacs; then
elog "install app-emacs/rust-mode to get emacs support for rust."
fi
if has_version app-editors/gvim || has_version app-editors/vim; then
elog "install app-vim/rust-vim to get vim support for rust."
fi
}
pkg_postrm() {
eselect rust cleanup
}

View File

@ -38,6 +38,8 @@ ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM AVR BPF Hexagon Lanai LoongArch Mips MSP43
ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa )
LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4 UoI-NCSA"
SLOT="${PV}"
@ -237,6 +239,14 @@ src_configure() {
rust_target="$(rust_abi)"
LLVM_EXPERIMENTAL_TARGETS=()
for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do
if use llvm_targets_${_x} ; then
LLVM_EXPERIMENTAL_TARGETS+=( ${_x} )
fi
done
LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]}
local cm_btype="$(usex debug DEBUG RELEASE)"
cat <<- _EOF_ > "${S}"/config.toml
changelog-seen = 2
@ -247,7 +257,7 @@ src_configure() {
assertions = $(toml_usex debug)
ninja = true
targets = "${LLVM_TARGETS// /;}"
experimental-targets = ""
experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}"
link-shared = $(toml_usex system-llvm)
$(if is_libcxx_linked; then
# https://bugs.gentoo.org/732632

View File

@ -1,4 +1,4 @@
# Copyright 1999-2024 Gentoo Authors
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@ -8,8 +8,12 @@ PYTHON_COMPAT=( python3_{10..12} )
RUST_MAX_VER=${PV}
RUST_MIN_VER="$(ver_cut 1).$(($(ver_cut 2) - 1)).0"
RUST_OPTIONAL=1
inherit check-reqs estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \
MRUSTC_VERSION="0.11.2"
MRUSTC_RUST_VERSION="1.74.0"
inherit check-reqs cmake edo estack flag-o-matic llvm-r1 multiprocessing multilib multilib-build \
optfeature python-any-r1 rust rust-toolchain toolchain-funcs verify-sig
if [[ ${PV} = *beta* ]]; then
@ -40,10 +44,12 @@ ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa )
LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
SLOT="${PV}"
IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto miri nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
IUSE="big-endian clippy cpu_flags_x86_sse2 debug dist doc llvm-libunwind +lto miri mrustc-bootstrap nightly parallel-compiler rustfmt rust-analyzer rust-src system-llvm test wasm ${ALL_LLVM_TARGETS[*]}"
LLVM_DEPEND=()
# splitting usedeps needed to avoid CI/pkgcheck's UncheckableDep limitation
@ -65,6 +71,12 @@ BDEPEND="${PYTHON_DEPS}
)
test? ( dev-debug/gdb )
verify-sig? ( sec-keys/openpgp-keys-rust )
mrustc-bootstrap? (
~dev-lang/mrustc-${MRUSTC_VERSION}
dev-build/cmake
sys-devel/gcc:*
)
!mrustc-bootstrap? ( ${RUST_DEPEND} )
"
DEPEND="
@ -172,6 +184,9 @@ pre_build_checks() {
fi
eshopts_pop
M=$(( $(usex doc 256 0) + ${M} ))
if use mrustc-bootstrap; then
M=$(( 2 * ${M} ))
fi
CHECKREQS_DISK_BUILD=${M}M check-reqs_pkg_${EBUILD_PHASE}
}
@ -195,25 +210,44 @@ pkg_pretend() {
}
pkg_setup() {
pre_build_checks
python-any-r1_pkg_setup
if [[ ${MERGE_TYPE} != binary ]]; then
pre_build_checks
python-any-r1_pkg_setup
export LIBGIT2_NO_PKG_CONFIG=1 #749381
if tc-is-cross-compiler; then
use system-llvm && die "USE=system-llvm not allowed when cross-compiling"
local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")"
use "llvm_targets_${cross_llvm_target}" || \
die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling"
export LIBGIT2_NO_PKG_CONFIG=1 #749381
if tc-is-cross-compiler; then
use system-llvm && die "USE=system-llvm not allowed when cross-compiling"
local cross_llvm_target="$(llvm_tuple_to_target "${CBUILD}")"
use "llvm_targets_${cross_llvm_target}" || \
die "Must enable LLVM_TARGETS=${cross_llvm_target} matching CBUILD=${CBUILD} when cross-compiling"
fi
if use mrustc-bootstrap; then
if ! tc-is-gcc; then
die "USE=mrustc-bootstrap reqires that the build environment use GCC"
fi
else
rust_pkg_setup
fi
if use system-llvm; then
llvm-r1_pkg_setup
local llvm_config="$(get_llvm_prefix)/bin/llvm-config"
export LLVM_LINK_SHARED=1
export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
fi
fi
}
rust_pkg_setup
if use system-llvm; then
llvm-r1_pkg_setup
local llvm_config="$(get_llvm_prefix)/bin/llvm-config"
export LLVM_LINK_SHARED=1
export RUSTFLAGS="${RUSTFLAGS} -Lnative=$("${llvm_config}" --libdir)"
src_prepare() {
default
# We'll need to revert this after the bootstrap.
if use mrustc-bootstrap; then
pushd "${S}" 2>/dev/null || die
patch -p0 < "${BROOT}"/usr/share/mrustc-${MRUSTC_VERSION}/patches/rustc-${MRUSTC_RUST_VERSION}-src.patch ||
die "Failed to patch sources to enable bootstrap with mrustc"
popd 2>/dev/null || die
fi
}
@ -251,14 +285,26 @@ src_configure() {
use rust-analyzer && tools+=',"rust-analyzer"'
use rust-src && tools+=',"src"'
local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")"
# in case of prefix it will be already prefixed, as --print sysroot returns full path
[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
if use mrustc-bootstrap; then
local rust_stage0_root="${WORKDIR}/bootstrap/rust-${PV}"
else
local rust_stage0_root="$(${RUSTC} --print sysroot || die "Can't determine rust's sysroot")"
# in case of prefix it will be already prefixed, as --print sysroot returns full path
[[ -d ${rust_stage0_root} ]] || die "${rust_stage0_root} is not a directory"
fi
rust_target="$(rust_abi)"
rust_build="$(rust_abi "${CBUILD}")"
rust_host="$(rust_abi "${CHOST}")"
LLVM_EXPERIMENTAL_TARGETS=()
for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do
if use llvm_targets_${_x} ; then
LLVM_EXPERIMENTAL_TARGETS+=( ${_x} )
fi
done
LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]}
local cm_btype="$(usex debug DEBUG RELEASE)"
cat <<- _EOF_ > "${S}"/config.toml
changelog-seen = 2
@ -269,7 +315,7 @@ src_configure() {
assertions = $(toml_usex debug)
ninja = true
targets = "${LLVM_TARGETS// /;}"
experimental-targets = ""
experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}"
link-shared = $(toml_usex system-llvm)
$(if is_libcxx_linked; then
# https://bugs.gentoo.org/732632
@ -504,7 +550,253 @@ src_configure() {
echo
}
# Build a very minimal llvm that we can use for bootstrap rustc codegen
llvm_bootstrap() {
# Reference ${P}/src/bootstrap/native.rs for these values
local llvm_cmake_opts=(
"-G Ninja"
"-DLLVM_TARGET_ARCH=${CFG_COMPILER_HOST_TRIPLE%%-*}"
"-DLLVM_DEFAULT_TARGET_TRIPLE=${CFG_COMPILER_HOST_TRIPLE}"
"-DLLVM_TARGETS_TO_BUILD=${BOOTSTRAP_LLVM_TARGETS:=X86;ARM;AArch64}" #;Mips;PowerPC;SystemZ;JSBackend;MSP430;Sparc;NVPTX
"-DLLVM_ENABLE_ASSERTIONS=OFF"
"-DLLVM_INCLUDE_EXAMPLES=OFF"
"-DLLVM_INCLUDE_TESTS=OFF"
"-DLLVM_INCLUDE_DOCS=OFF"
"-DLLVM_INCLUDE_BENCHMARKS=OFF"
"-DLLVM_ENABLE_ZLIB=OFF"
"-DLLVM_ENABLE_TERMINFO=OFF"
"-DLLVM_ENABLE_LIBEDIT=OFF"
"-DCMAKE_CXX_COMPILER=$(tc-getCXX)"
"-DCMAKE_C_COMPILER=$(tc-getCC)"
"-DCMAKE_BUILD_TYPE=Release"
)
if [[ -z "${LLVM_CMAKE_OPTS_EXTRA}" ]]; then
llvm_cmake_opts+=( "${LLVM_CMAKE_OPTS_EXTRA}")
fi
elog "Building bootstrap llvm ..."
mkdir -p "${WORKDIR}/bootstrap/llvm" || die
pushd "${WORKDIR}/bootstrap/llvm" 2>/dev/null || die
edo cmake ${llvm_cmake_opts[*]} "${S}/src/llvm-project/llvm"
eninja || die "Failed to build bootstrap llvm"
popd 2>/dev/null || die
}
# High level steps:
# Our system mrustc package has built stdlib for our current platform.
# - Step 1: Use system-installed mrustc, (m)rust(c) stdlib, and minicargo to
# bootstrap a `cargo` and `rustc` (mrustc-stage0)
# - Step 2: Use minicargo and the built `rustc` to build a working `sysroot`
# (includes `std`, `panic_unwind``, `test`, etc.) (mrustc-stage0)
# - Step 3: Build build libs again (this time using `cargo` and `rustc`) (mrustc-stage1)
# - Step 4: Build a `rustc` using those libs (mrustc-stage1)
# - Done so there's an optimised rustc arollvm_cmake_optsund (mrustc is bad at codegen)
# - Step 5: Build `libstd` with this `rustc` (mrustc-stage2)
# - Needed to match ABIs
# Stages:
# - mrustc-stage0: mrustc-built cargo and rustc
# - mrustc-stage1: rustc and sysroot built with mrustc-stage0
# - mrustc-stage2: rustc from stage1 with sysroot built with stage0
# See:
# - https://github.com/thepowersgang/mrustc/blob/master/run_rustc/Makefile
# - https://github.com/thepowersgang/mrustc/blob/master/TestRustcBootstrap.sh
# - Upstream Windows .cmd files are also a good reference for early bootstrap
mrustc_bootstrap() {
export RUSTC_BOOTSTRAP=1 # Possibly the only intended use of this variable in ::gentoo
# export these variables now and unset them at the end of the function so they don't leak
# into the rest of the build.
export CFG_COMPILER_HOST_TRIPLE="$(rust_abi)"
export CFG_RELEASE="${MRUSTC_RUST_VERSION}" # Let's pretend we're 1.74.0
export CFG_RELEASE_CHANNEL="stable"
export CFG_VERSION="${MRUSTC_RUST_VERSION}-stable-mrustc"
export CFG_PREFIX="mrustc"
export CFG_LIBDIR_RELATIVE="lib"
export RUSTC_INSTALL_BINDIR="bin"
export REAL_LIBRARY_PATH_VAR="LD_LIBRARY_PATH"
# These flags are used in every invocation of our bootstrap `cargo`.
local cargo_flags="--target ${CFG_COMPILER_HOST_TRIPLE} -j $(makeopts_jobs) --release --verbose"
if use system-llvm; then
export LLVM_CONFIG="$(get_llvm_prefix)/bin/llvm-config"
else
llvm_bootstrap
export LLVM_CONFIG="${WORKDIR}/bootstrap/llvm/bin/llvm-config"
fi
# define the mrustc sysroot and common minicargo arguments.
local mrustc_sysroot="${BROOT}/usr/lib/rust/mrustc-${MRUSTC_VERSION}/lib/rustlib/${CFG_COMPILER_HOST_TRIPLE}/lib"
local minicargo_common_args=(
"-L" "${mrustc_sysroot}"
"-j" "$(makeopts_jobs)"
"--vendor-dir" "${S}/vendor"
"--manifest-overrides"
"${BROOT}/usr/share/mrustc-${MRUSTC_VERSION}/patches/rustc-${MRUSTC_RUST_VERSION}-overrides.toml"
)
# There's a very good chance that minicargo and mrustc are not in the PATH.
if ! command -v minicargo &> /dev/null; then
export PATH="${BROOT}/usr/lib/rust/mrustc-${MRUSTC_VERSION}/bin:${PATH}"
fi
# Sanity check our bootstrap compiler & stdlib.
elog "Sanity checking mrustc and stdlib ..."
edo mrustc "${S}/tests/ui/hello_world/main.rs" -L "${mrustc_sysroot}" -o "${T}"/hello -g
"${T}"/hello || die "Failed to run hello_world"
# Seems fine, let's build some tools!
# Step 1: Build a `cargo` and `rustc` using system-installed mrustc
# Anything we produce is going to be terribly unoptimised; mrustc does not do fantastic codegen.
# It's good enough to bootstrap the "real" rustc though.
elog "Building bootstrap cargo and rustc using mrustc and minicargo (mrustc-stage0) ..."
local stage0="${WORKDIR}/bootstrap/mrustc-stage0"
mkdir -p "${stage0}" || die
edo minicargo "${S}"/src/tools/cargo --output-dir "${stage0}"/cargo-build ${minicargo_common_args[*]}
"${stage0}"/cargo-build/cargo --version || die "Bootstrap cargo failed basic sanity check"
edo minicargo "${S}"/compiler/rustc --output-dir "${stage0}"/rustc-build ${minicargo_common_args[*]} \
--features llvm
"${stage0}"/rustc-build/rustc_main --version || die "Bootstrap rustc failed basic sanity check"
# minicargo has special-casing for `rustc` so we need to rename it.
mv "${stage0}"/rustc-build/rustc_main "${stage0}"/rustc-build/rustc || die "Failed to rename rustc_main to rustc"
# rustc wants these here
mkdir -p "${stage0}"/codegen-backends || die
mv "${stage0}"/rustc-build/librustc_codegen_llvm.* "${stage0}"/codegen-backends || die
# Step 2: use the bootstrapped rustc to build sysroot; we need to use `minicargo` for this -
# mrustc does not accept all of the arguments that rustc does, even with the rustc_proxy wrapper.
# `--script-overrides`: If the overrides are available, build scripts (and build-deps) are not built
# which is good since we don't have a working compiler yet, and can't build them.
local stage0_sysroot_lib="${stage0}/lib/rustlib/${CFG_COMPILER_HOST_TRIPLE}/lib"
# minicargo <= 0.11.2 doesn't create this directory and silently fails, besides it's better to be explicit, right?
mkdir -p "${stage0_sysroot_lib}" || die "Failed to create stage0 directory"
elog "Building 'sysroot' using bootstrap rustc (mrustc-stage0) ..."
edo env MRUSTC_PATH="${stage0}/rustc-build/rustc" minicargo -j $(makeopts_jobs) --vendor-dir "${S}"/vendor \
--script-overrides "${BROOT}/usr/share/mrustc-0.11.2/script-overrides/stable-${MRUSTC_RUST_VERSION}-linux/" \
--output-dir "${stage0_sysroot_lib}" "${S}"/library/sysroot ||
die "Failed to build sysroot with bootstrap rust (mrustc-stage0)"
elog "Sanity checking sysroot and rustc ..."
mkdir -p "${T}"/stage0-hello || die
edo "${stage0}"/rustc-build/rustc -L "${stage0_sysroot_lib}" -g "${S}/tests/ui/hello_world/main.rs" \
-o "${T}"/stage0-hello/hello
"${T}"/stage0-hello/hello || die "Failed to run hello_world built with bootstrap rust stage0"
elog "mrustc bootstrap stage0 complete!"
# Step 3: Build a "proper" libstd, including dynamic libs using our bootstrap cargo and rustc.
elog "Building 'sysroot' with the stage0 rustc (mrustc-stage1) ..."
local stage1="${WORKDIR}/bootstrap/mrustc-stage1"
local stage1_sysroot_lib="${stage1}/lib/rustlib/${CFG_COMPILER_HOST_TRIPLE}/lib"
mkdir -p "${stage1_sysroot_lib}" || die "Failed to create stage1 directory"
mkdir -p "${stage1}/bin" || die
# Simplified to avoid calling rustc_proxy; We don't need stage1 rustc until after this is built...
edo env RUSTFLAGS="-Z force-unstable-if-unmarked" CARGO_TARGET_DIR="${stage1}/sysroot-build" \
RUSTC="${stage0}/rustc-build/rustc" "${stage0}"/cargo-build/cargo build ${cargo_flags} \
--manifest-path "${S}/library/sysroot/Cargo.toml" --features panic-unwind
# Move the built libs into the sysroot libdir.
mv "${stage1}/sysroot-build/${CFG_COMPILER_HOST_TRIPLE}/release/deps"/*.{rlib,rmeta,so} \
"${stage1_sysroot_lib}" || die "Failed to move stage1 libs to stage1 sysroot"
# We need to copy the stage0 rustc to the stage1 sysroot; this "updates" the sysroot location and enables
# resolution of stage1 libs. (run `rustc --print sysroot` on stage0 and stage1 rustc to verify)
cp "${stage0}/rustc-build/rustc" "${stage1}/bin/rustc" || die "Failed to copy rustc to stage1 sysroot"
# Step 4: Build `rustc` with itself, so we have a rustc with the right ABI.
# This will be our final `rustc` for the bootstrap process.
elog "Building rustc with stage1 libs (mrustc-stage1) ..."
mkdir -p "${stage1}/rustc-build" || die
edo env RUSTFLAGS="-Z force-unstable-if-unmarked -C link_args=-Wl,-rpath,\$ORIGIN/../lib" \
LD_LIBRARY_PATH="${stage2_sysroot_lib}" CARGO_TARGET_DIR="${stage1}/rustc-build" \
RUSTC="${stage1}/bin/rustc" TMPDIR="${T}" "${stage0}"/cargo-build/cargo build ${cargo_flags} \
--manifest-path "${S}/compiler/rustc/Cargo.toml" --features llvm
# Step 5: Build `sysroot` with this `rustc` - Needed to match ABI
# We need to use the previous sysroot; we could reuse that dir but it's easier to just copy it.
elog "Building final 'sysroot' with the final rustc (mrustc-stage2) ..."
local stage2="${WORKDIR}/bootstrap/mrustc-stage2"
local stage2_sysroot_lib="${stage2}/lib/rustlib/${CFG_COMPILER_HOST_TRIPLE}/lib"
mkdir -p "${stage2_sysroot_lib}" || die "Failed to create stage2 directory"
mkdir -p "${stage2}/bin" || die
# Copy required files from stage1 to stage2 sysroot
cp "${stage1}/rustc-build/${CFG_COMPILER_HOST_TRIPLE}"/release/rustc-main "${stage2}/bin/rustc_binary" ||
die "Failed to copy final rustc to stage2 sysroot"
cp "${stage1}/rustc-build/${CFG_COMPILER_HOST_TRIPLE}"/release/librustc_driver.so "${stage2}/lib" ||
die "Failed to copy librustc_driver to sysroot"
cp "${stage1}/rustc-build/${CFG_COMPILER_HOST_TRIPLE}"/release/deps/*.{rlib,so} "${stage2_sysroot_lib}" ||
die "Failed to copy final rustc libs to stage2 sysroot"
cp "${stage1_sysroot_lib}"/* "${stage2_sysroot_lib}" || die "Failed to copy stage1 so files to stage2 sysroot"
# There's a magic script used in place of rustc so that libs can be found
cat <<- EOF > "${stage2}/bin/rustc" || die "Failed to create rustc wrapper"
#!/bin/sh
LD_LIBRARY_PATH="${stage2}/lib:${stage2_sysroot_lib}" ${stage2}/bin/rustc_binary "\$@"
EOF
chmod +x "${stage2}/bin/rustc" || die "Failed to make rustc wrapper executable"
# Use rustc to build 'sysroot'; this is the final step in the bootstrap process.
# rpath probably isn't needed here, but it doesn't hurt.
edo env RUSTFLAGS="-Z force-unstable-if-unmarked -C link_args=-Wl,-rpath,\$ORIGIN/../lib" \
CARGO_TARGET_DIR="${stage2}/stdlib-build" RUSTC="${stage2}/bin/rustc" \
"${stage0}"/cargo-build/cargo build ${cargo_flags} --manifest-path "${S}/library/sysroot/Cargo.toml" \
--features panic-unwind
# Build our final output sysroot
local output="${WORKDIR}/bootstrap/rust-${PV}"
local output_sysroot_lib="${output}/lib/rustlib/${CFG_COMPILER_HOST_TRIPLE}/lib"
mkdir -p "${output_sysroot_lib}" || die "Failed to create output directory"
mkdir -p "${output}/bin" || die "Failed to create output directory"
# Copy our various output files into the output sysroot
# rustc
cp "${stage1}/rustc-build/${CFG_COMPILER_HOST_TRIPLE}"/release/rustc-main "${output}/bin/rustc_binary" ||
die "Failed to copy final rustc to output"
cp "${stage1}/rustc-build/${CFG_COMPILER_HOST_TRIPLE}"/release/librustc_driver.so "${output}/lib" ||
die "Failed to copy librustc_driver to output"
cp "${stage1}/rustc-build/${CFG_COMPILER_HOST_TRIPLE}"/release/deps/*.{rlib,so} "${output_sysroot_lib}" ||
die "Failed to copy final rustc libs to output"
# cargo; no need to build an optimised cargo if we're using this to build a complelety new Rust.
cp "${stage0}/cargo-build/cargo" "${output}/bin/cargo" || die "Failed to copy cargo to output"
# libs
mv "${stage2}/stdlib-build/${CFG_COMPILER_HOST_TRIPLE}/release/deps"/*.{rlib,rmeta,so} "${output_sysroot_lib}" ||
die "Failed to copy stage2 libs to output"
# Our trusty rustc wrapper
cat <<- EOF > "${output}/bin/rustc" || die "Failed to create rustc wrapper"
#!/bin/sh
LD_LIBRARY_PATH="${output}/lib:${output_sysroot_lib}" ${output}/bin/rustc_binary "\$@"
EOF
chmod +x "${output}/bin/rustc" || die "Failed to make rustc wrapper executable"
# Perform a sanity check on the final Rust.
mkdir -p "${T}"/output-hello || die
edo "${output}/bin/rustc" -L "${output_sysroot_lib}" -g "${S}/tests/ui/hello_world/main.rs" \
-o "${T}"/output-hello/hello
"${T}"/output-hello/hello || die "Failed to run hello_world built with bootstrapped Rust"
elog "Successfully bootstrapped Rust using mrustc!"
# Note: The Rust sysroot that we've produced is pretty close to what we'd expect from a normal Rust build.
# If someone was so inclined they could build an optimised cargo using the stage2 rustc and sysroot,
# and install the output directly. This is untested, as I'm sure there's more to it than that.
# I'm satisfied with being able to build Rust normally at this point.
# Tidy up the Rust sources; revert mrustc changes so Rust can be built normally.
pushd "${S}" 2>/dev/null || die
patch -R -p0 < "${BROOT}"/usr/share/mrustc-${MRUSTC_VERSION}/patches/rustc-${MRUSTC_RUST_VERSION}-src.patch ||
die "Failed to revert mrustc patches"
popd 2>/dev/null || die
# Tidy up any environment variables we've set in the bootstrap process.
unset CFG_COMPILER_HOST_TRIPLE CFG_RELEASE CFG_RELEASE_CHANNEL CFG_PREFIX CFG_VERSION
unset CFG_LIBDIR_RELATIVE LLVM_CONFIG REAL_LIBRARY_PATH_VAR RUSTFLAGS RUSTC_BOOTSTRAP RUSTC_INSTALL_BINDIR
}
src_compile() {
use mrustc-bootstrap && mrustc_bootstrap
RUST_BACKTRACE=1 "${EPYTHON}" ./x.py build -vvv --config="${S}"/config.toml -j$(makeopts_jobs) || die
}

View File

@ -39,6 +39,8 @@ ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa )
LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
SLOT="${PV}"
@ -261,6 +263,14 @@ src_configure() {
rust_build="$(rust_abi "${CBUILD}")"
rust_host="$(rust_abi "${CHOST}")"
LLVM_EXPERIMENTAL_TARGETS=()
for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do
if use llvm_targets_${_x} ; then
LLVM_EXPERIMENTAL_TARGETS+=( ${_x} )
fi
done
LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]}
local cm_btype="$(usex debug DEBUG RELEASE)"
cat <<- _EOF_ > "${S}"/config.toml
changelog-seen = 2
@ -271,7 +281,7 @@ src_configure() {
assertions = $(toml_usex debug)
ninja = true
targets = "${LLVM_TARGETS// /;}"
experimental-targets = ""
experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}"
link-shared = $(toml_usex system-llvm)
$(if is_libcxx_linked; then
# https://bugs.gentoo.org/732632

View File

@ -39,6 +39,8 @@ ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa )
LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
SLOT="${PV}"
@ -260,6 +262,14 @@ src_configure() {
rust_build="$(rust_abi "${CBUILD}")"
rust_host="$(rust_abi "${CHOST}")"
LLVM_EXPERIMENTAL_TARGETS=()
for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do
if use llvm_targets_${_x} ; then
LLVM_EXPERIMENTAL_TARGETS+=( ${_x} )
fi
done
LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]}
local cm_btype="$(usex debug DEBUG RELEASE)"
cat <<- _EOF_ > "${S}"/config.toml
changelog-seen = 2
@ -270,7 +280,7 @@ src_configure() {
assertions = $(toml_usex debug)
ninja = true
targets = "${LLVM_TARGETS// /;}"
experimental-targets = ""
experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}"
link-shared = $(toml_usex system-llvm)
$(if is_libcxx_linked; then
# https://bugs.gentoo.org/732632

View File

@ -39,6 +39,8 @@ ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa )
LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
SLOT="${PV}"
@ -259,6 +261,14 @@ src_configure() {
rust_build="$(rust_abi "${CBUILD}")"
rust_host="$(rust_abi "${CHOST}")"
LLVM_EXPERIMENTAL_TARGETS=()
for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do
if use llvm_targets_${_x} ; then
LLVM_EXPERIMENTAL_TARGETS+=( ${_x} )
fi
done
LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]}
local cm_btype="$(usex debug DEBUG RELEASE)"
cat <<- _EOF_ > "${S}"/config.toml
changelog-seen = 2
@ -269,7 +279,7 @@ src_configure() {
assertions = $(toml_usex debug)
ninja = true
targets = "${LLVM_TARGETS// /;}"
experimental-targets = ""
experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}"
link-shared = $(toml_usex system-llvm)
$(if is_libcxx_linked; then
# https://bugs.gentoo.org/732632

View File

@ -39,6 +39,8 @@ ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa )
LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
SLOT="${PV}"
@ -259,6 +261,14 @@ src_configure() {
rust_build="$(rust_abi "${CBUILD}")"
rust_host="$(rust_abi "${CHOST}")"
LLVM_EXPERIMENTAL_TARGETS=()
for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do
if use llvm_targets_${_x} ; then
LLVM_EXPERIMENTAL_TARGETS+=( ${_x} )
fi
done
LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]}
local cm_btype="$(usex debug DEBUG RELEASE)"
cat <<- _EOF_ > "${S}"/config.toml
[llvm]
@ -268,7 +278,7 @@ src_configure() {
assertions = $(toml_usex debug)
ninja = true
targets = "${LLVM_TARGETS// /;}"
experimental-targets = ""
experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}"
link-shared = $(toml_usex system-llvm)
$(if is_libcxx_linked; then
# https://bugs.gentoo.org/732632

View File

@ -39,6 +39,8 @@ ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa )
LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
SLOT="${PV}"
@ -259,6 +261,14 @@ src_configure() {
rust_build="$(rust_abi "${CBUILD}")"
rust_host="$(rust_abi "${CHOST}")"
LLVM_EXPERIMENTAL_TARGETS=()
for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do
if use llvm_targets_${_x} ; then
LLVM_EXPERIMENTAL_TARGETS+=( ${_x} )
fi
done
LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]}
local cm_btype="$(usex debug DEBUG RELEASE)"
cat <<- _EOF_ > "${S}"/config.toml
[llvm]
@ -268,7 +278,7 @@ src_configure() {
assertions = $(toml_usex debug)
ninja = true
targets = "${LLVM_TARGETS// /;}"
experimental-targets = ""
experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}"
link-shared = $(toml_usex system-llvm)
$(if is_libcxx_linked; then
# https://bugs.gentoo.org/732632

View File

@ -39,6 +39,8 @@ ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa )
LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
SLOT="${PV}"
@ -258,6 +260,14 @@ src_configure() {
rust_build="$(rust_abi "${CBUILD}")"
rust_host="$(rust_abi "${CHOST}")"
LLVM_EXPERIMENTAL_TARGETS=()
for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do
if use llvm_targets_${_x} ; then
LLVM_EXPERIMENTAL_TARGETS+=( ${_x} )
fi
done
LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]}
local cm_btype="$(usex debug DEBUG RELEASE)"
cat <<- _EOF_ > "${S}"/config.toml
[llvm]
@ -267,7 +277,7 @@ src_configure() {
assertions = $(toml_usex debug)
ninja = true
targets = "${LLVM_TARGETS// /;}"
experimental-targets = ""
experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}"
link-shared = $(toml_usex system-llvm)
$(if is_libcxx_linked; then
# https://bugs.gentoo.org/732632

View File

@ -40,6 +40,8 @@ ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa )
LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
SLOT="${PV}"
@ -262,6 +264,14 @@ src_configure() {
rust_build="$(rust_abi "${CBUILD}")"
rust_host="$(rust_abi "${CHOST}")"
LLVM_EXPERIMENTAL_TARGETS=()
for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do
if use llvm_targets_${_x} ; then
LLVM_EXPERIMENTAL_TARGETS+=( ${_x} )
fi
done
LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]}
local cm_btype="$(usex debug DEBUG RELEASE)"
cat <<- _EOF_ > "${S}"/config.toml
[llvm]
@ -271,7 +281,7 @@ src_configure() {
assertions = $(toml_usex debug)
ninja = true
targets = "${LLVM_TARGETS// /;}"
experimental-targets = ""
experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}"
link-shared = $(toml_usex system-llvm)
$(if is_libcxx_linked; then
# https://bugs.gentoo.org/732632

View File

@ -39,6 +39,8 @@ ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa )
LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
SLOT="${PV}"
@ -269,6 +271,14 @@ src_configure() {
rust_build="$(rust_abi "${CBUILD}")"
rust_host="$(rust_abi "${CHOST}")"
LLVM_EXPERIMENTAL_TARGETS=()
for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do
if use llvm_targets_${_x} ; then
LLVM_EXPERIMENTAL_TARGETS+=( ${_x} )
fi
done
LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]}
local cm_btype="$(usex debug DEBUG RELEASE)"
cat <<- _EOF_ > "${S}"/config.toml
[llvm]
@ -278,7 +288,7 @@ src_configure() {
assertions = $(toml_usex debug)
ninja = true
targets = "${LLVM_TARGETS// /;}"
experimental-targets = ""
experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}"
link-shared = $(toml_usex system-llvm)
$(if is_libcxx_linked; then
# https://bugs.gentoo.org/732632

View File

@ -39,6 +39,8 @@ ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa )
LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
SLOT="${PV}"
@ -270,6 +272,14 @@ src_configure() {
rust_build="$(rust_abi "${CBUILD}")"
rust_host="$(rust_abi "${CHOST}")"
LLVM_EXPERIMENTAL_TARGETS=()
for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do
if use llvm_targets_${_x} ; then
LLVM_EXPERIMENTAL_TARGETS+=( ${_x} )
fi
done
LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]}
local cm_btype="$(usex debug DEBUG RELEASE)"
cat <<- _EOF_ > "${S}"/config.toml
[llvm]
@ -279,7 +289,7 @@ src_configure() {
assertions = $(toml_usex debug)
ninja = true
targets = "${LLVM_TARGETS// /;}"
experimental-targets = ""
experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}"
link-shared = $(toml_usex system-llvm)
$(if is_libcxx_linked; then
# https://bugs.gentoo.org/732632

View File

@ -1,4 +1,4 @@
# Copyright 1999-2024 Gentoo Authors
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@ -20,7 +20,7 @@ if [[ ${PV} = *beta* ]]; then
else
MY_P="rustc-${PV}"
SRC="${MY_P}-src.tar.xz"
KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv sparc x86"
fi
DESCRIPTION="Systems programming language from Mozilla"
@ -39,6 +39,8 @@ ALL_LLVM_TARGETS=( AArch64 AMDGPU ARC ARM AVR BPF CSKY DirectX Hexagon Lanai
ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
LLVM_TARGET_USEDEPS=${ALL_LLVM_TARGETS[@]/%/(-)?}
ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC CSKY DirectX M68k SPIRV Xtensa )
LICENSE="|| ( MIT Apache-2.0 ) BSD BSD-1 BSD-2 BSD-4"
SLOT="${PV}"
@ -270,6 +272,14 @@ src_configure() {
rust_build="$(rust_abi "${CBUILD}")"
rust_host="$(rust_abi "${CHOST}")"
LLVM_EXPERIMENTAL_TARGETS=()
for _x in "${ALL_LLVM_EXPERIMENTAL_TARGETS[@]}"; do
if use llvm_targets_${_x} ; then
LLVM_EXPERIMENTAL_TARGETS+=( ${_x} )
fi
done
LLVM_EXPERIMENTAL_TARGETS=${LLVM_EXPERIMENTAL_TARGETS[@]}
local cm_btype="$(usex debug DEBUG RELEASE)"
cat <<- _EOF_ > "${S}"/config.toml
[llvm]
@ -279,7 +289,7 @@ src_configure() {
assertions = $(toml_usex debug)
ninja = true
targets = "${LLVM_TARGETS// /;}"
experimental-targets = ""
experimental-targets = "${LLVM_EXPERIMENTAL_TARGETS// /;}"
link-shared = $(toml_usex system-llvm)
$(if is_libcxx_linked; then
# https://bugs.gentoo.org/732632