Compare commits
	
		
			No commits in common. "c8-stream-rhel8" and "c8-beta-stream-rhel8" have entirely different histories.
		
	
	
		
			c8-stream-
			...
			c8-beta-st
		
	
		
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,2 +1,2 @@ | |||||||
| SOURCES/rustc-1.84.1-src.tar.xz | SOURCES/rustc-1.75.0-src.tar.xz | ||||||
| SOURCES/wasi-libc-wasi-sdk-25.tar.gz | SOURCES/wasi-libc-bd950eb128bff337153de217b11270f948d04bb4.tar.gz | ||||||
|  | |||||||
| @ -1,2 +1,2 @@ | |||||||
| 787899153e848b012d8bbd6ec0baf0ed5e189831 SOURCES/rustc-1.84.1-src.tar.xz | 9ad7bb54dc9572c103b855cdcc823addbb34d15d SOURCES/rustc-1.75.0-src.tar.xz | ||||||
| c42dc30854ecbce5380304c38bd48b5911d1ce62 SOURCES/wasi-libc-wasi-sdk-25.tar.gz | 55eaa32c99cc8ec970f2db2d340a605724589f9b SOURCES/wasi-libc-bd950eb128bff337153de217b11270f948d04bb4.tar.gz | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| From 5273432acfae75d6e509bbebcf8d28b0f3d820d0 Mon Sep 17 00:00:00 2001 | From 184d61d2c12aa2db01de9a14ccb2be0cfae5039b Mon Sep 17 00:00:00 2001 | ||||||
| From: Josh Stone <jistone@redhat.com> | From: Josh Stone <jistone@redhat.com> | ||||||
| Date: Fri, 9 Jun 2023 15:23:08 -0700 | Date: Fri, 9 Jun 2023 15:23:08 -0700 | ||||||
| Subject: [PATCH] Let environment variables override some default CPUs | Subject: [PATCH] Let environment variables override some default CPUs | ||||||
| @ -10,12 +10,12 @@ Subject: [PATCH] Let environment variables override some default CPUs | |||||||
|  3 files changed, 3 insertions(+), 3 deletions(-) |  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
 | 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 194c3170e683..9806ca78297c 100644
 | ||||||
| --- a/compiler/rustc_target/src/spec/targets/powerpc64le_unknown_linux_gnu.rs
 | --- a/compiler/rustc_target/src/spec/targets/powerpc64le_unknown_linux_gnu.rs
 | ||||||
| +++ b/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 @@
 | @@ -2,7 +2,7 @@
 | ||||||
|   |   | ||||||
|  pub(crate) fn target() -> Target { |  pub fn target() -> Target { | ||||||
|      let mut base = base::linux_gnu::opts(); |      let mut base = base::linux_gnu::opts(); | ||||||
| -    base.cpu = "ppc64le".into();
 | -    base.cpu = "ppc64le".into();
 | ||||||
| +    base.cpu = option_env!("RUSTC_TARGET_CPU_PPC64LE").unwrap_or("ppc64le").into();
 | +    base.cpu = option_env!("RUSTC_TARGET_CPU_PPC64LE").unwrap_or("ppc64le").into();
 | ||||||
| @ -23,25 +23,25 @@ index 23913687a1fd..3253fbc84c74 100644 | |||||||
|      base.max_atomic_width = Some(64); |      base.max_atomic_width = Some(64); | ||||||
|      base.stack_probes = StackProbeType::Inline; |      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
 | 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 6fc410eb2235..c8f84edb9715 100644
 | ||||||
| --- a/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_gnu.rs
 | --- a/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_gnu.rs
 | ||||||
| +++ b/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 {
 | @@ -5,7 +5,7 @@ pub fn target() -> Target {
 | ||||||
|      let mut base = base::linux_gnu::opts(); |      let mut base = base::linux_gnu::opts(); | ||||||
|      base.endian = Endian::Big; |      base.endian = Endian::Big; | ||||||
|      // z10 is the oldest CPU supported by LLVM |      // z10 is the oldest CPU supported by LLVM | ||||||
| -    base.cpu = "z10".into();
 | -    base.cpu = "z10".into();
 | ||||||
| +    base.cpu = option_env!("RUSTC_TARGET_CPU_S390X").unwrap_or("z10").into();
 | +    base.cpu = option_env!("RUSTC_TARGET_CPU_S390X").unwrap_or("z10").into();
 | ||||||
|      base.max_atomic_width = Some(128); |      // FIXME: The ABI implementation in cabi_s390x.rs is for now hard-coded to assume the no-vector | ||||||
|      base.min_global_align = Some(16); |      // ABI. Pass the -vector feature string to LLVM to respect this assumption. On LLVM < 16, we | ||||||
|      base.stack_probes = StackProbeType::Inline; |      // also strip v128 from the data_layout below to match the older LLVM's expectation. | ||||||
| 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
 | 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 80e267c163fa..8436a00e66d5 100644
 | ||||||
| --- a/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs
 | --- 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
 | +++ b/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs
 | ||||||
| @@ -2,7 +2,7 @@
 | @@ -2,7 +2,7 @@
 | ||||||
|   |   | ||||||
|  pub(crate) fn target() -> Target { |  pub fn target() -> Target { | ||||||
|      let mut base = base::linux_gnu::opts(); |      let mut base = base::linux_gnu::opts(); | ||||||
| -    base.cpu = "x86-64".into();
 | -    base.cpu = "x86-64".into();
 | ||||||
| +    base.cpu = option_env!("RUSTC_TARGET_CPU_X86_64").unwrap_or("x86-64").into();
 | +    base.cpu = option_env!("RUSTC_TARGET_CPU_X86_64").unwrap_or("x86-64").into();
 | ||||||
| @ -49,5 +49,5 @@ index 59ec6c7f9d5f..b6f1be890b20 100644 | |||||||
|      base.max_atomic_width = Some(64); |      base.max_atomic_width = Some(64); | ||||||
|      base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]); |      base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]); | ||||||
| -- 
 | -- 
 | ||||||
| 2.47.1 | 2.41.0 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,39 +0,0 @@ | |||||||
| From e4e678eb9cbd90acf2ba51e9ec0209b05c4403b5 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Josh Stone <cuviper@gmail.com> |  | ||||||
| Date: Thu, 9 Jan 2025 16:47:10 -0800 |  | ||||||
| Subject: [PATCH] Only translate profile flags for Clang |  | ||||||
| 
 |  | ||||||
| ---
 |  | ||||||
|  src/flags.rs | 16 +++++++++------- |  | ||||||
|  1 file changed, 9 insertions(+), 7 deletions(-) |  | ||||||
| 
 |  | ||||||
| diff --git a/src/flags.rs b/src/flags.rs
 |  | ||||||
| index 81834cf625f7..1a53c1b2345c 100644
 |  | ||||||
| --- a/src/flags.rs
 |  | ||||||
| +++ b/src/flags.rs
 |  | ||||||
| @@ -201,13 +201,15 @@ impl<'this> RustcCodegenFlags<'this> {
 |  | ||||||
|                  if self.no_vectorize_slp { |  | ||||||
|                      push_if_supported("-fno-slp-vectorize".into()); |  | ||||||
|                  } |  | ||||||
| -                // https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-fprofile-generate
 |  | ||||||
| -                if let Some(value) = self.profile_generate {
 |  | ||||||
| -                    push_if_supported(format!("-fprofile-generate={value}").into());
 |  | ||||||
| -                }
 |  | ||||||
| -                // https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-fprofile-use
 |  | ||||||
| -                if let Some(value) = self.profile_use {
 |  | ||||||
| -                    push_if_supported(format!("-fprofile-use={value}").into());
 |  | ||||||
| +                if let ToolFamily::Clang { .. } = family {
 |  | ||||||
| +                    // https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-fprofile-generate
 |  | ||||||
| +                    if let Some(value) = self.profile_generate {
 |  | ||||||
| +                        push_if_supported(format!("-fprofile-generate={value}").into());
 |  | ||||||
| +                    }
 |  | ||||||
| +                    // https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-fprofile-use
 |  | ||||||
| +                    if let Some(value) = self.profile_use {
 |  | ||||||
| +                        push_if_supported(format!("-fprofile-use={value}").into());
 |  | ||||||
| +                    }
 |  | ||||||
|                  } |  | ||||||
|                  // https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-mguard |  | ||||||
|                  if let Some(value) = self.control_flow_guard { |  | ||||||
| -- 
 |  | ||||||
| 2.47.1 |  | ||||||
| 
 |  | ||||||
| @ -1,21 +1,19 @@ | |||||||
| From 3d8c6d095581e8d7585f3772cfd16f6367f3c008 Mon Sep 17 00:00:00 2001 | From 61b5cc96337da2121221dd1bcdb63fd36551d065 Mon Sep 17 00:00:00 2001 | ||||||
| From: Josh Stone <jistone@redhat.com> | From: Josh Stone <jistone@redhat.com> | ||||||
| Date: Fri, 16 Aug 2024 10:12:58 -0700 | Date: Wed, 1 Nov 2023 15:21:15 -0700 | ||||||
| Subject: [PATCH] Use lld provided by system | Subject: [PATCH] Use lld provided by system | ||||||
| 
 | 
 | ||||||
| ---
 | ---
 | ||||||
|  compiler/rustc_target/src/spec/base/wasm.rs                    | 3 +-- |  compiler/rustc_target/src/spec/base/wasm.rs                   | 3 +-- | ||||||
|  .../src/spec/targets/aarch64_unknown_none_softfloat.rs         | 2 +- |  compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs | 2 +- | ||||||
|  compiler/rustc_target/src/spec/targets/aarch64_unknown_uefi.rs | 1 + |  compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs | 1 + | ||||||
|  compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs  | 2 +- |  3 files changed, 3 insertions(+), 3 deletions(-) | ||||||
|  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
 | diff --git a/compiler/rustc_target/src/spec/base/wasm.rs b/compiler/rustc_target/src/spec/base/wasm.rs
 | ||||||
| index f237391016e7..08bcd9699b4a 100644
 | index 87ade9e58cf4..2ddff95febab 100644
 | ||||||
| --- a/compiler/rustc_target/src/spec/base/wasm.rs
 | --- a/compiler/rustc_target/src/spec/base/wasm.rs
 | ||||||
| +++ b/compiler/rustc_target/src/spec/base/wasm.rs
 | +++ b/compiler/rustc_target/src/spec/base/wasm.rs
 | ||||||
| @@ -85,8 +85,7 @@ macro_rules! args {
 | @@ -91,8 +91,7 @@ macro_rules! args {
 | ||||||
|          // arguments just yet |          // arguments just yet | ||||||
|          limit_rdylib_exports: false, |          limit_rdylib_exports: false, | ||||||
|   |   | ||||||
| @ -25,33 +23,8 @@ index f237391016e7..08bcd9699b4a 100644 | |||||||
|          linker_flavor: LinkerFlavor::WasmLld(Cc::No), |          linker_flavor: LinkerFlavor::WasmLld(Cc::No), | ||||||
|   |   | ||||||
|          pre_link_args, |          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 222d5651b521..4b780bc8a8e7 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
 |  | ||||||
| @@ -14,7 +14,7 @@ pub 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 429303170b6b..19d4ec53f6d8 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 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
 | 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 549706998d46..b7e9158ddef5 100644
 | index 9aa95a35f8e5..a9172f9441b7 100644
 | ||||||
| --- a/compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs
 | --- a/compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs
 | ||||||
| +++ b/compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs
 | +++ b/compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs
 | ||||||
| @@ -17,7 +17,7 @@ pub fn target() -> Target {
 | @@ -17,7 +17,7 @@ pub fn target() -> Target {
 | ||||||
| @ -60,11 +33,11 @@ index 549706998d46..b7e9158ddef5 100644 | |||||||
|          linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes), |          linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes), | ||||||
| -        linker: Some("rust-lld".into()),
 | -        linker: Some("rust-lld".into()),
 | ||||||
| +        linker: Some("lld".into()),
 | +        linker: Some("lld".into()),
 | ||||||
|          features: "-mmx,-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-avx,-avx2,+soft-float".into(), |          features: | ||||||
|          supported_sanitizers: SanitizerSet::KCFI | SanitizerSet::KERNELADDRESS, |              "-mmx,-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-3dnow,-3dnowa,-avx,-avx2,+soft-float" | ||||||
|          disable_redzone: true, |                  .into(), | ||||||
| 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
 | 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 6da1fcca58c8..c84ae44576d4 100644
 | index 5abfb8162f70..13cb43bda1a4 100644
 | ||||||
| --- a/compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs
 | --- a/compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs
 | ||||||
| +++ b/compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs
 | +++ b/compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs
 | ||||||
| @@ -16,6 +16,7 @@ pub fn target() -> Target {
 | @@ -16,6 +16,7 @@ pub fn target() -> Target {
 | ||||||
| @ -76,5 +49,5 @@ index 6da1fcca58c8..c84ae44576d4 100644 | |||||||
|      // We disable MMX and SSE for now, even though UEFI allows using them. Problem is, you have to |      // 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 |      // enable these CPU features explicitly before their first use, otherwise their instructions | ||||||
| -- 
 | -- 
 | ||||||
| 2.46.0 | 2.41.0 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| From 8d4d52446347872816ab51958e9f3162cf722ee6 Mon Sep 17 00:00:00 2001 | From df0d6f1d8b46db82d7599ca8eff6e8f844cf52f2 Mon Sep 17 00:00:00 2001 | ||||||
| From: Josh Stone <jistone@redhat.com> | From: Josh Stone <jistone@redhat.com> | ||||||
| Date: Thu, 28 Sep 2023 18:14:28 -0700 | Date: Thu, 28 Sep 2023 18:14:28 -0700 | ||||||
| Subject: [PATCH 1/2] bootstrap: allow disabling target self-contained | Subject: [PATCH 1/2] bootstrap: allow disabling target self-contained | ||||||
| @ -11,12 +11,12 @@ Subject: [PATCH 1/2] bootstrap: allow disabling target self-contained | |||||||
|  4 files changed, 22 insertions(+) |  4 files changed, 22 insertions(+) | ||||||
| 
 | 
 | ||||||
| diff --git a/config.example.toml b/config.example.toml
 | diff --git a/config.example.toml b/config.example.toml
 | ||||||
| index d3233ad17b51..6a1f097c20cb 100644
 | index e5df28a49af6..2fcd8b8cb057 100644
 | ||||||
| --- a/config.example.toml
 | --- a/config.example.toml
 | ||||||
| +++ b/config.example.toml
 | +++ b/config.example.toml
 | ||||||
| @@ -916,6 +916,11 @@
 | @@ -807,6 +807,11 @@ change-id = 116881
 | ||||||
|  # argument as the test binary. |  # target triples containing `-none`, `nvptx`, `switch`, or `-uefi`. | ||||||
|  #runner = <none> (string) |  #no-std = <platform-specific> (bool) | ||||||
|   |   | ||||||
| +# Copy libc and CRT objects into the target lib/self-contained/ directory.
 | +# Copy libc and CRT objects into the target lib/self-contained/ directory.
 | ||||||
| +# Enabled by default on `musl`, `wasi`, and `windows-gnu` targets. Other
 | +# Enabled by default on `musl`, `wasi`, and `windows-gnu` targets. Other
 | ||||||
| @ -27,10 +27,10 @@ index d3233ad17b51..6a1f097c20cb 100644 | |||||||
|  # Distribution options |  # Distribution options | ||||||
|  # |  # | ||||||
| diff --git a/src/bootstrap/src/core/build_steps/compile.rs b/src/bootstrap/src/core/build_steps/compile.rs
 | diff --git a/src/bootstrap/src/core/build_steps/compile.rs b/src/bootstrap/src/core/build_steps/compile.rs
 | ||||||
| index 8e088682f92d..843b7123b120 100644
 | index 7021a9543582..11555c65ca87 100644
 | ||||||
| --- a/src/bootstrap/src/core/build_steps/compile.rs
 | --- a/src/bootstrap/src/core/build_steps/compile.rs
 | ||||||
| +++ b/src/bootstrap/src/core/build_steps/compile.rs
 | +++ b/src/bootstrap/src/core/build_steps/compile.rs
 | ||||||
| @@ -346,6 +346,10 @@ fn copy_self_contained_objects(
 | @@ -302,6 +302,10 @@ fn copy_self_contained_objects(
 | ||||||
|      compiler: &Compiler, |      compiler: &Compiler, | ||||||
|      target: TargetSelection, |      target: TargetSelection, | ||||||
|  ) -> Vec<(PathBuf, DependencyType)> { |  ) -> Vec<(PathBuf, DependencyType)> { | ||||||
| @ -38,24 +38,24 @@ index 8e088682f92d..843b7123b120 100644 | |||||||
| +        return vec![];
 | +        return vec![];
 | ||||||
| +    }
 | +    }
 | ||||||
| +
 | +
 | ||||||
|      let libdir_self_contained = |      let libdir_self_contained = builder.sysroot_libdir(*compiler, target).join("self-contained"); | ||||||
|          builder.sysroot_target_libdir(*compiler, target).join("self-contained"); |  | ||||||
|      t!(fs::create_dir_all(&libdir_self_contained)); |      t!(fs::create_dir_all(&libdir_self_contained)); | ||||||
|  |      let mut target_deps = vec![]; | ||||||
| diff --git a/src/bootstrap/src/core/config/config.rs b/src/bootstrap/src/core/config/config.rs
 | diff --git a/src/bootstrap/src/core/config/config.rs b/src/bootstrap/src/core/config/config.rs
 | ||||||
| index e706aba977b6..a55d98e94dd8 100644
 | index 0a9175aa3ea5..a2e028b25036 100644
 | ||||||
| --- a/src/bootstrap/src/core/config/config.rs
 | --- a/src/bootstrap/src/core/config/config.rs
 | ||||||
| +++ b/src/bootstrap/src/core/config/config.rs
 | +++ b/src/bootstrap/src/core/config/config.rs
 | ||||||
| @@ -627,6 +627,7 @@ pub struct Target {
 | @@ -533,6 +533,7 @@ pub struct Target {
 | ||||||
|      pub runner: Option<String>, |      pub wasi_root: Option<PathBuf>, | ||||||
|  |      pub qemu_rootfs: Option<PathBuf>, | ||||||
|      pub no_std: bool, |      pub no_std: bool, | ||||||
|      pub codegen_backends: Option<Vec<String>>, |  | ||||||
| +    pub self_contained: bool,
 | +    pub self_contained: bool,
 | ||||||
|  } |  } | ||||||
|   |   | ||||||
|  impl Target { |  impl Target { | ||||||
| @@ -638,6 +639,9 @@ pub fn from_triple(triple: &str) -> Self {
 | @@ -541,6 +542,9 @@ pub fn from_triple(triple: &str) -> Self {
 | ||||||
|          if triple.contains("emscripten") { |          if triple.contains("-none") || triple.contains("nvptx") || triple.contains("switch") { | ||||||
|              target.runner = Some("node".into()); |              target.no_std = true; | ||||||
|          } |          } | ||||||
| +        if triple.contains("-musl") || triple.contains("-wasi") || triple.contains("-windows-gnu") {
 | +        if triple.contains("-musl") || triple.contains("-wasi") || triple.contains("-windows-gnu") {
 | ||||||
| +            target.self_contained = true;
 | +            target.self_contained = true;
 | ||||||
| @ -63,15 +63,15 @@ index e706aba977b6..a55d98e94dd8 100644 | |||||||
|          target |          target | ||||||
|      } |      } | ||||||
|  } |  } | ||||||
| @@ -1213,6 +1217,7 @@ struct TomlTarget {
 | @@ -1051,6 +1055,7 @@ struct TomlTarget {
 | ||||||
|  |          wasi_root: Option<String> = "wasi-root", | ||||||
|  |          qemu_rootfs: Option<String> = "qemu-rootfs", | ||||||
|          no_std: Option<bool> = "no-std", |          no_std: Option<bool> = "no-std", | ||||||
|          codegen_backends: Option<Vec<String>> = "codegen-backends", |  | ||||||
|          runner: Option<String> = "runner", |  | ||||||
| +        self_contained: Option<bool> = "self-contained",
 | +        self_contained: Option<bool> = "self-contained",
 | ||||||
|      } |      } | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -2038,6 +2043,9 @@ fn get_table(option: &str) -> Result<TomlConfig, toml::de::Error> {
 | @@ -1600,6 +1605,9 @@ fn get_table(option: &str) -> Result<TomlConfig, toml::de::Error> {
 | ||||||
|                  if let Some(s) = cfg.no_std { |                  if let Some(s) = cfg.no_std { | ||||||
|                      target.no_std = s; |                      target.no_std = s; | ||||||
|                  } |                  } | ||||||
| @ -82,10 +82,10 @@ index e706aba977b6..a55d98e94dd8 100644 | |||||||
|                  target.cxx = cfg.cxx.map(PathBuf::from); |                  target.cxx = cfg.cxx.map(PathBuf::from); | ||||||
|                  target.ar = cfg.ar.map(PathBuf::from); |                  target.ar = cfg.ar.map(PathBuf::from); | ||||||
| diff --git a/src/bootstrap/src/lib.rs b/src/bootstrap/src/lib.rs
 | diff --git a/src/bootstrap/src/lib.rs b/src/bootstrap/src/lib.rs
 | ||||||
| index c384fd6bf435..a101c010b740 100644
 | index 33b8f1a7ce72..f36e53187576 100644
 | ||||||
| --- a/src/bootstrap/src/lib.rs
 | --- a/src/bootstrap/src/lib.rs
 | ||||||
| +++ b/src/bootstrap/src/lib.rs
 | +++ b/src/bootstrap/src/lib.rs
 | ||||||
| @@ -1351,6 +1351,11 @@ fn no_std(&self, target: TargetSelection) -> Option<bool> {
 | @@ -1335,6 +1335,11 @@ fn no_std(&self, target: TargetSelection) -> Option<bool> {
 | ||||||
|          self.config.target_config.get(&target).map(|t| t.no_std) |          self.config.target_config.get(&target).map(|t| t.no_std) | ||||||
|      } |      } | ||||||
|   |   | ||||||
| @ -98,5 +98,5 @@ index c384fd6bf435..a101c010b740 100644 | |||||||
|      /// and `remote-test-server` binaries. |      /// and `remote-test-server` binaries. | ||||||
|      fn remote_tested(&self, target: TargetSelection) -> bool { |      fn remote_tested(&self, target: TargetSelection) -> bool { | ||||||
| -- 
 | -- 
 | ||||||
| 2.47.1 | 2.41.0 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -0,0 +1,33 @@ | |||||||
|  | From 776146e9ebb6bbe17a37bfad955f3dac95317275 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Josh Stone <jistone@redhat.com> | ||||||
|  | Date: Thu, 16 Nov 2023 10:42:23 -0800 | ||||||
|  | Subject: [PATCH] bootstrap: only show PGO warnings when verbose | ||||||
|  | 
 | ||||||
|  | Building rustc with `--rust-profile-use` is currently dumping a lot of | ||||||
|  | warnings of "no profile data available for function" from `rustc_smir` | ||||||
|  | and `stable_mir`. These simply aren't exercised by the current profile- | ||||||
|  | gathering steps, but that's to be expected for new or experimental | ||||||
|  | functionality. I think for most people, these warnings will be just | ||||||
|  | noise, so it makes sense to only have them in verbose builds. | ||||||
|  | ---
 | ||||||
|  |  src/bootstrap/src/core/build_steps/compile.rs | 4 +++- | ||||||
|  |  1 file changed, 3 insertions(+), 1 deletion(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/src/bootstrap/src/core/build_steps/compile.rs b/src/bootstrap/src/core/build_steps/compile.rs
 | ||||||
|  | index af69860df1c5..51e4195827fc 100644
 | ||||||
|  | --- a/src/bootstrap/src/core/build_steps/compile.rs
 | ||||||
|  | +++ b/src/bootstrap/src/core/build_steps/compile.rs
 | ||||||
|  | @@ -887,7 +887,9 @@ fn run(self, builder: &Builder<'_>) {
 | ||||||
|  |          } else if let Some(path) = &builder.config.rust_profile_use { | ||||||
|  |              if compiler.stage == 1 { | ||||||
|  |                  cargo.rustflag(&format!("-Cprofile-use={path}")); | ||||||
|  | -                cargo.rustflag("-Cllvm-args=-pgo-warn-missing-function");
 | ||||||
|  | +                if builder.is_verbose() {
 | ||||||
|  | +                    cargo.rustflag("-Cllvm-args=-pgo-warn-missing-function");
 | ||||||
|  | +                }
 | ||||||
|  |                  true | ||||||
|  |              } else { | ||||||
|  |                  false | ||||||
|  | -- 
 | ||||||
|  | 2.43.0 | ||||||
|  | 
 | ||||||
| @ -1,19 +1,19 @@ | |||||||
| From 21d53eca2af5f04c0aa6b898f99f58e0e093cfdd Mon Sep 17 00:00:00 2001 | From 79bb610c8fc5d9df7dd4720ae847b8f17e7b1ad4 Mon Sep 17 00:00:00 2001 | ||||||
| From: Josh Stone <jistone@redhat.com> | From: Josh Stone <jistone@redhat.com> | ||||||
| Date: Thu, 28 Sep 2023 18:18:16 -0700 | Date: Thu, 28 Sep 2023 18:18:16 -0700 | ||||||
| Subject: [PATCH 2/2] set an external library path for wasm32-wasi | Subject: [PATCH 2/2] set an external library path for wasm32-wasi | ||||||
| 
 | 
 | ||||||
| ---
 | ---
 | ||||||
|  compiler/rustc_codegen_ssa/src/back/link.rs            | 10 ++++++++++ |  compiler/rustc_codegen_ssa/src/back/link.rs           | 9 +++++++++ | ||||||
|  compiler/rustc_target/src/spec/mod.rs                  |  4 ++++ |  compiler/rustc_target/src/spec/mod.rs                 | 2 ++ | ||||||
|  .../rustc_target/src/spec/targets/wasm32_wasip1.rs     |  7 ++++--- |  compiler/rustc_target/src/spec/targets/wasm32_wasi.rs | 6 +++++- | ||||||
|  3 files changed, 18 insertions(+), 3 deletions(-) |  3 files changed, 16 insertions(+), 1 deletion(-) | ||||||
| 
 | 
 | ||||||
| diff --git a/compiler/rustc_codegen_ssa/src/back/link.rs b/compiler/rustc_codegen_ssa/src/back/link.rs
 | diff --git a/compiler/rustc_codegen_ssa/src/back/link.rs b/compiler/rustc_codegen_ssa/src/back/link.rs
 | ||||||
| index 5149e3a12f23..cf62fbdc7f59 100644
 | index dd9d277fb775..3d0f0502f255 100644
 | ||||||
| --- a/compiler/rustc_codegen_ssa/src/back/link.rs
 | --- a/compiler/rustc_codegen_ssa/src/back/link.rs
 | ||||||
| +++ b/compiler/rustc_codegen_ssa/src/back/link.rs
 | +++ b/compiler/rustc_codegen_ssa/src/back/link.rs
 | ||||||
| @@ -1663,6 +1663,12 @@ fn get_object_file_path(sess: &Session, name: &str, self_contained: bool) -> Pat
 | @@ -1496,6 +1496,12 @@ fn get_object_file_path(sess: &Session, name: &str, self_contained: bool) -> Pat
 | ||||||
|              return file_path; |              return file_path; | ||||||
|          } |          } | ||||||
|      } |      } | ||||||
| @ -23,14 +23,13 @@ index 5149e3a12f23..cf62fbdc7f59 100644 | |||||||
| +            return file_path;
 | +            return file_path;
 | ||||||
| +        }
 | +        }
 | ||||||
| +    }
 | +    }
 | ||||||
|      for search_path in sess.target_filesearch().search_paths(PathKind::Native) { |      for search_path in fs.search_paths() { | ||||||
|          let file_path = search_path.dir.join(name); |          let file_path = search_path.dir.join(name); | ||||||
|          if file_path.exists() { |          if file_path.exists() { | ||||||
| @@ -2163,6 +2169,10 @@ fn add_library_search_dirs(
 | @@ -1982,6 +1988,9 @@ fn add_library_search_dirs(cmd: &mut dyn Linker, sess: &Session, self_contained:
 | ||||||
|              ControlFlow::<()>::Continue(()) |          let lib_path = sess.target_filesearch(PathKind::All).get_self_contained_lib_path(); | ||||||
|          }, |          cmd.include_path(&fix_windows_verbatim_for_gcc(&lib_path)); | ||||||
|      ); |      } | ||||||
| +
 |  | ||||||
| +    if let Some(lib_path) = &sess.target.options.external_lib_path {
 | +    if let Some(lib_path) = &sess.target.options.external_lib_path {
 | ||||||
| +        cmd.include_path(Path::new(lib_path.as_ref()));
 | +        cmd.include_path(Path::new(lib_path.as_ref()));
 | ||||||
| +    }
 | +    }
 | ||||||
| @ -38,10 +37,10 @@ index 5149e3a12f23..cf62fbdc7f59 100644 | |||||||
|   |   | ||||||
|  /// Add options making relocation sections in the produced ELF files read-only |  /// Add options making relocation sections in the produced ELF files read-only | ||||||
| diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs
 | diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs
 | ||||||
| index 321ab40403a3..54791c8892d8 100644
 | index f04799482c83..25410b37ba24 100644
 | ||||||
| --- a/compiler/rustc_target/src/spec/mod.rs
 | --- a/compiler/rustc_target/src/spec/mod.rs
 | ||||||
| +++ b/compiler/rustc_target/src/spec/mod.rs
 | +++ b/compiler/rustc_target/src/spec/mod.rs
 | ||||||
| @@ -2155,6 +2155,7 @@ pub struct TargetOptions {
 | @@ -1874,6 +1874,7 @@ pub struct TargetOptions {
 | ||||||
|      /// Objects to link before and after all other object code. |      /// Objects to link before and after all other object code. | ||||||
|      pub pre_link_objects: CrtObjects, |      pub pre_link_objects: CrtObjects, | ||||||
|      pub post_link_objects: CrtObjects, |      pub post_link_objects: CrtObjects, | ||||||
| @ -49,7 +48,7 @@ index 321ab40403a3..54791c8892d8 100644 | |||||||
|      /// Same as `(pre|post)_link_objects`, but when self-contained linking mode is enabled. |      /// Same as `(pre|post)_link_objects`, but when self-contained linking mode is enabled. | ||||||
|      pub pre_link_objects_self_contained: CrtObjects, |      pub pre_link_objects_self_contained: CrtObjects, | ||||||
|      pub post_link_objects_self_contained: CrtObjects, |      pub post_link_objects_self_contained: CrtObjects, | ||||||
| @@ -2651,6 +2652,7 @@ fn default() -> TargetOptions {
 | @@ -2352,6 +2353,7 @@ fn default() -> TargetOptions {
 | ||||||
|              relro_level: RelroLevel::None, |              relro_level: RelroLevel::None, | ||||||
|              pre_link_objects: Default::default(), |              pre_link_objects: Default::default(), | ||||||
|              post_link_objects: Default::default(), |              post_link_objects: Default::default(), | ||||||
| @ -57,42 +56,23 @@ index 321ab40403a3..54791c8892d8 100644 | |||||||
|              pre_link_objects_self_contained: Default::default(), |              pre_link_objects_self_contained: Default::default(), | ||||||
|              post_link_objects_self_contained: Default::default(), |              post_link_objects_self_contained: Default::default(), | ||||||
|              link_self_contained: LinkSelfContainedDefault::False, |              link_self_contained: LinkSelfContainedDefault::False, | ||||||
| @@ -3355,6 +3357,7 @@ macro_rules! key {
 | diff --git a/compiler/rustc_target/src/spec/targets/wasm32_wasi.rs b/compiler/rustc_target/src/spec/targets/wasm32_wasi.rs
 | ||||||
|          key!(linker_is_gnu_json = "linker-is-gnu", bool); | index 6dbcb01ea436..2151f86d0648 100644
 | ||||||
|          key!(pre_link_objects = "pre-link-objects", link_objects); | --- a/compiler/rustc_target/src/spec/targets/wasm32_wasi.rs
 | ||||||
|          key!(post_link_objects = "post-link-objects", link_objects); | +++ b/compiler/rustc_target/src/spec/targets/wasm32_wasi.rs
 | ||||||
| +        key!(external_lib_path, optional);
 | @@ -86,7 +86,11 @@ pub fn target() -> Target {
 | ||||||
|          key!(pre_link_objects_self_contained = "pre-link-objects-fallback", link_objects); |      options.post_link_objects_self_contained = crt_objects::post_wasi_self_contained(); | ||||||
|          key!(post_link_objects_self_contained = "post-link-objects-fallback", link_objects); |  | ||||||
|          // Deserializes the backwards-compatible variants of `-Clink-self-contained` |  | ||||||
| @@ -3636,6 +3639,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"); |  | ||||||
| diff --git a/compiler/rustc_target/src/spec/targets/wasm32_wasip1.rs b/compiler/rustc_target/src/spec/targets/wasm32_wasip1.rs
 |  | ||||||
| index 1cd30f21bec1..9a752d5712a6 100644
 |  | ||||||
| --- a/compiler/rustc_target/src/spec/targets/wasm32_wasip1.rs
 |  | ||||||
| +++ b/compiler/rustc_target/src/spec/targets/wasm32_wasip1.rs
 |  | ||||||
| @@ -19,11 +19,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. |      // 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::True;
 | ||||||
| +    options.link_self_contained = LinkSelfContainedDefault::False;
 | +    options.link_self_contained = LinkSelfContainedDefault::False;
 | ||||||
|  | +
 | ||||||
|  | +    options.pre_link_objects = options.pre_link_objects_self_contained.clone();
 | ||||||
|  | +    options.post_link_objects = options.post_link_objects_self_contained.clone();
 | ||||||
| +    options.external_lib_path = Some("/usr/wasm32-wasi/lib/wasm32-wasi".into());
 | +    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 |      // 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 |      // the target by default has a static crt which we're taking as a signal | ||||||
| -- 
 | -- 
 | ||||||
| 2.47.1 | 2.41.0 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,2 +0,0 @@ | |||||||
| %__cargo_vendor_path     ^%{_defaultlicensedir}(/[^/]+)+/cargo-vendor.txt$ |  | ||||||
| %__cargo_vendor_provides %{_rpmconfigdir}/cargo_vendor.prov |  | ||||||
| @ -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() |  | ||||||
| @ -1,7 +1,12 @@ | |||||||
| # __rustc: path to the default rustc executable | # Explicitly use bindir tools, in case others are in the PATH, | ||||||
|  | # like the rustup shims in a user's ~/.cargo/bin/. | ||||||
|  | # | ||||||
|  | # Since cargo 1.31, install only uses $CARGO_HOME/config, ignoring $PWD. | ||||||
|  | #   https://github.com/rust-lang/cargo/issues/6397 | ||||||
|  | # But we can set CARGO_HOME locally, which is a good idea anyway to make sure | ||||||
|  | # it never writes to ~/.cargo during rpmbuild. | ||||||
|  | %__cargo /usr/bin/env CARGO_HOME=.cargo RUSTFLAGS='%{build_rustflags}' /usr/bin/cargo | ||||||
| %__rustc /usr/bin/rustc | %__rustc /usr/bin/rustc | ||||||
| 
 |  | ||||||
| # __rustdoc: path to the default rustdoc executable |  | ||||||
| %__rustdoc /usr/bin/rustdoc | %__rustdoc /usr/bin/rustdoc | ||||||
| 
 | 
 | ||||||
| # rustflags_opt_level: default optimization level | # rustflags_opt_level: default optimization level | ||||||
| @ -35,54 +40,20 @@ | |||||||
|   -Copt-level=%rustflags_opt_level |   -Copt-level=%rustflags_opt_level | ||||||
|   -Cdebuginfo=%rustflags_debuginfo |   -Cdebuginfo=%rustflags_debuginfo | ||||||
|   -Ccodegen-units=%rustflags_codegen_units |   -Ccodegen-units=%rustflags_codegen_units | ||||||
|   -Cstrip=none |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # __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 | # __cargo_common_opts: common command line flags for cargo | ||||||
| # | # | ||||||
| # _smp_mflags: run builds and tests in parallel | # _smp_mflags: run builds and tests in parallel | ||||||
| %__cargo_common_opts %{?_smp_mflags} | %__cargo_common_opts %{?_smp_mflags} | ||||||
| 
 | 
 | ||||||
| # cargo_prep: macro to set up build environment for cargo projects | %cargo_prep(V:) (\ | ||||||
| # | %{__mkdir} -p .cargo \ | ||||||
| # This involves four steps: | cat > .cargo/config << EOF \ | ||||||
| # - 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]\ | [build]\ | ||||||
| rustc = "%{__rustc}"\ | rustc = "%{__rustc}"\ | ||||||
| rustdoc = "%{__rustdoc}"\ | rustdoc = "%{__rustdoc}"\ | ||||||
| \ | \ | ||||||
| [profile.rpm]\ |  | ||||||
| inherits = "release"\ |  | ||||||
| opt-level = %{rustflags_opt_level}\ |  | ||||||
| codegen-units = %{rustflags_codegen_units}\ |  | ||||||
| debug = %{rustflags_debuginfo}\ |  | ||||||
| strip = "none"\ |  | ||||||
| \ |  | ||||||
| [env]\ | [env]\ | ||||||
| CFLAGS = "%{build_cflags}"\ | CFLAGS = "%{build_cflags}"\ | ||||||
| CXXFLAGS = "%{build_cxxflags}"\ | CXXFLAGS = "%{build_cxxflags}"\ | ||||||
| @ -94,28 +65,27 @@ root = "%{buildroot}%{_prefix}"\ | |||||||
| [term]\ | [term]\ | ||||||
| verbose = true\ | verbose = true\ | ||||||
| EOF\ | EOF\ | ||||||
| %{-V:%{__tar} -xoaf %{S:%{-V*}}}\ | %if 0%{-V:1}\ | ||||||
| %{!?-N:\ | %{__tar} -xoaf %{S:%{-V*}}\ | ||||||
| cat >> .cargo/config.toml << EOF\ | cat >> .cargo/config << EOF \ | ||||||
| [source.vendored-sources]\ |  | ||||||
| directory = "%{-v*}%{-V:./vendor}"\ |  | ||||||
| \ | \ | ||||||
| [source.crates-io]\ | [source.crates-io]\ | ||||||
| registry = "https://crates.io"\ |  | ||||||
| replace-with = "vendored-sources"\ | replace-with = "vendored-sources"\ | ||||||
| EOF}\ | \ | ||||||
| %{__rm} -f Cargo.toml.orig\ | [source.vendored-sources]\ | ||||||
|  | directory = "./vendor"\ | ||||||
|  | EOF\ | ||||||
|  | %endif\ | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| # __cargo_parse_opts: function-like macro which parses common flags into the | # __cargo_parse_opts: function-like macro which parses common flags into the | ||||||
| #       equivalent command-line flags for cargo | #       equivalent command-line flags for cargo | ||||||
| %__cargo_parse_opts(naf:) %{shrink:\ | %__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}}} \ | ||||||
|     %{-f:%{-a:%{error:Can't specify both -f(%{-f*}) and -a}}}   \ |   %{-n:--no-default-features}                             \ | ||||||
|     %{-n:--no-default-features}                                 \ |   %{-a:--all-features}                                    \ | ||||||
|     %{-a:--all-features}                                        \ |   %{-f:--features %{-f*}}                                 \ | ||||||
|     %{-f:--features %{-f*}}                                     \ |   %{nil} | ||||||
|     %{nil}                                                      \ |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # NB: cargo_build/test/install do not use the -n/-a/-f argument parsing like | # NB: cargo_build/test/install do not use the -n/-a/-f argument parsing like | ||||||
| @ -124,11 +94,11 @@ EOF}\ | |||||||
| # explicitly use --no-default-features, --all-features, or --features XYZ. | # explicitly use --no-default-features, --all-features, or --features XYZ. | ||||||
| 
 | 
 | ||||||
| # cargo_build: builds the crate with cargo | # cargo_build: builds the crate with cargo | ||||||
| %cargo_build\ | %cargo_build \ | ||||||
| %{shrink:                                               \ | %{shrink:\ | ||||||
|     %{__cargo} build                                    \ |   %{__cargo} build                                   \ | ||||||
|     %{__cargo_common_opts}                              \ |     %{__cargo_common_opts}                           \ | ||||||
|     --profile rpm                                       \ |     --release                                        \ | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # cargo_test: runs the test suite with cargo | # cargo_test: runs the test suite with cargo | ||||||
| @ -138,12 +108,12 @@ EOF}\ | |||||||
| # "cargo test" argument parsing need to be bypassed, | # "cargo test" argument parsing need to be bypassed, | ||||||
| # i.e. "%%cargo_test -- --skip foo" for skipping all tests with names that | # i.e. "%%cargo_test -- --skip foo" for skipping all tests with names that | ||||||
| # match "foo". | # match "foo". | ||||||
| %cargo_test\ | %cargo_test \ | ||||||
| %{shrink:                                               \ | %{shrink:\ | ||||||
|     %{__cargo} test                                     \ |   %{__cargo} test                                    \ | ||||||
|     %{__cargo_common_opts}                              \ |     %{__cargo_common_opts}                           \ | ||||||
|     --profile rpm                                       \ |     --release                                        \ | ||||||
|     --no-fail-fast                                      \ |     --no-fail-fast                                   \ | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # cargo_install: install files into the buildroot | # cargo_install: install files into the buildroot | ||||||
| @ -153,14 +123,13 @@ EOF}\ | |||||||
| # "$CARGO_HOME/.crates.toml" file, which is used to keep track of which version | # "$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 a specific binary has been installed, but which conflicts between builds | ||||||
| # of different Rust applications and is not needed when building RPM packages. | # of different Rust applications and is not needed when building RPM packages. | ||||||
| %cargo_install\ | %cargo_install \ | ||||||
| %{shrink:                                                         \ | %{shrink:                                                         \ | ||||||
|   %{__cargo} install                                              \ |   %{__cargo} install                                              \ | ||||||
|     %{__cargo_common_opts}                                        \ |     %{__cargo_common_opts}                                        \ | ||||||
|     --profile rpm                                                 \ |  | ||||||
|     --no-track                                                    \ |     --no-track                                                    \ | ||||||
|     --path .                                                      \ |     --path .                                                      \ | ||||||
| } | }                                                                 \ | ||||||
| 
 | 
 | ||||||
| # cargo_license: print license information for all crate dependencies | # cargo_license: print license information for all crate dependencies | ||||||
| # | # | ||||||
| @ -176,21 +145,19 @@ EOF}\ | |||||||
| # The "cargo tree" command called by this macro will fail if there are missing | # The "cargo tree" command called by this macro will fail if there are missing | ||||||
| # (optional) dependencies. | # (optional) dependencies. | ||||||
| %cargo_license(naf:)\ | %cargo_license(naf:)\ | ||||||
| (\ | %{shrink:\ | ||||||
| set -euo pipefail\ |  | ||||||
| %{shrink:                                                           \ |  | ||||||
|     %{__cargo} tree                                                 \ |     %{__cargo} tree                                                 \ | ||||||
|     --workspace                                                     \ |     --workspace                                                     \ | ||||||
|     --offline                                                       \ |     --offline                                                       \ | ||||||
|     --edges no-build,no-dev,no-proc-macro                           \ |     --edges no-build,no-dev,no-proc-macro                           \ | ||||||
|     --no-dedupe                                                     \ |     --no-dedupe                                                     \ | ||||||
|  |     --target all                                                    \ | ||||||
|     %{__cargo_parse_opts %{-n} %{-a} %{-f:-f%{-f*}}}                \ |     %{__cargo_parse_opts %{-n} %{-a} %{-f:-f%{-f*}}}                \ | ||||||
|     --prefix none                                                   \ |     --prefix none                                                   \ | ||||||
|     --format "{l}: {p}"                                             \ |     --format "{l}: {p}"                                             \ | ||||||
|     | sed -e "s: ($(pwd)[^)]*)::g" -e "s: / :/:g" -e "s:/: OR :g"   \ |     | sed -e "s: ($(pwd)[^)]*)::g" -e "s: / :/:g" -e "s:/: OR :g"   \ | ||||||
|     | sort -u                                                       \ |     | sort -u | ||||||
| }\ | } | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| # cargo_license_summary: print license summary for all crate dependencies | # cargo_license_summary: print license summary for all crate dependencies | ||||||
| # | # | ||||||
| @ -199,46 +166,16 @@ set -euo pipefail\ | |||||||
| # in the dependency tree. This is useful for determining the correct License | # in the dependency tree. This is useful for determining the correct License | ||||||
| # tag for packages that contain compiled Rust binaries. | # tag for packages that contain compiled Rust binaries. | ||||||
| %cargo_license_summary(naf:)\ | %cargo_license_summary(naf:)\ | ||||||
| (\ | %{shrink:\ | ||||||
| set -euo pipefail\ |  | ||||||
| %{shrink:                                                           \ |  | ||||||
|     %{__cargo} tree                                                 \ |     %{__cargo} tree                                                 \ | ||||||
|     --workspace                                                     \ |     --workspace                                                     \ | ||||||
|     --offline                                                       \ |     --offline                                                       \ | ||||||
|     --edges no-build,no-dev,no-proc-macro                           \ |     --edges no-build,no-dev,no-proc-macro                           \ | ||||||
|     --no-dedupe                                                     \ |     --no-dedupe                                                     \ | ||||||
|  |     --target all                                                    \ | ||||||
|     %{__cargo_parse_opts %{-n} %{-a} %{-f:-f%{-f*}}}                \ |     %{__cargo_parse_opts %{-n} %{-a} %{-f:-f%{-f*}}}                \ | ||||||
|     --prefix none                                                   \ |     --prefix none                                                   \ | ||||||
|     --format "# {l}"                                                \ |     --format "# {l}"                                                \ | ||||||
|     | sed -e "s: / :/:g" -e "s:/: OR :g"                            \ |     | sed -e "s: / :/:g" -e "s:/: OR :g"                            \ | ||||||
|     | sort -u                                                       \ |     | 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                                              \ |  | ||||||
| }\ |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
|  | |||||||
							
								
								
									
										42
									
								
								SOURCES/rustc-1.75.0-disable-libssh2.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								SOURCES/rustc-1.75.0-disable-libssh2.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,42 @@ | |||||||
|  | --- ./rustc-beta-src/src/tools/cargo/Cargo.lock.orig	2023-11-12 12:24:35.000000000 -0800
 | ||||||
|  | +++ rustc-beta-src/src/tools/cargo/Cargo.lock	2023-11-14 17:01:32.010125953 -0800
 | ||||||
|  | @@ -2027,7 +2027,6 @@
 | ||||||
|  |  dependencies = [ | ||||||
|  |   "cc", | ||||||
|  |   "libc", | ||||||
|  | - "libssh2-sys",
 | ||||||
|  |   "libz-sys", | ||||||
|  |   "openssl-sys", | ||||||
|  |   "pkg-config", | ||||||
|  | @@ -2060,20 +2059,6 @@
 | ||||||
|  |  ] | ||||||
|  |   | ||||||
|  |  [[package]] | ||||||
|  | -name = "libssh2-sys"
 | ||||||
|  | -version = "0.3.0"
 | ||||||
|  | -source = "registry+https://github.com/rust-lang/crates.io-index"
 | ||||||
|  | -checksum = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee"
 | ||||||
|  | -dependencies = [
 | ||||||
|  | - "cc",
 | ||||||
|  | - "libc",
 | ||||||
|  | - "libz-sys",
 | ||||||
|  | - "openssl-sys",
 | ||||||
|  | - "pkg-config",
 | ||||||
|  | - "vcpkg",
 | ||||||
|  | -]
 | ||||||
|  | -
 | ||||||
|  | -[[package]]
 | ||||||
|  |  name = "libz-sys" | ||||||
|  |  version = "1.1.9" | ||||||
|  |  source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | --- ./rustc-beta-src/src/tools/cargo/Cargo.toml.orig	2023-11-14 17:01:32.010125953 -0800
 | ||||||
|  | +++ rustc-beta-src/src/tools/cargo/Cargo.toml	2023-11-14 17:02:44.645097701 -0800
 | ||||||
|  | @@ -40,7 +40,7 @@
 | ||||||
|  |  curl-sys = "0.4.68" | ||||||
|  |  filetime = "0.2.22" | ||||||
|  |  flate2 = { version = "1.0.28", default-features = false, features = ["zlib"] } | ||||||
|  | -git2 = "0.18.1"
 | ||||||
|  | +git2 = { version = "0.18.1", default-features = false, features = ["https"] }
 | ||||||
|  |  git2-curl = "0.19.0" | ||||||
|  |  gix = { version = "0.55.2", default-features = false, features = ["blocking-http-transport-curl", "progress-tree", "revision"] } | ||||||
|  |  gix-features-for-configuration-only = { version = "0.35.0", package = "gix-features", features = [ "parallel" ] } | ||||||
| @ -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	2024-12-12 14:07:10.755481543 -0800
 |  | ||||||
| +++ rustc-beta-src/src/tools/cargo/Cargo.lock	2024-12-12 14:07:10.756481534 -0800
 |  | ||||||
| @@ -2272,7 +2272,6 @@ checksum = "10472326a8a6477c3c20a64547b0
 |  | ||||||
|  dependencies = [ |  | ||||||
|   "cc", |  | ||||||
|   "libc", |  | ||||||
| - "libssh2-sys",
 |  | ||||||
|   "libz-sys", |  | ||||||
|   "openssl-sys", |  | ||||||
|   "pkg-config", |  | ||||||
| @@ -2313,20 +2312,6 @@ dependencies = [
 |  | ||||||
|   "pkg-config", |  | ||||||
|   "vcpkg", |  | ||||||
|  ] |  | ||||||
| -
 |  | ||||||
| -[[package]]
 |  | ||||||
| -name = "libssh2-sys"
 |  | ||||||
| -version = "0.3.0"
 |  | ||||||
| -source = "registry+https://github.com/rust-lang/crates.io-index"
 |  | ||||||
| -checksum = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee"
 |  | ||||||
| -dependencies = [
 |  | ||||||
| - "cc",
 |  | ||||||
| - "libc",
 |  | ||||||
| - "libz-sys",
 |  | ||||||
| - "openssl-sys",
 |  | ||||||
| - "pkg-config",
 |  | ||||||
| - "vcpkg",
 |  | ||||||
| -]
 |  | ||||||
|   |  | ||||||
|  [[package]] |  | ||||||
|  name = "libz-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	2024-12-12 14:07:10.756481534 -0800
 |  | ||||||
| +++ rustc-beta-src/src/tools/cargo/Cargo.toml	2024-12-12 14:07:56.866087428 -0800
 |  | ||||||
| @@ -47,7 +47,7 @@ curl = "0.4.46"
 |  | ||||||
|  curl-sys = "0.4.73" |  | ||||||
|  filetime = "0.2.23" |  | ||||||
|  flate2 = { version = "1.0.30", default-features = false, features = ["zlib"] } |  | ||||||
| -git2 = "0.19.0"
 |  | ||||||
| +git2 = { version = "0.19.0", default-features = false, features = ["https"] }
 |  | ||||||
|  git2-curl = "0.20.0" |  | ||||||
|  gix = { version = "0.67.0", default-features = false, features = ["blocking-http-transport-curl", "progress-tree", "parallel", "dirwalk"] } |  | ||||||
|  glob = "0.3.1" |  | ||||||
| @ -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	2024-12-07 06:47:38.000000000 -0800
 |  | ||||||
| +++ rustc-beta-src/src/tools/cargo/Cargo.lock	2024-12-12 14:02:54.412672539 -0800
 |  | ||||||
| @@ -2310,7 +2310,6 @@ version = "0.30.1"
 |  | ||||||
|  source = "registry+https://github.com/rust-lang/crates.io-index" |  | ||||||
|  checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" |  | ||||||
|  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	2024-12-12 14:02:54.412672539 -0800
 |  | ||||||
| +++ rustc-beta-src/src/tools/cargo/Cargo.toml	2024-12-12 14:03:25.665405417 -0800
 |  | ||||||
| @@ -80,7 +80,7 @@ proptest = "1.5.0"
 |  | ||||||
|  pulldown-cmark = { version = "0.12.0", default-features = false, features = ["html"] } |  | ||||||
|  rand = "0.8.5" |  | ||||||
|  regex = "1.10.5" |  | ||||||
| -rusqlite = { version = "0.32.0", features = ["bundled"] }
 |  | ||||||
| +rusqlite = { version = "0.32.0", features = [] }
 |  | ||||||
|  rustc-hash = "2.0.0" |  | ||||||
|  rustfix = { version = "0.9.0", path = "crates/rustfix" } |  | ||||||
|  same-file = "1.0.6" |  | ||||||
							
								
								
									
										483
									
								
								SPECS/rust.spec
									
									
									
									
									
								
							
							
						
						
									
										483
									
								
								SPECS/rust.spec
									
									
									
									
									
								
							| @ -1,6 +1,6 @@ | |||||||
| Name:           rust | Name:           rust | ||||||
| Version:        1.84.1 | Version:        1.75.0 | ||||||
| Release:        2%{?dist} | Release:        1%{?dist} | ||||||
| Summary:        The Rust Programming Language | 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-DFS-2016) | License:        (Apache-2.0 OR MIT) AND (Artistic-2.0 AND BSD-3-Clause AND ISC AND MIT AND MPL-2.0 AND Unicode-DFS-2016) | ||||||
| # ^ written as: (rust itself) and (bundled libraries) | # ^ written as: (rust itself) and (bundled libraries) | ||||||
| @ -14,9 +14,9 @@ ExclusiveArch:  %{rust_arches} | |||||||
| # To bootstrap from scratch, set the channel and date from src/stage0.json | # To bootstrap from scratch, set the channel and date from src/stage0.json | ||||||
| # e.g. 1.59.0 wants rustc: 1.58.0-2022-01-13 | # e.g. 1.59.0 wants rustc: 1.58.0-2022-01-13 | ||||||
| # or nightly wants some beta-YYYY-MM-DD | # or nightly wants some beta-YYYY-MM-DD | ||||||
| %global bootstrap_version 1.83.0 | %global bootstrap_version 1.74.0 | ||||||
| %global bootstrap_channel 1.83.0 | %global bootstrap_channel 1.74.0 | ||||||
| %global bootstrap_date 2024-11-28 | %global bootstrap_date 2023-11-16 | ||||||
| 
 | 
 | ||||||
| # Only the specified arches will use bootstrap binaries. | # Only the specified arches will use bootstrap binaries. | ||||||
| # NOTE: Those binaries used to be uploaded with every new release, but that was | # NOTE: Those binaries used to be uploaded with every new release, but that was | ||||||
| @ -25,10 +25,33 @@ ExclusiveArch:  %{rust_arches} | |||||||
| # add them to sources. Remember to remove them again after the bootstrap build! | # add them to sources. Remember to remove them again after the bootstrap build! | ||||||
| #global bootstrap_arches %%{rust_arches} | #global bootstrap_arches %%{rust_arches} | ||||||
| 
 | 
 | ||||||
|  | # Define a space-separated list of targets to ship rust-std-static-$triple for | ||||||
|  | # cross-compilation. The packages are noarch, but they're not fully | ||||||
|  | # reproducible between hosts, so only x86_64 actually builds it. | ||||||
|  | #ifarch x86_64 | ||||||
|  | # FIX: Except on RHEL8 modules, we can't filter a noarch package from shipping | ||||||
|  | # on certain arches, namely s390x for its lack of lld. So we need to make it an | ||||||
|  | # arch-specific package only for the supported arches. | ||||||
|  | %ifnarch s390x | ||||||
|  | %if 0%{?fedora} | ||||||
|  | %global mingw_targets i686-pc-windows-gnu x86_64-pc-windows-gnu | ||||||
|  | %endif | ||||||
|  | %global wasm_targets wasm32-unknown-unknown wasm32-wasi | ||||||
|  | %if 0%{?fedora} || 0%{?rhel} >= 10 | ||||||
|  | %global extra_targets x86_64-unknown-none x86_64-unknown-uefi | ||||||
|  | %endif | ||||||
|  | %endif | ||||||
|  | %global all_targets %{?mingw_targets} %{?wasm_targets} %{?extra_targets} | ||||||
|  | %define target_enabled() %{lua: | ||||||
|  |   print(string.find(rpm.expand(" %{all_targets} "), rpm.expand(" %1 "), 1, true) or 0) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| # We need CRT files for *-wasi targets, at least as new as the commit in | # 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 | # src/ci/docker/host-x86_64/dist-various-2/build-wasi-toolchain.sh | ||||||
|  | # (updated per https://github.com/rust-lang/rust/pull/96907) | ||||||
| %global wasi_libc_url https://github.com/WebAssembly/wasi-libc | %global wasi_libc_url https://github.com/WebAssembly/wasi-libc | ||||||
| %global wasi_libc_ref wasi-sdk-25 | #global wasi_libc_ref wasi-sdk-20 | ||||||
|  | %global wasi_libc_ref bd950eb128bff337153de217b11270f948d04bb4 | ||||||
| %global wasi_libc_name wasi-libc-%{wasi_libc_ref} | %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_source %{wasi_libc_url}/archive/%{wasi_libc_ref}/%{wasi_libc_name}.tar.gz | ||||||
| %global wasi_libc_dir %{_builddir}/%{wasi_libc_name} | %global wasi_libc_dir %{_builddir}/%{wasi_libc_name} | ||||||
| @ -42,42 +65,22 @@ ExclusiveArch:  %{rust_arches} | |||||||
| %bcond_with llvm_static | %bcond_with llvm_static | ||||||
| 
 | 
 | ||||||
| # We can also choose to just use Rust's bundled LLVM, in case the system LLVM | # We can also choose to just use Rust's bundled LLVM, in case the system LLVM | ||||||
| # is insufficient.  Rust currently requires LLVM 18.0+. | # is insufficient.  Rust currently requires LLVM 15.0+. | ||||||
| %global min_llvm_version 18.0.0 | %global min_llvm_version 15.0.0 | ||||||
| %global bundled_llvm_version 19.1.5 | %global bundled_llvm_version 17.0.5 | ||||||
| #global llvm_compat_version 17 |  | ||||||
| %global llvm llvm%{?llvm_compat_version} |  | ||||||
| %bcond_with bundled_llvm | %bcond_with bundled_llvm | ||||||
| 
 | 
 | ||||||
| # Requires stable libgit2 1.8, and not the next minor soname change. | # Requires stable libgit2 1.7, and not the next minor soname change. | ||||||
| # This needs to be consistent with the bindings in vendor/libgit2-sys. | # This needs to be consistent with the bindings in vendor/libgit2-sys. | ||||||
| %global min_libgit2_version 1.8.1 | %global min_libgit2_version 1.7.1 | ||||||
| %global next_libgit2_version 1.9.0~ | %global next_libgit2_version 1.8.0~ | ||||||
| %global bundled_libgit2_version 1.8.1 | %global bundled_libgit2_version 1.7.1 | ||||||
| %if 0%{?fedora} >= 41 | %if 0%{?fedora} >= 39 | ||||||
| %bcond_with bundled_libgit2 | %bcond_with bundled_libgit2 | ||||||
| %else | %else | ||||||
| %bcond_without bundled_libgit2 | %bcond_without bundled_libgit2 | ||||||
| %endif | %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 |  | ||||||
| %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.46.0 |  | ||||||
| %if 0%{?rhel} && 0%{?rhel} < 10 |  | ||||||
| %bcond_without bundled_sqlite3 |  | ||||||
| %else |  | ||||||
| %bcond_with bundled_sqlite3 |  | ||||||
| %endif |  | ||||||
| 
 |  | ||||||
| %if 0%{?rhel} | %if 0%{?rhel} | ||||||
| # Disable cargo->libgit2->libssh2 on RHEL, as it's not approved for FIPS (rhbz1732949) | # Disable cargo->libgit2->libssh2 on RHEL, as it's not approved for FIPS (rhbz1732949) | ||||||
| %bcond_without disabled_libssh2 | %bcond_without disabled_libssh2 | ||||||
| @ -85,27 +88,10 @@ ExclusiveArch:  %{rust_arches} | |||||||
| %bcond_with disabled_libssh2 | %bcond_with disabled_libssh2 | ||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| # Reduce rustc's own debuginfo and optimizations to conserve 32-bit memory. |  | ||||||
| # e.g. https://github.com/rust-lang/rust/issues/45854 |  | ||||||
| %global reduced_debuginfo 0 |  | ||||||
| %if 0%{?__isa_bits} == 32 | %if 0%{?__isa_bits} == 32 | ||||||
| %global reduced_debuginfo 1 | # Disable PGO on 32-bit to reduce build memory | ||||||
| %endif |  | ||||||
| # Also on current riscv64 hardware, although future hardware will be |  | ||||||
| # able to handle it. |  | ||||||
| # e.g. http://fedora.riscv.rocks/koji/buildinfo?buildID=249870 |  | ||||||
| %ifarch riscv64 |  | ||||||
| %global reduced_debuginfo 1 |  | ||||||
| %endif |  | ||||||
| 
 |  | ||||||
| %if 0%{?reduced_debuginfo} |  | ||||||
| %global enable_debuginfo --debuginfo-level=0 --debuginfo-level-std=2 |  | ||||||
| %global enable_rust_opts --set rust.codegen-units-std=1 |  | ||||||
| %bcond_with rustc_pgo | %bcond_with rustc_pgo | ||||||
| %else | %else | ||||||
| # Build rustc with full debuginfo, CGU=1, ThinLTO, and PGO. |  | ||||||
| %global enable_debuginfo --debuginfo-level=2 |  | ||||||
| %global enable_rust_opts --set rust.codegen-units=1 --set rust.lto=thin |  | ||||||
| %bcond_without rustc_pgo | %bcond_without rustc_pgo | ||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| @ -136,28 +122,25 @@ Patch3:         0001-Let-environment-variables-override-some-default-CPUs.patch | |||||||
| Patch4:         0001-bootstrap-allow-disabling-target-self-contained.patch | Patch4:         0001-bootstrap-allow-disabling-target-self-contained.patch | ||||||
| Patch5:         0002-set-an-external-library-path-for-wasm32-wasi.patch | Patch5:         0002-set-an-external-library-path-for-wasm32-wasi.patch | ||||||
| 
 | 
 | ||||||
| # We don't want to use the bundled library in libsqlite3-sys | # https://github.com/rust-lang/rust/pull/117982 | ||||||
| Patch6:         rustc-1.84.0-unbundle-sqlite.patch | Patch6:         0001-bootstrap-only-show-PGO-warnings-when-verbose.patch | ||||||
| 
 |  | ||||||
| # https://github.com/rust-lang/cc-rs/issues/1354 |  | ||||||
| Patch7:         0001-Only-translate-profile-flags-for-Clang.patch |  | ||||||
| 
 | 
 | ||||||
| ### RHEL-specific patches below ### | ### RHEL-specific patches below ### | ||||||
| 
 | 
 | ||||||
| # Simple rpm macros for rust-toolset (as opposed to full rust-packaging) | # Simple rpm macros for rust-toolset (as opposed to full rust-packaging) | ||||||
| Source100:      macros.rust-toolset | Source100:      macros.rust-toolset | ||||||
| Source101:      cargo_vendor.attr |  | ||||||
| Source102:      cargo_vendor.prov |  | ||||||
| 
 | 
 | ||||||
| # Disable cargo->libgit2->libssh2 on RHEL, as it's not approved for FIPS (rhbz1732949) | # Disable cargo->libgit2->libssh2 on RHEL, as it's not approved for FIPS (rhbz1732949) | ||||||
| Patch100:       rustc-1.84.0-disable-libssh2.patch | Patch100:       rustc-1.75.0-disable-libssh2.patch | ||||||
| 
 | 
 | ||||||
| # Get the Rust triple for any architecture and ABI. | # Get the Rust triple for any arch. | ||||||
| %{lua: function rust_triple(arch, abi) | %{lua: function rust_triple(arch) | ||||||
|   abi = abi or "gnu" |   local abi = "gnu" | ||||||
|   if arch == "armv7hl" then |   if arch == "armv7hl" then | ||||||
|     arch = "armv7" |     arch = "armv7" | ||||||
|     abi = abi.."eabihf" |     abi = "gnueabihf" | ||||||
|  |   elseif arch == "ppc64" then | ||||||
|  |     arch = "powerpc64" | ||||||
|   elseif arch == "ppc64le" then |   elseif arch == "ppc64le" then | ||||||
|     arch = "powerpc64le" |     arch = "powerpc64le" | ||||||
|   elseif arch == "riscv64" then |   elseif arch == "riscv64" then | ||||||
| @ -166,42 +149,11 @@ Patch100:       rustc-1.84.0-disable-libssh2.patch | |||||||
|   return arch.."-unknown-linux-"..abi |   return arch.."-unknown-linux-"..abi | ||||||
| end} | end} | ||||||
| 
 | 
 | ||||||
| %define rust_triple() %{lua: print(rust_triple( | %global rust_triple %{lua: print(rust_triple(rpm.expand("%{_target_cpu}")))} | ||||||
|   rpm.expand("%{?1}%{!?1:%{_target_cpu}}"), |  | ||||||
|   rpm.expand("%{?2}%{!?2:gnu}") |  | ||||||
| ))} |  | ||||||
| 
 | 
 | ||||||
| # Get the environment variable form of the Rust triple. | # Get the environment form of the Rust triple | ||||||
| %define rust_triple_env() %{lua: | %global rust_triple_env %{lua: | ||||||
|   print(rpm.expand("%{rust_triple %*}"):gsub("-", "_"):upper()) |   print(string.upper(string.gsub(rpm.expand("%{rust_triple}"), "-", "_"))) | ||||||
| } |  | ||||||
| 
 |  | ||||||
| # Define a space-separated list of targets to ship rust-std-static-$triple for |  | ||||||
| # cross-compilation. The packages are noarch, but they're not fully |  | ||||||
| # reproducible between hosts, so only x86_64 actually builds it. |  | ||||||
| %ifarch x86_64 |  | ||||||
| %if 0%{?fedora} |  | ||||||
| %global mingw_targets i686-pc-windows-gnu x86_64-pc-windows-gnu |  | ||||||
| %endif |  | ||||||
| %global wasm_targets wasm32-unknown-unknown wasm32-wasip1 |  | ||||||
| %if 0%{?fedora} |  | ||||||
| %global extra_targets x86_64-unknown-none x86_64-unknown-uefi |  | ||||||
| %endif |  | ||||||
| %if 0%{?rhel} >= 10 |  | ||||||
| %global extra_targets x86_64-unknown-none |  | ||||||
| %endif |  | ||||||
| %endif |  | ||||||
| %ifarch aarch64 |  | ||||||
| %if 0%{?fedora} |  | ||||||
| %global extra_targets aarch64-unknown-none-softfloat aarch64-unknown-uefi |  | ||||||
| %endif |  | ||||||
| %if 0%{?rhel} >= 10 |  | ||||||
| %global extra_targets aarch64-unknown-none-softfloat |  | ||||||
| %endif |  | ||||||
| %endif |  | ||||||
| %global all_targets %{?mingw_targets} %{?wasm_targets} %{?extra_targets} |  | ||||||
| %define target_enabled() %{lua: |  | ||||||
|   print(string.find(rpm.expand(" %{all_targets} "), rpm.expand(" %1 "), 1, true) or 0) |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| %if %defined bootstrap_arches | %if %defined bootstrap_arches | ||||||
| @ -235,16 +187,14 @@ end} | |||||||
| %global local_rust_root %{_builddir}/rust-%{bootstrap_suffix} | %global local_rust_root %{_builddir}/rust-%{bootstrap_suffix} | ||||||
| Provides:       bundled(%{name}-bootstrap) = %{bootstrap_version} | Provides:       bundled(%{name}-bootstrap) = %{bootstrap_version} | ||||||
| %else | %else | ||||||
| BuildRequires:  (cargo >= %{bootstrap_version} with cargo <= %{version}) | BuildRequires:  cargo >= %{bootstrap_version} | ||||||
| BuildRequires:  (%{name} >= %{bootstrap_version} with %{name} <= %{version}) | BuildRequires:  (%{name} >= %{bootstrap_version} with %{name} <= %{version}) | ||||||
| %global local_rust_root %{_prefix} | %global local_rust_root %{_prefix} | ||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| BuildRequires:  make | BuildRequires:  make | ||||||
| BuildRequires:  gcc-toolset-14-annobin-plugin-gcc | BuildRequires:  gcc | ||||||
| BuildRequires:  gcc-toolset-14-binutils | BuildRequires:  gcc-c++ | ||||||
| BuildRequires:  gcc-toolset-14-gcc |  | ||||||
| BuildRequires:  gcc-toolset-14-gcc-c++ |  | ||||||
| BuildRequires:  ncurses-devel | BuildRequires:  ncurses-devel | ||||||
| # explicit curl-devel to avoid httpd24-curl (rhbz1540167) | # explicit curl-devel to avoid httpd24-curl (rhbz1540167) | ||||||
| BuildRequires:  curl-devel | BuildRequires:  curl-devel | ||||||
| @ -257,14 +207,6 @@ BuildRequires:  pkgconfig(zlib) | |||||||
| BuildRequires:  (pkgconfig(libgit2) >= %{min_libgit2_version} with pkgconfig(libgit2) < %{next_libgit2_version}) | BuildRequires:  (pkgconfig(libgit2) >= %{min_libgit2_version} with pkgconfig(libgit2) < %{next_libgit2_version}) | ||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| %if %{without bundled_oniguruma} |  | ||||||
| BuildRequires:  pkgconfig(oniguruma) >= %{min_oniguruma_version} |  | ||||||
| %endif |  | ||||||
| 
 |  | ||||||
| %if %{without bundled_sqlite3} |  | ||||||
| BuildRequires:  pkgconfig(sqlite3) >= %{min_sqlite3_version} |  | ||||||
| %endif |  | ||||||
| 
 |  | ||||||
| %if %{without disabled_libssh2} | %if %{without disabled_libssh2} | ||||||
| BuildRequires:  pkgconfig(libssh2) | BuildRequires:  pkgconfig(libssh2) | ||||||
| %endif | %endif | ||||||
| @ -282,9 +224,10 @@ BuildRequires:  ninja-build | |||||||
| Provides:       bundled(llvm) = %{bundled_llvm_version} | Provides:       bundled(llvm) = %{bundled_llvm_version} | ||||||
| %else | %else | ||||||
| BuildRequires:  cmake >= 3.5.1 | BuildRequires:  cmake >= 3.5.1 | ||||||
| %if %defined llvm_compat_version | %if %defined llvm | ||||||
| %global llvm_root %{_libdir}/%{llvm} | %global llvm_root %{_libdir}/%{llvm} | ||||||
| %else | %else | ||||||
|  | %global llvm llvm | ||||||
| %global llvm_root %{_prefix} | %global llvm_root %{_prefix} | ||||||
| %endif | %endif | ||||||
| BuildRequires:  %{llvm}-devel >= %{min_llvm_version} | BuildRequires:  %{llvm}-devel >= %{min_llvm_version} | ||||||
| @ -329,14 +272,6 @@ Requires:       /usr/bin/cc | |||||||
| # support custom-derive plugins like #[proc_macro_derive(Foo)]. | # support custom-derive plugins like #[proc_macro_derive(Foo)]. | ||||||
| %global _find_debuginfo_opts --keep-section .rustc | %global _find_debuginfo_opts --keep-section .rustc | ||||||
| 
 | 
 | ||||||
| # The standard library rlibs are essentially static archives, but we don't want |  | ||||||
| # to strip them because that impairs the debuginfo of all Rust programs. |  | ||||||
| # It also had a tendency to break the cross-compiled libraries: |  | ||||||
| # - wasm targets lost the archive index, which we were repairing with llvm-ranlib |  | ||||||
| # - uefi targets couldn't link builtins like memcpy, possibly due to lost COMDAT flags |  | ||||||
| %global __brp_strip_static_archive %{nil} |  | ||||||
| %global __brp_strip_lto %{nil} |  | ||||||
| 
 |  | ||||||
| %if %{without bundled_llvm} | %if %{without bundled_llvm} | ||||||
| %if "%{llvm_root}" == "%{_prefix}" || 0%{?scl:1} | %if "%{llvm_root}" == "%{_prefix}" || 0%{?scl:1} | ||||||
| %global llvm_has_filecheck 1 | %global llvm_has_filecheck 1 | ||||||
| @ -366,10 +301,15 @@ BuildRequires:  clang | |||||||
| BuildRequires:  wasi-libc-static | BuildRequires:  wasi-libc-static | ||||||
| %endif | %endif | ||||||
| BuildRequires:  lld | BuildRequires:  lld | ||||||
|  | # brp-strip-static-archive breaks the archive index for wasm | ||||||
|  | %global __os_install_post \ | ||||||
|  | %__os_install_post \ | ||||||
|  | find '%{buildroot}%{rustlibdir}'/wasm*/lib -type f -regex '.*\\.\\(a\\|rlib\\)' -print -exec '%{llvm_root}/bin/llvm-ranlib' '{}' ';' \ | ||||||
|  | %{nil} | ||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| # For profiler_builtins | # For profiler_builtins | ||||||
| BuildRequires:  compiler-rt%{?llvm_compat_version} | BuildRequires:  compiler-rt | ||||||
| 
 | 
 | ||||||
| # This component was removed as of Rust 1.69.0. | # This component was removed as of Rust 1.69.0. | ||||||
| # https://github.com/rust-lang/rust/pull/101841 | # https://github.com/rust-lang/rust/pull/101841 | ||||||
| @ -427,22 +367,22 @@ BuildArch:      noarch | |||||||
| %if %target_enabled wasm32-unknown-unknown | %if %target_enabled wasm32-unknown-unknown | ||||||
| %target_package wasm32-unknown-unknown | %target_package wasm32-unknown-unknown | ||||||
| Requires:       lld >= 8.0 | Requires:       lld >= 8.0 | ||||||
| BuildArch:      noarch | # FIX: we can't be noarch while excluding s390x for lack of lld | ||||||
|  | # BuildArch:      noarch | ||||||
| %target_description wasm32-unknown-unknown WebAssembly | %target_description wasm32-unknown-unknown WebAssembly | ||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| %if %target_enabled wasm32-wasip1 | %if %target_enabled wasm32-wasi | ||||||
| %target_package wasm32-wasip1 | %target_package wasm32-wasi | ||||||
| Requires:       lld >= 8.0 | Requires:       lld >= 8.0 | ||||||
| %if %with bundled_wasi_libc | %if %with bundled_wasi_libc | ||||||
| Provides:       bundled(wasi-libc) | Provides:       bundled(wasi-libc) | ||||||
| %else | %else | ||||||
| Requires:       wasi-libc-static | Requires:       wasi-libc-static | ||||||
| %endif | %endif | ||||||
| BuildArch:      noarch | # FIX: we can't be noarch while excluding s390x for lack of lld | ||||||
| # https://blog.rust-lang.org/2024/04/09/updates-to-rusts-wasi-targets.html | # BuildArch:      noarch | ||||||
| Obsoletes:      %{name}-std-static-wasm32-wasi < 1.84.0~ | %target_description wasm32-wasi WebAssembly | ||||||
| %target_description wasm32-wasip1 WebAssembly |  | ||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| %if %target_enabled x86_64-unknown-none | %if %target_enabled x86_64-unknown-none | ||||||
| @ -451,24 +391,12 @@ Requires:       lld | |||||||
| %target_description x86_64-unknown-none embedded | %target_description x86_64-unknown-none embedded | ||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| %if %target_enabled aarch64-unknown-uefi |  | ||||||
| %target_package aarch64-unknown-uefi |  | ||||||
| Requires:       lld |  | ||||||
| %target_description aarch64-unknown-uefi embedded |  | ||||||
| %endif |  | ||||||
| 
 |  | ||||||
| %if %target_enabled x86_64-unknown-uefi | %if %target_enabled x86_64-unknown-uefi | ||||||
| %target_package x86_64-unknown-uefi | %target_package x86_64-unknown-uefi | ||||||
| Requires:       lld | Requires:       lld | ||||||
| %target_description x86_64-unknown-uefi embedded | %target_description x86_64-unknown-uefi embedded | ||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| %if %target_enabled aarch64-unknown-none-softfloat |  | ||||||
| %target_package aarch64-unknown-none-softfloat |  | ||||||
| Requires:       lld |  | ||||||
| %target_description aarch64-unknown-none-softfloat embedded |  | ||||||
| %endif |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| %package debugger-common | %package debugger-common | ||||||
| Summary:        Common debugger pretty printers for Rust | Summary:        Common debugger pretty printers for Rust | ||||||
| @ -493,7 +421,7 @@ programs. | |||||||
| Summary:        LLDB pretty printers for Rust | Summary:        LLDB pretty printers for Rust | ||||||
| BuildArch:      noarch | BuildArch:      noarch | ||||||
| Requires:       lldb | Requires:       lldb | ||||||
| Requires:       python3.12-lldb | Requires:       python3-lldb | ||||||
| Requires:       %{name}-debugger-common = %{version}-%{release} | Requires:       %{name}-debugger-common = %{version}-%{release} | ||||||
| 
 | 
 | ||||||
| %description lldb | %description lldb | ||||||
| @ -524,9 +452,6 @@ Summary:        Rust's package manager and build tool | |||||||
| %if %with bundled_libgit2 | %if %with bundled_libgit2 | ||||||
| Provides:       bundled(libgit2) = %{bundled_libgit2_version} | Provides:       bundled(libgit2) = %{bundled_libgit2_version} | ||||||
| %endif | %endif | ||||||
| %if %with bundled_sqlite3 |  | ||||||
| Provides:       bundled(sqlite) = %{bundled_sqlite3_version} |  | ||||||
| %endif |  | ||||||
| # For tests: | # For tests: | ||||||
| BuildRequires:  git-core | BuildRequires:  git-core | ||||||
| # Cargo is not much use without Rust | # Cargo is not much use without Rust | ||||||
| @ -560,9 +485,6 @@ A tool for formatting Rust code according to style guidelines. | |||||||
| %package analyzer | %package analyzer | ||||||
| Summary:        Rust implementation of the Language Server Protocol | Summary:        Rust implementation of the Language Server Protocol | ||||||
| 
 | 
 | ||||||
| # /usr/bin/rust-analyzer is dynamically linked against internal rustc libs |  | ||||||
| Requires:       %{name}%{?_isa} = %{version}-%{release} |  | ||||||
| 
 |  | ||||||
| # The standard library sources are needed for most functionality. | # The standard library sources are needed for most functionality. | ||||||
| Recommends:     %{name}-src | Recommends:     %{name}-src | ||||||
| 
 | 
 | ||||||
| @ -645,10 +567,7 @@ rm -rf %{wasi_libc_dir}/dlmalloc/ | |||||||
| %if %without bundled_wasi_libc | %if %without bundled_wasi_libc | ||||||
| %patch -P5 -p1 | %patch -P5 -p1 | ||||||
| %endif | %endif | ||||||
| %if %without bundled_sqlite3 |  | ||||||
| %patch -P6 -p1 | %patch -P6 -p1 | ||||||
| %endif |  | ||||||
| %patch -P7 -p1 -d vendor/cc-1.2.5 |  | ||||||
| 
 | 
 | ||||||
| %if %with disabled_libssh2 | %if %with disabled_libssh2 | ||||||
| %patch -P100 -p1 | %patch -P100 -p1 | ||||||
| @ -665,10 +584,6 @@ rm -rf src/llvm-project/ | |||||||
| mkdir -p src/llvm-project/libunwind/ | mkdir -p src/llvm-project/libunwind/ | ||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| # Remove submodules we don't need. |  | ||||||
| rm -rf src/gcc |  | ||||||
| rm -rf src/tools/enzyme |  | ||||||
| rm -rf src/tools/rustc-perf |  | ||||||
| 
 | 
 | ||||||
| # Remove other unused vendored libraries. This leaves the directory in place, | # Remove other unused vendored libraries. This leaves the directory in place, | ||||||
| # because some build scripts watch them, e.g. "cargo:rerun-if-changed=curl". | # because some build scripts watch them, e.g. "cargo:rerun-if-changed=curl". | ||||||
| @ -677,7 +592,6 @@ rm -rf src/tools/rustc-perf | |||||||
| %clear_dir vendor/*jemalloc-sys*/jemalloc/ | %clear_dir vendor/*jemalloc-sys*/jemalloc/ | ||||||
| %clear_dir vendor/libffi-sys*/libffi/ | %clear_dir vendor/libffi-sys*/libffi/ | ||||||
| %clear_dir vendor/libmimalloc-sys*/c_src/mimalloc/ | %clear_dir vendor/libmimalloc-sys*/c_src/mimalloc/ | ||||||
| %clear_dir vendor/libsqlite3-sys*/sqlcipher/ |  | ||||||
| %clear_dir vendor/libssh2-sys*/libssh2/ | %clear_dir vendor/libssh2-sys*/libssh2/ | ||||||
| %clear_dir vendor/libz-sys*/src/zlib{,-ng}/ | %clear_dir vendor/libz-sys*/src/zlib{,-ng}/ | ||||||
| %clear_dir vendor/lzma-sys*/xz-*/ | %clear_dir vendor/lzma-sys*/xz-*/ | ||||||
| @ -687,14 +601,6 @@ rm -rf src/tools/rustc-perf | |||||||
| %clear_dir vendor/libgit2-sys*/libgit2/ | %clear_dir vendor/libgit2-sys*/libgit2/ | ||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| %if %without bundled_oniguruma |  | ||||||
| %clear_dir vendor/onig_sys*/oniguruma/ |  | ||||||
| %endif |  | ||||||
| 
 |  | ||||||
| %if %without bundled_sqlite3 |  | ||||||
| %clear_dir vendor/libsqlite3-sys*/sqlite3/ |  | ||||||
| %endif |  | ||||||
| 
 |  | ||||||
| %if %with disabled_libssh2 | %if %with disabled_libssh2 | ||||||
| rm -rf vendor/libssh2-sys*/ | rm -rf vendor/libssh2-sys*/ | ||||||
| %endif | %endif | ||||||
| @ -738,38 +644,34 @@ find -name '*.rs' -type f -perm /111 -exec chmod -v -x '{}' '+' | |||||||
|   print(env) |   print(env) | ||||||
| end} | end} | ||||||
| 
 | 
 | ||||||
| # Set up shared environment variables for build/install/check. | # Set up shared environment variables for build/install/check | ||||||
| # *_USE_PKG_CONFIG=1 convinces *-sys crates to use the system library. | %global rust_env %{?rustflags:RUSTFLAGS="%{rustflags}"} %{rustc_target_cpus} | ||||||
| %global rust_env %{shrink: | %if %without disabled_libssh2 | ||||||
|   %{?rustflags:RUSTFLAGS="%{rustflags}"} | # convince libssh2-sys to use the distro libssh2 | ||||||
|   %{rustc_target_cpus} | %global rust_env %{?rust_env} LIBSSH2_SYS_USE_PKG_CONFIG=1 | ||||||
|   %{!?with_bundled_oniguruma:RUSTONIG_SYSTEM_LIBONIG=1} | %endif | ||||||
|   %{!?with_bundled_sqlite3:LIBSQLITE3_SYS_USE_PKG_CONFIG=1} | %global export_rust_env %{?rust_env:export %{rust_env}} | ||||||
|   %{!?with_disabled_libssh2:LIBSSH2_SYS_USE_PKG_CONFIG=1} |  | ||||||
| } |  | ||||||
| %global export_rust_env export %{rust_env} ; source /opt/rh/gcc-toolset-14/enable |  | ||||||
| 
 | 
 | ||||||
| %build | %build | ||||||
| %{export_rust_env} | %{export_rust_env} | ||||||
| 
 | 
 | ||||||
| # Some builders have relatively little memory for their CPU count. | %ifarch %{arm} %{ix86} | ||||||
| # At least 4GB per CPU is a good rule of thumb for building rustc. | # full debuginfo and compiler opts are exhausting memory; just do libstd for now | ||||||
| %if ! %defined constrain_build | # https://github.com/rust-lang/rust/issues/45854 | ||||||
| %define constrain_build(m:) %{lua: | %define enable_debuginfo --debuginfo-level=0 --debuginfo-level-std=2 | ||||||
|   for l in io.lines('/proc/meminfo') do | %define enable_rust_opts --set rust.codegen-units-std=1 | ||||||
|     if l:sub(1, 9) == "MemTotal:" then | %else | ||||||
|       local opt_m = math.tointeger(rpm.expand("%{-m*}")) | %define enable_debuginfo --debuginfo-level=2 | ||||||
|       local mem_total = math.tointeger(string.match(l, "MemTotal:%s+(%d+)")) | %define enable_rust_opts --set rust.codegen-units=1 --set rust.lto=thin | ||||||
|       local cpu_limit = math.max(1, mem_total // (opt_m * 1024)) |  | ||||||
|       if cpu_limit < math.tointeger(rpm.expand("%_smp_build_ncpus")) then |  | ||||||
|         rpm.define("_smp_build_ncpus " .. cpu_limit) |  | ||||||
|       end |  | ||||||
|       break |  | ||||||
|     end |  | ||||||
|   end |  | ||||||
| } |  | ||||||
| %endif | %endif | ||||||
| %constrain_build -m 4096 | 
 | ||||||
|  | # Some builders have relatively little memory for their CPU count. | ||||||
|  | # At least 2GB per CPU is a good rule of thumb for building rustc. | ||||||
|  | ncpus=$(/usr/bin/getconf _NPROCESSORS_ONLN) | ||||||
|  | max_cpus=$(( ($(free -g | awk '/^Mem:/{print $2}') + 1) / 2 )) | ||||||
|  | if [ "$max_cpus" -ge 1 -a "$max_cpus" -lt "$ncpus" ]; then | ||||||
|  |   ncpus="$max_cpus" | ||||||
|  | fi | ||||||
| 
 | 
 | ||||||
| %if %defined mingw_targets | %if %defined mingw_targets | ||||||
| %define mingw_target_config %{shrink: | %define mingw_target_config %{shrink: | ||||||
| @ -788,30 +690,26 @@ end} | |||||||
| 
 | 
 | ||||||
| %if %defined wasm_targets | %if %defined wasm_targets | ||||||
| %if %with bundled_wasi_libc | %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} 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 | %define wasm_target_config --set target.wasm32-wasi.wasi-root=%{wasi_libc_dir}/sysroot | ||||||
| %define wasm_target_config %{shrink: |  | ||||||
|   --set target.wasm32-wasip1.wasi-root=%{wasi_libc_dir}/sysroot |  | ||||||
| } |  | ||||||
| %else | %else | ||||||
| %define wasm_target_config %{shrink: | %define wasm_target_config %{shrink: | ||||||
|   --set target.wasm32-wasip1.wasi-root=%{_prefix}/wasm32-wasi |   --set target.wasm32-wasi.wasi-root=%{_prefix}/wasm32-wasi | ||||||
|   --set target.wasm32-wasip1.self-contained=false |   --set target.wasm32-wasi.self-contained=false | ||||||
| } | } | ||||||
| %endif | %endif | ||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| # Find the compiler-rt library for the Rust profiler_builtins crate. | # Find the compiler-rt library for the Rust profiler_builtins crate. | ||||||
| %if %defined llvm_compat_version | %if 0%{?clang_major_version} >= 17 | ||||||
| # clang_resource_dir is not defined for compat builds. |  | ||||||
| %define profiler /usr/lib/clang/%{llvm_compat_version}/lib/%{_arch}-redhat-linux-gnu/libclang_rt.profile.a |  | ||||||
| %else |  | ||||||
| %define profiler %{clang_resource_dir}/lib/%{_arch}-redhat-linux-gnu/libclang_rt.profile.a | %define profiler %{clang_resource_dir}/lib/%{_arch}-redhat-linux-gnu/libclang_rt.profile.a | ||||||
|  | %else | ||||||
|  | # The exact profiler path is version dependent.. | ||||||
|  | %define profiler %(echo %{_libdir}/clang/??/lib/libclang_rt.profile-*.a) | ||||||
| %endif | %endif | ||||||
| test -r "%{profiler}" | test -r "%{profiler}" | ||||||
| 
 | 
 | ||||||
| %configure --disable-option-checking \ | %configure --disable-option-checking \ | ||||||
|   --docdir=%{_pkgdocdir} \ |  | ||||||
|   --libdir=%{common_libdir} \ |   --libdir=%{common_libdir} \ | ||||||
|   --build=%{rust_triple} --host=%{rust_triple} --target=%{rust_triple} \ |   --build=%{rust_triple} --host=%{rust_triple} --target=%{rust_triple} \ | ||||||
|   --set target.%{rust_triple}.linker=%{__cc} \ |   --set target.%{rust_triple}.linker=%{__cc} \ | ||||||
| @ -829,52 +727,47 @@ test -r "%{profiler}" | |||||||
|     %{!?llvm_has_filecheck: --disable-codegen-tests} \ |     %{!?llvm_has_filecheck: --disable-codegen-tests} \ | ||||||
|     %{!?with_llvm_static: --enable-llvm-link-shared } } \ |     %{!?with_llvm_static: --enable-llvm-link-shared } } \ | ||||||
|   --disable-llvm-static-stdcpp \ |   --disable-llvm-static-stdcpp \ | ||||||
|   --disable-llvm-bitcode-linker \ |  | ||||||
|   --disable-lld \ |  | ||||||
|   --disable-rpath \ |   --disable-rpath \ | ||||||
|   %{enable_debuginfo} \ |   %{enable_debuginfo} \ | ||||||
|   %{enable_rust_opts} \ |   %{enable_rust_opts} \ | ||||||
|   --set build.jobs=%_smp_build_ncpus \ |  | ||||||
|   --set build.build-stage=2 \ |   --set build.build-stage=2 \ | ||||||
|   --set build.doc-stage=2 \ |   --set build.doc-stage=2 \ | ||||||
|   --set build.install-stage=2 \ |   --set build.install-stage=2 \ | ||||||
|   --set build.test-stage=2 \ |   --set build.test-stage=2 \ | ||||||
|   --set build.optimized-compiler-builtins=false \ |  | ||||||
|   --set rust.llvm-tools=false \ |  | ||||||
|   --enable-extended \ |   --enable-extended \ | ||||||
|   --tools=cargo,clippy,rls,rust-analyzer,rustfmt,src \ |   --tools=cargo,clippy,rls,rust-analyzer,rustfmt,src \ | ||||||
|   --enable-vendor \ |   --enable-vendor \ | ||||||
|   --enable-verbose-tests \ |   --enable-verbose-tests \ | ||||||
|  |   --dist-compression-formats=gz \ | ||||||
|   --release-channel=%{channel} \ |   --release-channel=%{channel} \ | ||||||
|   --release-description="%{?fedora:Fedora }%{?rhel:Red Hat }%{version}-%{release}" |   --release-description="%{?fedora:Fedora }%{?rhel:Red Hat }%{version}-%{release}" | ||||||
| 
 | 
 | ||||||
| %global __x %{__python3} ./x.py | %global __x %{__python3} ./x.py | ||||||
|  | %global __xk %{__x} --keep-stage=0 --keep-stage=1 | ||||||
| 
 | 
 | ||||||
| %if %with rustc_pgo | %if %with rustc_pgo | ||||||
| # Build the compiler with profile instrumentation | # Build the compiler with profile instrumentation | ||||||
| %define profraw $PWD/build/profiles | PROFRAW="$PWD/build/profiles" | ||||||
| %define profdata $PWD/build/rustc.profdata | PROFDATA="$PWD/build/rustc.profdata" | ||||||
| mkdir -p "%{profraw}" | mkdir -p "$PROFRAW" | ||||||
| %{__x} build sysroot --rust-profile-generate="%{profraw}" | %{__x} build -j "$ncpus" sysroot --rust-profile-generate="$PROFRAW" | ||||||
| # Build cargo as a workload to generate compiler profiles | # Build cargo as a workload to generate compiler profiles | ||||||
| env LLVM_PROFILE_FILE="%{profraw}/default_%%m_%%p.profraw" \ | env LLVM_PROFILE_FILE="$PROFRAW/default_%%m_%%p.profraw" %{__xk} build cargo | ||||||
|   %{__x} --keep-stage=0 --keep-stage=1 build cargo | llvm-profdata merge -o "$PROFDATA" "$PROFRAW" | ||||||
| # Finalize the profile data and clean up the raw files | rm -r "$PROFRAW" build/%{rust_triple}/stage2*/ | ||||||
| %{llvm_root}/bin/llvm-profdata merge -o "%{profdata}" "%{profraw}" | # Rebuild the compiler using the profile data | ||||||
| rm -r "%{profraw}" build/%{rust_triple}/stage2*/ | %{__x} build -j "$ncpus" sysroot --rust-profile-use="$PROFDATA" | ||||||
| # Redefine the macro to use that profile data from now on | %else | ||||||
| %global __x %{__x} --rust-profile-use="%{profdata}" | # Build the compiler without PGO | ||||||
|  | %{__x} build -j "$ncpus" sysroot | ||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| # Build the compiler normally (with or without PGO) |  | ||||||
| %{__x} build sysroot |  | ||||||
| 
 |  | ||||||
| # Build everything else normally | # Build everything else normally | ||||||
| %{__x} build | %{__xk} build | ||||||
| %{__x} doc | %{__xk} doc | ||||||
| 
 | 
 | ||||||
| for triple in %{?all_targets} ; do | for triple in %{?all_targets} ; do | ||||||
|   %{__x} build --target=$triple std |   %{__xk} build --target=$triple std | ||||||
| done | done | ||||||
| 
 | 
 | ||||||
| %install | %install | ||||||
| @ -883,10 +776,10 @@ done | |||||||
| %endif | %endif | ||||||
| %{export_rust_env} | %{export_rust_env} | ||||||
| 
 | 
 | ||||||
| DESTDIR=%{buildroot} %{__x} install | DESTDIR=%{buildroot} %{__xk} install | ||||||
| 
 | 
 | ||||||
| for triple in %{?all_targets} ; do | for triple in %{?all_targets} ; do | ||||||
|   DESTDIR=%{buildroot} %{__x} install --target=$triple std |   DESTDIR=%{buildroot} %{__xk} install --target=$triple std | ||||||
| done | done | ||||||
| 
 | 
 | ||||||
| # The rls stub doesn't have an install target, but we can just copy it. | # The rls stub doesn't have an install target, but we can just copy it. | ||||||
| @ -898,7 +791,7 @@ rm -rf ./build/dist/ ./build/tmp/ | |||||||
| # Some of the components duplicate-install binaries, leaving backups we don't want | # Some of the components duplicate-install binaries, leaving backups we don't want | ||||||
| rm -f %{buildroot}%{_bindir}/*.old | rm -f %{buildroot}%{_bindir}/*.old | ||||||
| 
 | 
 | ||||||
| # Make sure the compiler's shared libraries are in the proper libdir | # Make sure the shared libraries are in the proper libdir | ||||||
| %if "%{_libdir}" != "%{common_libdir}" | %if "%{_libdir}" != "%{common_libdir}" | ||||||
| mkdir -p %{buildroot}%{_libdir} | mkdir -p %{buildroot}%{_libdir} | ||||||
| find %{buildroot}%{common_libdir} -maxdepth 1 -type f -name '*.so' \ | find %{buildroot}%{common_libdir} -maxdepth 1 -type f -name '*.so' \ | ||||||
| @ -909,12 +802,18 @@ find %{buildroot}%{common_libdir} -maxdepth 1 -type f -name '*.so' \ | |||||||
| find %{buildroot}%{_libdir} -maxdepth 1 -type f -name '*.so' \ | find %{buildroot}%{_libdir} -maxdepth 1 -type f -name '*.so' \ | ||||||
|   -exec chmod -v +x '{}' '+' |   -exec chmod -v +x '{}' '+' | ||||||
| 
 | 
 | ||||||
| # The shared standard library is excluded from Provides, because it has no | # The libdir libraries are identical to those under rustlib/.  It's easier on | ||||||
| # stable ABI. However, we still ship it alongside the static target libraries | # library loading if we keep them in libdir, but we do need them in rustlib/ | ||||||
| # to enable some niche local use-cases, like the `evcxr` REPL. | # to support dynamic linking for compiler plugins, so we'll symlink. | ||||||
| # Make sure those libraries are also executable for debuginfo extraction. | find %{buildroot}%{rustlibdir}/%{rust_triple}/lib/ -maxdepth 1 -type f -name '*.so' | | ||||||
| find %{buildroot}%{rustlibdir} -type f -name '*.so' \ | while read lib; do | ||||||
|   -exec chmod -v +x '{}' '+' |  lib2="%{buildroot}%{_libdir}/${lib##*/}" | ||||||
|  |  if [ -f "$lib2" ]; then | ||||||
|  |    # make sure they're actually identical! | ||||||
|  |    cmp "$lib" "$lib2" | ||||||
|  |    ln -v -f -r -s -T "$lib2" "$lib" | ||||||
|  |  fi | ||||||
|  | done | ||||||
| 
 | 
 | ||||||
| # Remove installer artifacts (manifests, uninstall scripts, etc.) | # Remove installer artifacts (manifests, uninstall scripts, etc.) | ||||||
| find %{buildroot}%{rustlibdir} -maxdepth 1 -type f -exec rm -v '{}' '+' | find %{buildroot}%{rustlibdir} -maxdepth 1 -type f -exec rm -v '{}' '+' | ||||||
| @ -926,18 +825,21 @@ find %{buildroot}%{rustlibdir} -type f -name '*.orig' -exec rm -v '{}' '+' | |||||||
| # We don't actually need to ship any of those python scripts in rust-src anyway. | # We don't actually need to ship any of those python scripts in rust-src anyway. | ||||||
| find %{buildroot}%{rustlibdir}/src -type f -name '*.py' -exec rm -v '{}' '+' | find %{buildroot}%{rustlibdir}/src -type f -name '*.py' -exec rm -v '{}' '+' | ||||||
| 
 | 
 | ||||||
|  | # FIXME: __os_install_post will strip the rlibs | ||||||
|  | # -- should we find a way to preserve debuginfo? | ||||||
|  | 
 | ||||||
| # Remove unwanted documentation files (we already package them) | # Remove unwanted documentation files (we already package them) | ||||||
| rm -f %{buildroot}%{_pkgdocdir}/README.md | rm -f %{buildroot}%{_docdir}/%{name}/README.md | ||||||
| rm -f %{buildroot}%{_pkgdocdir}/COPYRIGHT | rm -f %{buildroot}%{_docdir}/%{name}/COPYRIGHT | ||||||
| rm -f %{buildroot}%{_pkgdocdir}/LICENSE | rm -f %{buildroot}%{_docdir}/%{name}/LICENSE | ||||||
| rm -f %{buildroot}%{_pkgdocdir}/LICENSE-APACHE | rm -f %{buildroot}%{_docdir}/%{name}/LICENSE-APACHE | ||||||
| rm -f %{buildroot}%{_pkgdocdir}/LICENSE-MIT | rm -f %{buildroot}%{_docdir}/%{name}/LICENSE-MIT | ||||||
| rm -f %{buildroot}%{_pkgdocdir}/LICENSE-THIRD-PARTY | rm -f %{buildroot}%{_docdir}/%{name}/LICENSE-THIRD-PARTY | ||||||
| rm -f %{buildroot}%{_pkgdocdir}/*.old | rm -f %{buildroot}%{_docdir}/%{name}/*.old | ||||||
| 
 | 
 | ||||||
| # Sanitize the HTML documentation | # Sanitize the HTML documentation | ||||||
| find %{buildroot}%{_pkgdocdir}/html -empty -delete | find %{buildroot}%{_docdir}/%{name}/html -empty -delete | ||||||
| find %{buildroot}%{_pkgdocdir}/html -type f -exec chmod -x '{}' '+' | find %{buildroot}%{_docdir}/%{name}/html -type f -exec chmod -x '{}' '+' | ||||||
| 
 | 
 | ||||||
| # Create the path for crate-devel packages | # Create the path for crate-devel packages | ||||||
| mkdir -p %{buildroot}%{_datadir}/cargo/registry | mkdir -p %{buildroot}%{_datadir}/cargo/registry | ||||||
| @ -953,8 +855,6 @@ rm -f %{buildroot}%{rustlibdir}/%{rust_triple}/bin/rust-ll* | |||||||
| %if 0%{?rhel} | %if 0%{?rhel} | ||||||
| # This allows users to build packages using Rust Toolset. | # This allows users to build packages using Rust Toolset. | ||||||
| %{__install} -D -m 644 %{S:100} %{buildroot}%{rpmmacrodir}/macros.rust-toolset | %{__install} -D -m 644 %{S:100} %{buildroot}%{rpmmacrodir}/macros.rust-toolset | ||||||
| %{__install} -D -m 644 %{S:101} %{buildroot}%{_fileattrsdir}/cargo_vendor.attr |  | ||||||
| %{__install} -D -m 755 %{S:102} %{buildroot}%{_rpmconfigdir}/cargo_vendor.prov |  | ||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -987,26 +887,19 @@ rm -rf "$TMP_HELLO" | |||||||
| # The results are not stable on koji, so mask errors and just log it. | # The results are not stable on koji, so mask errors and just log it. | ||||||
| # Some of the larger test artifacts are manually cleaned to save space. | # Some of the larger test artifacts are manually cleaned to save space. | ||||||
| 
 | 
 | ||||||
| # - Bootstrap is excluded because it's not something we ship, and a lot of its | # Bootstrap is excluded because it's not something we ship, and a lot of its | ||||||
| #   tests are geared toward the upstream CI environment. | # tests are geared toward the upstream CI environment. | ||||||
| # - Crashes are excluded because they are less reliable, especially stuff like | timeout -v 90m %{__xk} test --no-fail-fast --skip src/bootstrap || : | ||||||
| #   SIGSEGV across different arches -- UB can do all kinds of weird things. |  | ||||||
| #   They're only meant to notice "accidental" fixes anyway, not *should* crash. |  | ||||||
| timeout -v 90m %{__x} test --no-fail-fast --skip={src/bootstrap,tests/crashes} || : |  | ||||||
| rm -rf "./build/%{rust_triple}/test/" | rm -rf "./build/%{rust_triple}/test/" | ||||||
| 
 | 
 | ||||||
| %ifarch aarch64 | timeout -v 30m %{__xk} test --no-fail-fast cargo || : | ||||||
| # https://github.com/rust-lang/rust/issues/123733 |  | ||||||
| %define cargo_test_skip --test-args "--skip panic_abort_doc_tests" |  | ||||||
| %endif |  | ||||||
| timeout -v 30m %{__x} test --no-fail-fast cargo %{?cargo_test_skip} || : |  | ||||||
| rm -rf "./build/%{rust_triple}/stage2-tools/%{rust_triple}/cit/" | rm -rf "./build/%{rust_triple}/stage2-tools/%{rust_triple}/cit/" | ||||||
| 
 | 
 | ||||||
| timeout -v 30m %{__x} test --no-fail-fast clippy || : | timeout -v 30m %{__xk} test --no-fail-fast clippy || : | ||||||
| 
 | 
 | ||||||
| timeout -v 30m %{__x} test --no-fail-fast rust-analyzer || : | timeout -v 30m %{__xk} test --no-fail-fast rust-analyzer || : | ||||||
| 
 | 
 | ||||||
| timeout -v 30m %{__x} test --no-fail-fast rustfmt || : | timeout -v 30m %{__xk} test --no-fail-fast rustfmt || : | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| %ldconfig_scriptlets | %ldconfig_scriptlets | ||||||
| @ -1017,10 +910,14 @@ timeout -v 30m %{__x} test --no-fail-fast rustfmt || : | |||||||
| %doc README.md | %doc README.md | ||||||
| %{_bindir}/rustc | %{_bindir}/rustc | ||||||
| %{_bindir}/rustdoc | %{_bindir}/rustdoc | ||||||
| %{_libdir}/librustc_driver-*.so | %{_libdir}/*.so | ||||||
| %{_libexecdir}/rust-analyzer-proc-macro-srv | %{_libexecdir}/rust-analyzer-proc-macro-srv | ||||||
| %{_mandir}/man1/rustc.1* | %{_mandir}/man1/rustc.1* | ||||||
| %{_mandir}/man1/rustdoc.1* | %{_mandir}/man1/rustdoc.1* | ||||||
|  | %dir %{rustlibdir} | ||||||
|  | %dir %{rustlibdir}/%{rust_triple} | ||||||
|  | %dir %{rustlibdir}/%{rust_triple}/lib | ||||||
|  | %{rustlibdir}/%{rust_triple}/lib/*.so | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| %files std-static | %files std-static | ||||||
| @ -1028,7 +925,6 @@ timeout -v 30m %{__x} test --no-fail-fast rustfmt || : | |||||||
| %dir %{rustlibdir}/%{rust_triple} | %dir %{rustlibdir}/%{rust_triple} | ||||||
| %dir %{rustlibdir}/%{rust_triple}/lib | %dir %{rustlibdir}/%{rust_triple}/lib | ||||||
| %{rustlibdir}/%{rust_triple}/lib/*.rlib | %{rustlibdir}/%{rust_triple}/lib/*.rlib | ||||||
| %{rustlibdir}/%{rust_triple}/lib/*.so |  | ||||||
| 
 | 
 | ||||||
| %global target_files()      \ | %global target_files()      \ | ||||||
| %files std-static-%1        \ | %files std-static-%1        \ | ||||||
| @ -1055,12 +951,12 @@ timeout -v 30m %{__x} test --no-fail-fast rustfmt || : | |||||||
| %target_files wasm32-unknown-unknown | %target_files wasm32-unknown-unknown | ||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| %if %target_enabled wasm32-wasip1 | %if %target_enabled wasm32-wasi | ||||||
| %target_files wasm32-wasip1 | %target_files wasm32-wasi | ||||||
| %if %with bundled_wasi_libc | %if %with bundled_wasi_libc | ||||||
| %dir %{rustlibdir}/wasm32-wasip1/lib/self-contained | %dir %{rustlibdir}/wasm32-wasi/lib/self-contained | ||||||
| %{rustlibdir}/wasm32-wasip1/lib/self-contained/crt*.o | %{rustlibdir}/wasm32-wasi/lib/self-contained/crt*.o | ||||||
| %{rustlibdir}/wasm32-wasip1/lib/self-contained/libc.a | %{rustlibdir}/wasm32-wasi/lib/self-contained/libc.a | ||||||
| %endif | %endif | ||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| @ -1068,18 +964,10 @@ timeout -v 30m %{__x} test --no-fail-fast rustfmt || : | |||||||
| %target_files x86_64-unknown-none | %target_files x86_64-unknown-none | ||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| %if %target_enabled aarch64-unknown-uefi |  | ||||||
| %target_files aarch64-unknown-uefi |  | ||||||
| %endif |  | ||||||
| 
 |  | ||||||
| %if %target_enabled x86_64-unknown-uefi | %if %target_enabled x86_64-unknown-uefi | ||||||
| %target_files x86_64-unknown-uefi | %target_files x86_64-unknown-uefi | ||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| %if %target_enabled aarch64-unknown-none-softfloat |  | ||||||
| %target_files aarch64-unknown-none-softfloat |  | ||||||
| %endif |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| %files debugger-common | %files debugger-common | ||||||
| %dir %{rustlibdir} | %dir %{rustlibdir} | ||||||
| @ -1099,9 +987,9 @@ timeout -v 30m %{__x} test --no-fail-fast rustfmt || : | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| %files doc | %files doc | ||||||
| %docdir %{_pkgdocdir} | %docdir %{_docdir}/%{name} | ||||||
| %dir %{_pkgdocdir} | %dir %{_docdir}/%{name} | ||||||
| %{_pkgdocdir}/html | %{_docdir}/%{name}/html | ||||||
| # former cargo-doc | # former cargo-doc | ||||||
| %docdir %{_docdir}/cargo | %docdir %{_docdir}/cargo | ||||||
| %dir %{_docdir}/cargo | %dir %{_docdir}/cargo | ||||||
| @ -1148,51 +1036,10 @@ timeout -v 30m %{__x} test --no-fail-fast rustfmt || : | |||||||
| %if 0%{?rhel} | %if 0%{?rhel} | ||||||
| %files toolset | %files toolset | ||||||
| %{rpmmacrodir}/macros.rust-toolset | %{rpmmacrodir}/macros.rust-toolset | ||||||
| %{_fileattrsdir}/cargo_vendor.attr |  | ||||||
| %{_rpmconfigdir}/cargo_vendor.prov |  | ||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
| * Mon Apr 28 2025 Josh Stone <jistone@redhat.com> - 1.84.1-2 |  | ||||||
| - Use python3.12 prefix for lldb Requires |  | ||||||
| 
 |  | ||||||
| * Tue Feb 04 2025 Josh Stone <jistone@redhat.com> - 1.84.1-1 |  | ||||||
| - Update to 1.84.1 |  | ||||||
| 
 |  | ||||||
| * Wed Jan 15 2025 Josh Stone <jistone@redhat.com> - 1.84.0-1 |  | ||||||
| - Update to 1.84.0 |  | ||||||
| 
 |  | ||||||
| * Thu Dec 05 2024 Josh Stone <jistone@redhat.com> - 1.83.0-1 |  | ||||||
| - Update to 1.83.0 |  | ||||||
| - Remove the subshell in the cargo_install macro |  | ||||||
| 
 |  | ||||||
| * Tue Nov 05 2024 Josh Stone <jistone@redhat.com> - 1.82.0-1 |  | ||||||
| - Update to 1.82.0 |  | ||||||
| 
 |  | ||||||
| * Fri Oct 25 2024 Josh Stone <jistone@redhat.com> - 1.81.0-1 |  | ||||||
| - Update to 1.81.0 |  | ||||||
| 
 |  | ||||||
| * Tue Oct 22 2024 Josh Stone <jistone@redhat.com> - 1.80.1-1 |  | ||||||
| - Update to 1.80.1 |  | ||||||
| 
 |  | ||||||
| * Tue Aug 13 2024 Josh Stone <jistone@redhat.com> - 1.79.0-2 |  | ||||||
| - Disable jump threading of float equality |  | ||||||
| 
 |  | ||||||
| * Fri Jun 21 2024 Josh Stone <jistone@redhat.com> - 1.79.0-1 |  | ||||||
| - Update to 1.79.0 |  | ||||||
| 
 |  | ||||||
| * Fri Jun 21 2024 Josh Stone <jistone@redhat.com> - 1.78.0-1 |  | ||||||
| - Update to 1.78.0 |  | ||||||
| - Make std-static-wasm* noarch again |  | ||||||
| 
 |  | ||||||
| * Thu May 09 2024 Josh Stone <jistone@redhat.com> - 1.77.2-1 |  | ||||||
| - Update to 1.77.2. |  | ||||||
| 
 |  | ||||||
| * Wed Apr 17 2024 Josh Stone <jistone@redhat.com> - 1.76.0-1 |  | ||||||
| - Update to 1.76.0. |  | ||||||
| - Sync rust-toolset macros to rust-packaging v25.2 |  | ||||||
| 
 |  | ||||||
| * Fri Jan 05 2024 Josh Stone <jistone@redhat.com> - 1.75.0-1 | * Fri Jan 05 2024 Josh Stone <jistone@redhat.com> - 1.75.0-1 | ||||||
| - Update to 1.75.0. | - Update to 1.75.0. | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user