From 938dbc8a8cfbb47ae58a72ce8b3e36a1ef9c7d10 Mon Sep 17 00:00:00 2001 From: AlmaLinux RelEng Bot Date: Mon, 30 Mar 2026 11:01:28 -0400 Subject: [PATCH 1/2] import CS rust-1.92.0-1.el9 --- .gitignore | 4 +- .rust.metadata | 4 +- ...variables-override-some-default-CPUs.patch | 18 ++-- SOURCES/0001-Use-lld-provided-by-system.patch | 24 ++--- ...llow-disabling-target-self-contained.patch | 96 +++++++++-------- ...nly-copy-rustlib-into-stage0-sysroot.patch | 28 +++++ ...xternal-library-path-for-wasm32-wasi.patch | 53 +++++---- SOURCES/macros.rust-toolset | 44 ++++---- SOURCES/rust-pr142047.patch | 79 -------------- SOURCES/rustc-1.88.0-unbundle-sqlite.patch | 23 ---- ...tch => rustc-1.92.0-disable-libssh2.patch} | 26 ++--- SOURCES/rustc-1.92.0-unbundle-sqlite.patch | 23 ++++ SPECS/rust.spec | 102 +++++++++++++----- 13 files changed, 273 insertions(+), 251 deletions(-) create mode 100644 SOURCES/0001-only-copy-rustlib-into-stage0-sysroot.patch delete mode 100644 SOURCES/rust-pr142047.patch delete mode 100644 SOURCES/rustc-1.88.0-unbundle-sqlite.patch rename SOURCES/{rustc-1.88.0-disable-libssh2.patch => rustc-1.92.0-disable-libssh2.patch} (50%) create mode 100644 SOURCES/rustc-1.92.0-unbundle-sqlite.patch diff --git a/.gitignore b/.gitignore index f9e14af..f6eaab1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -SOURCES/rustc-1.88.0-src.tar.xz -SOURCES/wasi-libc-640c0cfc19a96b099e0791824be5ef0105ce2084.tar.gz +SOURCES/rustc-1.92.0-src.tar.xz +SOURCES/wasi-libc-wasi-sdk-27.tar.gz diff --git a/.rust.metadata b/.rust.metadata index a6f8b1f..4515690 100644 --- a/.rust.metadata +++ b/.rust.metadata @@ -1,2 +1,2 @@ -a5772a6462f53ffc71fda030bece8442d1214198 SOURCES/rustc-1.88.0-src.tar.xz -d6330f7ed84d311d1338796af7fd60f011f3a707 SOURCES/wasi-libc-640c0cfc19a96b099e0791824be5ef0105ce2084.tar.gz +fbabcdb70a1ac1773e63d7800be42ffbaf9286e8 SOURCES/rustc-1.92.0-src.tar.xz +7c12838ff50eb7d07e0679ae4e70b99ca5c711c0 SOURCES/wasi-libc-wasi-sdk-27.tar.gz diff --git a/SOURCES/0001-Let-environment-variables-override-some-default-CPUs.patch b/SOURCES/0001-Let-environment-variables-override-some-default-CPUs.patch index 302c7fd..fa654c6 100644 --- a/SOURCES/0001-Let-environment-variables-override-some-default-CPUs.patch +++ b/SOURCES/0001-Let-environment-variables-override-some-default-CPUs.patch @@ -1,4 +1,4 @@ -From 5273432acfae75d6e509bbebcf8d28b0f3d820d0 Mon Sep 17 00:00:00 2001 +From e54c0a4cc8bd8a76b155714b23a61d1d32a8d069 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Fri, 9 Jun 2023 15:23:08 -0700 Subject: [PATCH] Let environment variables override some default CPUs @@ -10,10 +10,10 @@ Subject: [PATCH] Let environment variables override some default CPUs 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 23913687a1fd..3253fbc84c74 100644 +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 -@@ -2,7 +2,7 @@ +@@ -4,7 +4,7 @@ pub(crate) fn target() -> Target { let mut base = base::linux_gnu::opts(); @@ -23,23 +23,23 @@ index 23913687a1fd..3253fbc84c74 100644 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 a84a18a433ff..441af1018ff3 100644 +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 -@@ -5,7 +5,7 @@ pub(crate) fn target() -> Target { +@@ -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(16); + 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 59ec6c7f9d5f..b6f1be890b20 100644 +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 -@@ -2,7 +2,7 @@ +@@ -4,7 +4,7 @@ pub(crate) fn target() -> Target { let mut base = base::linux_gnu::opts(); @@ -49,5 +49,5 @@ index 59ec6c7f9d5f..b6f1be890b20 100644 base.max_atomic_width = Some(64); base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]); -- -2.47.1 +2.49.0 diff --git a/SOURCES/0001-Use-lld-provided-by-system.patch b/SOURCES/0001-Use-lld-provided-by-system.patch index 63c9b14..522865f 100644 --- a/SOURCES/0001-Use-lld-provided-by-system.patch +++ b/SOURCES/0001-Use-lld-provided-by-system.patch @@ -1,4 +1,4 @@ -From 687112c89c9058ef1e79f1c3a974940b1ae43ea3 Mon Sep 17 00:00:00 2001 +From e9405caf32dfb31bf17c3da0299df515a3755107 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Fri, 16 Aug 2024 10:12:58 -0700 Subject: [PATCH] Use lld provided by system @@ -12,12 +12,12 @@ Subject: [PATCH] Use lld provided by system 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 81b96cd39ffa..4c9916af826b 100644 +index 7ede45766ea..b22362227bb 100644 --- a/compiler/rustc_target/src/spec/base/wasm.rs +++ b/compiler/rustc_target/src/spec/base/wasm.rs -@@ -85,8 +85,7 @@ macro_rules! args { - // arguments just yet - limit_rdylib_exports: false, +@@ -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()), @@ -26,7 +26,7 @@ index 81b96cd39ffa..4c9916af826b 100644 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 3b719ebaf07e..8b4fecee68f0 100644 +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 { @@ -39,7 +39,7 @@ index 3b719ebaf07e..8b4fecee68f0 100644 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 9656024ddaa1..2099fa17229f 100644 +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 { @@ -51,7 +51,7 @@ index 9656024ddaa1..2099fa17229f 100644 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 e14a36735894..b493d7d98b46 100644 +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 { @@ -64,17 +64,17 @@ index e14a36735894..b493d7d98b46 100644 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 bce6aa0ebc6b..7fa1148a1de7 100644 +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 -@@ -14,6 +14,7 @@ pub(crate) fn target() -> Target { +@@ -15,6 +15,7 @@ pub(crate) fn target() -> Target { base.plt_by_default = false; base.max_atomic_width = Some(64); - base.entry_abi = Conv::X86_64Win64; + 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.48.1 +2.51.0 diff --git a/SOURCES/0001-bootstrap-allow-disabling-target-self-contained.patch b/SOURCES/0001-bootstrap-allow-disabling-target-self-contained.patch index 655496c..54ca101 100644 --- a/SOURCES/0001-bootstrap-allow-disabling-target-self-contained.patch +++ b/SOURCES/0001-bootstrap-allow-disabling-target-self-contained.patch @@ -1,36 +1,34 @@ -From e8833a9032b9f5773ef891b3f12b93322d6b4950 Mon Sep 17 00:00:00 2001 -From: Jesus Checa Hidalgo -Date: Mon, 7 Apr 2025 16:59:10 +0200 -Subject: [PATCH 1/2] bootstrap: allow disabling target self-contained +From 8364de4cb8edab85efcb895824ce06f4a95bd26f Mon Sep 17 00:00:00 2001 +From: Josh Stone +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 | 8 ++++++++ + src/bootstrap/src/core/config/config.rs | 4 ++++ + src/bootstrap/src/core/config/toml/target.rs | 5 +++++ src/bootstrap/src/lib.rs | 5 +++++ - 4 files changed, 22 insertions(+) + 5 files changed, 23 insertions(+) diff --git a/bootstrap.example.toml b/bootstrap.example.toml -index 2a98821f225..580d6b2a8a2 100644 +index 6f37e51a47d..ee21bc06bea 100644 --- a/bootstrap.example.toml +++ b/bootstrap.example.toml -@@ -948,6 +948,11 @@ - # This overrides the global `rust.jemalloc` option. See that option for more info. - #jemalloc = rust.jemalloc (bool) - +@@ -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 = (bool) -+ - # ============================================================================= - # Distribution options - # diff --git a/src/bootstrap/src/core/build_steps/compile.rs b/src/bootstrap/src/core/build_steps/compile.rs -index 18b5d4426b1..3de9667123b 100644 +index 6857a40ada8..9a98323a704 100644 --- a/src/bootstrap/src/core/build_steps/compile.rs +++ b/src/bootstrap/src/core/build_steps/compile.rs -@@ -370,6 +370,10 @@ fn copy_self_contained_objects( +@@ -368,6 +368,10 @@ fn copy_self_contained_objects( compiler: &Compiler, target: TargetSelection, ) -> Vec<(PathBuf, DependencyType)> { @@ -42,18 +40,48 @@ index 18b5d4426b1..3de9667123b 100644 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 bbb0fbfbb93..8642a86cbf8 100644 +index 4b7ae6df360..6bab269a33c 100644 --- a/src/bootstrap/src/core/config/config.rs +++ b/src/bootstrap/src/core/config/config.rs -@@ -666,6 +666,7 @@ pub struct Target { - pub codegen_backends: Option>, - pub optimized_compiler_builtins: Option, +@@ -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 = "runner", + optimized_compiler_builtins: Option = "optimized-compiler-builtins", + jemalloc: Option = "jemalloc", ++ self_contained: Option = "self-contained", + } + } + +@@ -80,6 +81,7 @@ pub struct Target { + pub codegen_backends: Option>, + pub optimized_compiler_builtins: Option, pub jemalloc: Option, + pub self_contained: bool, } impl Target { -@@ -677,6 +678,9 @@ pub fn from_triple(triple: &str) -> Self { +@@ -91,6 +93,9 @@ pub fn from_triple(triple: &str) -> Self { if triple.contains("emscripten") { target.runner = Some("node".into()); } @@ -63,29 +91,11 @@ index bbb0fbfbb93..8642a86cbf8 100644 target } } -@@ -1292,6 +1296,7 @@ struct TomlTarget { - runner: Option = "runner", - optimized_compiler_builtins: Option = "optimized-compiler-builtins", - jemalloc: Option = "jemalloc", -+ self_contained: Option = "self-contained", - } - } - -@@ -2245,6 +2250,9 @@ fn get_table(option: &str) -> Result { - if let Some(s) = cfg.no_std { - target.no_std = s; - } -+ if let Some(s) = cfg.self_contained { -+ target.self_contained = s; -+ } - target.cc = cfg.cc.map(PathBuf::from); - target.cxx = cfg.cxx.map(PathBuf::from); - target.ar = cfg.ar.map(PathBuf::from); diff --git a/src/bootstrap/src/lib.rs b/src/bootstrap/src/lib.rs -index 843d474f92d..3a4398ee1f8 100644 +index dd30f05b728..cc89a84071e 100644 --- a/src/bootstrap/src/lib.rs +++ b/src/bootstrap/src/lib.rs -@@ -1434,6 +1434,11 @@ fn no_std(&self, target: TargetSelection) -> Option { +@@ -1441,6 +1441,11 @@ fn no_std(&self, target: TargetSelection) -> Option { self.config.target_config.get(&target).map(|t| t.no_std) } @@ -98,5 +108,5 @@ index 843d474f92d..3a4398ee1f8 100644 /// and `remote-test-server` binaries. fn remote_tested(&self, target: TargetSelection) -> bool { -- -2.48.1 +2.51.0 diff --git a/SOURCES/0001-only-copy-rustlib-into-stage0-sysroot.patch b/SOURCES/0001-only-copy-rustlib-into-stage0-sysroot.patch new file mode 100644 index 0000000..6cf8aa9 --- /dev/null +++ b/SOURCES/0001-only-copy-rustlib-into-stage0-sysroot.patch @@ -0,0 +1,28 @@ +From 7d83bae4e2577ffa2afaf2fddb6948c1756a403c Mon Sep 17 00:00:00 2001 +From: Paul Murphy +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 + diff --git a/SOURCES/0002-set-an-external-library-path-for-wasm32-wasi.patch b/SOURCES/0002-set-an-external-library-path-for-wasm32-wasi.patch index b1f2476..89b148f 100644 --- a/SOURCES/0002-set-an-external-library-path-for-wasm32-wasi.patch +++ b/SOURCES/0002-set-an-external-library-path-for-wasm32-wasi.patch @@ -1,20 +1,20 @@ -From 35a37bd892939b8a1cd194632de3b9dd3a3d479b Mon Sep 17 00:00:00 2001 -From: Jesus Checa Hidalgo -Date: Mon, 7 Apr 2025 17:22:56 +0200 +From 862d09fe2e8b0f5ce8fe7bfc592cda66a1d74c08 Mon Sep 17 00:00:00 2001 +From: Josh Stone +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 | 2 ++ + 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, 18 insertions(+), 3 deletions(-) + 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 b59d73a9aae..2369d73b4e3 100644 +index 48b01ea2df19..59b87396fed2 100644 --- a/compiler/rustc_codegen_ssa/src/back/link.rs +++ b/compiler/rustc_codegen_ssa/src/back/link.rs -@@ -1583,6 +1583,12 @@ fn get_object_file_path(sess: &Session, name: &str, self_contained: bool) -> Pat +@@ -1559,6 +1559,12 @@ fn get_object_file_path(sess: &Session, name: &str, self_contained: bool) -> Pat return file_path; } } @@ -39,18 +39,18 @@ index b59d73a9aae..2369d73b4e3 100644 /// 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 4b6de5e18f5..373301d85ab 100644 +index f236be92b3b6..eea6e0c203d2 100644 --- a/compiler/rustc_target/src/spec/json.rs +++ b/compiler/rustc_target/src/spec/json.rs -@@ -559,6 +559,7 @@ macro_rules! key { - key!(linker_is_gnu_json = "linker-is-gnu", bool); - key!(pre_link_objects = "pre-link-objects", link_objects); - key!(post_link_objects = "post-link-objects", link_objects); -+ key!(external_lib_path, optional); - key!(pre_link_objects_self_contained = "pre-link-objects-fallback", link_objects); - key!(post_link_objects_self_contained = "post-link-objects-fallback", link_objects); - // Deserializes the backwards-compatible variants of `-Clink-self-contained` -@@ -744,6 +745,7 @@ macro_rules! target_option_val { +@@ -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); @@ -58,11 +58,20 @@ index 4b6de5e18f5..373301d85ab 100644 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, + #[serde(rename = "post-link-objects")] + post_link_objects: Option, ++ #[serde(rename = "external-lib-path")] ++ external_lib_path: Option>, + #[serde(rename = "pre-link-objects-fallback")] + pre_link_objects_self_contained: Option, + #[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 7234d1dc63e..3ec85bbf279 100644 +index 07fb1ce63f7c..c076c2836f84 100644 --- a/compiler/rustc_target/src/spec/mod.rs +++ b/compiler/rustc_target/src/spec/mod.rs -@@ -2301,6 +2301,7 @@ pub struct TargetOptions { +@@ -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, @@ -70,7 +79,7 @@ index 7234d1dc63e..3ec85bbf279 100644 /// 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, -@@ -2821,6 +2822,7 @@ fn default() -> TargetOptions { +@@ -2518,6 +2519,7 @@ fn default() -> TargetOptions { relro_level: RelroLevel::None, pre_link_objects: Default::default(), post_link_objects: Default::default(), @@ -79,7 +88,7 @@ index 7234d1dc63e..3ec85bbf279 100644 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 26add451ed2..3eaf050e682 100644 +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 { @@ -99,5 +108,5 @@ index 26add451ed2..3eaf050e682 100644 // 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.48.1 +2.51.0 diff --git a/SOURCES/macros.rust-toolset b/SOURCES/macros.rust-toolset index 6a2f7f5..135b3e2 100644 --- a/SOURCES/macros.rust-toolset +++ b/SOURCES/macros.rust-toolset @@ -126,32 +126,31 @@ EOF}\ %{nil} \ } -# NB: cargo_build/test/install do not use the -n/-a/-f argument parsing like -# Fedora's rust-packaging, because that change would break anyone that's -# already passing arguments directly to cargo after the macro. Instead, one can -# explicitly use --no-default-features, --all-features, or --features XYZ. - -# cargo_build: builds the crate with cargo -%cargo_build\ +# 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 +# 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), the -# "cargo test" argument parsing need to be bypassed, -# i.e. "%%cargo_test -- --skip foo" for skipping all tests with names that +# 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\ +%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 @@ -161,14 +160,19 @@ EOF}\ # "$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\ -%{shrink: \ - %{__cargo} install \ - %{__cargo_common_opts} \ - --profile rpm \ - --no-track \ - --path . \ -} +%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 # diff --git a/SOURCES/rust-pr142047.patch b/SOURCES/rust-pr142047.patch deleted file mode 100644 index d64d71d..0000000 --- a/SOURCES/rust-pr142047.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 925e76167ce2465c5c9d990d97c2db99f459640b Mon Sep 17 00:00:00 2001 -From: Josh Stone -Date: Wed, 4 Jun 2025 15:03:19 -0700 -Subject: [PATCH 1/2] Ensure stack in `ThirBuildCx::mirror_exprs` - -This solve a stack overflow found on Fedora s390x when building -`tests/ui/parser/survive-peano-lesson-queue.rs`. Note that the singular -`mirror_expr` method already has this stack check, but in this case the -plural method was the one recursing too deeply. ---- - compiler/rustc_mir_build/src/thir/cx/expr.rs | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/compiler/rustc_mir_build/src/thir/cx/expr.rs b/compiler/rustc_mir_build/src/thir/cx/expr.rs -index 226dc920a496c..78c168778ac9d 100644 ---- a/compiler/rustc_mir_build/src/thir/cx/expr.rs -+++ b/compiler/rustc_mir_build/src/thir/cx/expr.rs -@@ -38,7 +38,10 @@ impl<'tcx> ThirBuildCx<'tcx> { - } - - pub(crate) fn mirror_exprs(&mut self, exprs: &'tcx [hir::Expr<'tcx>]) -> Box<[ExprId]> { -- exprs.iter().map(|expr| self.mirror_expr_inner(expr)).collect() -+ // `mirror_exprs` may also recurse deeply, so it needs protection from stack overflow. -+ // Note that we *could* forward to `mirror_expr` for that, but we can consolidate the -+ // overhead of stack growth by doing it outside the iteration. -+ ensure_sufficient_stack(|| exprs.iter().map(|expr| self.mirror_expr_inner(expr)).collect()) - } - - #[instrument(level = "trace", skip(self, hir_expr))] - -From af2a85bd75c011fb3453a4963400918e096e1896 Mon Sep 17 00:00:00 2001 -From: Josh Stone -Date: Wed, 4 Jun 2025 15:16:38 -0700 -Subject: [PATCH 2/2] Ensure stack in `Parser::parse_ty` - -This solve a stack overflow found on Fedora s390x when building -`tests/ui/associated-consts/issue-93775.rs`. ---- - compiler/rustc_parse/src/parser/ty.rs | 20 ++++++++++++-------- - 1 file changed, 12 insertions(+), 8 deletions(-) - -diff --git a/compiler/rustc_parse/src/parser/ty.rs b/compiler/rustc_parse/src/parser/ty.rs -index 17481731b1107..6eaec2e29ad48 100644 ---- a/compiler/rustc_parse/src/parser/ty.rs -+++ b/compiler/rustc_parse/src/parser/ty.rs -@@ -7,6 +7,7 @@ use rustc_ast::{ - Pinnedness, PolyTraitRef, PreciseCapturingArg, TraitBoundModifiers, TraitObjectSyntax, Ty, - TyKind, UnsafeBinderTy, - }; -+use rustc_data_structures::stack::ensure_sufficient_stack; - use rustc_errors::{Applicability, Diag, PResult}; - use rustc_span::{ErrorGuaranteed, Ident, Span, kw, sym}; - use thin_vec::{ThinVec, thin_vec}; -@@ -104,14 +105,17 @@ fn can_begin_dyn_bound_in_edition_2015(t: &Token) -> bool { - impl<'a> Parser<'a> { - /// Parses a type. - pub fn parse_ty(&mut self) -> PResult<'a, P> { -- self.parse_ty_common( -- AllowPlus::Yes, -- AllowCVariadic::No, -- RecoverQPath::Yes, -- RecoverReturnSign::Yes, -- None, -- RecoverQuestionMark::Yes, -- ) -+ // Make sure deeply nested types don't overflow the stack. -+ ensure_sufficient_stack(|| { -+ self.parse_ty_common( -+ AllowPlus::Yes, -+ AllowCVariadic::No, -+ RecoverQPath::Yes, -+ RecoverReturnSign::Yes, -+ None, -+ RecoverQuestionMark::Yes, -+ ) -+ }) - } - - pub(super) fn parse_ty_with_generics_recovery( diff --git a/SOURCES/rustc-1.88.0-unbundle-sqlite.patch b/SOURCES/rustc-1.88.0-unbundle-sqlite.patch deleted file mode 100644 index 11c1e79..0000000 --- a/SOURCES/rustc-1.88.0-unbundle-sqlite.patch +++ /dev/null @@ -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-06-13 01:10:18.000000000 -0700 -+++ rustc-beta-src/src/tools/cargo/Cargo.lock 2025-06-13 15:39:38.597882622 -0700 -@@ -2573,7 +2573,6 @@ version = "0.32.0" - source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "fbb8270bb4060bd76c6e96f20c52d80620f1d82a3470885694e41e0f81ef6fe7" - 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-06-13 01:10:18.000000000 -0700 -+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2025-06-13 15:39:34.583102112 -0700 -@@ -80,7 +80,7 @@ proptest = "1.6.0" - pulldown-cmark = { version = "0.13.0", default-features = false, features = ["html"] } - rand = "0.9.0" - regex = "1.11.1" --rusqlite = { version = "0.34.0", features = ["bundled"] } -+rusqlite = { version = "0.34.0", features = [] } - rustc-hash = "2.1.1" - rustc-stable-hash = "0.1.2" - rustfix = { version = "0.9.0", path = "crates/rustfix" } diff --git a/SOURCES/rustc-1.88.0-disable-libssh2.patch b/SOURCES/rustc-1.92.0-disable-libssh2.patch similarity index 50% rename from SOURCES/rustc-1.88.0-disable-libssh2.patch rename to SOURCES/rustc-1.92.0-disable-libssh2.patch index bf39d35..a03668f 100644 --- a/SOURCES/rustc-1.88.0-disable-libssh2.patch +++ b/SOURCES/rustc-1.92.0-disable-libssh2.patch @@ -1,7 +1,7 @@ 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-06-13 15:47:08.609927319 -0700 -+++ rustc-beta-src/src/tools/cargo/Cargo.lock 2025-06-13 15:47:54.463092386 -0700 -@@ -2530,7 +2530,6 @@ checksum = "e1a117465e7e1597e8febea8bb0c +--- 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", @@ -9,7 +9,7 @@ diff -up rustc-beta-src/src/tools/cargo/Cargo.lock.orig rustc-beta-src/src/tools "libz-sys", "openssl-sys", "pkg-config", -@@ -2576,20 +2575,6 @@ dependencies = [ +@@ -2847,20 +2846,6 @@ dependencies = [ "pkg-config", "vcpkg", ] @@ -31,14 +31,14 @@ diff -up rustc-beta-src/src/tools/cargo/Cargo.lock.orig rustc-beta-src/src/tools [[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-06-13 15:47:08.610402846 -0700 -+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2025-06-13 15:47:51.696071356 -0700 -@@ -46,7 +46,7 @@ curl = "0.4.47" - curl-sys = "0.4.79" - filetime = "0.2.25" - flate2 = { version = "1.1.1", default-features = false, features = ["zlib-rs"] } --git2 = "0.20.0" -+git2 = { version = "0.20.0", default-features = false, features = ["https"] } +--- 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.71.0", default-features = false, features = ["blocking-http-transport-curl", "progress-tree", "parallel", "dirwalk"] } + gix = { version = "0.73.0", default-features = false, features = ["progress-tree", "parallel", "dirwalk", "status"] } diff --git a/SOURCES/rustc-1.92.0-unbundle-sqlite.patch b/SOURCES/rustc-1.92.0-unbundle-sqlite.patch new file mode 100644 index 0000000..fb0b284 --- /dev/null +++ b/SOURCES/rustc-1.92.0-unbundle-sqlite.patch @@ -0,0 +1,23 @@ +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" } diff --git a/SPECS/rust.spec b/SPECS/rust.spec index 7ee52f8..56e7a52 100644 --- a/SPECS/rust.spec +++ b/SPECS/rust.spec @@ -9,7 +9,7 @@ ## END: Set by rpmautospec Name: rust -Version: 1.88.0 +Version: 1.92.0 Release: %autorelease Summary: The Rust Programming Language License: (Apache-2.0 OR MIT) AND (Artistic-2.0 AND BSD-3-Clause AND ISC AND MIT AND MPL-2.0 AND Unicode-3.0) @@ -22,11 +22,11 @@ URL: https://www.rust-lang.org ExclusiveArch: %{rust_arches} # To bootstrap from scratch, set the channel and date from src/stage0 -# e.g. 1.88.0 wants rustc: 1.87.0-2025-05-15 +# e.g. 1.89.0 wants rustc: 1.88.0-2025-06-26 # or nightly wants some beta-YYYY-MM-DD -%global bootstrap_version 1.87.0 -%global bootstrap_channel 1.87.0 -%global bootstrap_date 2025-05-15 +%global bootstrap_version 1.91.0 +%global bootstrap_channel 1.91.0 +%global bootstrap_date 2025-10-30 # Only the specified arches will use bootstrap binaries. # NOTE: Those binaries used to be uploaded with every new release, but that was @@ -38,8 +38,7 @@ ExclusiveArch: %{rust_arches} # We need CRT files for *-wasi targets, at least as new as the commit in # src/ci/docker/host-x86_64/dist-various-2/build-wasi-toolchain.sh %global wasi_libc_url https://github.com/WebAssembly/wasi-libc -#global wasi_libc_ref wasi-sdk-25 -%global wasi_libc_ref 640c0cfc19a96b099e0791824be5ef0105ce2084 +%global wasi_libc_ref wasi-sdk-27 %global wasi_libc_name wasi-libc-%{wasi_libc_ref} %global wasi_libc_source %{wasi_libc_url}/archive/%{wasi_libc_ref}/%{wasi_libc_name}.tar.gz %global wasi_libc_dir %{_builddir}/%{wasi_libc_name} @@ -55,8 +54,8 @@ ExclusiveArch: %{rust_arches} # We can also choose to just use Rust's bundled LLVM, in case the system LLVM # is insufficient. Rust currently requires LLVM 19.0+. # See src/bootstrap/src/core/build_steps/llvm.rs, fn check_llvm_version -%global min_llvm_version 19.0.0 -%global bundled_llvm_version 20.1.5 +%global min_llvm_version 20.0.0 +%global bundled_llvm_version 21.1.3 #global llvm_compat_version 19 %global llvm llvm%{?llvm_compat_version} %bcond_with bundled_llvm @@ -65,7 +64,7 @@ ExclusiveArch: %{rust_arches} # This needs to be consistent with the bindings in vendor/libgit2-sys. %global min_libgit2_version 1.9.0 %global next_libgit2_version 1.10.0~ -%global bundled_libgit2_version 1.9.0 +%global bundled_libgit2_version 1.9.1 %if 0%{?fedora} >= 41 %bcond_with bundled_libgit2 %else @@ -73,7 +72,7 @@ ExclusiveArch: %{rust_arches} %endif # Try to use system oniguruma (only used at build time for rust-docs) -# src/tools/rustbook -> ... -> onig_sys v69.8.1 needs at least 6.9.3 +# src/tools/rustbook -> ... -> onig_sys v69.9.1 needs at least 6.9.3 %global min_oniguruma_version 6.9.3 %if 0%{?rhel} && 0%{?rhel} < 9 %bcond_without bundled_oniguruma @@ -83,7 +82,7 @@ ExclusiveArch: %{rust_arches} # Cargo uses UPSERTs with omitted conflict targets %global min_sqlite3_version 3.35 -%global bundled_sqlite3_version 3.49.1 +%global bundled_sqlite3_version 3.50.2 %if 0%{?rhel} && 0%{?rhel} < 10 %bcond_without bundled_sqlite3 %else @@ -149,11 +148,10 @@ Patch4: 0001-bootstrap-allow-disabling-target-self-contained.patch Patch5: 0002-set-an-external-library-path-for-wasm32-wasi.patch # We don't want to use the bundled library in libsqlite3-sys -Patch6: rustc-1.88.0-unbundle-sqlite.patch +Patch6: rustc-1.92.0-unbundle-sqlite.patch -# Ensure stack in two places that affect s390x -# https://github.com/rust-lang/rust/pull/142047 -Patch7: rust-pr142047.patch +# stage0 tries to copy all of /usr/lib, sometimes unsuccessfully, see #143735 +Patch7: 0001-only-copy-rustlib-into-stage0-sysroot.patch ### RHEL-specific patches below ### @@ -163,7 +161,7 @@ Source101: cargo_vendor.attr Source102: cargo_vendor.prov # Disable cargo->libgit2->libssh2 on RHEL, as it's not approved for FIPS (rhbz1732949) -Patch100: rustc-1.88.0-disable-libssh2.patch +Patch100: rustc-1.92.0-disable-libssh2.patch # Get the Rust triple for any architecture and ABI. %{lua: function rust_triple(arch, abi) @@ -303,6 +301,7 @@ BuildRequires: %{llvm}-devel >= %{min_llvm_version} %if %with llvm_static BuildRequires: %{llvm}-static BuildRequires: libffi-devel +BuildRequires: libxml2-devel %endif %endif @@ -393,6 +392,7 @@ Obsoletes: %{name}-analysis < 1.69.0~ mkdir -p build/manifests/%{-n*} \ %{shrink: \ env RUSTC_BOOTSTRAP=1 \ + RUSTC=%{local_rust_root}/bin/rustc \ %{local_rust_root}/bin/cargo tree \ --offline --edges normal,build \ --prefix none --format "{p}" \ @@ -405,8 +405,10 @@ Obsoletes: %{name}-analysis < 1.69.0~ >build/manifests/%{-n*}/cargo-vendor.txt \ } \ ) +%ifnarch %{bootstrap_arches} %{?fedora:BuildRequires: cargo-rpm-macros} %{?rhel:BuildRequires: rust-toolset} +%endif %description Rust is a systems programming language that runs blazingly fast, prevents @@ -516,6 +518,8 @@ Summary: GDB pretty printers for Rust BuildArch: noarch Requires: gdb Requires: %{name}-debugger-common = %{version}-%{release} +# rust-gdb uses rustc to find the sysroot +Requires: %{name} = %{version}-%{release} %description gdb This package includes the rust-gdb script, which allows easier debugging of Rust @@ -528,6 +532,8 @@ BuildArch: noarch Requires: lldb Requires: python3-lldb Requires: %{name}-debugger-common = %{version}-%{release} +# rust-lldb uses rustc to find the sysroot +Requires: %{name} = %{version}-%{release} %description lldb This package includes the rust-lldb script, which allows easier debugging of Rust @@ -739,7 +745,7 @@ sed -i.lzma -e '/LZMA_API_STATIC/d' src/bootstrap/src/core/build_steps/tool.rs %if %{without bundled_llvm} && %{with llvm_static} # Static linking to distro LLVM needs to add -lffi # https://github.com/rust-lang/rust/issues/34486 -sed -i.ffi -e '$a #[link(name = "ffi")] extern {}' \ +sed -i.ffi -e '$a #[link(name = "ffi")] extern "C" {}' \ compiler/rustc_llvm/src/lib.rs %endif @@ -836,11 +842,20 @@ end} %endif %endif -# Find the compiler-rt library for the Rust profiler_builtins crate. +# Find the compiler-rt library for the Rust profiler_builtins and optimized-builtins crates. %define clang_lib %{expand:%%clang%{?llvm_compat_version}_resource_dir}/lib %define profiler %{clang_lib}/%{_arch}-redhat-linux-gnu/libclang_rt.profile.a test -r "%{profiler}" +# llvm < 21 does not provide a builtins library for s390x. +%if "%{_arch}" != "s390x" || 0%{?clang_major_version} >= 21 +%define optimized_builtins %{clang_lib}/%{_arch}-redhat-linux-gnu/libclang_rt.builtins.a +test -r "%{optimized_builtins}" +%else +%define optimized_builtins false +%endif + + %configure --disable-option-checking \ --docdir=%{_pkgdocdir} \ --libdir=%{common_libdir} \ @@ -851,6 +866,7 @@ test -r "%{profiler}" --set target.%{rust_triple}.ar=%{__ar} \ --set target.%{rust_triple}.ranlib=%{__ranlib} \ --set target.%{rust_triple}.profiler="%{profiler}" \ + --set target.%{rust_triple}.optimized-compiler-builtins="%{optimized_builtins}" \ %{?mingw_target_config} \ %{?wasm_target_config} \ --python=%{__python3} \ @@ -871,8 +887,9 @@ test -r "%{profiler}" --set build.test-stage=2 \ --set build.optimized-compiler-builtins=false \ --set rust.llvm-tools=false \ + --set rust.verify-llvm-ir=true \ --enable-extended \ - --tools=cargo,clippy,rust-analyzer,rustfmt,src \ + --tools=cargo,clippy,rust-analyzer,rustdoc,rustfmt,src \ --enable-vendor \ --enable-verbose-tests \ --release-channel=%{channel} \ @@ -880,11 +897,7 @@ test -r "%{profiler}" %global __x %{__python3} ./x.py -# - rustc is exibiting signs of miscompilation on pwr9+pgo (root cause TBD), -# so we're skipping pgo on rhel ppc64le for now. See RHEL-88598 for more. -# - Since 1.87, Fedora started getting ppc64le segfaults, and this also seems -# to be avoidable by skipping pgo. See bz2367960 for examples of that. -%if %{with rustc_pgo} && !( "%{_target_cpu}" == "ppc64le" ) +%if %{with rustc_pgo} # Build the compiler with profile instrumentation %define profraw $PWD/build/profiles %define profdata $PWD/build/rustc.profdata @@ -1045,9 +1058,27 @@ rm -rf "$TMP_HELLO" %{__x} test --no-fail-fast --skip={src/bootstrap,tests/crashes} || : rm -rf "./build/%{rust_triple}/test/" +# Cargo tests skip list +# Every test skipped here must have a documented reason to be skipped. +# Duplicates are safe to add. + +# This test relies on the DNS to fail to resolve the host. DNS is not enabled +# in mock in koji so the DNS resolution doesn't take place to begin with. +# We test this after packaging +%global cargo_test_skip_list net_err_suggests_fetch_with_cli + %ifarch aarch64 # https://github.com/rust-lang/rust/issues/123733 -%define cargo_test_skip --test-args "--skip panic_abort_doc_tests" +%global cargo_test_skip_list %{cargo_test_skip_list} panic_abort_doc_tests +%endif +%if %with disabled_libssh2 +# These tests need ssh - guaranteed to fail when libssh2 is disabled. +%global cargo_test_skip_list %{cargo_test_skip_list} \\\ + net_err_suggests_fetch_with_cli \\\ + ssh_something_happens +%endif +%if "%{cargo_test_skip_list}" != "" +%define cargo_test_skip --test-args "%(printf -- '--skip %%s ' %{cargo_test_skip_list})" %endif %{__x} test --no-fail-fast cargo %{?cargo_test_skip} || : rm -rf "./build/%{rust_triple}/stage2-tools/%{rust_triple}/cit/" @@ -1073,6 +1104,7 @@ rm -rf "./build/%{rust_triple}/stage2-tools/%{rust_triple}/cit/" %license build/manifests/rustc/cargo-vendor.txt %license %{_pkgdocdir}/COPYRIGHT.html %license %{_pkgdocdir}/licenses/ +%exclude %{_sysconfdir}/target-spec-json-schema.json %files std-static @@ -1213,6 +1245,24 @@ rm -rf "./build/%{rust_triple}/stage2-tools/%{rust_triple}/cit/" %changelog ## START: Generated by rpmautospec +* Thu Jan 08 2026 Josh Stone - 1.92.0-1 +- Update to Rust 1.92.0 + +* Thu Nov 06 2025 Paul Murphy - 1.91.0-1 +- Update to Rust 1.91.0 + +* Tue Sep 30 2025 Paul Murphy - 1.90.0-1 +- Update to Rust 1.90 + +* Mon Sep 15 2025 Jesus Checa Hidalgo - 1.89.0-2 +- Add unicode exceptions (rpminspect) for rust 1.89 update + +* Wed Sep 10 2025 Josh Stone - 1.89.0-1 +- Update to Rust 1.89.0 + +* Wed Sep 10 2025 Josh Stone - 1.88.0-2 +- Sync rust-toolset's rpm macros with RHEL 10 + * Fri Jul 11 2025 Josh Stone - 1.88.0-1 - Update to Rust 1.88.0 From a8e51f4cd68d85f9f03b1f1ac531747808bfe394 Mon Sep 17 00:00:00 2001 From: AlmaLinux RelEng Bot Date: Mon, 24 Aug 2026 09:54:17 -0400 Subject: [PATCH 2/2] import CS rust-1.97.1-1.el9 --- .gitignore | 4 +- .rust.metadata | 4 +- SOURCES/0001-Use-lld-provided-by-system.patch | 31 ++-- ...llow-disabling-target-self-contained.patch | 32 ++-- ...xternal-library-path-for-wasm32-wasi.patch | 28 ++-- SOURCES/rust-key.gpg.ascii | 86 ++++++++++ SOURCES/rustc-1.92.0-disable-libssh2.patch | 44 ----- SOURCES/rustc-1.92.0-unbundle-sqlite.patch | 23 --- SOURCES/rustc-1.97.0-disable-libssh2.patch | 42 +++++ SOURCES/rustc-1.97.0-unbundle-sqlite.patch | 21 +++ SOURCES/rustc-1.97.1-src.tar.xz.asc | 16 ++ SPECS/rust.spec | 158 +++++++++++------- 12 files changed, 314 insertions(+), 175 deletions(-) create mode 100644 SOURCES/rust-key.gpg.ascii delete mode 100644 SOURCES/rustc-1.92.0-disable-libssh2.patch delete mode 100644 SOURCES/rustc-1.92.0-unbundle-sqlite.patch create mode 100644 SOURCES/rustc-1.97.0-disable-libssh2.patch create mode 100644 SOURCES/rustc-1.97.0-unbundle-sqlite.patch create mode 100644 SOURCES/rustc-1.97.1-src.tar.xz.asc diff --git a/.gitignore b/.gitignore index f6eaab1..bc8216d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -SOURCES/rustc-1.92.0-src.tar.xz -SOURCES/wasi-libc-wasi-sdk-27.tar.gz +SOURCES/rustc-1.97.1-src.tar.xz +SOURCES/wasi-libc-wasi-sdk-32.tar.gz diff --git a/.rust.metadata b/.rust.metadata index 4515690..d1945e4 100644 --- a/.rust.metadata +++ b/.rust.metadata @@ -1,2 +1,2 @@ -fbabcdb70a1ac1773e63d7800be42ffbaf9286e8 SOURCES/rustc-1.92.0-src.tar.xz -7c12838ff50eb7d07e0679ae4e70b99ca5c711c0 SOURCES/wasi-libc-wasi-sdk-27.tar.gz +5082bcea4fb67c64f936dc29346603cc4003c183 SOURCES/rustc-1.97.1-src.tar.xz +d968731dd5b0309fcaa2561ff3a43b84adc7d267 SOURCES/wasi-libc-wasi-sdk-32.tar.gz diff --git a/SOURCES/0001-Use-lld-provided-by-system.patch b/SOURCES/0001-Use-lld-provided-by-system.patch index 522865f..bbcf631 100644 --- a/SOURCES/0001-Use-lld-provided-by-system.patch +++ b/SOURCES/0001-Use-lld-provided-by-system.patch @@ -1,21 +1,21 @@ -From e9405caf32dfb31bf17c3da0299df515a3755107 Mon Sep 17 00:00:00 2001 +From 2f68bbbaa31cef21b912ec4856e3187528ed9679 Mon Sep 17 00:00:00 2001 From: Josh Stone 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 +- + .../src/spec/targets/aarch64_unknown_none_softfloat.rs | 1 - 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(-) + 5 files changed, 4 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 +index 1f0f564a7790..9173337a1a69 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 { +@@ -71,8 +71,7 @@ macro_rules! args { // threaded model which will legalize atomics to normal operations. singlethread: true, @@ -26,20 +26,19 @@ index 7ede45766ea..b22362227bb 100644 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 +index 05876891ebd7..9f389f9abec7 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(), +@@ -16,7 +16,6 @@ pub(crate) fn target() -> Target { + cfg_abi: CfgAbi::SoftFloat, + rustc_abi: Some(RustcAbi::Softfloat), 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(), + features: "+v8a,+strict-align,-neon".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 +index e2c1888e4084..4869f85d1e6e 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 { @@ -51,7 +50,7 @@ index 327b52389b9..17313d7e8b3 100644 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 +index 0afe7a0b68b0..4671032a437c 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 { @@ -60,11 +59,11 @@ index 1a6343595f5..8015b082cd1 100644 linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes), - linker: Some("rust-lld".into()), + linker: Some("lld".into()), - rustc_abi: Some(RustcAbi::X86Softfloat), + rustc_abi: Some(RustcAbi::Softfloat), 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 +index 333e20bd0ac1..16bea38887be 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 { @@ -76,5 +75,5 @@ index 0cf6a879462..3677fc662de 100644 // 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 +2.53.0 diff --git a/SOURCES/0001-bootstrap-allow-disabling-target-self-contained.patch b/SOURCES/0001-bootstrap-allow-disabling-target-self-contained.patch index 54ca101..ca811e9 100644 --- a/SOURCES/0001-bootstrap-allow-disabling-target-self-contained.patch +++ b/SOURCES/0001-bootstrap-allow-disabling-target-self-contained.patch @@ -1,7 +1,7 @@ -From 8364de4cb8edab85efcb895824ce06f4a95bd26f Mon Sep 17 00:00:00 2001 +From 5e8b069a530092bf57dc19d8f6e5df85db1bd7d3 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Mon, 18 Aug 2025 17:11:07 -0700 -Subject: [PATCH] bootstrap: allow disabling target self-contained +Subject: [PATCH 1/2] bootstrap: allow disabling target self-contained --- bootstrap.example.toml | 5 +++++ @@ -12,10 +12,10 @@ Subject: [PATCH] bootstrap: allow disabling target self-contained 5 files changed, 23 insertions(+) diff --git a/bootstrap.example.toml b/bootstrap.example.toml -index 6f37e51a47d..ee21bc06bea 100644 +index 4e850810a30..a3ae9251cf5 100644 --- a/bootstrap.example.toml +++ b/bootstrap.example.toml -@@ -1077,3 +1077,8 @@ +@@ -1102,3 +1102,8 @@ # pass `off`: # - x86_64-unknown-linux-gnu #default-linker-linux-override = "off" (for most targets) @@ -25,10 +25,10 @@ index 6f37e51a47d..ee21bc06bea 100644 +# targets may ignore this setting if they have nothing to be contained. +#self-contained = (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 +index 02940a80295..f3e7cbafc49 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( +@@ -370,6 +370,10 @@ fn copy_self_contained_objects( compiler: &Compiler, target: TargetSelection, ) -> Vec<(PathBuf, DependencyType)> { @@ -40,10 +40,10 @@ index 6857a40ada8..9a98323a704 100644 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 +index 2f493658ec0..d1ceea0296e 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( +@@ -877,6 +877,7 @@ pub(crate) fn parse_inner( runner: target_runner, optimized_compiler_builtins: target_optimized_compiler_builtins, jemalloc: target_jemalloc, @@ -51,7 +51,7 @@ index 4b7ae6df360..6bab269a33c 100644 } = cfg; let mut target = Target::from_triple(&triple); -@@ -921,6 +922,9 @@ pub(crate) fn parse_inner( +@@ -934,6 +935,9 @@ pub(crate) fn parse_inner( if let Some(s) = target_no_std { target.no_std = s; } @@ -62,10 +62,10 @@ index 4b7ae6df360..6bab269a33c 100644 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 +index 847b75e696b..cbe36106a6f 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 { +@@ -48,6 +48,7 @@ struct TomlTarget { runner: Option = "runner", optimized_compiler_builtins: Option = "optimized-compiler-builtins", jemalloc: Option = "jemalloc", @@ -73,7 +73,7 @@ index 4c7afa50b96..83b8a1b50ca 100644 } } -@@ -80,6 +81,7 @@ pub struct Target { +@@ -82,6 +83,7 @@ pub struct Target { pub codegen_backends: Option>, pub optimized_compiler_builtins: Option, pub jemalloc: Option, @@ -81,7 +81,7 @@ index 4c7afa50b96..83b8a1b50ca 100644 } impl Target { -@@ -91,6 +93,9 @@ pub fn from_triple(triple: &str) -> Self { +@@ -93,6 +95,9 @@ pub fn from_triple(triple: &str) -> Self { if triple.contains("emscripten") { target.runner = Some("node".into()); } @@ -92,10 +92,10 @@ index 4c7afa50b96..83b8a1b50ca 100644 } } diff --git a/src/bootstrap/src/lib.rs b/src/bootstrap/src/lib.rs -index dd30f05b728..cc89a84071e 100644 +index a31eb0c1c80..ca28b2cb0d9 100644 --- a/src/bootstrap/src/lib.rs +++ b/src/bootstrap/src/lib.rs -@@ -1441,6 +1441,11 @@ fn no_std(&self, target: TargetSelection) -> Option { +@@ -1448,6 +1448,11 @@ fn no_std(&self, target: TargetSelection) -> Option { self.config.target_config.get(&target).map(|t| t.no_std) } @@ -108,5 +108,5 @@ index dd30f05b728..cc89a84071e 100644 /// and `remote-test-server` binaries. fn remote_tested(&self, target: TargetSelection) -> bool { -- -2.51.0 +2.51.1 diff --git a/SOURCES/0002-set-an-external-library-path-for-wasm32-wasi.patch b/SOURCES/0002-set-an-external-library-path-for-wasm32-wasi.patch index 89b148f..871f613 100644 --- a/SOURCES/0002-set-an-external-library-path-for-wasm32-wasi.patch +++ b/SOURCES/0002-set-an-external-library-path-for-wasm32-wasi.patch @@ -1,4 +1,4 @@ -From 862d09fe2e8b0f5ce8fe7bfc592cda66a1d74c08 Mon Sep 17 00:00:00 2001 +From 51178db0fd3d40917a78e4b039c0412bcd332e31 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Mon, 18 Aug 2025 17:13:28 -0700 Subject: [PATCH 2/2] set an external library path for wasm32-wasi @@ -11,10 +11,10 @@ Subject: [PATCH 2/2] set an external library path for wasm32-wasi 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 +index d35c3b6bb18..f2a067a9e8c 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 +@@ -1565,6 +1565,12 @@ fn get_object_file_path(sess: &Session, name: &str, self_contained: bool) -> Pat return file_path; } } @@ -27,7 +27,7 @@ index 48b01ea2df19..59b87396fed2 100644 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( +@@ -2142,6 +2148,10 @@ fn add_library_search_dirs( } ControlFlow::<()>::Continue(()) }); @@ -39,7 +39,7 @@ index 48b01ea2df19..59b87396fed2 100644 /// 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 +index a972299deea..b3a6fe7c5ac 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 { @@ -50,7 +50,7 @@ index f236be92b3b6..eea6e0c203d2 100644 forward!(pre_link_objects_self_contained); forward!(post_link_objects_self_contained); -@@ -301,6 +302,7 @@ macro_rules! target_option_val { +@@ -308,6 +309,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); @@ -58,7 +58,7 @@ index f236be92b3b6..eea6e0c203d2 100644 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 { +@@ -520,6 +522,8 @@ struct TargetSpecJson { pre_link_objects: Option, #[serde(rename = "post-link-objects")] post_link_objects: Option, @@ -68,10 +68,10 @@ index f236be92b3b6..eea6e0c203d2 100644 pre_link_objects_self_contained: Option, #[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 +index 424026bdcea..3e0d565b00d 100644 --- a/compiler/rustc_target/src/spec/mod.rs +++ b/compiler/rustc_target/src/spec/mod.rs -@@ -1992,6 +1992,7 @@ pub struct TargetOptions { +@@ -2218,6 +2218,7 @@ pub struct TargetOptions { /// Objects to link before and after all other object code. pub pre_link_objects: CrtObjects, pub post_link_objects: CrtObjects, @@ -79,7 +79,7 @@ index 07fb1ce63f7c..c076c2836f84 100644 /// 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 { +@@ -2758,6 +2759,7 @@ fn default() -> TargetOptions { relro_level: RelroLevel::None, pre_link_objects: Default::default(), post_link_objects: Default::default(), @@ -88,11 +88,11 @@ index 07fb1ce63f7c..c076c2836f84 100644 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 +index 2d3dd0862d6..130ce1f225a 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(); +@@ -22,11 +22,12 @@ pub(crate) fn target() -> Target { + options.env = Env::P1; options.add_pre_link_args(LinkerFlavor::WasmLld(Cc::Yes), &["--target=wasm32-wasip1"]); - options.pre_link_objects_self_contained = crt_objects::pre_wasi_self_contained(); @@ -108,5 +108,5 @@ index 26add451ed25..3eaf050e6823 100644 // 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 +2.51.1 diff --git a/SOURCES/rust-key.gpg.ascii b/SOURCES/rust-key.gpg.ascii new file mode 100644 index 0000000..93e2282 --- /dev/null +++ b/SOURCES/rust-key.gpg.ascii @@ -0,0 +1,86 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1 + +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 +Mve696B5tlHyc1KxjHR6w9GRsh4= +=5FXw +-----END PGP PUBLIC KEY BLOCK----- diff --git a/SOURCES/rustc-1.92.0-disable-libssh2.patch b/SOURCES/rustc-1.92.0-disable-libssh2.patch deleted file mode 100644 index a03668f..0000000 --- a/SOURCES/rustc-1.92.0-disable-libssh2.patch +++ /dev/null @@ -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"] } diff --git a/SOURCES/rustc-1.92.0-unbundle-sqlite.patch b/SOURCES/rustc-1.92.0-unbundle-sqlite.patch deleted file mode 100644 index fb0b284..0000000 --- a/SOURCES/rustc-1.92.0-unbundle-sqlite.patch +++ /dev/null @@ -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" } diff --git a/SOURCES/rustc-1.97.0-disable-libssh2.patch b/SOURCES/rustc-1.97.0-disable-libssh2.patch new file mode 100644 index 0000000..964eef1 --- /dev/null +++ b/SOURCES/rustc-1.97.0-disable-libssh2.patch @@ -0,0 +1,42 @@ +--- rustc-beta-src/src/tools/cargo/Cargo.lock.orig 2026-07-02 11:47:42.914176299 -0500 ++++ rustc-beta-src/src/tools/cargo/Cargo.lock 2026-07-02 11:48:03.404372146 -0500 +@@ -3108,7 +3108,6 @@ checksum = "c9b3acc4b91781bb0b3386669d32 + dependencies = [ + "cc", + "libc", +- "libssh2-sys", + "libz-sys", + "openssl-sys", + "pkg-config", +@@ -3156,20 +3155,6 @@ dependencies = [ + "pkg-config", + "vcpkg", + ] +- +-[[package]] +-name = "libssh2-sys" +-version = "0.3.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c04141a07bb0c0bc461cb657808764de571702a59bc5c726c400ac9a7625e3ab" +-dependencies = [ +- "cc", +- "libc", +- "libz-sys", +- "openssl-sys", +- "pkg-config", +- "vcpkg", +-] + + [[package]] + name = "libz-sys" +--- rustc-beta-src/src/tools/cargo/Cargo.toml.orig 2026-07-02 11:47:42.916176318 -0500 ++++ rustc-beta-src/src/tools/cargo/Cargo.toml 2026-07-02 11:48:12.603460071 -0500 +@@ -51,7 +51,7 @@ filetime = "0.2.27" + flate2 = { version = "1.1.9", default-features = false, features = ["zlib-rs"] } + futures = { version = "0.3.32", default-features = false, features = ["std", "executor", "async-await"]} + futures-timer = "3.0.3" +-git2 = "0.20.4" ++git2 = { version = "0.20.4", 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.83.0", default-features = false, features = ["sha1", "progress-tree", "parallel", "dirwalk", "status"] } diff --git a/SOURCES/rustc-1.97.0-unbundle-sqlite.patch b/SOURCES/rustc-1.97.0-unbundle-sqlite.patch new file mode 100644 index 0000000..8b35a0b --- /dev/null +++ b/SOURCES/rustc-1.97.0-unbundle-sqlite.patch @@ -0,0 +1,21 @@ +--- rustc-beta-src/src/tools/cargo/Cargo.lock.orig 2026-06-02 15:55:01.625762200 -0500 ++++ rustc-beta-src/src/tools/cargo/Cargo.lock 2026-06-02 15:56:06.143120013 -0500 +@@ -3152,7 +3152,6 @@ version = "0.37.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "b1f111c8c41e7c61a49cd34e44c7619462967221a6443b0ec299e0ac30cfb9b1" + dependencies = [ +- "cc", + "pkg-config", + "vcpkg", + ] +--- rustc-beta-src/src/tools/cargo/Cargo.toml.orig 2026-06-02 15:54:48.946691882 -0500 ++++ rustc-beta-src/src/tools/cargo/Cargo.toml 2026-06-02 15:56:21.480430158 -0500 +@@ -88,7 +88,7 @@ proptest = "1.11.0" + pulldown-cmark = { version = "0.13.3", default-features = false, features = ["html"] } + rand = "0.10.1" + regex = "1.12.3" +-rusqlite = { version = "0.39.0", features = ["bundled"] } ++rusqlite = { version = "0.39.0", features = [] } + rustc-hash = "2.1.2" + rustc-stable-hash = "0.1.2" + rustfix = { version = "0.9.7", path = "crates/rustfix" } diff --git a/SOURCES/rustc-1.97.1-src.tar.xz.asc b/SOURCES/rustc-1.97.1-src.tar.xz.asc new file mode 100644 index 0000000..d4d9ada --- /dev/null +++ b/SOURCES/rustc-1.97.1-src.tar.xz.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +wsFcBAABCgAQBQJqWMn2CRCFq5bm+hvl/gAAONMP+wf2tdyAbygOTk6UWP6YqxQ9 +a8FzqUppJa3DJBbwuKaqXdqLa79ci8MYRSYaS643zGlBzuVLJpO6Hos4JKMyV5Yd +K9vnbkqX3rmDCAwzKY8BPO68bNnspwMXxuv5HmSXSCw1PNEO+LHWpnlOKgEbbrfu +mX6t0+AJm56bjN2xhqF7l3Y7XDhQvxGzmQk77HGbhTItY9it9Js4/LVsMtz7cngB +R4y+K3ML6p6mHyA9CoLHySWWh0QvJyZyo1Q294LQTLWN1ML+zBlOx1edgH0S8Cru +iuPw9ISmlAnQv//sNMCzM+4CYNVSvOQ4kDEJ+qJqVB2bRLfElLQcxnAwMkwWBrKK +3bBVmHZRnRAAPOZwtZBziCYd3TX0kIjjgwlTy7zLKE6CVjKYruN73bbMM1KnkSTE +Gg+LPHLFt+KNCBgBm6/qDEVguOAklFLRnlwjQarzyQOv+ZHbIl5l55ZDk/PlwsZx +SJfWmKEu7/o4MVCTvliV4Aaj/l33GvwIbbcYmlX6lDnvYUuBVCts+o/AMiHrAM3o +NErq+Y3J9DQYZ73SpE++2i73NlHRHikdo3uf1AU2LAIVvU+MILnKIoyZE2zc2iJN +4SLlcseZWiD78VDBISTXoAHA8X+tIlzfV0Yb54/IDfSPr2j7jY2LqVDFMnUa1jCp +flbhIKwroX8xQ32amB7H +=Q82X +-----END PGP SIGNATURE----- diff --git a/SPECS/rust.spec b/SPECS/rust.spec index 56e7a52..2a28073 100644 --- a/SPECS/rust.spec +++ b/SPECS/rust.spec @@ -9,7 +9,7 @@ ## END: Set by rpmautospec Name: rust -Version: 1.92.0 +Version: 1.97.1 Release: %autorelease Summary: The Rust Programming Language License: (Apache-2.0 OR MIT) AND (Artistic-2.0 AND BSD-3-Clause AND ISC AND MIT AND MPL-2.0 AND Unicode-3.0) @@ -24,9 +24,9 @@ ExclusiveArch: %{rust_arches} # To bootstrap from scratch, set the channel and date from src/stage0 # e.g. 1.89.0 wants rustc: 1.88.0-2025-06-26 # or nightly wants some beta-YYYY-MM-DD -%global bootstrap_version 1.91.0 -%global bootstrap_channel 1.91.0 -%global bootstrap_date 2025-10-30 +%global bootstrap_version 1.96.0 +%global bootstrap_channel 1.96.0 +%global bootstrap_date 2026-05-28 # Only the specified arches will use bootstrap binaries. # NOTE: Those binaries used to be uploaded with every new release, but that was @@ -38,7 +38,7 @@ ExclusiveArch: %{rust_arches} # We need CRT files for *-wasi targets, at least as new as the commit in # src/ci/docker/host-x86_64/dist-various-2/build-wasi-toolchain.sh %global wasi_libc_url https://github.com/WebAssembly/wasi-libc -%global wasi_libc_ref wasi-sdk-27 +%global wasi_libc_ref wasi-sdk-32 %global wasi_libc_name wasi-libc-%{wasi_libc_ref} %global wasi_libc_source %{wasi_libc_url}/archive/%{wasi_libc_ref}/%{wasi_libc_name}.tar.gz %global wasi_libc_dir %{_builddir}/%{wasi_libc_name} @@ -52,37 +52,29 @@ ExclusiveArch: %{rust_arches} %bcond_with llvm_static # We can also choose to just use Rust's bundled LLVM, in case the system LLVM -# is insufficient. Rust currently requires LLVM 19.0+. +# is insufficient. Rust currently requires LLVM 21.0+. # See src/bootstrap/src/core/build_steps/llvm.rs, fn check_llvm_version -%global min_llvm_version 20.0.0 -%global bundled_llvm_version 21.1.3 -#global llvm_compat_version 19 +# See src/llvm-project/cmake/Modules/LLVMVersion.cmake for bundled version. +%global min_llvm_version 21.0.0 +%global bundled_llvm_version 22.1.6 +#global llvm_compat_version 21 %global llvm llvm%{?llvm_compat_version} %bcond_with bundled_llvm # Requires stable libgit2 1.9, and not the next minor soname change. # This needs to be consistent with the bindings in vendor/libgit2-sys. -%global min_libgit2_version 1.9.0 +%global min_libgit2_version 1.9.2 %global next_libgit2_version 1.10.0~ -%global bundled_libgit2_version 1.9.1 +%global bundled_libgit2_version 1.9.2 %if 0%{?fedora} >= 41 %bcond_with bundled_libgit2 %else %bcond_without bundled_libgit2 %endif -# Try to use system oniguruma (only used at build time for rust-docs) -# src/tools/rustbook -> ... -> onig_sys v69.9.1 needs at least 6.9.3 -%global min_oniguruma_version 6.9.3 -%if 0%{?rhel} && 0%{?rhel} < 9 -%bcond_without bundled_oniguruma -%else -%bcond_with bundled_oniguruma -%endif - # Cargo uses UPSERTs with omitted conflict targets %global min_sqlite3_version 3.35 -%global bundled_sqlite3_version 3.50.2 +%global bundled_sqlite3_version 3.51.3 %if 0%{?rhel} && 0%{?rhel} < 10 %bcond_without bundled_sqlite3 %else @@ -128,7 +120,11 @@ ExclusiveArch: %{rust_arches} rpm.define("rustc_package rustc-" .. version_channel .. "-src") end} Source0: https://static.rust-lang.org/dist/%{rustc_package}.tar.xz -Source1: %{wasi_libc_source} +Source1: https://static.rust-lang.org/dist/%{rustc_package}.tar.xz.asc +Source2: https://static.rust-lang.org/rust-key.gpg.ascii + +Source10: %{wasi_libc_source} + # Sources for bootstrap_arches are inserted by lua below # By default, rust tries to use "rust-lld" as a linker for some targets. @@ -148,7 +144,7 @@ Patch4: 0001-bootstrap-allow-disabling-target-self-contained.patch Patch5: 0002-set-an-external-library-path-for-wasm32-wasi.patch # We don't want to use the bundled library in libsqlite3-sys -Patch6: rustc-1.92.0-unbundle-sqlite.patch +Patch6: rustc-1.97.0-unbundle-sqlite.patch # stage0 tries to copy all of /usr/lib, sometimes unsuccessfully, see #143735 Patch7: 0001-only-copy-rustlib-into-stage0-sysroot.patch @@ -161,7 +157,7 @@ Source101: cargo_vendor.attr Source102: cargo_vendor.prov # Disable cargo->libgit2->libssh2 on RHEL, as it's not approved for FIPS (rhbz1732949) -Patch100: rustc-1.92.0-disable-libssh2.patch +Patch100: rustc-1.97.0-disable-libssh2.patch # Get the Rust triple for any architecture and ABI. %{lua: function rust_triple(arch, abi) @@ -227,15 +223,21 @@ end} local channel = rpm.expand("%{bootstrap_channel}") local target_arch = rpm.expand("%{_target_cpu}") for i, arch in ipairs(bootstrap_arches) do - i = 1000 + i * 3 + i = 1000 + i * 6 local suffix = channel.."-"..rust_triple(arch) print(string.format("Source%d: %s/cargo-%s.tar.xz\n", i, base, suffix)) - print(string.format("Source%d: %s/rustc-%s.tar.xz\n", i+1, base, suffix)) - print(string.format("Source%d: %s/rust-std-%s.tar.xz\n", i+2, base, suffix)) + print(string.format("Source%d: %s/cargo-%s.tar.xz.asc\n", i+1, base, suffix)) + print(string.format("Source%d: %s/rustc-%s.tar.xz\n", i+2, base, suffix)) + print(string.format("Source%d: %s/rustc-%s.tar.xz.asc\n", i+3, base, suffix)) + print(string.format("Source%d: %s/rust-std-%s.tar.xz\n", i+4, base, suffix)) + print(string.format("Source%d: %s/rust-std-%s.tar.xz.asc\n", i+5, base, suffix)) if arch == target_arch then rpm.define("bootstrap_source_cargo "..i) - rpm.define("bootstrap_source_rustc "..i+1) - rpm.define("bootstrap_source_std "..i+2) + rpm.define("bootstrap_sig_cargo "..i+1) + rpm.define("bootstrap_source_rustc "..i+2) + rpm.define("bootstrap_sig_rustc "..i+3) + rpm.define("bootstrap_source_std "..i+4) + rpm.define("bootstrap_sig_std "..i+5) rpm.define("bootstrap_suffix "..suffix) end end @@ -251,6 +253,12 @@ BuildRequires: (%{name} >= %{bootstrap_version} with %{name} <= %{version}) %global local_rust_root %{_prefix} %endif +%if 0%{?rhel} && 0%{?rhel} < 11 +BuildRequires: gnupg2 +%else +BuildRequires: gpgverify +%endif + BuildRequires: make BuildRequires: gcc BuildRequires: gcc-c++ @@ -259,17 +267,17 @@ BuildRequires: ncurses-devel BuildRequires: curl-devel BuildRequires: pkgconfig(libcurl) BuildRequires: pkgconfig(liblzma) -BuildRequires: pkgconfig(openssl) + +# Only specific versions of openssl are supported. They are 1.0.2 - 1.1.1, or 3 +# The openssl-sys crate will also verify the release is supported. +BuildRequires: pkgconfig(openssl) < 4 + BuildRequires: pkgconfig(zlib) %if %{without bundled_libgit2} BuildRequires: (pkgconfig(libgit2) >= %{min_libgit2_version} with pkgconfig(libgit2) < %{next_libgit2_version}) %endif -%if %{without bundled_oniguruma} -BuildRequires: pkgconfig(oniguruma) >= %{min_oniguruma_version} -%endif - %if %{without bundled_sqlite3} BuildRequires: pkgconfig(sqlite3) >= %{min_sqlite3_version} %endif @@ -371,6 +379,7 @@ BuildRequires: mingw64-winpthreads-static %if %defined wasm_targets %if %with bundled_wasi_libc BuildRequires: clang%{?llvm_compat_version} +BuildRequires: cmake >= 3.26 %else BuildRequires: wasi-libc-static %endif @@ -658,8 +667,12 @@ the Cargo package manager, and a few convenience macros for rpm builds. %prep +%gpgverify -k 2 -s 1 -d 0 %ifarch %{bootstrap_arches} +%gpgverify -k 2 -s %{bootstrap_sig_cargo} -d %{bootstrap_source_cargo} +%gpgverify -k 2 -s %{bootstrap_sig_rustc} -d %{bootstrap_source_rustc} +%gpgverify -k 2 -s %{bootstrap_sig_std} -d %{bootstrap_source_std} rm -rf %{local_rust_root} %setup -q -n cargo-%{bootstrap_suffix} -T -b %{bootstrap_source_cargo} ./install.sh --prefix=%{local_rust_root} --disable-ldconfig @@ -672,12 +685,18 @@ test -f '%{local_rust_root}/bin/rustc' %endif %if %{defined wasm_targets} && %{with bundled_wasi_libc} -%setup -q -n %{wasi_libc_name} -T -b 1 -rm -rf %{wasi_libc_dir}/dlmalloc/ +%setup -q -n %{wasi_libc_name} -T -b 10 +# We want to make sure we use emmalloc instead of CC0 dlmalloc. +# The cmake files need the sources to exist, so just truncate instead. +truncate --no-create --size=0 %{wasi_libc_dir}/dlmalloc/src/*.c %endif %setup -q -n %{rustc_package} +# Sanity check that the source version is what we expect, +# especially for betas where the tarball is unversioned. +test "$(cut -d' ' -f1 ./version)" = "%{lua: print((rpm.expand('%version'):gsub('~', '-'))) }" + %patch -P1 -p1 %patch -P2 -p1 %patch -P3 -p1 @@ -722,15 +741,12 @@ rm -rf src/tools/rustc-perf/collector/*-benchmarks/ %clear_dir vendor/libz-sys*/src/zlib{,-ng}/ %clear_dir vendor/lzma-sys*/xz-*/ %clear_dir vendor/openssl-src*/openssl/ +%clear_dir vendor/capstone-sys-*/capstone/ %if %without bundled_libgit2 %clear_dir vendor/libgit2-sys*/libgit2/ %endif -%if %without bundled_oniguruma -%clear_dir vendor/onig_sys*/oniguruma/ -%endif - %if %without bundled_sqlite3 %clear_dir vendor/libsqlite3-sys*/sqlite3/ %endif @@ -783,7 +799,6 @@ end} %global rust_env %{shrink: %{?rustflags:RUSTFLAGS="%{rustflags}"} %{rustc_target_cpus} - %{!?with_bundled_oniguruma:RUSTONIG_SYSTEM_LIBONIG=1} %{!?with_bundled_sqlite3:LIBSQLITE3_SYS_USE_PKG_CONFIG=1} %{!?with_disabled_libssh2:LIBSSH2_SYS_USE_PKG_CONFIG=1} %{?llvm_path:PATH="%{llvm_path}:$PATH"} @@ -829,10 +844,19 @@ end} %if %defined wasm_targets %if %with bundled_wasi_libc -%define wasi_libc_flags MALLOC_IMPL=emmalloc CC=clang AR=llvm-ar NM=llvm-nm -%make_build --quiet -C %{wasi_libc_dir} %{wasi_libc_flags} TARGET_TRIPLE=wasm32-wasip1 +# Note that we don't want host CFLAGS here! +env -u CFLAGS %__cmake \ + -S "%{wasi_libc_dir}" \ + -B "%{wasi_libc_dir}/%{__cmake_builddir}" \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_C_FLAGS_RELEASE="-O2 -fstack-protector" \ + -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \ + -DBUILD_SHARED=OFF \ + -DMALLOC=emmalloc \ + -DTARGET_TRIPLE=wasm32-wasip1 +%__cmake --build "%{wasi_libc_dir}/%{__cmake_builddir}" %{?_smp_mflags} %define wasm_target_config %{shrink: - --set target.wasm32-wasip1.wasi-root=%{wasi_libc_dir}/sysroot + --set target.wasm32-wasip1.wasi-root=%{wasi_libc_dir}/%{__cmake_builddir}/sysroot } %else %define wasm_target_config %{shrink: @@ -847,14 +871,8 @@ end} %define profiler %{clang_lib}/%{_arch}-redhat-linux-gnu/libclang_rt.profile.a test -r "%{profiler}" -# llvm < 21 does not provide a builtins library for s390x. -%if "%{_arch}" != "s390x" || 0%{?clang_major_version} >= 21 %define optimized_builtins %{clang_lib}/%{_arch}-redhat-linux-gnu/libclang_rt.builtins.a test -r "%{optimized_builtins}" -%else -%define optimized_builtins false -%endif - %configure --disable-option-checking \ --docdir=%{_pkgdocdir} \ @@ -888,6 +906,7 @@ test -r "%{optimized_builtins}" --set build.optimized-compiler-builtins=false \ --set rust.llvm-tools=false \ --set rust.verify-llvm-ir=true \ + --set rust.remap-debuginfo=false \ --enable-extended \ --tools=cargo,clippy,rust-analyzer,rustdoc,rustfmt,src \ --enable-vendor \ @@ -1067,15 +1086,21 @@ rm -rf "./build/%{rust_triple}/test/" # We test this after packaging %global cargo_test_skip_list net_err_suggests_fetch_with_cli +# Requires access to index.crates.io but neither Fedora nor CentOS/RHEL builders +# have DNS resolution, so the test will always fail. +%global cargo_test_skip_list %{cargo_test_skip_list} publish_to_crates_io_warns + %ifarch aarch64 # https://github.com/rust-lang/rust/issues/123733 %global cargo_test_skip_list %{cargo_test_skip_list} panic_abort_doc_tests %endif %if %with disabled_libssh2 # These tests need ssh - guaranteed to fail when libssh2 is disabled. -%global cargo_test_skip_list %{cargo_test_skip_list} \\\ - net_err_suggests_fetch_with_cli \\\ +%global cargo_test_skip_list %{shrink: + %{cargo_test_skip_list} + net_err_suggests_fetch_with_cli ssh_something_happens +} %endif %if "%{cargo_test_skip_list}" != "" %define cargo_test_skip --test-args "%(printf -- '--skip %%s ' %{cargo_test_skip_list})" @@ -1112,16 +1137,18 @@ rm -rf "./build/%{rust_triple}/stage2-tools/%{rust_triple}/cit/" %dir %{rustlibdir}/%{rust_triple} %dir %{rustlibdir}/%{rust_triple}/lib %{rustlibdir}/%{rust_triple}/lib/*.rlib +%{rustlibdir}/%{rust_triple}/lib/*.rmeta %{rustlibdir}/%{rust_triple}/lib/*.so %license build/manifests/std/cargo-vendor.txt %license %{_pkgdocdir}/COPYRIGHT-library.html -%global target_files() \ -%files std-static-%1 \ -%dir %{rustlibdir} \ -%dir %{rustlibdir}/%1 \ -%dir %{rustlibdir}/%1/lib \ -%{rustlibdir}/%1/lib/*.rlib \ +%global target_files() \ +%files std-static-%1 \ +%dir %{rustlibdir} \ +%dir %{rustlibdir}/%1 \ +%dir %{rustlibdir}/%1/lib \ +%{rustlibdir}/%1/lib/*.rlib \ +%{rustlibdir}/%1/lib/*.rmeta \ %license build/manifests/std-%1/cargo-vendor.txt %if %target_enabled i686-pc-windows-gnu @@ -1245,6 +1272,21 @@ rm -rf "./build/%{rust_triple}/stage2-tools/%{rust_triple}/cit/" %changelog ## START: Generated by rpmautospec +* Tue Jul 21 2026 Paul Murphy - 1.97.1-1 +- Update to Rust 1.97.1 + +* Thu Jun 04 2026 Josh Stone - 1.96.0-1 +- Update to Rust 1.96.0 + +* Tue Apr 28 2026 Paul Murphy - 1.95.0-1 +- Update to Rust 1.95.0 + +* Thu Apr 09 2026 Josh Stone - 1.94.1-1 +- Update to Rust 1.94.1 + +* Mon Mar 02 2026 Paul Murphy - 1.93.0-1 +- Update to Rust 1.93.0 + * Thu Jan 08 2026 Josh Stone - 1.92.0-1 - Update to Rust 1.92.0