Compare commits

..

13 commits

Author SHA1 Message Date
Josh Stone
5e8702c277 Merge branch 'master' into f30 2020-05-07 11:32:46 -07:00
Josh Stone
9de26f542e Merge branch 'master' into f30 2020-04-23 13:19:57 -07:00
Josh Stone
53f49c246e Merge branch 'master' into f30 2020-03-12 15:38:14 -07:00
Josh Stone
6c5dea3f8c Merge branch 'master' into f30 2020-02-27 11:34:48 -08:00
Josh Stone
0b186644a8 Merge branch 'master' into f30 2020-01-31 10:40:11 -08:00
Josh Stone
b34378b36e Merge branch 'master' into f30 2019-12-19 13:00:16 -08:00
Josh Stone
6562871827 Merge branch 'master' into f30 2019-11-07 11:08:58 -08:00
Josh Stone
2d97cd1ce9 Merge branch 'master' into f30 2019-09-27 20:40:41 -07:00
Josh Stone
0093a75a4c Merge branch 'master' into f30 2019-08-15 16:16:03 -07:00
Josh Stone
1cbca7ffe6 Merge branch 'master' into f30 2019-07-04 15:46:58 -07:00
Josh Stone
f83e7bc948 Merge branch 'master' into f30 2019-05-24 09:52:38 -07:00
Josh Stone
fc2a6e14a2 Merge branch 'master' into f30 2019-05-14 09:36:55 -07:00
Josh Stone
20dd9904db Merge branch 'master' into f30 2019-04-26 17:22:02 -07:00
26 changed files with 1137 additions and 2617 deletions

View file

@ -1 +0,0 @@
1

190
.gitignore vendored
View file

@ -270,193 +270,3 @@
/rust-1.42.0-s390x-unknown-linux-gnu.tar.xz
/rust-1.42.0-x86_64-unknown-linux-gnu.tar.xz
/rustc-1.43.1-src.tar.xz
/rustc-1.44.0-src.tar.xz
/rust-1.43.1-aarch64-unknown-linux-gnu.tar.xz
/rust-1.43.1-armv7-unknown-linux-gnueabihf.tar.xz
/rust-1.43.1-i686-unknown-linux-gnu.tar.xz
/rust-1.43.1-powerpc64le-unknown-linux-gnu.tar.xz
/rust-1.43.1-powerpc64-unknown-linux-gnu.tar.xz
/rust-1.43.1-s390x-unknown-linux-gnu.tar.xz
/rust-1.43.1-x86_64-unknown-linux-gnu.tar.xz
/rustc-1.44.1-src.tar.xz
/rustc-1.45.0-src.tar.xz
/rust-1.44.0-x86_64-unknown-linux-gnu.tar.xz
/rust-1.44.0-i686-unknown-linux-gnu.tar.xz
/rust-1.44.0-armv7-unknown-linux-gnueabihf.tar.xz
/rust-1.44.0-aarch64-unknown-linux-gnu.tar.xz
/rust-1.44.0-powerpc64-unknown-linux-gnu.tar.xz
/rust-1.44.0-powerpc64le-unknown-linux-gnu.tar.xz
/rust-1.44.0-s390x-unknown-linux-gnu.tar.xz
/rustc-1.45.1-src.tar.xz
/rustc-1.45.2-src.tar.xz
/rustc-1.46.0-src.tar.xz
/rust-1.45.2-aarch64-unknown-linux-gnu.tar.xz
/rust-1.45.2-armv7-unknown-linux-gnueabihf.tar.xz
/rust-1.45.2-i686-unknown-linux-gnu.tar.xz
/rust-1.45.2-powerpc64le-unknown-linux-gnu.tar.xz
/rust-1.45.2-powerpc64-unknown-linux-gnu.tar.xz
/rust-1.45.2-s390x-unknown-linux-gnu.tar.xz
/rust-1.45.2-x86_64-unknown-linux-gnu.tar.xz
/rustc-1.47.0-src.tar.xz
/rust-1.46.0-aarch64-unknown-linux-gnu.tar.xz
/rust-1.46.0-armv7-unknown-linux-gnueabihf.tar.xz
/rust-1.46.0-i686-unknown-linux-gnu.tar.xz
/rust-1.46.0-powerpc64le-unknown-linux-gnu.tar.xz
/rust-1.46.0-powerpc64-unknown-linux-gnu.tar.xz
/rust-1.46.0-s390x-unknown-linux-gnu.tar.xz
/rust-1.46.0-x86_64-unknown-linux-gnu.tar.xz
/rustc-1.48.0-src.tar.xz
/rust-1.47.0-aarch64-unknown-linux-gnu.tar.xz
/rust-1.47.0-armv7-unknown-linux-gnueabihf.tar.xz
/rust-1.47.0-i686-unknown-linux-gnu.tar.xz
/rust-1.47.0-powerpc64le-unknown-linux-gnu.tar.xz
/rust-1.47.0-powerpc64-unknown-linux-gnu.tar.xz
/rust-1.47.0-s390x-unknown-linux-gnu.tar.xz
/rust-1.47.0-x86_64-unknown-linux-gnu.tar.xz
/rustc-1.49.0-src.tar.xz
/rust-1.48.0-aarch64-unknown-linux-gnu.tar.xz
/rust-1.48.0-armv7-unknown-linux-gnueabihf.tar.xz
/rust-1.48.0-i686-unknown-linux-gnu.tar.xz
/rust-1.48.0-powerpc64le-unknown-linux-gnu.tar.xz
/rust-1.48.0-powerpc64-unknown-linux-gnu.tar.xz
/rust-1.48.0-s390x-unknown-linux-gnu.tar.xz
/rust-1.48.0-x86_64-unknown-linux-gnu.tar.xz
/rustc-1.50.0-src.tar.xz
/rust-1.49.0-aarch64-unknown-linux-gnu.tar.xz
/rust-1.49.0-armv7-unknown-linux-gnueabihf.tar.xz
/rust-1.49.0-i686-unknown-linux-gnu.tar.xz
/rust-1.49.0-powerpc64le-unknown-linux-gnu.tar.xz
/rust-1.49.0-s390x-unknown-linux-gnu.tar.xz
/rust-1.49.0-x86_64-unknown-linux-gnu.tar.xz
/rustc-1.51.0-src.tar.xz
/rust-1.50.0-aarch64-unknown-linux-gnu.tar.xz
/rust-1.50.0-armv7-unknown-linux-gnueabihf.tar.xz
/rust-1.50.0-i686-unknown-linux-gnu.tar.xz
/rust-1.50.0-powerpc64le-unknown-linux-gnu.tar.xz
/rust-1.50.0-s390x-unknown-linux-gnu.tar.xz
/rust-1.50.0-x86_64-unknown-linux-gnu.tar.xz
/rustc-1.52.0-src.tar.xz
/rust-1.51.0-aarch64-unknown-linux-gnu.tar.xz
/rust-1.51.0-armv7-unknown-linux-gnueabihf.tar.xz
/rust-1.51.0-i686-unknown-linux-gnu.tar.xz
/rust-1.51.0-powerpc64le-unknown-linux-gnu.tar.xz
/rust-1.51.0-s390x-unknown-linux-gnu.tar.xz
/rust-1.51.0-x86_64-unknown-linux-gnu.tar.xz
/rustc-1.52.1-src.tar.xz
/rustc-1.53.0-src.tar.xz
/rust-1.52.0-aarch64-unknown-linux-gnu.tar.xz
/rust-1.52.0-armv7-unknown-linux-gnueabihf.tar.xz
/rust-1.52.0-i686-unknown-linux-gnu.tar.xz
/rust-1.52.0-powerpc64le-unknown-linux-gnu.tar.xz
/rust-1.52.0-s390x-unknown-linux-gnu.tar.xz
/rust-1.52.0-x86_64-unknown-linux-gnu.tar.xz
/rustc-1.54.0-src.tar.xz
/rust-1.53.0-aarch64-unknown-linux-gnu.tar.xz
/rust-1.53.0-armv7-unknown-linux-gnueabihf.tar.xz
/rust-1.53.0-i686-unknown-linux-gnu.tar.xz
/rust-1.53.0-powerpc64le-unknown-linux-gnu.tar.xz
/rust-1.53.0-powerpc64-unknown-linux-gnu.tar.xz
/rust-1.53.0-s390x-unknown-linux-gnu.tar.xz
/rust-1.53.0-x86_64-unknown-linux-gnu.tar.xz
/rustc-1.55.0-src.tar.xz
/rust-1.54.0-aarch64-unknown-linux-gnu.tar.xz
/rust-1.54.0-armv7-unknown-linux-gnueabihf.tar.xz
/rust-1.54.0-i686-unknown-linux-gnu.tar.xz
/rust-1.54.0-powerpc64le-unknown-linux-gnu.tar.xz
/rust-1.54.0-powerpc64-unknown-linux-gnu.tar.xz
/rust-1.54.0-s390x-unknown-linux-gnu.tar.xz
/rust-1.54.0-x86_64-unknown-linux-gnu.tar.xz
/rustc-1.56.0-src.tar.xz
/rust-1.55.0-aarch64-unknown-linux-gnu.tar.xz
/rust-1.55.0-armv7-unknown-linux-gnueabihf.tar.xz
/rust-1.55.0-i686-unknown-linux-gnu.tar.xz
/rust-1.55.0-powerpc64-unknown-linux-gnu.tar.xz
/rust-1.55.0-powerpc64le-unknown-linux-gnu.tar.xz
/rust-1.55.0-s390x-unknown-linux-gnu.tar.xz
/rust-1.55.0-x86_64-unknown-linux-gnu.tar.xz
/rustc-1.56.1-src.tar.xz
/rustc-1.57.0-src.tar.xz
/wasi-libc-ad5133410f66b93a2381db5b542aad5e0964db96.tar.gz
/rust-1.56.1-aarch64-unknown-linux-gnu.tar.xz
/rust-1.56.1-armv7-unknown-linux-gnueabihf.tar.xz
/rust-1.56.1-i686-unknown-linux-gnu.tar.xz
/rust-1.56.1-powerpc64le-unknown-linux-gnu.tar.xz
/rust-1.56.1-s390x-unknown-linux-gnu.tar.xz
/rust-1.56.1-x86_64-unknown-linux-gnu.tar.xz
/rustc-1.58.0-src.tar.xz
/rust-1.57.0-aarch64-unknown-linux-gnu.tar.xz
/rust-1.57.0-armv7-unknown-linux-gnueabihf.tar.xz
/rust-1.57.0-i686-unknown-linux-gnu.tar.xz
/rust-1.57.0-powerpc64le-unknown-linux-gnu.tar.xz
/rust-1.57.0-s390x-unknown-linux-gnu.tar.xz
/rust-1.57.0-x86_64-unknown-linux-gnu.tar.xz
/rustc-1.58.1-src.tar.xz
/rustc-1.59.0-src.tar.xz
/rust-1.58.0-aarch64-unknown-linux-gnu.tar.xz
/rust-1.58.0-armv7-unknown-linux-gnueabihf.tar.xz
/rust-1.58.0-i686-unknown-linux-gnu.tar.xz
/rust-1.58.0-powerpc64le-unknown-linux-gnu.tar.xz
/rust-1.58.0-s390x-unknown-linux-gnu.tar.xz
/rust-1.58.0-x86_64-unknown-linux-gnu.tar.xz
/rustc-1.60.0-src.tar.xz
/rustc-1.61.0-src.tar.xz
/wasi-libc-9886d3d6200fcc3726329966860fc058707406cd.tar.gz
/rustc-1.62.0-src.tar.xz
/rustc-1.62.1-src.tar.xz
/rustc-1.63.0-src.tar.xz
/rustc-1.64.0-src.tar.xz
/rustc-1.65.0-src.tar.xz
/wasi-libc-wasi-sdk-16.tar.gz
/rustc-1.66.0-src.tar.xz
/wasi-libc-wasi-sdk-17.tar.gz
/rustc-1.66.1-src.tar.xz
/rustc-1.67.0-src.tar.xz
/rustc-1.67.1-src.tar.xz
/rustc-1.68.0-src.tar.xz
/wasi-libc-wasi-sdk-19.tar.gz
/rustc-1.68.1-src.tar.xz
/rustc-1.68.2-src.tar.xz
/rustc-1.69.0-src.tar.xz
/wasi-libc-1dfe5c302d1c5ab621f7abf04620fae92700fd22.tar.gz
/rustc-1.70.0-src.tar.xz
/wasi-libc-wasi-sdk-20.tar.gz
/rustc-1.71.0-src.tar.xz
/rustc-1.71.1-src.tar.xz
/rustc-1.72.0-src.tar.xz
/wasi-libc-7018e24d8fe248596819d2e884761676f3542a04.tar.gz
/rustc-1.72.1-src.tar.xz
/wasi-libc-bd950eb128bff337153de217b11270f948d04bb4.tar.gz
/rustc-1.73.0-src.tar.xz
/rustc-1.74.0-src.tar.xz
/rustc-1.74.1-src.tar.xz
/rustc-1.75.0-src.tar.xz
/rustc-1.76.0-src.tar.xz
/wasi-libc-03b228e46bb02fcc5927253e1b8ad715072b1ae4.tar.gz
/rustc-1.77.0-src.tar.xz
/rustc-1.77.2-src.tar.xz
/rustc-1.78.0-src.tar.xz
/rustc-1.79.0-src.tar.xz
/wasi-libc-wasi-sdk-22.tar.gz
/rustc-1.80.0-src.tar.xz
/rustc-1.80.1-src.tar.xz
/wasi-libc-3f43ea9abb24ed8d24d760989e1d87ea385f8eaa.tar.gz
/rustc-1.81.0-src.tar.xz
/wasi-libc-b9ef79d7dbd47c6c5bafdae760823467c2f60b70.tar.gz
/rustc-1.82.0-src.tar.xz
/wasi-libc-wasi-sdk-24.tar.gz
/rustc-1.83.0-src.tar.xz
/rustc-1.84.0-src.tar.xz
/wasi-libc-wasi-sdk-25.tar.gz
/rustc-1.84.1-src.tar.xz
/rustc-1.85.0-src.tar.xz
/rustc-1.85.1-src.tar.xz
/rustc-1.86.0-src.tar.xz
/wasi-libc-640c0cfc19a96b099e0791824be5ef0105ce2084.tar.gz
/rustc-1.87.0-src.tar.xz
/rustc-1.88.0-src.tar.xz
/wasi-libc-wasi-sdk-27.tar.gz
/rustc-1.89.0-src.tar.xz
/rustc-1.90.0-src.tar.xz
/rustc-1.91.0-src.tar.xz
/rustc-1.91.1-src.tar.xz
/rustc-1.92.0-src.tar.xz

View file

@ -1,53 +0,0 @@
From e54c0a4cc8bd8a76b155714b23a61d1d32a8d069 Mon Sep 17 00:00:00 2001
From: Josh Stone <jistone@redhat.com>
Date: Fri, 9 Jun 2023 15:23:08 -0700
Subject: [PATCH] Let environment variables override some default CPUs
---
.../src/spec/targets/powerpc64le_unknown_linux_gnu.rs | 2 +-
.../rustc_target/src/spec/targets/s390x_unknown_linux_gnu.rs | 2 +-
.../rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/compiler/rustc_target/src/spec/targets/powerpc64le_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/targets/powerpc64le_unknown_linux_gnu.rs
index 9e406af53b5..9104903673f 100644
--- a/compiler/rustc_target/src/spec/targets/powerpc64le_unknown_linux_gnu.rs
+++ b/compiler/rustc_target/src/spec/targets/powerpc64le_unknown_linux_gnu.rs
@@ -4,7 +4,7 @@
pub(crate) fn target() -> Target {
let mut base = base::linux_gnu::opts();
- base.cpu = "ppc64le".into();
+ base.cpu = option_env!("RUSTC_TARGET_CPU_PPC64LE").unwrap_or("ppc64le").into();
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
base.max_atomic_width = Some(64);
base.stack_probes = StackProbeType::Inline;
diff --git a/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_gnu.rs
index cdcf7d62a3e..02f24274ed2 100644
--- a/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_gnu.rs
+++ b/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_gnu.rs
@@ -6,7 +6,7 @@ pub(crate) fn target() -> Target {
let mut base = base::linux_gnu::opts();
base.endian = Endian::Big;
// z10 is the oldest CPU supported by LLVM
- base.cpu = "z10".into();
+ base.cpu = option_env!("RUSTC_TARGET_CPU_S390X").unwrap_or("z10").into();
base.max_atomic_width = Some(128);
base.min_global_align = Some(Align::from_bits(16).unwrap());
base.stack_probes = StackProbeType::Inline;
diff --git a/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs
index 0c8353fad18..c2515e700bb 100644
--- a/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs
+++ b/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs
@@ -4,7 +4,7 @@
pub(crate) fn target() -> Target {
let mut base = base::linux_gnu::opts();
- base.cpu = "x86-64".into();
+ base.cpu = option_env!("RUSTC_TARGET_CPU_X86_64").unwrap_or("x86-64").into();
base.plt_by_default = false;
base.max_atomic_width = Some(64);
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
--
2.49.0

View file

@ -1,80 +0,0 @@
From e9405caf32dfb31bf17c3da0299df515a3755107 Mon Sep 17 00:00:00 2001
From: Josh Stone <jistone@redhat.com>
Date: Fri, 16 Aug 2024 10:12:58 -0700
Subject: [PATCH] Use lld provided by system
---
compiler/rustc_target/src/spec/base/wasm.rs | 3 +--
.../src/spec/targets/aarch64_unknown_none_softfloat.rs | 2 +-
compiler/rustc_target/src/spec/targets/aarch64_unknown_uefi.rs | 1 +
compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs | 2 +-
compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs | 1 +
5 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/compiler/rustc_target/src/spec/base/wasm.rs b/compiler/rustc_target/src/spec/base/wasm.rs
index 7ede45766ea..b22362227bb 100644
--- a/compiler/rustc_target/src/spec/base/wasm.rs
+++ b/compiler/rustc_target/src/spec/base/wasm.rs
@@ -81,8 +81,7 @@ macro_rules! args {
// threaded model which will legalize atomics to normal operations.
singlethread: true,
- // we use the LLD shipped with the Rust toolchain by default
- linker: Some("rust-lld".into()),
+ linker: Some("lld".into()),
linker_flavor: LinkerFlavor::WasmLld(Cc::No),
pre_link_args,
diff --git a/compiler/rustc_target/src/spec/targets/aarch64_unknown_none_softfloat.rs b/compiler/rustc_target/src/spec/targets/aarch64_unknown_none_softfloat.rs
index 35a4dd72b86..a9c8fc5edb8 100644
--- a/compiler/rustc_target/src/spec/targets/aarch64_unknown_none_softfloat.rs
+++ b/compiler/rustc_target/src/spec/targets/aarch64_unknown_none_softfloat.rs
@@ -15,7 +15,7 @@ pub(crate) fn target() -> Target {
let opts = TargetOptions {
abi: "softfloat".into(),
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
- linker: Some("rust-lld".into()),
+ linker: Some("lld".into()),
features: "+v8a,+strict-align,-neon,-fp-armv8".into(),
relocation_model: RelocModel::Static,
disable_redzone: true,
diff --git a/compiler/rustc_target/src/spec/targets/aarch64_unknown_uefi.rs b/compiler/rustc_target/src/spec/targets/aarch64_unknown_uefi.rs
index 327b52389b9..17313d7e8b3 100644
--- a/compiler/rustc_target/src/spec/targets/aarch64_unknown_uefi.rs
+++ b/compiler/rustc_target/src/spec/targets/aarch64_unknown_uefi.rs
@@ -9,6 +9,7 @@ pub(crate) fn target() -> Target {
base.max_atomic_width = Some(128);
base.add_pre_link_args(LinkerFlavor::Msvc(Lld::No), &["/machine:arm64"]);
base.features = "+v8a".into();
+ base.linker = Some("lld".into());
Target {
llvm_target: "aarch64-unknown-windows".into(),
diff --git a/compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs b/compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs
index 1a6343595f5..8015b082cd1 100644
--- a/compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs
+++ b/compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs
@@ -19,7 +19,7 @@ pub(crate) fn target() -> Target {
static_position_independent_executables: true,
relro_level: RelroLevel::Full,
linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes),
- linker: Some("rust-lld".into()),
+ linker: Some("lld".into()),
rustc_abi: Some(RustcAbi::X86Softfloat),
features: "-mmx,-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-avx,-avx2,+soft-float".into(),
supported_sanitizers: SanitizerSet::KCFI | SanitizerSet::KERNELADDRESS,
diff --git a/compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs b/compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs
index 0cf6a879462..3677fc662de 100644
--- a/compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs
+++ b/compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs
@@ -15,6 +15,7 @@ pub(crate) fn target() -> Target {
base.plt_by_default = false;
base.max_atomic_width = Some(64);
base.entry_abi = CanonAbi::X86(X86Call::Win64);
+ base.linker = Some("lld".into());
// We disable MMX and SSE for now, even though UEFI allows using them. Problem is, you have to
// enable these CPU features explicitly before their first use, otherwise their instructions
--
2.51.0

View file

@ -1,112 +0,0 @@
From 8364de4cb8edab85efcb895824ce06f4a95bd26f Mon Sep 17 00:00:00 2001
From: Josh Stone <jistone@redhat.com>
Date: Mon, 18 Aug 2025 17:11:07 -0700
Subject: [PATCH] bootstrap: allow disabling target self-contained
---
bootstrap.example.toml | 5 +++++
src/bootstrap/src/core/build_steps/compile.rs | 4 ++++
src/bootstrap/src/core/config/config.rs | 4 ++++
src/bootstrap/src/core/config/toml/target.rs | 5 +++++
src/bootstrap/src/lib.rs | 5 +++++
5 files changed, 23 insertions(+)
diff --git a/bootstrap.example.toml b/bootstrap.example.toml
index 6f37e51a47d..ee21bc06bea 100644
--- a/bootstrap.example.toml
+++ b/bootstrap.example.toml
@@ -1077,3 +1077,8 @@
# pass `off`:
# - x86_64-unknown-linux-gnu
#default-linker-linux-override = "off" (for most targets)
+
+# Copy libc and CRT objects into the target lib/self-contained/ directory.
+# Enabled by default on `musl`, `wasi`, and `windows-gnu` targets. Other
+# targets may ignore this setting if they have nothing to be contained.
+#self-contained = <platform-specific> (bool)
diff --git a/src/bootstrap/src/core/build_steps/compile.rs b/src/bootstrap/src/core/build_steps/compile.rs
index 6857a40ada8..9a98323a704 100644
--- a/src/bootstrap/src/core/build_steps/compile.rs
+++ b/src/bootstrap/src/core/build_steps/compile.rs
@@ -368,6 +368,10 @@ fn copy_self_contained_objects(
compiler: &Compiler,
target: TargetSelection,
) -> Vec<(PathBuf, DependencyType)> {
+ if builder.self_contained(target) != Some(true) {
+ return vec![];
+ }
+
let libdir_self_contained =
builder.sysroot_target_libdir(*compiler, target).join("self-contained");
t!(fs::create_dir_all(&libdir_self_contained));
diff --git a/src/bootstrap/src/core/config/config.rs b/src/bootstrap/src/core/config/config.rs
index 4b7ae6df360..6bab269a33c 100644
--- a/src/bootstrap/src/core/config/config.rs
+++ b/src/bootstrap/src/core/config/config.rs
@@ -864,6 +864,7 @@ pub(crate) fn parse_inner(
runner: target_runner,
optimized_compiler_builtins: target_optimized_compiler_builtins,
jemalloc: target_jemalloc,
+ self_contained: target_self_contained
} = cfg;
let mut target = Target::from_triple(&triple);
@@ -921,6 +922,9 @@ pub(crate) fn parse_inner(
if let Some(s) = target_no_std {
target.no_std = s;
}
+ if let Some(s) = target_self_contained {
+ target.self_contained = s;
+ }
target.cc = target_cc.map(PathBuf::from);
target.cxx = target_cxx.map(PathBuf::from);
target.ar = target_ar.map(PathBuf::from);
diff --git a/src/bootstrap/src/core/config/toml/target.rs b/src/bootstrap/src/core/config/toml/target.rs
index 4c7afa50b96..83b8a1b50ca 100644
--- a/src/bootstrap/src/core/config/toml/target.rs
+++ b/src/bootstrap/src/core/config/toml/target.rs
@@ -47,6 +47,7 @@ struct TomlTarget {
runner: Option<String> = "runner",
optimized_compiler_builtins: Option<CompilerBuiltins> = "optimized-compiler-builtins",
jemalloc: Option<bool> = "jemalloc",
+ self_contained: Option<bool> = "self-contained",
}
}
@@ -80,6 +81,7 @@ pub struct Target {
pub codegen_backends: Option<Vec<CodegenBackendKind>>,
pub optimized_compiler_builtins: Option<CompilerBuiltins>,
pub jemalloc: Option<bool>,
+ pub self_contained: bool,
}
impl Target {
@@ -91,6 +93,9 @@ pub fn from_triple(triple: &str) -> Self {
if triple.contains("emscripten") {
target.runner = Some("node".into());
}
+ if triple.contains("-musl") || triple.contains("-wasi") || triple.contains("-windows-gnu") {
+ target.self_contained = true;
+ }
target
}
}
diff --git a/src/bootstrap/src/lib.rs b/src/bootstrap/src/lib.rs
index dd30f05b728..cc89a84071e 100644
--- a/src/bootstrap/src/lib.rs
+++ b/src/bootstrap/src/lib.rs
@@ -1441,6 +1441,11 @@ fn no_std(&self, target: TargetSelection) -> Option<bool> {
self.config.target_config.get(&target).map(|t| t.no_std)
}
+ /// Returns `true` if this is a self-contained `target`, if defined
+ fn self_contained(&self, target: TargetSelection) -> Option<bool> {
+ self.config.target_config.get(&target).map(|t| t.self_contained)
+ }
+
/// Returns `true` if the target will be tested using the `remote-test-client`
/// and `remote-test-server` binaries.
fn remote_tested(&self, target: TargetSelection) -> bool {
--
2.51.0

View file

@ -1,28 +0,0 @@
From 7d83bae4e2577ffa2afaf2fddb6948c1756a403c Mon Sep 17 00:00:00 2001
From: Paul Murphy <paumurph@redhat.com>
Date: Thu, 10 Jul 2025 09:06:22 -0500
Subject: [PATCH] only copy rustlib into stage0 sysroot
Otherwise, much more is copied, and doing so likely runs into
permissions errors if the bootstrap toolchain lives in the host's
sysroot.
---
src/bootstrap/src/core/build_steps/compile.rs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/bootstrap/src/core/build_steps/compile.rs b/src/bootstrap/src/core/build_steps/compile.rs
index 4d0ae54e1ef..4ef70dd9b97 100644
--- a/src/bootstrap/src/core/build_steps/compile.rs
+++ b/src/bootstrap/src/core/build_steps/compile.rs
@@ -811,7 +811,7 @@ fn run(self, builder: &Builder<'_>) {
let _ = fs::remove_dir_all(sysroot.join("lib/rustlib/src/rust"));
}
- builder.cp_link_r(&builder.initial_sysroot.join("lib"), &sysroot.join("lib"));
+ builder.cp_link_r(&builder.initial_sysroot.join("lib/rustlib"), &sysroot.join("lib/rustlib"));
} else {
if builder.download_rustc() {
// Ensure there are no CI-rustc std artifacts.
--
2.49.0

View file

@ -1,112 +0,0 @@
From 862d09fe2e8b0f5ce8fe7bfc592cda66a1d74c08 Mon Sep 17 00:00:00 2001
From: Josh Stone <jistone@redhat.com>
Date: Mon, 18 Aug 2025 17:13:28 -0700
Subject: [PATCH 2/2] set an external library path for wasm32-wasi
---
compiler/rustc_codegen_ssa/src/back/link.rs | 10 ++++++++++
compiler/rustc_target/src/spec/json.rs | 4 ++++
compiler/rustc_target/src/spec/mod.rs | 2 ++
.../rustc_target/src/spec/targets/wasm32_wasip1.rs | 7 ++++---
4 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/compiler/rustc_codegen_ssa/src/back/link.rs b/compiler/rustc_codegen_ssa/src/back/link.rs
index 48b01ea2df19..59b87396fed2 100644
--- a/compiler/rustc_codegen_ssa/src/back/link.rs
+++ b/compiler/rustc_codegen_ssa/src/back/link.rs
@@ -1559,6 +1559,12 @@ fn get_object_file_path(sess: &Session, name: &str, self_contained: bool) -> Pat
return file_path;
}
}
+ if let Some(lib_path) = &sess.target.options.external_lib_path {
+ let file_path = Path::new(lib_path.as_ref()).join(name);
+ if file_path.exists() {
+ return file_path;
+ }
+ }
for search_path in sess.target_filesearch().search_paths(PathKind::Native) {
let file_path = search_path.dir.join(name);
if file_path.exists() {
@@ -2140,6 +2146,10 @@ fn add_library_search_dirs(
}
ControlFlow::<()>::Continue(())
});
+
+ if let Some(lib_path) = &sess.target.options.external_lib_path {
+ cmd.include_path(Path::new(lib_path.as_ref()));
+ }
}
/// Add options making relocation sections in the produced ELF files read-only
diff --git a/compiler/rustc_target/src/spec/json.rs b/compiler/rustc_target/src/spec/json.rs
index f236be92b3b6..eea6e0c203d2 100644
--- a/compiler/rustc_target/src/spec/json.rs
+++ b/compiler/rustc_target/src/spec/json.rs
@@ -81,6 +81,7 @@ macro_rules! forward_opt {
forward!(linker_is_gnu_json);
forward!(pre_link_objects);
forward!(post_link_objects);
+ forward_opt!(external_lib_path);
forward!(pre_link_objects_self_contained);
forward!(post_link_objects_self_contained);
@@ -301,6 +302,7 @@ macro_rules! target_option_val {
target_option_val!(linker_is_gnu_json, "linker-is-gnu");
target_option_val!(pre_link_objects);
target_option_val!(post_link_objects);
+ target_option_val!(external_lib_path);
target_option_val!(pre_link_objects_self_contained, "pre-link-objects-fallback");
target_option_val!(post_link_objects_self_contained, "post-link-objects-fallback");
target_option_val!(link_args - pre_link_args_json, "pre-link-args");
@@ -511,6 +513,8 @@ struct TargetSpecJson {
pre_link_objects: Option<CrtObjects>,
#[serde(rename = "post-link-objects")]
post_link_objects: Option<CrtObjects>,
+ #[serde(rename = "external-lib-path")]
+ external_lib_path: Option<StaticCow<str>>,
#[serde(rename = "pre-link-objects-fallback")]
pre_link_objects_self_contained: Option<CrtObjects>,
#[serde(rename = "post-link-objects-fallback")]
diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs
index 07fb1ce63f7c..c076c2836f84 100644
--- a/compiler/rustc_target/src/spec/mod.rs
+++ b/compiler/rustc_target/src/spec/mod.rs
@@ -1992,6 +1992,7 @@ pub struct TargetOptions {
/// Objects to link before and after all other object code.
pub pre_link_objects: CrtObjects,
pub post_link_objects: CrtObjects,
+ pub external_lib_path: Option<StaticCow<str>>,
/// Same as `(pre|post)_link_objects`, but when self-contained linking mode is enabled.
pub pre_link_objects_self_contained: CrtObjects,
pub post_link_objects_self_contained: CrtObjects,
@@ -2518,6 +2519,7 @@ fn default() -> TargetOptions {
relro_level: RelroLevel::None,
pre_link_objects: Default::default(),
post_link_objects: Default::default(),
+ external_lib_path: None,
pre_link_objects_self_contained: Default::default(),
post_link_objects_self_contained: Default::default(),
link_self_contained: LinkSelfContainedDefault::False,
diff --git a/compiler/rustc_target/src/spec/targets/wasm32_wasip1.rs b/compiler/rustc_target/src/spec/targets/wasm32_wasip1.rs
index 26add451ed25..3eaf050e6823 100644
--- a/compiler/rustc_target/src/spec/targets/wasm32_wasip1.rs
+++ b/compiler/rustc_target/src/spec/targets/wasm32_wasip1.rs
@@ -21,11 +21,12 @@ pub(crate) fn target() -> Target {
options.env = "p1".into();
options.add_pre_link_args(LinkerFlavor::WasmLld(Cc::Yes), &["--target=wasm32-wasip1"]);
- options.pre_link_objects_self_contained = crt_objects::pre_wasi_self_contained();
- options.post_link_objects_self_contained = crt_objects::post_wasi_self_contained();
+ options.pre_link_objects = crt_objects::pre_wasi_self_contained();
+ options.post_link_objects = crt_objects::post_wasi_self_contained();
// FIXME: Figure out cases in which WASM needs to link with a native toolchain.
- options.link_self_contained = LinkSelfContainedDefault::True;
+ options.link_self_contained = LinkSelfContainedDefault::False;
+ options.external_lib_path = Some("/usr/wasm32-wasi/lib/wasm32-wasi".into());
// Right now this is a bit of a workaround but we're currently saying that
// the target by default has a static crt which we're taking as a signal
--
2.51.0

View file

@ -1,2 +0,0 @@
%__cargo_vendor_path ^%{_defaultlicensedir}(/[^/]+)+/cargo-vendor.txt$
%__cargo_vendor_provides %{_rpmconfigdir}/cargo_vendor.prov

View file

@ -1,127 +0,0 @@
#! /usr/bin/python3 -s
# Stripped down replacement for cargo2rpm parse-vendor-manifest
import re
import subprocess
import sys
from typing import Optional
VERSION_REGEX = re.compile(
r"""
^
(?P<major>0|[1-9]\d*)
\.(?P<minor>0|[1-9]\d*)
\.(?P<patch>0|[1-9]\d*)
(?:-(?P<pre>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?
(?:\+(?P<build>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
""",
re.VERBOSE,
)
class Version:
"""
Version that adheres to the "semantic versioning" format.
"""
def __init__(self, major: int, minor: int, patch: int, pre: Optional[str] = None, build: Optional[str] = None):
self.major: int = major
self.minor: int = minor
self.patch: int = patch
self.pre: Optional[str] = pre
self.build: Optional[str] = build
@staticmethod
def parse(version: str) -> "Version":
"""
Parses a version string and return a `Version` object.
Raises a `ValueError` if the string does not match the expected format.
"""
match = VERSION_REGEX.match(version)
if not match:
raise ValueError(f"Invalid version: {version!r}")
matches = match.groupdict()
major_str = matches["major"]
minor_str = matches["minor"]
patch_str = matches["patch"]
pre = matches["pre"]
build = matches["build"]
major = int(major_str)
minor = int(minor_str)
patch = int(patch_str)
return Version(major, minor, patch, pre, build)
def to_rpm(self) -> str:
"""
Formats the `Version` object as an equivalent RPM version string.
Characters that are invalid in RPM versions are replaced ("-" -> "_")
Build metadata (the optional `Version.build` attribute) is dropped, so
the conversion is not lossless for versions where this attribute is not
`None`. However, build metadata is not intended to be part of the
version (and is not even considered when doing version comparison), so
dropping it when converting to the RPM version format is correct.
"""
s = f"{self.major}.{self.minor}.{self.patch}"
if self.pre:
s += f"~{self.pre.replace('-', '_')}"
return s
def break_the_build(error: str):
"""
This function writes a string that is an invalid RPM dependency specifier,
which causes dependency generators to fail and break the build. The
additional error message is printed to stderr.
"""
print("*** FATAL ERROR ***")
print(error, file=sys.stderr)
def get_cargo_vendor_txt_paths_from_stdin() -> set[str]: # pragma nocover
"""
Read lines from standard input and filter out lines that look like paths
to `cargo-vendor.txt` files. This is how RPM generators pass lists of files.
"""
lines = {line.rstrip("\n") for line in sys.stdin.readlines()}
return {line for line in lines if line.endswith("/cargo-vendor.txt")}
def action_parse_vendor_manifest():
paths = get_cargo_vendor_txt_paths_from_stdin()
for path in paths:
with open(path) as file:
manifest = file.read()
for line in manifest.strip().splitlines():
crate, version = line.split(" v")
print(f"bundled(crate({crate})) = {Version.parse(version).to_rpm()}")
def main():
try:
action_parse_vendor_manifest()
exit(0)
# print an error message that is not a valid RPM dependency
# to cause the generator to break the build
except (IOError, ValueError) as exc:
break_the_build(str(exc))
exit(1)
break_the_build("Uncaught exception: This should not happen, please report a bug.")
exit(1)
if __name__ == "__main__":
main()

607
changelog
View file

@ -1,607 +0,0 @@
* Fri Apr 05 2024 Josh Stone <jistone@redhat.com> - 1.77.0-3
- Ensure more consistency in PGO flags -- fixes Cargo tests
* Thu Mar 21 2024 Davide Cavalca <dcavalca@fedoraproject.org> - 1.77.0-2
- Add build target for aarch64-unknown-none-softfloat
* Thu Mar 21 2024 Nikita Popov <npopov@redhat.com> - 1.77.0-1
- Update to 1.77.0
* Thu Feb 08 2024 Josh Stone <jistone@redhat.com> - 1.76.0-1
- Update to 1.76.0.
* Tue Jan 30 2024 Josh Stone <jistone@redhat.com> - 1.75.0-3
- Consolidate 32-bit build compromises.
- Update rust-toolset and add rust-srpm-macros for ELN.
* Fri Jan 26 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.75.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sun Dec 31 2023 Josh Stone <jistone@redhat.com> - 1.75.0-1
- Update to 1.75.0.
* Thu Dec 07 2023 Josh Stone <jistone@redhat.com> - 1.74.1-1
- Update to 1.74.1.
* Thu Nov 16 2023 Josh Stone <jistone@redhat.com> - 1.74.0-1
- Update to 1.74.0.
* Thu Oct 26 2023 Josh Stone <jistone@redhat.com> - 1.73.0-2
- Use thin-LTO and PGO for rustc itself.
* Thu Oct 05 2023 Josh Stone <jistone@redhat.com> - 1.73.0-1
- Update to 1.73.0.
- Drop el7 conditionals from the spec.
* Fri Sep 29 2023 Josh Stone <jistone@redhat.com> - 1.72.1-3
- Fix the profiler runtime with compiler-rt-17
- Switch to unbundled wasi-libc on Fedora
- Use emmalloc instead of CC0 dlmalloc when bundling wasi-libc
* Mon Sep 25 2023 Josh Stone <jistone@redhat.com> - 1.72.1-2
- Fix LLVM dependency for ELN
- Add build target for x86_64-unknown-none
- Add build target for x86_64-unknown-uefi
* Tue Sep 19 2023 Josh Stone <jistone@redhat.com> - 1.72.1-1
- Update to 1.72.1.
- Migrated to SPDX license
* Thu Aug 24 2023 Josh Stone <jistone@redhat.com> - 1.72.0-1
- Update to 1.72.0.
* Mon Aug 07 2023 Josh Stone <jistone@redhat.com> - 1.71.1-1
- Update to 1.71.1.
- Security fix for CVE-2023-38497
* Tue Jul 25 2023 Josh Stone <jistone@redhat.com> - 1.71.0-3
- Relax the suspicious_double_ref_op lint
- Enable the profiler runtime for native hosts
* Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.71.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Mon Jul 17 2023 Josh Stone <jistone@redhat.com> - 1.71.0-1
- Update to 1.71.0.
* Fri Jun 23 2023 Josh Stone <jistone@redhat.com> - 1.70.0-2
- Override default target CPUs to match distro settings
* Thu Jun 01 2023 Josh Stone <jistone@redhat.com> - 1.70.0-1
- Update to 1.70.0.
* Fri May 05 2023 Josh Stone <jistone@redhat.com> - 1.69.0-3
- Fix debuginfo with LLVM 16
* Mon May 01 2023 Josh Stone <jistone@redhat.com> - 1.69.0-2
- Build with LLVM 15 on Fedora 38+
* Thu Apr 20 2023 Josh Stone <jistone@redhat.com> - 1.69.0-1
- Update to 1.69.0.
- Obsolete rust-analysis.
* Tue Mar 28 2023 Josh Stone <jistone@redhat.com> - 1.68.2-1
- Update to 1.68.2.
* Thu Mar 23 2023 Josh Stone <jistone@redhat.com> - 1.68.1-1
- Update to 1.68.1.
* Thu Mar 09 2023 Josh Stone <jistone@redhat.com> - 1.68.0-1
- Update to 1.68.0.
* Tue Mar 07 2023 David Michael <fedora.dm0@gmail.com> - 1.67.1-3
- Add a virtual Provides to rust-std-static containing the target triple.
* Mon Feb 20 2023 Orion Poplawski <orion@nwra.com> - 1.67.1-2
- Ship rust-toolset for EPEL7
* Thu Feb 09 2023 Josh Stone <jistone@redhat.com> - 1.67.1-1
- Update to 1.67.1.
* Fri Feb 03 2023 Josh Stone <jistone@redhat.com> - 1.67.0-3
- Unbundle libgit2 on Fedora 38.
* Fri Jan 27 2023 Adam Williamson <awilliam@redhat.com> - 1.67.0-2
- Backport PR #107360 to fix build of mesa
- Backport 675fa0b3 to fix bootstrapping failure
* Thu Jan 26 2023 Josh Stone <jistone@redhat.com> - 1.67.0-1
- Update to 1.67.0.
* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.66.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Tue Jan 10 2023 Josh Stone <jistone@redhat.com> - 1.66.1-1
- Update to 1.66.1.
- Security fix for CVE-2022-46176
* Thu Dec 15 2022 Josh Stone <jistone@redhat.com> - 1.66.0-1
- Update to 1.66.0.
* Thu Nov 03 2022 Josh Stone <jistone@redhat.com> - 1.65.0-1
- Update to 1.65.0.
- rust-analyzer now obsoletes rls.
* Thu Sep 22 2022 Josh Stone <jistone@redhat.com> - 1.64.0-1
- Update to 1.64.0.
- Add rust-analyzer.
* Thu Aug 11 2022 Josh Stone <jistone@redhat.com> - 1.63.0-1
- Update to 1.63.0.
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.62.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Tue Jul 19 2022 Josh Stone <jistone@redhat.com> - 1.62.1-1
- Update to 1.62.1.
* Wed Jul 13 2022 Josh Stone <jistone@redhat.com> - 1.62.0-2
- Prevent unsound coercions from functions with opaque return types.
* Thu Jun 30 2022 Josh Stone <jistone@redhat.com> - 1.62.0-1
- Update to 1.62.0.
* Mon May 23 2022 Josh Stone <jistone@redhat.com> - 1.61.0-2
- Add missing target_feature to the list of well known cfg names
* Thu May 19 2022 Josh Stone <jistone@redhat.com> - 1.61.0-1
- Update to 1.61.0.
- Add rust-toolset for ELN.
* Thu Apr 07 2022 Josh Stone <jistone@redhat.com> - 1.60.0-1
- Update to 1.60.0.
* Fri Mar 25 2022 Josh Stone <jistone@redhat.com> - 1.59.0-4
- Fix the archive index for wasm32-wasi's libc.a
* Fri Mar 04 2022 Stephen Gallagher <sgallagh@redhat.com> - 1.59.0-3
- Rebuild against the bootstrapped build
* Fri Mar 04 2022 Stephen Gallagher <sgallagh@redhat.com> - 1.59.0-2.1
- Bootstrapping for Fedora ELN
* Tue Mar 01 2022 Josh Stone <jistone@redhat.com> - 1.59.0-2
- Fix s390x hangs, rhbz#2058803
* Thu Feb 24 2022 Josh Stone <jistone@redhat.com> - 1.59.0-1
- Update to 1.59.0.
- Revert to libgit2 1.3.x
* Sun Feb 20 2022 Igor Raits <igor.raits@gmail.com> - 1.58.1-2
- Rebuild for libgit2 1.4.x
* Thu Jan 20 2022 Josh Stone <jistone@redhat.com> - 1.58.1-1
- Update to 1.58.1.
* Thu Jan 13 2022 Josh Stone <jistone@redhat.com> - 1.58.0-1
- Update to 1.58.0.
* Wed Jan 05 2022 Josh Stone <jistone@redhat.com> - 1.57.0-2
- Add rust-std-static-i686-pc-windows-gnu
- Add rust-std-static-x86_64-pc-windows-gnu
* Thu Dec 02 2021 Josh Stone <jistone@redhat.com> - 1.57.0-1
- Update to 1.57.0, fixes rhbz#2028675.
- Backport rust#91070, fixes rhbz#1990657
- Add rust-std-static-wasm32-wasi
* Sun Nov 28 2021 Igor Raits <ignatenkobrain@fedoraproject.org> - 1.56.1-3
- De-bootstrap (libgit2)
* Sun Nov 28 2021 Igor Raits <ignatenkobrain@fedoraproject.org> - 1.56.1-2
- Rebuild for libgit2 1.3.x
* Mon Nov 01 2021 Josh Stone <jistone@redhat.com> - 1.56.1-1
- Update to 1.56.1.
* Thu Oct 21 2021 Josh Stone <jistone@redhat.com> - 1.56.0-1
- Update to 1.56.0.
* Tue Sep 14 2021 Sahana Prasad <sahana@redhat.com> - 1.55.0-2
- Rebuilt with OpenSSL 3.0.0
* Thu Sep 09 2021 Josh Stone <jistone@redhat.com> - 1.55.0-1
- Update to 1.55.0.
- Use llvm-ranlib for wasm rlibs; Fixes rhbz#2002612
* Tue Aug 24 2021 Josh Stone <jistone@redhat.com> - 1.54.0-2
- Build with LLVM 12 on Fedora 35+
* Thu Jul 29 2021 Josh Stone <jistone@redhat.com> - 1.54.0-1
- Update to 1.54.0.
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.53.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Thu Jul 08 2021 Josh Stone <jistone@redhat.com> - 1.53.0-2
- Exclude wasm on s390x for lack of lld
* Thu Jun 17 2021 Josh Stone <jistone@redhat.com> - 1.53.0-1
- Update to 1.53.0.
* Wed Jun 02 2021 Josh Stone <jistone@redhat.com> - 1.52.1-2
- Set rust.codegen-units-std=1 for all targets again.
- Add rust-std-static-wasm32-unknown-unknown.
- Rebuild f34 with LLVM 12.
* Mon May 10 2021 Josh Stone <jistone@redhat.com> - 1.52.1-1
- Update to 1.52.1.
* Thu May 06 2021 Josh Stone <jistone@redhat.com> - 1.52.0-1
- Update to 1.52.0.
* Fri Apr 16 2021 Josh Stone <jistone@redhat.com> - 1.51.0-3
- Security fixes for CVE-2020-36323, CVE-2021-31162
* Wed Apr 14 2021 Josh Stone <jistone@redhat.com> - 1.51.0-2
- Security fixes for CVE-2021-28876, CVE-2021-28878, CVE-2021-28879
- Fix bootstrap for stage0 rust 1.51
* Thu Mar 25 2021 Josh Stone <jistone@redhat.com> - 1.51.0-1
- Update to 1.51.0.
* Thu Feb 11 2021 Josh Stone <jistone@redhat.com> - 1.50.0-1
- Update to 1.50.0.
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.49.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Tue Jan 05 2021 Josh Stone <jistone@redhat.com> - 1.49.0-1
- Update to 1.49.0.
* Tue Dec 29 2020 Igor Raits <ignatenkobrain@fedoraproject.org> - 1.48.0-3
- De-bootstrap
* Mon Dec 28 2020 Igor Raits <ignatenkobrain@fedoraproject.org> - 1.48.0-2
- Rebuild for libgit2 1.1.x
* Thu Nov 19 2020 Josh Stone <jistone@redhat.com> - 1.48.0-1
- Update to 1.48.0.
* Sat Oct 10 2020 Jeff Law <law@redhat.com> - 1.47.0-2
- Re-enable LTO
* Thu Oct 08 2020 Josh Stone <jistone@redhat.com> - 1.47.0-1
- Update to 1.47.0.
* Fri Aug 28 2020 Fabio Valentini <decathorpe@gmail.com> - 1.46.0-2
- Fix LTO with doctests (backported cargo PR#8657).
* Thu Aug 27 2020 Josh Stone <jistone@redhat.com> - 1.46.0-1
- Update to 1.46.0.
* Mon Aug 03 2020 Josh Stone <jistone@redhat.com> - 1.45.2-1
- Update to 1.45.2.
* Thu Jul 30 2020 Josh Stone <jistone@redhat.com> - 1.45.1-1
- Update to 1.45.1.
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.45.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Thu Jul 16 2020 Josh Stone <jistone@redhat.com> - 1.45.0-1
- Update to 1.45.0.
* Wed Jul 01 2020 Jeff Law <law@redhat.com> - 1.44.1-2
- Disable LTO
* Thu Jun 18 2020 Josh Stone <jistone@redhat.com> - 1.44.1-1
- Update to 1.44.1.
* Thu Jun 04 2020 Josh Stone <jistone@redhat.com> - 1.44.0-1
- Update to 1.44.0.
* Thu May 07 2020 Josh Stone <jistone@redhat.com> - 1.43.1-1
- Update to 1.43.1.
* Thu Apr 23 2020 Josh Stone <jistone@redhat.com> - 1.43.0-1
- Update to 1.43.0.
* Thu Mar 12 2020 Josh Stone <jistone@redhat.com> - 1.42.0-1
- Update to 1.42.0.
* Thu Feb 27 2020 Josh Stone <jistone@redhat.com> - 1.41.1-1
- Update to 1.41.1.
* Thu Feb 20 2020 Josh Stone <jistone@redhat.com> - 1.41.0-2
- Rebuild with llvm9.0
* Thu Jan 30 2020 Josh Stone <jistone@redhat.com> - 1.41.0-1
- Update to 1.41.0.
* Thu Jan 16 2020 Josh Stone <jistone@redhat.com> - 1.40.0-3
- Build compiletest with in-tree libtest
* Tue Jan 07 2020 Josh Stone <jistone@redhat.com> - 1.40.0-2
- Fix compiletest with newer (local-rebuild) libtest
- Fix ARM EHABI unwinding
* Thu Dec 19 2019 Josh Stone <jistone@redhat.com> - 1.40.0-1
- Update to 1.40.0.
* Tue Nov 12 2019 Josh Stone <jistone@redhat.com> - 1.39.0-2
- Fix a couple build and test issues with rustdoc.
* Thu Nov 07 2019 Josh Stone <jistone@redhat.com> - 1.39.0-1
- Update to 1.39.0.
* Fri Sep 27 2019 Josh Stone <jistone@redhat.com> - 1.38.0-2
- Filter the libraries included in rust-std (rhbz1756487)
* Thu Sep 26 2019 Josh Stone <jistone@redhat.com> - 1.38.0-1
- Update to 1.38.0.
* Thu Aug 15 2019 Josh Stone <jistone@redhat.com> - 1.37.0-1
- Update to 1.37.0.
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.36.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Thu Jul 04 2019 Josh Stone <jistone@redhat.com> - 1.36.0-1
- Update to 1.36.0.
* Wed May 29 2019 Josh Stone <jistone@redhat.com> - 1.35.0-2
- Fix compiletest for rebuild testing.
* Thu May 23 2019 Josh Stone <jistone@redhat.com> - 1.35.0-1
- Update to 1.35.0.
* Tue May 14 2019 Josh Stone <jistone@redhat.com> - 1.34.2-1
- Update to 1.34.2 -- fixes CVE-2019-12083.
* Tue Apr 30 2019 Josh Stone <jistone@redhat.com> - 1.34.1-3
- Set rust.codegen-units-std=1
* Fri Apr 26 2019 Josh Stone <jistone@redhat.com> - 1.34.1-2
- Remove the ThinLTO workaround.
* Thu Apr 25 2019 Josh Stone <jistone@redhat.com> - 1.34.1-1
- Update to 1.34.1.
- Add a ThinLTO fix for rhbz1701339.
* Thu Apr 11 2019 Josh Stone <jistone@redhat.com> - 1.34.0-1
- Update to 1.34.0.
* Fri Mar 01 2019 Josh Stone <jistone@redhat.com> - 1.33.0-2
- Fix deprecations for self-rebuild
* Thu Feb 28 2019 Josh Stone <jistone@redhat.com> - 1.33.0-1
- Update to 1.33.0.
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.32.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Thu Jan 17 2019 Josh Stone <jistone@redhat.com> - 1.32.0-1
- Update to 1.32.0.
* Mon Jan 07 2019 Josh Stone <jistone@redhat.com> - 1.31.1-9
- Update to 1.31.1 for RLS fixes.
* Thu Dec 06 2018 Josh Stone <jistone@redhat.com> - 1.31.0-8
- Update to 1.31.0 -- Rust 2018!
- clippy/rls/rustfmt are no longer -preview
* Thu Nov 08 2018 Josh Stone <jistone@redhat.com> - 1.30.1-7
- Update to 1.30.1.
* Thu Oct 25 2018 Josh Stone <jistone@redhat.com> - 1.30.0-6
- Update to 1.30.0.
* Mon Oct 22 2018 Josh Stone <jistone@redhat.com> - 1.29.2-5
- Rebuild without bootstrap binaries.
* Sat Oct 20 2018 Josh Stone <jistone@redhat.com> - 1.29.2-4
- Re-bootstrap armv7hl due to rhbz#1639485
* Fri Oct 12 2018 Josh Stone <jistone@redhat.com> - 1.29.2-3
- Update to 1.29.2.
* Tue Sep 25 2018 Josh Stone <jistone@redhat.com> - 1.29.1-2
- Update to 1.29.1.
- Security fix for str::repeat (pending CVE).
* Thu Sep 13 2018 Josh Stone <jistone@redhat.com> - 1.29.0-1
- Update to 1.29.0.
- Add a clippy-preview subpackage
* Mon Aug 13 2018 Josh Stone <jistone@redhat.com> - 1.28.0-3
- Use llvm6.0 instead of llvm-7 for now
* Tue Aug 07 2018 Josh Stone <jistone@redhat.com> - 1.28.0-2
- Rebuild for LLVM ppc64/s390x fixes
* Thu Aug 02 2018 Josh Stone <jistone@redhat.com> - 1.28.0-1
- Update to 1.28.0.
* Tue Jul 24 2018 Josh Stone <jistone@redhat.com> - 1.27.2-4
- Update to 1.27.2.
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.27.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Tue Jul 10 2018 Josh Stone <jistone@redhat.com> - 1.27.1-2
- Update to 1.27.1.
- Security fix for CVE-2018-1000622
* Thu Jun 21 2018 Josh Stone <jistone@redhat.com> - 1.27.0-1
- Update to 1.27.0.
* Tue Jun 05 2018 Josh Stone <jistone@redhat.com> - 1.26.2-4
- Rebuild without bootstrap binaries.
* Tue Jun 05 2018 Josh Stone <jistone@redhat.com> - 1.26.2-3
- Update to 1.26.2.
- Re-bootstrap to deal with LLVM symbol changes.
* Tue May 29 2018 Josh Stone <jistone@redhat.com> - 1.26.1-2
- Update to 1.26.1.
* Thu May 10 2018 Josh Stone <jistone@redhat.com> - 1.26.0-1
- Update to 1.26.0.
* Mon Apr 16 2018 Dan Callaghan <dcallagh@redhat.com> - 1.25.0-3
- Add cargo, rls, and analysis
* Tue Apr 10 2018 Josh Stone <jistone@redhat.com> - 1.25.0-2
- Filter codegen-backends from Provides too.
* Thu Mar 29 2018 Josh Stone <jistone@redhat.com> - 1.25.0-1
- Update to 1.25.0.
* Thu Mar 01 2018 Josh Stone <jistone@redhat.com> - 1.24.1-1
- Update to 1.24.1.
* Wed Feb 21 2018 Josh Stone <jistone@redhat.com> - 1.24.0-3
- Backport a rebuild fix for rust#48308.
* Mon Feb 19 2018 Josh Stone <jistone@redhat.com> - 1.24.0-2
- rhbz1546541: drop full-bootstrap; cmp libs before symlinking.
- Backport pr46592 to fix local_rebuild bootstrapping.
- Backport pr48362 to fix relative/absolute libdir.
* Thu Feb 15 2018 Josh Stone <jistone@redhat.com> - 1.24.0-1
- Update to 1.24.0.
* Mon Feb 12 2018 Iryna Shcherbina <ishcherb@redhat.com> - 1.23.0-4
- Update Python 2 dependency declarations to new packaging standards
(See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)
* Tue Feb 06 2018 Josh Stone <jistone@redhat.com> - 1.23.0-3
- Use full-bootstrap to work around a rebuild issue.
- Patch binaryen for GCC 8
* Thu Feb 01 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 1.23.0-2
- Switch to %%ldconfig_scriptlets
* Mon Jan 08 2018 Josh Stone <jistone@redhat.com> - 1.23.0-1
- Update to 1.23.0.
* Thu Nov 23 2017 Josh Stone <jistone@redhat.com> - 1.22.1-1
- Update to 1.22.1.
* Thu Oct 12 2017 Josh Stone <jistone@redhat.com> - 1.21.0-1
- Update to 1.21.0.
* Mon Sep 11 2017 Josh Stone <jistone@redhat.com> - 1.20.0-2
- ABI fixes for ppc64 and s390x.
* Thu Aug 31 2017 Josh Stone <jistone@redhat.com> - 1.20.0-1
- Update to 1.20.0.
- Add a rust-src subpackage.
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.19.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.19.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Mon Jul 24 2017 Josh Stone <jistone@redhat.com> - 1.19.0-2
- Use find-debuginfo.sh --keep-section .rustc
* Thu Jul 20 2017 Josh Stone <jistone@redhat.com> - 1.19.0-1
- Update to 1.19.0.
* Thu Jun 08 2017 Josh Stone <jistone@redhat.com> - 1.18.0-1
- Update to 1.18.0.
* Mon May 08 2017 Josh Stone <jistone@redhat.com> - 1.17.0-2
- Move shared libraries back to libdir and symlink in rustlib
* Thu Apr 27 2017 Josh Stone <jistone@redhat.com> - 1.17.0-1
- Update to 1.17.0.
* Mon Mar 20 2017 Josh Stone <jistone@redhat.com> - 1.16.0-3
- Make rust-lldb arch-specific to deal with lldb deps
* Fri Mar 17 2017 Josh Stone <jistone@redhat.com> - 1.16.0-2
- Limit rust-lldb arches
* Thu Mar 16 2017 Josh Stone <jistone@redhat.com> - 1.16.0-1
- Update to 1.16.0.
- Use rustbuild instead of the old makefiles.
- Update bootstrapping to include rust-std and cargo.
- Add a rust-lldb subpackage.
* Thu Feb 09 2017 Josh Stone <jistone@redhat.com> - 1.15.1-1
- Update to 1.15.1.
- Require rust-rpm-macros for new crate packaging.
- Keep shared libraries under rustlib/, only debug-stripped.
- Merge and clean up conditionals for epel7.
* Fri Dec 23 2016 Josh Stone <jistone@redhat.com> - 1.14.0-2
- Rebuild without bootstrap binaries.
* Thu Dec 22 2016 Josh Stone <jistone@redhat.com> - 1.14.0-1
- Update to 1.14.0.
- Rewrite bootstrap logic to target specific arches.
- Bootstrap ppc64, ppc64le, s390x. (thanks to Sinny Kumari for testing!)
* Thu Nov 10 2016 Josh Stone <jistone@redhat.com> - 1.13.0-1
- Update to 1.13.0.
- Use hardening flags for linking.
- Split the standard library into its own package
- Centralize rustlib/ under /usr/lib/ for multilib integration.
* Thu Oct 20 2016 Josh Stone <jistone@redhat.com> - 1.12.1-1
- Update to 1.12.1.
* Fri Oct 14 2016 Josh Stone <jistone@redhat.com> - 1.12.0-7
- Rebuild with LLVM 3.9.
- Add ncurses-devel for llvm-config's -ltinfo.
* Thu Oct 13 2016 Josh Stone <jistone@redhat.com> - 1.12.0-6
- Rebuild with llvm-static, preparing for 3.9
* Fri Oct 07 2016 Josh Stone <jistone@redhat.com> - 1.12.0-5
- Rebuild with fixed eu-strip (rhbz1380961)
* Fri Oct 07 2016 Josh Stone <jistone@redhat.com> - 1.12.0-4
- Rebuild without bootstrap binaries.
* Thu Oct 06 2016 Josh Stone <jistone@redhat.com> - 1.12.0-3
- Bootstrap aarch64.
- Use jemalloc's MALLOC_CONF to work around #36944.
- Apply pr36933 to really disable armv7hl NEON.
* Sat Oct 01 2016 Josh Stone <jistone@redhat.com> - 1.12.0-2
- Protect .rustc from rpm stripping.
* Fri Sep 30 2016 Josh Stone <jistone@redhat.com> - 1.12.0-1
- Update to 1.12.0.
- Always use --local-rust-root, even for bootstrap binaries.
- Remove the rebuild conditional - the build system now figures it out.
- Let minidebuginfo do its thing, since metadata is no longer a note.
- Let rust build its own compiler-rt builtins again.
* Sat Sep 03 2016 Josh Stone <jistone@redhat.com> - 1.11.0-3
- Rebuild without bootstrap binaries.
* Fri Sep 02 2016 Josh Stone <jistone@redhat.com> - 1.11.0-2
- Bootstrap armv7hl, with backported no-neon patch.
* Wed Aug 24 2016 Josh Stone <jistone@redhat.com> - 1.11.0-1
- Update to 1.11.0.
- Drop the backported patches.
- Patch get-stage0.py to trust existing bootstrap binaries.
- Use libclang_rt.builtins from compiler-rt, dodging llvm-static issues.
- Use --local-rust-root to make sure the right bootstrap is used.
* Sat Aug 13 2016 Josh Stone <jistone@redhat.com> 1.10.0-4
- Rebuild without bootstrap binaries.
* Fri Aug 12 2016 Josh Stone <jistone@redhat.com> - 1.10.0-3
- Initial import into Fedora (#1356907), bootstrapped
- Format license text as suggested in review.
- Note how the tests already run in parallel.
- Undefine _include_minidebuginfo, because it duplicates ".note.rustc".
- Don't let checks fail the whole build.
- Note that -doc can't be noarch, as rpmdiff doesn't allow variations.
* Tue Jul 26 2016 Josh Stone <jistone@redhat.com> - 1.10.0-2
- Update -doc directory ownership, and mark its licenses.
- Package and declare licenses for libbacktrace and hoedown.
- Set bootstrap_base as a global.
- Explicitly require python2.
* Thu Jul 14 2016 Josh Stone <jistone@fedoraproject.org> - 1.10.0-1
- Initial package, bootstrapped

View file

@ -1,19 +0,0 @@
--- !Policy
product_versions:
- fedora-*
decision_context: bodhi_update_push_stable
subject_type: koji_build
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
--- !Policy
product_versions:
- rhel-8
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional}
--- !Policy
product_versions:
- rhel-9
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional}

View file

@ -1,62 +0,0 @@
# rust_arches: list of architectures where building Rust is supported
#
# Since RPM itself now depends on Rust code (via its GPG backend, rpm-sequoia),
# this list will probably always be a superset of all architectures that are
# supported by Fedora, which is why it is no longer required to set
# "ExclusiveArch: rust_arches" for Rust packages in Fedora.
%rust_arches x86_64 %{ix86} armv7hl aarch64 ppc64 ppc64le riscv64 s390x
# version_no_tilde: lua macro for reconstructing the original crate version
# from the RPM version (i.e. replace any "~" characters with "-")
%version_no_tilde() %{lua:
local sep = rpm.expand('%1')
local ver = rpm.expand('%2')
\
if sep == '%1' then
sep = '-'
end
\
if ver == '%2' then
ver = rpm.expand('%version')
end
ver = ver:gsub('~', sep)
\
print(ver)
}
# __crates_url: default API endpoint for downloading .crate files from crates.io
%__crates_url https://crates.io/api/v1/crates/
# crates_source: lua macro for constructing the Source URL for a crate
%crates_source() %{lua:
local crate = rpm.expand('%1')
local version = rpm.expand('%2')
local url = rpm.expand('%__crates_url')
\
-- first argument missing: fall back to %crate
if crate == '%1' then
crate = rpm.expand('%crate')
end
-- %crate macro not defined: fall back to %name
if crate == '%crate' then
crate = rpm.expand('%name')
end
\
-- second argument missing: fall back to %crate_version
if version == '%2' then
version = rpm.expand('%crate_version')
end
-- %crate_version macro not defined: fall back to %version
if version == '%crate_version' then
version = rpm.expand('%version')
end
-- replace '~' with '-' for backwards compatibility
-- can be removed in the future
version = version:gsub('~', '-')
\
print(url .. crate .. '/' .. version .. '/download#/' .. crate .. '-' .. version .. '.crate')
}
# __cargo_skip_build: unused macro, set to 0 for backwards compatibility
%__cargo_skip_build 0

View file

@ -1,256 +0,0 @@
# __rustc: path to the default rustc executable
%__rustc /usr/bin/rustc
# __rustdoc: path to the default rustdoc executable
%__rustdoc /usr/bin/rustdoc
# rustflags_opt_level: default optimization level
#
# It corresponds to the "-Copt-level" rustc command line option.
%rustflags_opt_level 3
# rustflags_debuginfo: default verbosity of debug information
#
# It corresponds to the "-Cdebuginfo" rustc command line option.
# In some cases, it might be required to override this macro with "1" or even
# "0", if memory usage gets too high during builds on some resource-constrained
# architectures (most likely on 32-bit architectures), which will however
# reduce the quality of the produced debug symbols.
%rustflags_debuginfo 2
# rustflags_codegen_units: default number of parallel code generation units
#
# The default value of "1" results in generation of better code, but comes at
# the cost of longer build times.
%rustflags_codegen_units 1
# build_rustflags: default compiler flags for rustc (RUSTFLAGS)
#
# -Copt-level: set optimization level (default: highest optimization level)
# -Cdebuginfo: set debuginfo verbosity (default: full debug information)
# -Ccodegen-units: set number of parallel code generation units (default: 1)
# -Cforce-frame-pointers: force inclusion of frame pointers (default: enabled
# on x86_64 and aarch64 on Fedora 37+)
#
# Additionally, some linker flags are set which correspond to the default
# Fedora compiler flags for hardening and for embedding package versions into
# compiled binaries.
#
# ref. https://doc.rust-lang.org/rustc/codegen-options/index.html
%build_rustflags %{shrink:
-Copt-level=%rustflags_opt_level
-Cdebuginfo=%rustflags_debuginfo
-Ccodegen-units=%rustflags_codegen_units
-Cstrip=none
%{expr:0%{?_include_frame_pointers} && ("%{_arch}" != "ppc64le" && "%{_arch}" != "s390x" && "%{_arch}" != "i386") ? "-Cforce-frame-pointers=yes" : ""}
%[0%{?_package_note_status} ? "-Clink-arg=%_package_note_flags" : ""]
}
# __cargo: cargo command with environment variables
#
# CARGO_HOME: This ensures cargo reads configuration file from .cargo/config.toml,
# and prevents writing any files to $HOME during RPM builds.
%__cargo /usr/bin/env CARGO_HOME=.cargo RUSTFLAGS='%{build_rustflags}' /usr/bin/cargo
# __cargo_common_opts: common command line flags for cargo
#
# _smp_mflags: run builds and tests in parallel
%__cargo_common_opts %{?_smp_mflags}
# cargo_prep: macro to set up build environment for cargo projects
#
# This involves four steps:
# - create the ".cargo" directory if it doesn't exist yet
# - dump custom cargo configuration into ".cargo/config.toml"
# - remove "Cargo.lock" if it exists (it breaks builds with custom cargo config)
# - remove "Cargo.toml.orig" if it exists (it breaks running "cargo package")
#
# Options:
# -V <number> - unpack and use vendored sources from Source<number> tarball
# (deprecated; use -v instead)
# -v <directory> - use vendored sources from <directory>
# -N - Don't set up any registry. Only set up the build configuration.
%cargo_prep(V:v:N)\
%{-v:%{-V:%{error:-v and -V are mutually exclusive!}}}\
%{-v:%{-N:%{error:-v and -N are mutually exclusive!}}}\
(\
set -euo pipefail\
%{__mkdir} -p target/rpm\
/usr/bin/ln -s rpm target/release\
%{__rm} -rf .cargo/\
%{__mkdir} -p .cargo\
cat > .cargo/config.toml << EOF\
[build]\
rustc = "%{__rustc}"\
rustdoc = "%{__rustdoc}"\
\
[profile.rpm]\
inherits = "release"\
opt-level = %{rustflags_opt_level}\
codegen-units = %{rustflags_codegen_units}\
debug = %{rustflags_debuginfo}\
strip = "none"\
\
[env]\
CFLAGS = "%{build_cflags}"\
CXXFLAGS = "%{build_cxxflags}"\
LDFLAGS = "%{build_ldflags}"\
\
[install]\
root = "%{buildroot}%{_prefix}"\
\
[term]\
verbose = true\
EOF\
%{-V:%{__tar} -xoaf %{S:%{-V*}}}\
%{!?-N:\
cat >> .cargo/config.toml << EOF\
[source.vendored-sources]\
directory = "%{-v*}%{-V:./vendor}"\
\
[source.crates-io]\
registry = "https://crates.io"\
replace-with = "vendored-sources"\
EOF}\
%{__rm} -f Cargo.toml.orig\
)
# __cargo_parse_opts: function-like macro which parses common flags into the
# equivalent command-line flags for cargo
%__cargo_parse_opts(naf:) %{shrink:\
%{-n:%{-a:%{error:Can't specify both -n and -a}}} \
%{-f:%{-a:%{error:Can't specify both -f(%{-f*}) and -a}}} \
%{-n:--no-default-features} \
%{-a:--all-features} \
%{-f:--features %{-f*}} \
%{nil} \
}
# cargo_build: builds the crate with cargo with the specified feature flags
%cargo_build(naf:)\
%{shrink: \
%{__cargo} build \
%{__cargo_common_opts} \
--profile rpm \
%{__cargo_parse_opts %{-n} %{-a} %{-f:-f%{-f*}}} \
%* \
}
# cargo_test: runs the test suite with cargo with the specified feature flags
#
# To pass command-line arguments to the cargo test runners directly (for
# example, to skip certain tests during package builds), both the cargo_test
# macro argument parsing and "cargo test" argument parsing need to be bypassed,
# i.e. "%%cargo_test -- -- --skip foo" for skipping all tests with names that
# match "foo".
%cargo_test(naf:)\
%{shrink: \
%{__cargo} test \
%{__cargo_common_opts} \
--profile rpm \
--no-fail-fast \
%{__cargo_parse_opts %{-n} %{-a} %{-f:-f%{-f*}}} \
%* \
}
# cargo_install: install files into the buildroot
#
# For "binary" crates, this macro installs all "bin" build targets to _bindir
# inside the buildroot. The "--no-track" option prevents the creation of the
# "$CARGO_HOME/.crates.toml" file, which is used to keep track of which version
# of a specific binary has been installed, but which conflicts between builds
# of different Rust applications and is not needed when building RPM packages.
%cargo_install(t:naf:)\
(\
set -euo pipefail \
%{shrink: \
%{__cargo} install \
%{__cargo_common_opts} \
--profile rpm \
--no-track \
--path . \
%{__cargo_parse_opts %{-n} %{-a} %{-f:-f%{-f*}}} \
%* \
} \
)
# cargo_license: print license information for all crate dependencies
#
# The "no-build,no-dev,no-proc-macro" argument results in only crates which are
# linked into the final binary to be considered.
#
# Additionally, deprecated SPDX syntax ("/" instead of "OR") is normalized
# before sorting the results to ensure reproducible output of this macro.
#
# This macro must be called with the same feature flags as other cargo macros,
# in particular, "cargo_build", otherwise its output will be incomplete.
#
# The "cargo tree" command called by this macro will fail if there are missing
# (optional) dependencies.
%cargo_license(naf:)\
(\
set -euo pipefail\
%{shrink: \
%{__cargo} tree \
--workspace \
--offline \
--edges no-build,no-dev,no-proc-macro \
--no-dedupe \
%{__cargo_parse_opts %{-n} %{-a} %{-f:-f%{-f*}}} \
--prefix none \
--format "{l}: {p}" \
| sed -e "s: ($(pwd)[^)]*)::g" -e "s: / :/:g" -e "s:/: OR :g" \
| sort -u \
}\
)
# cargo_license_summary: print license summary for all crate dependencies
#
# This macro works in the same way as cargo_license, except that it only prints
# a list of licenses, and not the complete license information for every crate
# in the dependency tree. This is useful for determining the correct License
# tag for packages that contain compiled Rust binaries.
%cargo_license_summary(naf:)\
(\
set -euo pipefail\
%{shrink: \
%{__cargo} tree \
--workspace \
--offline \
--edges no-build,no-dev,no-proc-macro \
--no-dedupe \
%{__cargo_parse_opts %{-n} %{-a} %{-f:-f%{-f*}}} \
--prefix none \
--format "# {l}" \
| sed -e "s: / :/:g" -e "s:/: OR :g" \
| sort -u \
}\
)
# cargo_vendor_manifest: write list of vendored crates and their versions
#
# The arguments for the internal "cargo tree" call emulate the logic
# that determines which crates are included when running "cargo vendor".
# The results are written to "cargo-vendor.txt".
#
# TODO: --all-features may be overly broad; this should be modified to
# use %%__cargo_parse_opts to handle feature flags.
%cargo_vendor_manifest()\
(\
set -euo pipefail\
%{shrink: \
%{__cargo} tree \
--workspace \
--offline \
--edges normal,build \
--no-dedupe \
--all-features \
--prefix none \
--format "{p}" \
| grep -v "$(pwd)" \
| sed -e "s: (proc-macro)::" \
| sort -u \
> cargo-vendor.txt \
}\
)

View file

@ -1,6 +0,0 @@
summary: CI Gating Plan
discover:
how: fmf
url: https://src.fedoraproject.org/tests/rust.git
execute:
how: tmt

View file

@ -1,27 +0,0 @@
---
debuginfo:
ignore:
# i686 has limited debuginfo. From rust.spec
# full debuginfo is exhausting memory; just do libstd for now
# https://github.com/rust-lang/rust/issues/45854
- /usr/lib/debug/usr/bin/rustc-*.i386.debug
unicode:
ignore:
# These files are known to contain forbidden unicode chars as
# they are tests for those.
- rustc-*-src/tests/ui/lint/issue-90614-accept-allow-text-direction-codepoint-in-comment-lint.rs
- rustc-*-src/tests/ui/parser/unicode-control-codepoints.rs
- rustc-*-src/tests/ui/parser/macro/unicode-control-codepoints-macros.rs
- rustc-*-src/tests/ui/parser/macro/auxiliary/unicode-control.rs
- rustc-*-src/compiler/rustc_lint/src/hidden_unicode_codepoints.rs
- rustc-*-src/compiler/rustc_lint_defs/src/builtin.rs
- rustc-*-src/vendor/idna/tests/IdnaTestV2.txt
- rustc-*-src/vendor/idna-*/tests/IdnaTestV2.txt
- rustc-*-src/vendor/mdbook*/tests/testsuite/search/reasonable_search_index/expected_index.js
- rustc-*-src/vendor/mdbook*/tests/testsuite/search/reasonable_search_index/src/first/unicode.md
- rustc-*-src/vendor/wast-*/tests/parse-fail/confusing-string?.wat
- rustc-*-src/vendor/wast-*/tests/parse-fail/confusing-block-comment?.wat
- rustc-*-src/vendor/wast-*/tests/parse-fail/confusing-line-comment?.wat
- rustc-*-src/src/llvm-project/clang-tools-extra/docs/clang-tidy/checks/misc/misleading-bidirectional.rst
- rustc-*-src/src/gcc/gcc/testsuite/c-c++-common/*Wbidi*.c

View file

@ -0,0 +1,32 @@
commit ab998a2eeb2bcdc69ce70c814af97f0d1302a404 (from d17f62d857c70508efbf60be41135880bcd2e062)
Merge: d17f62d857c7 9452a8dfa3ba
Author: Mazdak Farrokhzad <twingoow@gmail.com>
Date: Thu Jan 24 00:20:00 2019 +0100
Rollup merge of #57840 - tromey:fix-issue-57762, r=nikic
Fix issue 57762
against a stock LLVM 7. LLVM 7 was released without a necessary fix
for a bug in the DWARF discriminant code.
This patch changes rustc to use the fallback mode on (non-Rust) LLVM 7.
Closes #57762
diff --git a/src/librustc_codegen_llvm/debuginfo/metadata.rs b/src/librustc_codegen_llvm/debuginfo/metadata.rs
index 6deedd0b5ea3..9f63038c3623 100644
--- a/src/librustc_codegen_llvm/debuginfo/metadata.rs
+++ b/src/librustc_codegen_llvm/debuginfo/metadata.rs
@@ -1164,7 +1164,10 @@ fn use_enum_fallback(cx: &CodegenCx) -> bool {
// On MSVC we have to use the fallback mode, because LLVM doesn't
// lower variant parts to PDB.
return cx.sess().target.target.options.is_like_msvc
- || llvm_util::get_major_version() < 7;
+ // LLVM version 7 did not release with an important bug fix;
+ // but the required patch is in the LLVM 8. Rust LLVM reports
+ // 8 as well.
+ || llvm_util::get_major_version() < 8;
}
// FIXME(eddyb) maybe precompute this? Right now it's computed once

View file

@ -0,0 +1,210 @@
commit 9423c4f0dda638ec2a925140850b85e8d3e6d455 (from bee074f032970fd1b59650c04a70e75eeee9c63b)
Merge: bee074f03297 3a2a4429a288
Author: Mazdak Farrokhzad <twingoow@gmail.com>
Date: Mon Mar 23 10:29:13 2020 +0100
Rollup merge of #70123 - cuviper:library-path, r=Mark-Simulacrum
Ensure LLVM is in the link path for rustc tools
The build script for `rustc_llvm` outputs LLVM information in `cargo:rustc-link-lib` and `cargo:rustc-link-search` so the compiler can be linked correctly. However, while the lib is carried along in metadata, the search paths are not. So when cargo is invoked again later for rustc _tools_, they'll also try to link with LLVM, but the necessary paths may be left out.
Rustbuild can use the environment to set the LLVM link path for tools -- `LIB` for MSVC toolchains and `LIBRARY_PATH` for everyone else.
Fixes #68714.
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs
index 602e4511ea58..dd519506d42a 100644
--- a/src/bootstrap/builder.rs
+++ b/src/bootstrap/builder.rs
@@ -11,7 +11,7 @@ use std::path::{Path, PathBuf};
use std::process::Command;
use std::time::{Duration, Instant};
-use build_helper::t;
+use build_helper::{output, t};
use crate::cache::{Cache, Interned, INTERNER};
use crate::check;
@@ -23,7 +23,7 @@ use crate::install;
use crate::native;
use crate::test;
use crate::tool;
-use crate::util::{self, add_lib_path, exe, libdir};
+use crate::util::{self, add_dylib_path, add_link_lib_path, exe, libdir};
use crate::{Build, DocTests, GitRepo, Mode};
pub use crate::Compiler;
@@ -660,7 +660,7 @@ impl<'a> Builder<'a> {
return;
}
- add_lib_path(vec![self.rustc_libdir(compiler)], &mut cmd.command);
+ add_dylib_path(vec![self.rustc_libdir(compiler)], &mut cmd.command);
}
/// Gets a path to the compiler specified.
@@ -698,6 +698,20 @@ impl<'a> Builder<'a> {
cmd
}
+ /// Return the path to `llvm-config` for the target, if it exists.
+ ///
+ /// Note that this returns `None` if LLVM is disabled, or if we're in a
+ /// check build or dry-run, where there's no need to build all of LLVM.
+ fn llvm_config(&self, target: Interned<String>) -> Option<PathBuf> {
+ if self.config.llvm_enabled() && self.kind != Kind::Check && !self.config.dry_run {
+ let llvm_config = self.ensure(native::Llvm { target });
+ if llvm_config.is_file() {
+ return Some(llvm_config);
+ }
+ }
+ None
+ }
+
/// Prepares an invocation of `cargo` to be run.
///
/// This will create a `Command` that represents a pending execution of
@@ -1034,6 +1048,17 @@ impl<'a> Builder<'a> {
.env("RUSTC_SNAPSHOT_LIBDIR", self.rustc_libdir(compiler));
}
+ // Tools that use compiler libraries may inherit the `-lLLVM` link
+ // requirement, but the `-L` library path is not propagated across
+ // separate Cargo projects. We can add LLVM's library path to the
+ // platform-specific environment variable as a workaround.
+ if mode == Mode::ToolRustc {
+ if let Some(llvm_config) = self.llvm_config(target) {
+ let llvm_libdir = output(Command::new(&llvm_config).arg("--libdir"));
+ add_link_lib_path(vec![llvm_libdir.trim().into()], &mut cargo);
+ }
+ }
+
if self.config.incremental {
cargo.env("CARGO_INCREMENTAL", "1");
} else {
diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs
index 65a00db33949..ad494b88b3af 100644
--- a/src/bootstrap/compile.rs
+++ b/src/bootstrap/compile.rs
@@ -451,44 +451,6 @@ impl Step for Rustc {
false,
);
- // We used to build librustc_codegen_llvm as a separate step,
- // which produced a dylib that the compiler would dlopen() at runtime.
- // This meant that we only needed to make sure that libLLVM.so was
- // installed by the time we went to run a tool using it - since
- // librustc_codegen_llvm was effectively a standalone artifact,
- // other crates were completely oblivious to its dependency
- // on `libLLVM.so` during build time.
- //
- // However, librustc_codegen_llvm is now built as an ordinary
- // crate during the same step as the rest of the compiler crates.
- // This means that any crates depending on it will see the fact
- // that it uses `libLLVM.so` as a native library, and will
- // cause us to pass `-llibLLVM.so` to the linker when we link
- // a binary.
- //
- // For `rustc` itself, this works out fine.
- // During the `Assemble` step, we call `dist::maybe_install_llvm_dylib`
- // to copy libLLVM.so into the `stage` directory. We then link
- // the compiler binary, which will find `libLLVM.so` in the correct place.
- //
- // However, this is insufficient for tools that are build against stage0
- // (e.g. stage1 rustdoc). Since `Assemble` for stage0 doesn't actually do anything,
- // we won't have `libLLVM.so` in the stage0 sysroot. In the past, this wasn't
- // a problem - we would copy the tool binary into its correct stage directory
- // (e.g. stage1 for a stage1 rustdoc built against a stage0 compiler).
- // Since libLLVM.so wasn't resolved until runtime, it was fine for it to
- // not exist while we were building it.
- //
- // To ensure that we can still build stage1 tools against a stage0 compiler,
- // we explicitly copy libLLVM.so into the stage0 sysroot when building
- // the stage0 compiler. This ensures that tools built against stage0
- // will see libLLVM.so at build time, making the linker happy.
- if compiler.stage == 0 {
- builder.info(&format!("Installing libLLVM.so to stage 0 ({})", compiler.host));
- let sysroot = builder.sysroot(compiler);
- dist::maybe_install_llvm_dylib(builder, compiler.host, &sysroot);
- }
-
builder.ensure(RustcLink {
compiler: builder.compiler(compiler.stage, builder.config.build),
target_compiler: compiler,
diff --git a/src/bootstrap/tool.rs b/src/bootstrap/tool.rs
index 67e0ed5c5802..c8ccba467e50 100644
--- a/src/bootstrap/tool.rs
+++ b/src/bootstrap/tool.rs
@@ -12,7 +12,7 @@ use crate::channel;
use crate::channel::GitInfo;
use crate::compile;
use crate::toolstate::ToolState;
-use crate::util::{add_lib_path, exe, CiEnv};
+use crate::util::{add_dylib_path, exe, CiEnv};
use crate::Compiler;
use crate::Mode;
@@ -388,7 +388,7 @@ pub struct ErrorIndex {
impl ErrorIndex {
pub fn command(builder: &Builder<'_>, compiler: Compiler) -> Command {
let mut cmd = Command::new(builder.ensure(ErrorIndex { compiler }));
- add_lib_path(
+ add_dylib_path(
vec![PathBuf::from(&builder.sysroot_libdir(compiler, compiler.host))],
&mut cmd,
);
@@ -689,7 +689,7 @@ impl<'a> Builder<'a> {
}
}
- add_lib_path(lib_paths, &mut cmd);
+ add_dylib_path(lib_paths, &mut cmd);
cmd
}
}
diff --git a/src/bootstrap/util.rs b/src/bootstrap/util.rs
index eac790fe504b..2bc6f1939d97 100644
--- a/src/bootstrap/util.rs
+++ b/src/bootstrap/util.rs
@@ -40,7 +40,7 @@ pub fn libdir(target: &str) -> &'static str {
}
/// Adds a list of lookup paths to `cmd`'s dynamic library lookup path.
-pub fn add_lib_path(path: Vec<PathBuf>, cmd: &mut Command) {
+pub fn add_dylib_path(path: Vec<PathBuf>, cmd: &mut Command) {
let mut list = dylib_path();
for path in path {
list.insert(0, path);
@@ -72,6 +72,31 @@ pub fn dylib_path() -> Vec<PathBuf> {
env::split_paths(&var).collect()
}
+/// Adds a list of lookup paths to `cmd`'s link library lookup path.
+pub fn add_link_lib_path(path: Vec<PathBuf>, cmd: &mut Command) {
+ let mut list = link_lib_path();
+ for path in path {
+ list.insert(0, path);
+ }
+ cmd.env(link_lib_path_var(), t!(env::join_paths(list)));
+}
+
+/// Returns the environment variable which the link library lookup path
+/// resides in for this platform.
+fn link_lib_path_var() -> &'static str {
+ if cfg!(target_env = "msvc") { "LIB" } else { "LIBRARY_PATH" }
+}
+
+/// Parses the `link_lib_path_var()` environment variable, returning a list of
+/// paths that are members of this lookup path.
+fn link_lib_path() -> Vec<PathBuf> {
+ let var = match env::var_os(link_lib_path_var()) {
+ Some(v) => v,
+ None => return vec![],
+ };
+ env::split_paths(&var).collect()
+}
+
/// `push` all components to `buf`. On windows, append `.exe` to the last component.
pub fn push_exe_path(mut buf: PathBuf, components: &[&str]) -> PathBuf {
let (&file, components) = components.split_last().expect("at least one component required");

View file

@ -0,0 +1,175 @@
commit 374ab25585f0a817fe7bd6986737f12347b12d0b (from 1add455ec6f81045e7651c6225902823f5d4fbfa)
Merge: 1add455ec6f8 497f879b1e24
Author: bors <bors@rust-lang.org>
Date: Tue Mar 24 12:42:54 2020 +0000
Auto merge of #70163 - nikic:llvm-10-preparation, r=cuviper
Prepare for LLVM 10 upgrade
This is #67759 minus the submodule update.
* Fix two compatibility issues in the rustllvm wrapper.
* Update data layout strings in tests.
* Fix LLVM version comparison (this become a problem because the major version has two digits now).
r? @cuviper
diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs
index aa1d1b7c4241..b52fbe4666eb 100644
--- a/src/bootstrap/test.rs
+++ b/src/bootstrap/test.rs
@@ -1141,6 +1141,8 @@ impl Step for Compiletest {
let llvm_config = builder.ensure(native::Llvm { target: builder.config.build });
if !builder.config.dry_run {
let llvm_version = output(Command::new(&llvm_config).arg("--version"));
+ // Remove trailing newline from llvm-config output.
+ let llvm_version = llvm_version.trim_end();
cmd.arg("--llvm-version").arg(llvm_version);
}
if !builder.is_rust_llvm(target) {
diff --git a/src/rustllvm/PassWrapper.cpp b/src/rustllvm/PassWrapper.cpp
index 90d24d20737d..9e8614e3b6d3 100644
--- a/src/rustllvm/PassWrapper.cpp
+++ b/src/rustllvm/PassWrapper.cpp
@@ -67,7 +67,11 @@ extern "C" void LLVMInitializePasses() {
}
extern "C" void LLVMTimeTraceProfilerInitialize() {
-#if LLVM_VERSION_GE(9, 0)
+#if LLVM_VERSION_GE(10, 0)
+ timeTraceProfilerInitialize(
+ /* TimeTraceGranularity */ 0,
+ /* ProcName */ "rustc");
+#elif LLVM_VERSION_GE(9, 0)
timeTraceProfilerInitialize();
#endif
}
diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp
index 25cfee3373dc..799adb418822 100644
--- a/src/rustllvm/RustWrapper.cpp
+++ b/src/rustllvm/RustWrapper.cpp
@@ -1333,8 +1333,13 @@ extern "C" LLVMValueRef LLVMRustBuildMemSet(LLVMBuilderRef B,
LLVMValueRef Dst, unsigned DstAlign,
LLVMValueRef Val,
LLVMValueRef Size, bool IsVolatile) {
+#if LLVM_VERSION_GE(10, 0)
+ return wrap(unwrap(B)->CreateMemSet(
+ unwrap(Dst), unwrap(Val), unwrap(Size), MaybeAlign(DstAlign), IsVolatile));
+#else
return wrap(unwrap(B)->CreateMemSet(
unwrap(Dst), unwrap(Val), unwrap(Size), DstAlign, IsVolatile));
+#endif
}
extern "C" LLVMValueRef
diff --git a/src/test/run-make-fulldeps/target-specs/my-awesome-platform.json b/src/test/run-make-fulldeps/target-specs/my-awesome-platform.json
index 8d028280a8da..00de3de05f07 100644
--- a/src/test/run-make-fulldeps/target-specs/my-awesome-platform.json
+++ b/src/test/run-make-fulldeps/target-specs/my-awesome-platform.json
@@ -1,5 +1,5 @@
{
- "data-layout": "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128",
+ "data-layout": "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-f64:32:64-f80:32-n8:16:32-S128",
"linker-flavor": "gcc",
"llvm-target": "i686-unknown-linux-gnu",
"target-endian": "little",
diff --git a/src/test/run-make-fulldeps/target-specs/my-x86_64-unknown-linux-gnu-platform.json b/src/test/run-make-fulldeps/target-specs/my-x86_64-unknown-linux-gnu-platform.json
index 48040ae3da0e..6d5e964ed4fe 100644
--- a/src/test/run-make-fulldeps/target-specs/my-x86_64-unknown-linux-gnu-platform.json
+++ b/src/test/run-make-fulldeps/target-specs/my-x86_64-unknown-linux-gnu-platform.json
@@ -1,6 +1,6 @@
{
"pre-link-args": {"gcc": ["-m64"]},
- "data-layout": "e-m:e-i64:64-f80:128-n8:16:32:64-S128",
+ "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128",
"linker-flavor": "gcc",
"llvm-target": "x86_64-unknown-linux-gnu",
"target-endian": "little",
diff --git a/src/tools/compiletest/src/header.rs b/src/tools/compiletest/src/header.rs
index 2a24a8c3c948..cb648db8830e 100644
--- a/src/tools/compiletest/src/header.rs
+++ b/src/tools/compiletest/src/header.rs
@@ -191,6 +191,7 @@ impl EarlyProps {
return true;
}
if let Some(ref actual_version) = config.llvm_version {
+ let actual_version = version_to_int(actual_version);
if line.starts_with("min-llvm-version") {
let min_version = line
.trim_end()
@@ -199,7 +200,7 @@ impl EarlyProps {
.expect("Malformed llvm version directive");
// Ignore if actual version is smaller the minimum required
// version
- &actual_version[..] < min_version
+ actual_version < version_to_int(min_version)
} else if line.starts_with("min-system-llvm-version") {
let min_version = line
.trim_end()
@@ -208,7 +209,7 @@ impl EarlyProps {
.expect("Malformed llvm version directive");
// Ignore if using system LLVM and actual version
// is smaller the minimum required version
- config.system_llvm && &actual_version[..] < min_version
+ config.system_llvm && actual_version < version_to_int(min_version)
} else if line.starts_with("ignore-llvm-version") {
// Syntax is: "ignore-llvm-version <version1> [- <version2>]"
let range_components = line
@@ -219,15 +220,15 @@ impl EarlyProps {
.take(3) // 3 or more = invalid, so take at most 3.
.collect::<Vec<&str>>();
match range_components.len() {
- 1 => &actual_version[..] == range_components[0],
+ 1 => actual_version == version_to_int(range_components[0]),
2 => {
- let v_min = range_components[0];
- let v_max = range_components[1];
+ let v_min = version_to_int(range_components[0]);
+ let v_max = version_to_int(range_components[1]);
if v_max < v_min {
panic!("Malformed LLVM version range: max < min")
}
// Ignore if version lies inside of range.
- &actual_version[..] >= v_min && &actual_version[..] <= v_max
+ actual_version >= v_min && actual_version <= v_max
}
_ => panic!("Malformed LLVM version directive"),
}
@@ -238,6 +239,20 @@ impl EarlyProps {
false
}
}
+
+ fn version_to_int(version: &str) -> u32 {
+ let version_without_suffix = version.split('-').next().unwrap();
+ let components: Vec<u32> = version_without_suffix
+ .split('.')
+ .map(|s| s.parse().expect("Malformed version component"))
+ .collect();
+ match components.len() {
+ 1 => components[0] * 10000,
+ 2 => components[0] * 10000 + components[1] * 100,
+ 3 => components[0] * 10000 + components[1] * 100 + components[2],
+ _ => panic!("Malformed version"),
+ }
+ }
}
}
diff --git a/src/tools/compiletest/src/header/tests.rs b/src/tools/compiletest/src/header/tests.rs
index 6c478f7e29da..31d991e0c2f8 100644
--- a/src/tools/compiletest/src/header/tests.rs
+++ b/src/tools/compiletest/src/header/tests.rs
@@ -122,9 +122,8 @@ fn llvm_version() {
config.llvm_version = Some("9.3.1-rust-1.43.0-dev".to_owned());
assert!(!parse_rs(&config, "// min-llvm-version 9.2").ignore);
- // FIXME.
- // config.llvm_version = Some("10.0.0-rust".to_owned());
- // assert!(!parse_rs(&config, "// min-llvm-version 9.0").ignore);
+ config.llvm_version = Some("10.0.0-rust".to_owned());
+ assert!(!parse_rs(&config, "// min-llvm-version 9.0").ignore);
}
#[test]

View file

@ -0,0 +1,40 @@
commit 6067315d58ff3d49b305ae3c99810656856c8e21
Author: Josh Stone <jistone@redhat.com>
Date: Mon Mar 30 14:03:39 2020 -0700
Ensure LLVM is in the link path for "fulldeps" tests
This is a follow-up to #70123, which added `llvm-config --libdir` to the
`LIBRARY_PATH` for rustc tools. We need the same for "run-make-fulldeps"
and "ui-fulldeps" tests which depend on compiler libraries, implicitly
needing to link to `-lLLVM` as well.
diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs
index 5b946b05735d..2499856235f1 100644
--- a/src/bootstrap/test.rs
+++ b/src/bootstrap/test.rs
@@ -21,7 +21,7 @@ use crate::flags::Subcommand;
use crate::native;
use crate::tool::{self, SourceType, Tool};
use crate::toolstate::ToolState;
-use crate::util::{self, dylib_path, dylib_path_var};
+use crate::util::{self, add_link_lib_path, dylib_path, dylib_path_var};
use crate::Crate as CargoCrate;
use crate::{envify, DocTests, GitRepo, Mode};
@@ -1178,6 +1178,15 @@ impl Step for Compiletest {
cmd.arg("--system-llvm");
}
+ // Tests that use compiler libraries may inherit the `-lLLVM` link
+ // requirement, but the `-L` library path is not propagated across
+ // separate compilations. We can add LLVM's library path to the
+ // platform-specific environment variable as a workaround.
+ if !builder.config.dry_run && suite.ends_with("fulldeps") {
+ let llvm_libdir = output(Command::new(&llvm_config).arg("--libdir"));
+ add_link_lib_path(vec![llvm_libdir.trim().into()], &mut cmd);
+ }
+
// Only pass correct values for these flags for the `run-make` suite as it
// requires that a C++ compiler was configured which isn't always the case.
if !builder.config.dry_run && suite == "run-make-fulldeps" {

View file

@ -0,0 +1,56 @@
From fbd3fbdb24563a9d8fd3651f6bdc90bbbbd81d3e Mon Sep 17 00:00:00 2001
From: Josh Stone <jistone@redhat.com>
Date: Fri, 1 May 2020 16:50:10 -0700
Subject: [PATCH] Use a non-existent test path instead of clobbering /dev/null
---
src/test/ui/non-ice-error-on-worker-io-fail.rs | 10 +++++++---
src/test/ui/non-ice-error-on-worker-io-fail.stderr | 2 +-
2 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/src/test/ui/non-ice-error-on-worker-io-fail.rs b/src/test/ui/non-ice-error-on-worker-io-fail.rs
index 8af17742850d..30779fc65c0f 100644
--- a/src/test/ui/non-ice-error-on-worker-io-fail.rs
+++ b/src/test/ui/non-ice-error-on-worker-io-fail.rs
@@ -4,8 +4,12 @@
//
// An attempt to `-o` into a directory we cannot write into should indeed
// be an error; but not an ICE.
+//
+// However, some folks run tests as root, which can write `/dev/` and end
+// up clobbering `/dev/null`. Instead we'll use a non-existent path, which
+// also used to ICE, but even root can't magically write there.
-// compile-flags: -o /dev/null
+// compile-flags: -o /does-not-exist/output
// The error-pattern check occurs *before* normalization, and the error patterns
// are wildly different between build environments. So this is a cop-out (and we
@@ -15,10 +19,10 @@
// error-pattern: error
// On Mac OS X, we get an error like the below
-// normalize-stderr-test "failed to write bytecode to /dev/null.non_ice_error_on_worker_io_fail.*" -> "io error modifying /dev/"
+// normalize-stderr-test "failed to write bytecode to /does-not-exist/output.non_ice_error_on_worker_io_fail.*" -> "io error modifying /does-not-exist/"
// On Linux, we get an error like the below
-// normalize-stderr-test "couldn't create a temp dir.*" -> "io error modifying /dev/"
+// normalize-stderr-test "couldn't create a temp dir.*" -> "io error modifying /does-not-exist/"
// ignore-tidy-linelength
// ignore-windows - this is a unix-specific test
diff --git a/src/test/ui/non-ice-error-on-worker-io-fail.stderr b/src/test/ui/non-ice-error-on-worker-io-fail.stderr
index f732abc52b71..edadecf273a7 100644
--- a/src/test/ui/non-ice-error-on-worker-io-fail.stderr
+++ b/src/test/ui/non-ice-error-on-worker-io-fail.stderr
@@ -1,6 +1,6 @@
warning: ignoring --out-dir flag due to -o flag
-error: io error modifying /dev/
+error: io error modifying /does-not-exist/
error: aborting due to previous error
--
2.26.2

1460
rust.spec

File diff suppressed because it is too large Load diff

View file

@ -1,21 +0,0 @@
diff --git a/src/etc/rust-gdb b/src/etc/rust-gdb
index 9abed30ea6f7..e4bf55df3688 100755
--- a/src/etc/rust-gdb
+++ b/src/etc/rust-gdb
@@ -13,8 +13,6 @@ fi
# Find out where the pretty printer Python module is
RUSTC_SYSROOT="$("$RUSTC" --print=sysroot)"
GDB_PYTHON_MODULE_DIRECTORY="$RUSTC_SYSROOT/lib/rustlib/etc"
-# Get the commit hash for path remapping
-RUSTC_COMMIT_HASH="$("$RUSTC" -vV | sed -n 's/commit-hash: \([a-zA-Z0-9_]*\)/\1/p')"
# Run GDB with the additional arguments that load the pretty printers
# Set the environment variable `RUST_GDB` to overwrite the call to a
@@ -23,6 +21,6 @@ RUST_GDB="${RUST_GDB:-gdb}"
PYTHONPATH="$PYTHONPATH:$GDB_PYTHON_MODULE_DIRECTORY" exec ${RUST_GDB} \
--directory="$GDB_PYTHON_MODULE_DIRECTORY" \
-iex "add-auto-load-safe-path $GDB_PYTHON_MODULE_DIRECTORY" \
- -iex "set substitute-path /rustc/$RUSTC_COMMIT_HASH $RUSTC_SYSROOT/lib/rustlib/src/rust" \
+ -iex "set substitute-path @BUILDDIR@ $RUSTC_SYSROOT/lib/rustlib/src/rust" \
"$@"

View file

@ -1,44 +0,0 @@
diff -up rustc-beta-src/src/tools/cargo/Cargo.lock.orig rustc-beta-src/src/tools/cargo/Cargo.lock
--- rustc-beta-src/src/tools/cargo/Cargo.lock.orig 2025-08-16 15:47:14.000000000 -0700
+++ rustc-beta-src/src/tools/cargo/Cargo.lock 2025-08-18 17:31:39.554771554 -0700
@@ -2800,7 +2800,6 @@ checksum = "1c42fe03df2bd3c53a3a9c7317ad
dependencies = [
"cc",
"libc",
- "libssh2-sys",
"libz-sys",
"openssl-sys",
"pkg-config",
@@ -2847,20 +2846,6 @@ dependencies = [
"pkg-config",
"vcpkg",
]
-
-[[package]]
-name = "libssh2-sys"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "220e4f05ad4a218192533b300327f5150e809b54c4ec83b5a1d91833601811b9"
-dependencies = [
- "cc",
- "libc",
- "libz-sys",
- "openssl-sys",
- "pkg-config",
- "vcpkg",
-]
[[package]]
name = "libz-rs-sys"
diff -up rustc-beta-src/src/tools/cargo/Cargo.toml.orig rustc-beta-src/src/tools/cargo/Cargo.toml
--- rustc-beta-src/src/tools/cargo/Cargo.toml.orig 2025-08-16 15:47:14.000000000 -0700
+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2025-08-18 17:33:02.401743230 -0700
@@ -46,7 +46,7 @@ curl = "0.4.48"
curl-sys = "0.4.83"
filetime = "0.2.26"
flate2 = { version = "1.1.2", default-features = false, features = ["zlib-rs"] }
-git2 = "0.20.2"
+git2 = { version = "0.20.2", default-features = false, features = ["https"] }
git2-curl = "0.21.0"
# When updating this, also see if `gix-transport` further down needs updating or some auth-related tests will fail.
gix = { version = "0.73.0", default-features = false, features = ["progress-tree", "parallel", "dirwalk", "status"] }

View file

@ -1,23 +0,0 @@
diff -up rustc-beta-src/src/tools/cargo/Cargo.lock.orig rustc-beta-src/src/tools/cargo/Cargo.lock
--- rustc-beta-src/src/tools/cargo/Cargo.lock.orig 2025-11-07 13:31:19.003737886 +0100
+++ rustc-beta-src/src/tools/cargo/Cargo.lock 2025-11-07 13:14:41.637982893 +0100
@@ -2835,7 +2835,6 @@ version = "0.35.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "133c182a6a2c87864fe97778797e46c7e999672690dc9fa3ee8e241aa4a9c13f"
dependencies = [
- "cc",
"pkg-config",
"vcpkg",
]
diff -up rustc-beta-src/src/tools/cargo/Cargo.toml.orig rustc-beta-src/src/tools/cargo/Cargo.toml
--- rustc-beta-src/src/tools/cargo/Cargo.toml.orig 2025-11-07 13:31:28.338643618 +0100
+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2025-11-07 13:15:00.266505214 +0100
@@ -81,7 +81,7 @@ proptest = "1.8.0"
pulldown-cmark = { version = "0.13.0", default-features = false, features = ["html"] }
rand = "0.9.2"
regex = "1.11.3"
-rusqlite = { version = "0.37.0", features = ["bundled"] }
+rusqlite = { version = "0.37.0", features = [] }
rustc-hash = "2.1.1"
rustc-stable-hash = "0.1.2"
rustfix = { version = "0.9.2", path = "crates/rustfix" }

View file

@ -1,2 +1 @@
SHA512 (rustc-1.92.0-src.tar.xz) = a2c0b127933595b9bc2063d7b7c88d9af512c4664b18f29d44c9a6e2c68d194b87a3071717e8f1b7c858ae940baca888e10be95cd31e0201916d0bfc312a3b15
SHA512 (wasi-libc-wasi-sdk-27.tar.gz) = dfc2c36fabf32f465fc833ed0b10efffc9a35c68162ecc3e8d656d1d684d170b734d55e790614d12d925d17f49d60f0d2d01c46cecac941cf62d68eda84df13e
SHA512 (rustc-1.43.1-src.tar.xz) = 24bb01237b1f3f5412109290bb4406b9742cf8956162f4090a98ed3a59a6e2e8dda399452bec1c93c8afdcf5effd98e4825e7f218238e0e88735c1ff4a5b385f

8
sources-bootstrap Normal file
View file

@ -0,0 +1,8 @@
SHA512 (rustc-1.43.1-src.tar.xz) = 24bb01237b1f3f5412109290bb4406b9742cf8956162f4090a98ed3a59a6e2e8dda399452bec1c93c8afdcf5effd98e4825e7f218238e0e88735c1ff4a5b385f
SHA512 (rust-1.42.0-aarch64-unknown-linux-gnu.tar.xz) = 691a11e279efdcafa6bdafacb7fb48ccf653e180e0e85909b6031105a297d47538efb36d63216f6185427f818483a51aa827f351ca2123840d72caf60079fe13
SHA512 (rust-1.42.0-armv7-unknown-linux-gnueabihf.tar.xz) = 26768ec530506e20fed8f9ef2c1ca85eec155fc90949f2063836b6109b296a976c8430a698971a8b1c11e8f6ad043d854a36e9f0e849417178411dc5cbd30e59
SHA512 (rust-1.42.0-i686-unknown-linux-gnu.tar.xz) = 7376be5abed573bbf68f73ed5609fa8e22dfa3ead19a3f3d78d553347e3ae01604ab9906f5317f1687a8ab3f9ad9c38cde44ef6f56d7da65a788a74aee9df057
SHA512 (rust-1.42.0-powerpc64le-unknown-linux-gnu.tar.xz) = e1db9bbef45e88e7d1d5b905379c04786a015c90d0d9de6a6c16276a3e91c342a8231dda7a4d46ecc7adc969d07fd7dd8595975647b9ab69f8997fee74401219
SHA512 (rust-1.42.0-powerpc64-unknown-linux-gnu.tar.xz) = 668d1d353bdaf676043ab7f4baad464b202e8ae1be7713e3481b8e9fb5fabd1020e10e178d69d099541cb1b23362b50b826790740156f1c96efa3d2a7457e404
SHA512 (rust-1.42.0-s390x-unknown-linux-gnu.tar.xz) = 85b1331a9a71cc43a2fa628b8510590ff072e409c2c38ebfd9089ab7a245182e23b52f6221b25c63f6048e1bf4ada0f561dd8f3f810680c9727040bc8a0d8d46
SHA512 (rust-1.42.0-x86_64-unknown-linux-gnu.tar.xz) = 87c06d4503e7ba12bd3dfc8dd279a3bdf33a24d2c22eec1378b79b2c17ccdad9b4c8dbd0d4704eae1f3476aec5639d3ba143e8c74a296d631b17b57da7447e70