import CS rust-1.75.0-1.module_el8+840+a685d749
This commit is contained in:
		
							parent
							
								
									eb5a362fb1
								
							
						
					
					
						commit
						f68a4ef40d
					
				
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,2 +1,2 @@ | ||||
| SOURCES/rustc-1.71.1-src.tar.xz | ||||
| SOURCES/wasi-libc-wasi-sdk-20.tar.gz | ||||
| SOURCES/rustc-1.75.0-src.tar.xz | ||||
| SOURCES/wasi-libc-bd950eb128bff337153de217b11270f948d04bb4.tar.gz | ||||
|  | ||||
| @ -1,2 +1,2 @@ | ||||
| ffa03139b447604322d689eefe4e157a49c39f51 SOURCES/rustc-1.71.1-src.tar.xz | ||||
| 8678e3510c88ef1de4d8c2940fa8ddad8f4eb084 SOURCES/wasi-libc-wasi-sdk-20.tar.gz | ||||
| 9ad7bb54dc9572c103b855cdcc823addbb34d15d SOURCES/rustc-1.75.0-src.tar.xz | ||||
| 55eaa32c99cc8ec970f2db2d340a605724589f9b SOURCES/wasi-libc-bd950eb128bff337153de217b11270f948d04bb4.tar.gz | ||||
|  | ||||
| @ -1,142 +0,0 @@ | ||||
| From f2fd2d01f96b50b039402c9ab4278230687f7922 Mon Sep 17 00:00:00 2001 | ||||
| From: Josh Stone <jistone@redhat.com> | ||||
| Date: Tue, 25 Jul 2023 13:11:50 -0700 | ||||
| Subject: [PATCH] Allow using external builds of the compiler-rt profile lib | ||||
| 
 | ||||
| This changes the bootstrap config `target.*.profiler` from a plain bool | ||||
| to also allow a string, which will be used as a path to the pre-built | ||||
| profiling runtime for that target. Then `profiler_builtins/build.rs` | ||||
| reads that in a `LLVM_PROFILER_RT_LIB` environment variable. | ||||
| ---
 | ||||
|  config.example.toml                |  6 ++++-- | ||||
|  library/profiler_builtins/build.rs |  6 ++++++ | ||||
|  src/bootstrap/compile.rs           |  4 ++++ | ||||
|  src/bootstrap/config.rs            | 30 ++++++++++++++++++++++++------ | ||||
|  4 files changed, 38 insertions(+), 8 deletions(-) | ||||
| 
 | ||||
| diff --git a/config.example.toml b/config.example.toml
 | ||||
| index d0eaa9fd7ffa..e0e991e679af 100644
 | ||||
| --- a/config.example.toml
 | ||||
| +++ b/config.example.toml
 | ||||
| @@ -745,8 +745,10 @@ changelog-seen = 2
 | ||||
|  # This option will override the same option under [build] section. | ||||
|  #sanitizers = build.sanitizers (bool) | ||||
|   | ||||
| -# Build the profiler runtime for this target(required when compiling with options that depend
 | ||||
| -# on this runtime, such as `-C profile-generate` or `-C instrument-coverage`).
 | ||||
| +# When true, build the profiler runtime for this target(required when compiling
 | ||||
| +# with options that depend on this runtime, such as `-C profile-generate` or
 | ||||
| +# `-C instrument-coverage`). This may also be given a path to an existing build
 | ||||
| +# of the profiling runtime library from LLVM's compiler-rt.
 | ||||
|  # This option will override the same option under [build] section. | ||||
|  #profiler = build.profiler (bool) | ||||
|   | ||||
| diff --git a/library/profiler_builtins/build.rs b/library/profiler_builtins/build.rs
 | ||||
| index 1b1f11798d74..d14d0b82229a 100644
 | ||||
| --- a/library/profiler_builtins/build.rs
 | ||||
| +++ b/library/profiler_builtins/build.rs
 | ||||
| @@ -6,6 +6,12 @@
 | ||||
|  use std::path::Path; | ||||
|   | ||||
|  fn main() { | ||||
| +    println!("cargo:rerun-if-env-changed=LLVM_PROFILER_RT_LIB");
 | ||||
| +    if let Ok(rt) = env::var("LLVM_PROFILER_RT_LIB") {
 | ||||
| +        println!("cargo:rustc-link-lib=static:+verbatim={rt}");
 | ||||
| +        return;
 | ||||
| +    }
 | ||||
| +
 | ||||
|      let target = env::var("TARGET").expect("TARGET was not set"); | ||||
|      let cfg = &mut cc::Build::new(); | ||||
|   | ||||
| diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs
 | ||||
| index 33addb90da37..1d8b3c6e5435 100644
 | ||||
| --- a/src/bootstrap/compile.rs
 | ||||
| +++ b/src/bootstrap/compile.rs
 | ||||
| @@ -305,6 +305,10 @@ pub fn std_cargo(builder: &Builder<'_>, target: TargetSelection, stage: u32, car
 | ||||
|          cargo.env("MACOSX_DEPLOYMENT_TARGET", target); | ||||
|      } | ||||
|   | ||||
| +    if let Some(path) = builder.config.profiler_path(target) {
 | ||||
| +        cargo.env("LLVM_PROFILER_RT_LIB", path);
 | ||||
| +    }
 | ||||
| +
 | ||||
|      // Determine if we're going to compile in optimized C intrinsics to | ||||
|      // the `compiler-builtins` crate. These intrinsics live in LLVM's | ||||
|      // `compiler-rt` repository, but our `src/llvm-project` submodule isn't | ||||
| diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs
 | ||||
| index e192cda9a9a7..a4803db0a470 100644
 | ||||
| --- a/src/bootstrap/config.rs
 | ||||
| +++ b/src/bootstrap/config.rs
 | ||||
| @@ -467,7 +467,7 @@ pub struct Target {
 | ||||
|      pub linker: Option<PathBuf>, | ||||
|      pub ndk: Option<PathBuf>, | ||||
|      pub sanitizers: Option<bool>, | ||||
| -    pub profiler: Option<bool>,
 | ||||
| +    pub profiler: Option<StringOrBool>,
 | ||||
|      pub rpath: Option<bool>, | ||||
|      pub crt_static: Option<bool>, | ||||
|      pub musl_root: Option<PathBuf>, | ||||
| @@ -796,9 +796,9 @@ struct Dist {
 | ||||
|      } | ||||
|  } | ||||
|   | ||||
| -#[derive(Debug, Deserialize)]
 | ||||
| +#[derive(Clone, Debug, Deserialize)]
 | ||||
|  #[serde(untagged)] | ||||
| -enum StringOrBool {
 | ||||
| +pub enum StringOrBool {
 | ||||
|      String(String), | ||||
|      Bool(bool), | ||||
|  } | ||||
| @@ -809,6 +809,12 @@ fn default() -> StringOrBool {
 | ||||
|      } | ||||
|  } | ||||
|   | ||||
| +impl StringOrBool {
 | ||||
| +    fn is_string_or_true(&self) -> bool {
 | ||||
| +        matches!(self, Self::String(_) | Self::Bool(true))
 | ||||
| +    }
 | ||||
| +}
 | ||||
| +
 | ||||
|  define_config! { | ||||
|      /// TOML representation of how the Rust build is configured. | ||||
|      struct Rust { | ||||
| @@ -880,7 +886,7 @@ struct TomlTarget {
 | ||||
|          llvm_libunwind: Option<String> = "llvm-libunwind", | ||||
|          android_ndk: Option<String> = "android-ndk", | ||||
|          sanitizers: Option<bool> = "sanitizers", | ||||
| -        profiler: Option<bool> = "profiler",
 | ||||
| +        profiler: Option<StringOrBool> = "profiler",
 | ||||
|          rpath: Option<bool> = "rpath", | ||||
|          crt_static: Option<bool> = "crt-static", | ||||
|          musl_root: Option<String> = "musl-root", | ||||
| @@ -1744,12 +1750,24 @@ pub fn any_sanitizers_enabled(&self) -> bool {
 | ||||
|          self.target_config.values().any(|t| t.sanitizers == Some(true)) || self.sanitizers | ||||
|      } | ||||
|   | ||||
| +    pub fn profiler_path(&self, target: TargetSelection) -> Option<&str> {
 | ||||
| +        match self.target_config.get(&target)?.profiler.as_ref()? {
 | ||||
| +            StringOrBool::String(s) => Some(s),
 | ||||
| +            StringOrBool::Bool(_) => None,
 | ||||
| +        }
 | ||||
| +    }
 | ||||
| +
 | ||||
|      pub fn profiler_enabled(&self, target: TargetSelection) -> bool { | ||||
| -        self.target_config.get(&target).map(|t| t.profiler).flatten().unwrap_or(self.profiler)
 | ||||
| +        self.target_config
 | ||||
| +            .get(&target)
 | ||||
| +            .and_then(|t| t.profiler.as_ref())
 | ||||
| +            .map(StringOrBool::is_string_or_true)
 | ||||
| +            .unwrap_or(self.profiler)
 | ||||
|      } | ||||
|   | ||||
|      pub fn any_profiler_enabled(&self) -> bool { | ||||
| -        self.target_config.values().any(|t| t.profiler == Some(true)) || self.profiler
 | ||||
| +        self.target_config.values().any(|t| matches!(&t.profiler, Some(p) if p.is_string_or_true()))
 | ||||
| +            || self.profiler
 | ||||
|      } | ||||
|   | ||||
|      pub fn rpath_enabled(&self, target: TargetSelection) -> bool { | ||||
| -- 
 | ||||
| 2.41.0 | ||||
| 
 | ||||
| @ -1,33 +1,33 @@ | ||||
| From 6e2adb05860b72610291d3b0e8bd525c44cb0cc9 Mon Sep 17 00:00:00 2001 | ||||
| From 184d61d2c12aa2db01de9a14ccb2be0cfae5039b Mon Sep 17 00:00:00 2001 | ||||
| From: Josh Stone <jistone@redhat.com> | ||||
| Date: Fri, 9 Jun 2023 15:23:08 -0700 | ||||
| Subject: [PATCH] Let environment variables override some default CPUs | ||||
| 
 | ||||
| ---
 | ||||
|  compiler/rustc_target/src/spec/powerpc64le_unknown_linux_gnu.rs | 2 +- | ||||
|  compiler/rustc_target/src/spec/s390x_unknown_linux_gnu.rs       | 2 +- | ||||
|  compiler/rustc_target/src/spec/x86_64_unknown_linux_gnu.rs      | 2 +- | ||||
|  .../src/spec/targets/powerpc64le_unknown_linux_gnu.rs           | 2 +- | ||||
|  .../rustc_target/src/spec/targets/s390x_unknown_linux_gnu.rs    | 2 +- | ||||
|  .../rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs   | 2 +- | ||||
|  3 files changed, 3 insertions(+), 3 deletions(-) | ||||
| 
 | ||||
| diff --git a/compiler/rustc_target/src/spec/powerpc64le_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/powerpc64le_unknown_linux_gnu.rs
 | ||||
| index fd896e086b54..08d0c43d20b4 100644
 | ||||
| --- a/compiler/rustc_target/src/spec/powerpc64le_unknown_linux_gnu.rs
 | ||||
| +++ b/compiler/rustc_target/src/spec/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 194c3170e683..9806ca78297c 100644
 | ||||
| --- a/compiler/rustc_target/src/spec/targets/powerpc64le_unknown_linux_gnu.rs
 | ||||
| +++ b/compiler/rustc_target/src/spec/targets/powerpc64le_unknown_linux_gnu.rs
 | ||||
| @@ -2,7 +2,7 @@
 | ||||
|   | ||||
|  pub fn target() -> Target { | ||||
|      let mut base = super::linux_gnu_base::opts(); | ||||
|      let mut base = base::linux_gnu::opts(); | ||||
| -    base.cpu = "ppc64le".into();
 | ||||
| +    base.cpu = option_env!("RUSTC_TARGET_CPU_PPC64LE").unwrap_or("ppc64le").into();
 | ||||
|      base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]); | ||||
|      base.max_atomic_width = Some(64); | ||||
|      base.stack_probes = StackProbeType::Inline; | ||||
| diff --git a/compiler/rustc_target/src/spec/s390x_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/s390x_unknown_linux_gnu.rs
 | ||||
| index f2c722b9a89d..17a14d10b27e 100644
 | ||||
| --- a/compiler/rustc_target/src/spec/s390x_unknown_linux_gnu.rs
 | ||||
| +++ b/compiler/rustc_target/src/spec/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 6fc410eb2235..c8f84edb9715 100644
 | ||||
| --- a/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_gnu.rs
 | ||||
| +++ b/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_gnu.rs
 | ||||
| @@ -5,7 +5,7 @@ pub fn target() -> Target {
 | ||||
|      let mut base = super::linux_gnu_base::opts(); | ||||
|      let mut base = base::linux_gnu::opts(); | ||||
|      base.endian = Endian::Big; | ||||
|      // z10 is the oldest CPU supported by LLVM | ||||
| -    base.cpu = "z10".into();
 | ||||
| @ -35,19 +35,19 @@ index f2c722b9a89d..17a14d10b27e 100644 | ||||
|      // FIXME: The ABI implementation in cabi_s390x.rs is for now hard-coded to assume the no-vector | ||||
|      // ABI. Pass the -vector feature string to LLVM to respect this assumption. On LLVM < 16, we | ||||
|      // also strip v128 from the data_layout below to match the older LLVM's expectation. | ||||
| diff --git a/compiler/rustc_target/src/spec/x86_64_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/x86_64_unknown_linux_gnu.rs
 | ||||
| index 9af1049b8702..68f876dd18c3 100644
 | ||||
| --- a/compiler/rustc_target/src/spec/x86_64_unknown_linux_gnu.rs
 | ||||
| +++ b/compiler/rustc_target/src/spec/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 80e267c163fa..8436a00e66d5 100644
 | ||||
| --- a/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs
 | ||||
| +++ b/compiler/rustc_target/src/spec/targets/x86_64_unknown_linux_gnu.rs
 | ||||
| @@ -2,7 +2,7 @@
 | ||||
|   | ||||
|  pub fn target() -> Target { | ||||
|      let mut base = super::linux_gnu_base::opts(); | ||||
|      let mut base = base::linux_gnu::opts(); | ||||
| -    base.cpu = "x86-64".into();
 | ||||
| +    base.cpu = option_env!("RUSTC_TARGET_CPU_X86_64").unwrap_or("x86-64").into();
 | ||||
|      base.plt_by_default = false; | ||||
|      base.max_atomic_width = Some(64); | ||||
|      base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]); | ||||
|      base.stack_probes = StackProbeType::X86; | ||||
| -- 
 | ||||
| 2.40.1 | ||||
| 2.41.0 | ||||
| 
 | ||||
|  | ||||
| @ -1,26 +0,0 @@ | ||||
| From 37cb177eb53145103ae72b67562884782dde01c3 Mon Sep 17 00:00:00 2001 | ||||
| From: Ivan Mironov <mironov.ivan@gmail.com> | ||||
| Date: Sun, 8 Dec 2019 17:23:08 +0500 | ||||
| Subject: [PATCH] Use lld provided by system for wasm | ||||
| 
 | ||||
| ---
 | ||||
|  compiler/rustc_target/src/spec/wasm_base.rs | 3 +-- | ||||
|  1 file changed, 1 insertion(+), 2 deletions(-) | ||||
| 
 | ||||
| diff --git a/compiler/rustc_target/src/spec/wasm_base.rs b/compiler/rustc_target/src/spec/wasm_base.rs
 | ||||
| index 528a84a8b37c..353d742161d1 100644
 | ||||
| --- a/compiler/rustc_target/src/spec/wasm_base.rs
 | ||||
| +++ b/compiler/rustc_target/src/spec/wasm_base.rs
 | ||||
| @@ -89,8 +89,7 @@ macro_rules! args {
 | ||||
|          // arguments just yet | ||||
|          limit_rdylib_exports: false, | ||||
|   | ||||
| -        // we use the LLD shipped with the Rust toolchain by default
 | ||||
| -        linker: Some("rust-lld".into()),
 | ||||
| +        linker: Some("lld".into()),
 | ||||
|          linker_flavor: LinkerFlavor::WasmLld(Cc::No), | ||||
|   | ||||
|          pre_link_args, | ||||
| -- 
 | ||||
| 2.38.1 | ||||
| 
 | ||||
							
								
								
									
										53
									
								
								SOURCES/0001-Use-lld-provided-by-system.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								SOURCES/0001-Use-lld-provided-by-system.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,53 @@ | ||||
| From 61b5cc96337da2121221dd1bcdb63fd36551d065 Mon Sep 17 00:00:00 2001 | ||||
| From: Josh Stone <jistone@redhat.com> | ||||
| Date: Wed, 1 Nov 2023 15:21:15 -0700 | ||||
| Subject: [PATCH] Use lld provided by system | ||||
| 
 | ||||
| ---
 | ||||
|  compiler/rustc_target/src/spec/base/wasm.rs                   | 3 +-- | ||||
|  compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs | 2 +- | ||||
|  compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs | 1 + | ||||
|  3 files changed, 3 insertions(+), 3 deletions(-) | ||||
| 
 | ||||
| diff --git a/compiler/rustc_target/src/spec/base/wasm.rs b/compiler/rustc_target/src/spec/base/wasm.rs
 | ||||
| index 87ade9e58cf4..2ddff95febab 100644
 | ||||
| --- a/compiler/rustc_target/src/spec/base/wasm.rs
 | ||||
| +++ b/compiler/rustc_target/src/spec/base/wasm.rs
 | ||||
| @@ -91,8 +91,7 @@ macro_rules! args {
 | ||||
|          // arguments just yet | ||||
|          limit_rdylib_exports: false, | ||||
|   | ||||
| -        // we use the LLD shipped with the Rust toolchain by default
 | ||||
| -        linker: Some("rust-lld".into()),
 | ||||
| +        linker: Some("lld".into()),
 | ||||
|          linker_flavor: LinkerFlavor::WasmLld(Cc::No), | ||||
|   | ||||
|          pre_link_args, | ||||
| diff --git a/compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs b/compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs
 | ||||
| index 9aa95a35f8e5..a9172f9441b7 100644
 | ||||
| --- a/compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs
 | ||||
| +++ b/compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs
 | ||||
| @@ -17,7 +17,7 @@ pub fn target() -> Target {
 | ||||
|          static_position_independent_executables: true, | ||||
|          relro_level: RelroLevel::Full, | ||||
|          linker_flavor: LinkerFlavor::Gnu(Cc::No, Lld::Yes), | ||||
| -        linker: Some("rust-lld".into()),
 | ||||
| +        linker: Some("lld".into()),
 | ||||
|          features: | ||||
|              "-mmx,-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-3dnow,-3dnowa,-avx,-avx2,+soft-float" | ||||
|                  .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
 | ||||
| index 5abfb8162f70..13cb43bda1a4 100644
 | ||||
| --- a/compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs
 | ||||
| +++ b/compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs
 | ||||
| @@ -16,6 +16,7 @@ pub fn target() -> Target {
 | ||||
|      base.plt_by_default = false; | ||||
|      base.max_atomic_width = Some(64); | ||||
|      base.entry_abi = Conv::X86_64Win64; | ||||
| +    base.linker = Some("lld".into());
 | ||||
|   | ||||
|      // We disable MMX and SSE for now, even though UEFI allows using them. Problem is, you have to | ||||
|      // enable these CPU features explicitly before their first use, otherwise their instructions | ||||
| -- 
 | ||||
| 2.41.0 | ||||
| 
 | ||||
| @ -0,0 +1,102 @@ | ||||
| From df0d6f1d8b46db82d7599ca8eff6e8f844cf52f2 Mon Sep 17 00:00:00 2001 | ||||
| From: Josh Stone <jistone@redhat.com> | ||||
| Date: Thu, 28 Sep 2023 18:14:28 -0700 | ||||
| Subject: [PATCH 1/2] bootstrap: allow disabling target self-contained | ||||
| 
 | ||||
| ---
 | ||||
|  config.example.toml                           | 5 +++++ | ||||
|  src/bootstrap/src/core/build_steps/compile.rs | 4 ++++ | ||||
|  src/bootstrap/src/core/config/config.rs       | 8 ++++++++ | ||||
|  src/bootstrap/src/lib.rs                      | 5 +++++ | ||||
|  4 files changed, 22 insertions(+) | ||||
| 
 | ||||
| diff --git a/config.example.toml b/config.example.toml
 | ||||
| index e5df28a49af6..2fcd8b8cb057 100644
 | ||||
| --- a/config.example.toml
 | ||||
| +++ b/config.example.toml
 | ||||
| @@ -807,6 +807,11 @@ change-id = 116881
 | ||||
|  # target triples containing `-none`, `nvptx`, `switch`, or `-uefi`. | ||||
|  #no-std = <platform-specific> (bool) | ||||
|   | ||||
| +# Copy libc and CRT objects into the target lib/self-contained/ directory.
 | ||||
| +# Enabled by default on `musl`, `wasi`, and `windows-gnu` targets. Other
 | ||||
| +# targets may ignore this setting if they have nothing to be contained.
 | ||||
| +#self-contained = <platform-specific> (bool)
 | ||||
| +
 | ||||
|  # ============================================================================= | ||||
|  # Distribution options | ||||
|  # | ||||
| diff --git a/src/bootstrap/src/core/build_steps/compile.rs b/src/bootstrap/src/core/build_steps/compile.rs
 | ||||
| index 7021a9543582..11555c65ca87 100644
 | ||||
| --- a/src/bootstrap/src/core/build_steps/compile.rs
 | ||||
| +++ b/src/bootstrap/src/core/build_steps/compile.rs
 | ||||
| @@ -302,6 +302,10 @@ fn copy_self_contained_objects(
 | ||||
|      compiler: &Compiler, | ||||
|      target: TargetSelection, | ||||
|  ) -> Vec<(PathBuf, DependencyType)> { | ||||
| +    if builder.self_contained(target) != Some(true) {
 | ||||
| +        return vec![];
 | ||||
| +    }
 | ||||
| +
 | ||||
|      let libdir_self_contained = builder.sysroot_libdir(*compiler, target).join("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
 | ||||
| index 0a9175aa3ea5..a2e028b25036 100644
 | ||||
| --- a/src/bootstrap/src/core/config/config.rs
 | ||||
| +++ b/src/bootstrap/src/core/config/config.rs
 | ||||
| @@ -533,6 +533,7 @@ pub struct Target {
 | ||||
|      pub wasi_root: Option<PathBuf>, | ||||
|      pub qemu_rootfs: Option<PathBuf>, | ||||
|      pub no_std: bool, | ||||
| +    pub self_contained: bool,
 | ||||
|  } | ||||
|   | ||||
|  impl Target { | ||||
| @@ -541,6 +542,9 @@ pub fn from_triple(triple: &str) -> Self {
 | ||||
|          if triple.contains("-none") || triple.contains("nvptx") || triple.contains("switch") { | ||||
|              target.no_std = true; | ||||
|          } | ||||
| +        if triple.contains("-musl") || triple.contains("-wasi") || triple.contains("-windows-gnu") {
 | ||||
| +            target.self_contained = true;
 | ||||
| +        }
 | ||||
|          target | ||||
|      } | ||||
|  } | ||||
| @@ -1051,6 +1055,7 @@ struct TomlTarget {
 | ||||
|          wasi_root: Option<String> = "wasi-root", | ||||
|          qemu_rootfs: Option<String> = "qemu-rootfs", | ||||
|          no_std: Option<bool> = "no-std", | ||||
| +        self_contained: Option<bool> = "self-contained",
 | ||||
|      } | ||||
|  } | ||||
|   | ||||
| @@ -1600,6 +1605,9 @@ fn get_table(option: &str) -> Result<TomlConfig, toml::de::Error> {
 | ||||
|                  if let Some(s) = cfg.no_std { | ||||
|                      target.no_std = s; | ||||
|                  } | ||||
| +                if let Some(s) = cfg.self_contained {
 | ||||
| +                    target.self_contained = s;
 | ||||
| +                }
 | ||||
|                  target.cc = cfg.cc.map(PathBuf::from); | ||||
|                  target.cxx = cfg.cxx.map(PathBuf::from); | ||||
|                  target.ar = cfg.ar.map(PathBuf::from); | ||||
| diff --git a/src/bootstrap/src/lib.rs b/src/bootstrap/src/lib.rs
 | ||||
| index 33b8f1a7ce72..f36e53187576 100644
 | ||||
| --- a/src/bootstrap/src/lib.rs
 | ||||
| +++ b/src/bootstrap/src/lib.rs
 | ||||
| @@ -1335,6 +1335,11 @@ fn no_std(&self, target: TargetSelection) -> Option<bool> {
 | ||||
|          self.config.target_config.get(&target).map(|t| t.no_std) | ||||
|      } | ||||
|   | ||||
| +    /// Returns `true` if this is a self-contained `target`, if defined
 | ||||
| +    fn self_contained(&self, target: TargetSelection) -> Option<bool> {
 | ||||
| +        self.config.target_config.get(&target).map(|t| t.self_contained)
 | ||||
| +    }
 | ||||
| +
 | ||||
|      /// Returns `true` if the target will be tested using the `remote-test-client` | ||||
|      /// and `remote-test-server` binaries. | ||||
|      fn remote_tested(&self, target: TargetSelection) -> bool { | ||||
| -- 
 | ||||
| 2.41.0 | ||||
| 
 | ||||
| @ -1,36 +0,0 @@ | ||||
| From a627c8f54cab6880dc7d36c55092a94c6f750a6e Mon Sep 17 00:00:00 2001 | ||||
| From: Ariadne Conill <ariadne@dereferenced.org> | ||||
| Date: Thu, 3 Aug 2023 15:05:40 -0700 | ||||
| Subject: [PATCH] bootstrap: config: fix version comparison bug | ||||
| 
 | ||||
| Rust requires a previous version of Rust to build, such as the current version, or the | ||||
| previous version.  However, the version comparison logic did not take patch releases | ||||
| into consideration when doing the version comparison for the current branch, e.g. | ||||
| Rust 1.71.1 could not be built by Rust 1.71.0 because it is neither an exact version | ||||
| match, or the previous version. | ||||
| 
 | ||||
| Adjust the version comparison logic to tolerate mismatches in the patch version. | ||||
| 
 | ||||
| Signed-off-by: Ariadne Conill <ariadne@dereferenced.org> | ||||
| (cherry picked from commit 31a81a08786826cc6e832bd0b49fb8b934e29648) | ||||
| ---
 | ||||
|  src/bootstrap/config.rs | 3 ++- | ||||
|  1 file changed, 2 insertions(+), 1 deletion(-) | ||||
| 
 | ||||
| diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs
 | ||||
| index e192cda9a9a7..2b5d0b94e968 100644
 | ||||
| --- a/src/bootstrap/config.rs
 | ||||
| +++ b/src/bootstrap/config.rs
 | ||||
| @@ -1805,7 +1805,8 @@ pub fn check_build_rustc_version(&self) {
 | ||||
|                  .unwrap(); | ||||
|          if !(source_version == rustc_version | ||||
|              || (source_version.major == rustc_version.major | ||||
| -                && source_version.minor == rustc_version.minor + 1))
 | ||||
| +                && (source_version.minor == rustc_version.minor
 | ||||
| +                    || source_version.minor == rustc_version.minor + 1)))
 | ||||
|          { | ||||
|              let prev_version = format!("{}.{}.x", source_version.major, source_version.minor - 1); | ||||
|              eprintln!( | ||||
| -- 
 | ||||
| 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 | ||||
| 
 | ||||
| @ -0,0 +1,78 @@ | ||||
| From 79bb610c8fc5d9df7dd4720ae847b8f17e7b1ad4 Mon Sep 17 00:00:00 2001 | ||||
| From: Josh Stone <jistone@redhat.com> | ||||
| Date: Thu, 28 Sep 2023 18:18:16 -0700 | ||||
| Subject: [PATCH 2/2] set an external library path for wasm32-wasi | ||||
| 
 | ||||
| ---
 | ||||
|  compiler/rustc_codegen_ssa/src/back/link.rs           | 9 +++++++++ | ||||
|  compiler/rustc_target/src/spec/mod.rs                 | 2 ++ | ||||
|  compiler/rustc_target/src/spec/targets/wasm32_wasi.rs | 6 +++++- | ||||
|  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
 | ||||
| index dd9d277fb775..3d0f0502f255 100644
 | ||||
| --- a/compiler/rustc_codegen_ssa/src/back/link.rs
 | ||||
| +++ b/compiler/rustc_codegen_ssa/src/back/link.rs
 | ||||
| @@ -1496,6 +1496,12 @@ fn get_object_file_path(sess: &Session, name: &str, self_contained: bool) -> Pat
 | ||||
|              return file_path; | ||||
|          } | ||||
|      } | ||||
| +    if let Some(lib_path) = &sess.target.options.external_lib_path {
 | ||||
| +        let file_path = Path::new(lib_path.as_ref()).join(name);
 | ||||
| +        if file_path.exists() {
 | ||||
| +            return file_path;
 | ||||
| +        }
 | ||||
| +    }
 | ||||
|      for search_path in fs.search_paths() { | ||||
|          let file_path = search_path.dir.join(name); | ||||
|          if file_path.exists() { | ||||
| @@ -1982,6 +1988,9 @@ fn add_library_search_dirs(cmd: &mut dyn Linker, sess: &Session, self_contained:
 | ||||
|          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 {
 | ||||
| +        cmd.include_path(Path::new(lib_path.as_ref()));
 | ||||
| +    }
 | ||||
|  } | ||||
|   | ||||
|  /// Add options making relocation sections in the produced ELF files read-only | ||||
| diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs
 | ||||
| index f04799482c83..25410b37ba24 100644
 | ||||
| --- a/compiler/rustc_target/src/spec/mod.rs
 | ||||
| +++ b/compiler/rustc_target/src/spec/mod.rs
 | ||||
| @@ -1874,6 +1874,7 @@ pub struct TargetOptions {
 | ||||
|      /// Objects to link before and after all other object code. | ||||
|      pub pre_link_objects: CrtObjects, | ||||
|      pub post_link_objects: CrtObjects, | ||||
| +    pub external_lib_path: Option<StaticCow<str>>,
 | ||||
|      /// Same as `(pre|post)_link_objects`, but when self-contained linking mode is enabled. | ||||
|      pub pre_link_objects_self_contained: CrtObjects, | ||||
|      pub post_link_objects_self_contained: CrtObjects, | ||||
| @@ -2352,6 +2353,7 @@ fn default() -> TargetOptions {
 | ||||
|              relro_level: RelroLevel::None, | ||||
|              pre_link_objects: Default::default(), | ||||
|              post_link_objects: Default::default(), | ||||
| +            external_lib_path: None,
 | ||||
|              pre_link_objects_self_contained: Default::default(), | ||||
|              post_link_objects_self_contained: Default::default(), | ||||
|              link_self_contained: LinkSelfContainedDefault::False, | ||||
| diff --git a/compiler/rustc_target/src/spec/targets/wasm32_wasi.rs b/compiler/rustc_target/src/spec/targets/wasm32_wasi.rs
 | ||||
| index 6dbcb01ea436..2151f86d0648 100644
 | ||||
| --- a/compiler/rustc_target/src/spec/targets/wasm32_wasi.rs
 | ||||
| +++ b/compiler/rustc_target/src/spec/targets/wasm32_wasi.rs
 | ||||
| @@ -86,7 +86,11 @@ pub fn target() -> Target {
 | ||||
|      options.post_link_objects_self_contained = crt_objects::post_wasi_self_contained(); | ||||
|   | ||||
|      // FIXME: Figure out cases in which WASM needs to link with a native toolchain. | ||||
| -    options.link_self_contained = LinkSelfContainedDefault::True;
 | ||||
| +    options.link_self_contained = LinkSelfContainedDefault::False;
 | ||||
| +
 | ||||
| +    options.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());
 | ||||
|   | ||||
|      // Right now this is a bit of a workaround but we're currently saying that | ||||
|      // the target by default has a static crt which we're taking as a signal | ||||
| -- 
 | ||||
| 2.41.0 | ||||
| 
 | ||||
| @ -5,17 +5,47 @@ | ||||
| #   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 %{_bindir}/env CARGO_HOME=.cargo %{_bindir}/cargo | ||||
| %__rustc %{_bindir}/rustc | ||||
| %__rustdoc %{_bindir}/rustdoc | ||||
| %__cargo /usr/bin/env CARGO_HOME=.cargo RUSTFLAGS='%{build_rustflags}' /usr/bin/cargo | ||||
| %__rustc /usr/bin/rustc | ||||
| %__rustdoc /usr/bin/rustdoc | ||||
| 
 | ||||
| # Enable optimization, debuginfo, and link hardening. | ||||
| %__global_rustflags -Copt-level=3 -Cdebuginfo=2 -Clink-arg=-Wl,-z,relro,-z,now | ||||
| # rustflags_opt_level: default optimization level | ||||
| # | ||||
| # It corresponds to the "-Copt-level" rustc command line option. | ||||
| %rustflags_opt_level 3 | ||||
| 
 | ||||
| %__global_rustflags_toml [%{lua: | ||||
|     for arg in string.gmatch(rpm.expand("%{__global_rustflags}"), "%S+") do | ||||
|         print('"' .. arg .. '", ') | ||||
|     end}] | ||||
| # rustflags_debuginfo: default verbosity of debug information | ||||
| # | ||||
| # It corresponds to the "-Cdebuginfo" rustc command line option. | ||||
| # In some cases, it might be required to override this macro with "1" or even | ||||
| # "0", if memory usage gets too high during builds on some resource-constrained | ||||
| # architectures (most likely on 32-bit architectures), which will however | ||||
| # reduce the quality of the produced debug symbols. | ||||
| %rustflags_debuginfo 2 | ||||
| 
 | ||||
| # rustflags_codegen_units: default number of parallel code generation units | ||||
| # | ||||
| # The default value of "1" results in generation of better code, but comes at | ||||
| # the cost of longer build times. | ||||
| %rustflags_codegen_units 1 | ||||
| 
 | ||||
| # build_rustflags: default compiler flags for rustc (RUSTFLAGS) | ||||
| # | ||||
| # -Copt-level: set optimization level (default: highest optimization level) | ||||
| # -Cdebuginfo: set debuginfo verbosity (default: full debug information) | ||||
| # -Ccodegen-units: set number of parallel code generation units (default: 1) | ||||
| # | ||||
| # ref. https://doc.rust-lang.org/rustc/codegen-options/index.html | ||||
| %build_rustflags %{shrink: | ||||
|   -Copt-level=%rustflags_opt_level | ||||
|   -Cdebuginfo=%rustflags_debuginfo | ||||
|   -Ccodegen-units=%rustflags_codegen_units | ||||
| } | ||||
| 
 | ||||
| # __cargo_common_opts: common command line flags for cargo | ||||
| # | ||||
| # _smp_mflags: run builds and tests in parallel | ||||
| %__cargo_common_opts %{?_smp_mflags} | ||||
| 
 | ||||
| %cargo_prep(V:) (\ | ||||
| %{__mkdir} -p .cargo \ | ||||
| @ -23,7 +53,11 @@ cat > .cargo/config << EOF \ | ||||
| [build]\ | ||||
| rustc = "%{__rustc}"\ | ||||
| rustdoc = "%{__rustdoc}"\ | ||||
| rustflags = %{__global_rustflags_toml}\ | ||||
| \ | ||||
| [env]\ | ||||
| CFLAGS = "%{build_cflags}"\ | ||||
| CXXFLAGS = "%{build_cxxflags}"\ | ||||
| LDFLAGS = "%{build_ldflags}"\ | ||||
| \ | ||||
| [install]\ | ||||
| root = "%{buildroot}%{_prefix}"\ | ||||
| @ -44,8 +78,104 @@ EOF\ | ||||
| %endif\ | ||||
| ) | ||||
| 
 | ||||
| %cargo_build %__cargo build --release %{?_smp_mflags} | ||||
| # __cargo_parse_opts: function-like macro which parses common flags into the | ||||
| #       equivalent command-line flags for cargo | ||||
| %__cargo_parse_opts(naf:) %{shrink:\ | ||||
| %{-f:%{-a:%{error:Can't specify both -f(%{-f*}) and -a}}} \ | ||||
|   %{-n:--no-default-features}                             \ | ||||
|   %{-a:--all-features}                                    \ | ||||
|   %{-f:--features %{-f*}}                                 \ | ||||
|   %{nil} | ||||
| } | ||||
| 
 | ||||
| %cargo_test %__cargo test --release %{?_smp_mflags} --no-fail-fast | ||||
| # NB: cargo_build/test/install do not use the -n/-a/-f argument parsing like | ||||
| # Fedora's rust-packaging, because that change would break anyone that's | ||||
| # already passing arguments directly to cargo after the macro. Instead, one can | ||||
| # explicitly use --no-default-features, --all-features, or --features XYZ. | ||||
| 
 | ||||
| %cargo_install %__cargo install --no-track --path . | ||||
| # cargo_build: builds the crate with cargo | ||||
| %cargo_build \ | ||||
| %{shrink:\ | ||||
|   %{__cargo} build                                   \ | ||||
|     %{__cargo_common_opts}                           \ | ||||
|     --release                                        \ | ||||
| } | ||||
| 
 | ||||
| # cargo_test: runs the test suite with cargo | ||||
| # | ||||
| # To pass command-line arguments to the cargo test runners directly (for | ||||
| # example, to skip certain tests during package builds), the | ||||
| # "cargo test" argument parsing need to be bypassed, | ||||
| # i.e. "%%cargo_test -- --skip foo" for skipping all tests with names that | ||||
| # match "foo". | ||||
| %cargo_test \ | ||||
| %{shrink:\ | ||||
|   %{__cargo} test                                    \ | ||||
|     %{__cargo_common_opts}                           \ | ||||
|     --release                                        \ | ||||
|     --no-fail-fast                                   \ | ||||
| } | ||||
| 
 | ||||
| # cargo_install: install files into the buildroot | ||||
| # | ||||
| # For "binary" crates, this macro installs all "bin" build targets to _bindir | ||||
| # inside the buildroot. The "--no-track" option prevents the creation of the | ||||
| # "$CARGO_HOME/.crates.toml" file, which is used to keep track of which version | ||||
| # of a specific binary has been installed, but which conflicts between builds | ||||
| # of different Rust applications and is not needed when building RPM packages. | ||||
| %cargo_install \ | ||||
| %{shrink:                                                         \ | ||||
|   %{__cargo} install                                              \ | ||||
|     %{__cargo_common_opts}                                        \ | ||||
|     --no-track                                                    \ | ||||
|     --path .                                                      \ | ||||
| }                                                                 \ | ||||
| 
 | ||||
| # cargo_license: print license information for all crate dependencies | ||||
| # | ||||
| # The "no-build,no-dev,no-proc-macro" argument results in only crates which are | ||||
| # linked into the final binary to be considered. | ||||
| # | ||||
| # Additionally, deprecated SPDX syntax ("/" instead of "OR") is normalized | ||||
| # before sorting the results to ensure reproducible output of this macro. | ||||
| # | ||||
| # This macro must be called with the same feature flags as other cargo macros, | ||||
| # in particular, "cargo_build", otherwise its output will be incomplete. | ||||
| # | ||||
| # The "cargo tree" command called by this macro will fail if there are missing | ||||
| # (optional) dependencies. | ||||
| %cargo_license(naf:)\ | ||||
| %{shrink:\ | ||||
|     %{__cargo} tree                                                 \ | ||||
|     --workspace                                                     \ | ||||
|     --offline                                                       \ | ||||
|     --edges no-build,no-dev,no-proc-macro                           \ | ||||
|     --no-dedupe                                                     \ | ||||
|     --target all                                                    \ | ||||
|     %{__cargo_parse_opts %{-n} %{-a} %{-f:-f%{-f*}}}                \ | ||||
|     --prefix none                                                   \ | ||||
|     --format "{l}: {p}"                                             \ | ||||
|     | sed -e "s: ($(pwd)[^)]*)::g" -e "s: / :/:g" -e "s:/: OR :g"   \ | ||||
|     | sort -u | ||||
| } | ||||
| 
 | ||||
| # cargo_license_summary: print license summary for all crate dependencies | ||||
| # | ||||
| # This macro works in the same way as cargo_license, except that it only prints | ||||
| # a list of licenses, and not the complete license information for every crate | ||||
| # in the dependency tree. This is useful for determining the correct License | ||||
| # tag for packages that contain compiled Rust binaries. | ||||
| %cargo_license_summary(naf:)\ | ||||
| %{shrink:\ | ||||
|     %{__cargo} tree                                                 \ | ||||
|     --workspace                                                     \ | ||||
|     --offline                                                       \ | ||||
|     --edges no-build,no-dev,no-proc-macro                           \ | ||||
|     --no-dedupe                                                     \ | ||||
|     --target all                                                    \ | ||||
|     %{__cargo_parse_opts %{-n} %{-a} %{-f:-f%{-f*}}}                \ | ||||
|     --prefix none                                                   \ | ||||
|     --format "# {l}"                                                \ | ||||
|     | sed -e "s: / :/:g" -e "s:/: OR :g"                            \ | ||||
|     | sort -u                                                       \ | ||||
| } | ||||
|  | ||||
| @ -1,92 +0,0 @@ | ||||
| --- rustc-beta-src/src/tools/cargo/Cargo.lock.orig	2023-07-07 17:30:04.817452621 -0700
 | ||||
| +++ rustc-beta-src/src/tools/cargo/Cargo.lock	2023-07-07 17:30:27.777988139 -0700
 | ||||
| @@ -734,7 +734,6 @@
 | ||||
|  dependencies = [ | ||||
|   "cc", | ||||
|   "libc", | ||||
| - "libnghttp2-sys",
 | ||||
|   "libz-sys", | ||||
|   "openssl-sys", | ||||
|   "pkg-config", | ||||
| @@ -1954,16 +1953,6 @@
 | ||||
|  checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb" | ||||
|   | ||||
|  [[package]] | ||||
| -name = "libnghttp2-sys"
 | ||||
| -version = "0.1.7+1.45.0"
 | ||||
| -source = "registry+https://github.com/rust-lang/crates.io-index"
 | ||||
| -checksum = "57ed28aba195b38d5ff02b9170cbff627e336a20925e43b4945390401c5dc93f"
 | ||||
| -dependencies = [
 | ||||
| - "cc",
 | ||||
| - "libc",
 | ||||
| -]
 | ||||
| -
 | ||||
| -[[package]]
 | ||||
|  name = "libz-sys" | ||||
|  version = "1.1.8" | ||||
|  source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| --- rustc-beta-src/src/tools/cargo/Cargo.toml.orig	2023-07-07 17:30:04.819452581 -0700
 | ||||
| +++ rustc-beta-src/src/tools/cargo/Cargo.toml	2023-07-07 17:30:24.133061874 -0700
 | ||||
| @@ -118,7 +118,7 @@
 | ||||
|  cargo-util.workspace = true | ||||
|  clap = { workspace = true, features = ["wrap_help"] } | ||||
|  crates-io.workspace = true | ||||
| -curl = { workspace = true, features = ["http2"] }
 | ||||
| +curl = { workspace = true, features = [] }
 | ||||
|  curl-sys.workspace = true | ||||
|  env_logger.workspace = true | ||||
|  filetime.workspace = true | ||||
| --- rustc-beta-src/src/tools/cargo/src/cargo/core/package.rs.orig	2023-06-24 10:27:37.000000000 -0700
 | ||||
| +++ rustc-beta-src/src/tools/cargo/src/cargo/core/package.rs	2023-07-07 17:30:04.819452581 -0700
 | ||||
| @@ -407,16 +407,9 @@
 | ||||
|          sources: SourceMap<'cfg>, | ||||
|          config: &'cfg Config, | ||||
|      ) -> CargoResult<PackageSet<'cfg>> { | ||||
| -        // We've enabled the `http2` feature of `curl` in Cargo, so treat
 | ||||
| -        // failures here as fatal as it would indicate a build-time problem.
 | ||||
| -        let mut multi = Multi::new();
 | ||||
| -        let multiplexing = config.http_config()?.multiplexing.unwrap_or(true);
 | ||||
| -        multi
 | ||||
| -            .pipelining(false, multiplexing)
 | ||||
| -            .with_context(|| "failed to enable multiplexing/pipelining in curl")?;
 | ||||
| -
 | ||||
| -        // let's not flood crates.io with connections
 | ||||
| -        multi.set_max_host_connections(2)?;
 | ||||
| +        // Multiplexing is disabled because the system libcurl doesn't support it.
 | ||||
| +        let multi = Multi::new();
 | ||||
| +        let multiplexing = false;
 | ||||
|   | ||||
|          Ok(PackageSet { | ||||
|              packages: package_ids | ||||
| --- rustc-beta-src/src/tools/cargo/src/cargo/sources/registry/http_remote.rs.orig	2023-06-24 10:27:37.000000000 -0700
 | ||||
| +++ rustc-beta-src/src/tools/cargo/src/cargo/sources/registry/http_remote.rs	2023-07-07 17:30:04.819452581 -0700
 | ||||
| @@ -229,16 +229,8 @@
 | ||||
|          } | ||||
|          self.fetch_started = true; | ||||
|   | ||||
| -        // We've enabled the `http2` feature of `curl` in Cargo, so treat
 | ||||
| -        // failures here as fatal as it would indicate a build-time problem.
 | ||||
| -        self.multiplexing = self.config.http_config()?.multiplexing.unwrap_or(true);
 | ||||
| -
 | ||||
| -        self.multi
 | ||||
| -            .pipelining(false, self.multiplexing)
 | ||||
| -            .with_context(|| "failed to enable multiplexing/pipelining in curl")?;
 | ||||
| -
 | ||||
| -        // let's not flood the server with connections
 | ||||
| -        self.multi.set_max_host_connections(2)?;
 | ||||
| +        // Multiplexing is disabled because the system libcurl doesn't support it.
 | ||||
| +        self.multiplexing = false;
 | ||||
|   | ||||
|          if !self.quiet { | ||||
|              self.config | ||||
| --- rustc-beta-src/src/tools/cargo/src/cargo/util/network/mod.rs.orig	2023-06-24 10:27:37.000000000 -0700
 | ||||
| +++ rustc-beta-src/src/tools/cargo/src/cargo/util/network/mod.rs	2023-07-07 17:30:04.819452581 -0700
 | ||||
| @@ -26,7 +26,7 @@
 | ||||
|  macro_rules! try_old_curl { | ||||
|      ($e:expr, $msg:expr) => { | ||||
|          let result = $e; | ||||
| -        if cfg!(target_os = "macos") {
 | ||||
| +        if cfg!(any(target_os = "linux", target_os = "macos")) {
 | ||||
|              if let Err(e) = result { | ||||
|                  warn!("ignoring libcurl {} error: {}", $msg, e); | ||||
|              } | ||||
| @ -1,42 +0,0 @@ | ||||
| --- rustc-beta-src/src/tools/cargo/Cargo.lock.orig	2023-06-24 10:27:37.000000000 -0700
 | ||||
| +++ rustc-beta-src/src/tools/cargo/Cargo.lock	2023-07-07 17:12:23.406932870 -0700
 | ||||
| @@ -1942,7 +1942,6 @@
 | ||||
|  dependencies = [ | ||||
|   "cc", | ||||
|   "libc", | ||||
| - "libssh2-sys",
 | ||||
|   "libz-sys", | ||||
|   "openssl-sys", | ||||
|   "pkg-config", | ||||
| @@ -1965,20 +1964,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.8" | ||||
|  source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| --- rustc-beta-src/src/tools/cargo/Cargo.toml.orig	2023-06-24 10:27:37.000000000 -0700
 | ||||
| +++ rustc-beta-src/src/tools/cargo/Cargo.toml	2023-07-07 17:12:00.688392750 -0700
 | ||||
| @@ -31,7 +31,7 @@
 | ||||
|  filetime = "0.2.9" | ||||
|  flate2 = { version = "1.0.3", default-features = false, features = ["zlib"] } | ||||
|  fwdansi = "1.1.0" | ||||
| -git2 = "0.17.1"
 | ||||
| +git2 = { version = "0.17.1", default-features = false, features = ["https"] }
 | ||||
|  git2-curl = "0.18.0" | ||||
|  gix = { version = "0.44.1", default-features = false, features = ["blocking-http-transport-curl", "progress-tree"] } | ||||
|  gix-features-for-configuration-only = { version = "0.29.0", package = "gix-features", features = [ "parallel" ] } | ||||
							
								
								
									
										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" ] } | ||||
							
								
								
									
										580
									
								
								SPECS/rust.spec
									
									
									
									
									
								
							
							
						
						
									
										580
									
								
								SPECS/rust.spec
									
									
									
									
									
								
							| @ -1,16 +1,22 @@ | ||||
| Name:           rust | ||||
| Version:        1.75.0 | ||||
| Release:        1%{?dist} | ||||
| 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) | ||||
| # ^ written as: (rust itself) and (bundled libraries) | ||||
| URL:            https://www.rust-lang.org | ||||
| 
 | ||||
| # Only x86_64, i686, and aarch64 are Tier 1 platforms at this time. | ||||
| # https://doc.rust-lang.org/nightly/rustc/platform-support.html | ||||
| %global rust_arches x86_64 i686 aarch64 ppc64le s390x | ||||
| 
 | ||||
| # The channel can be stable, beta, or nightly | ||||
| %{!?channel: %global channel stable} | ||||
| ExclusiveArch:  %{rust_arches} | ||||
| 
 | ||||
| # 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 | ||||
| # or nightly wants some beta-YYYY-MM-DD | ||||
| %global bootstrap_version 1.70.0 | ||||
| %global bootstrap_channel 1.70.0 | ||||
| %global bootstrap_date 2023-06-01 | ||||
| %global bootstrap_version 1.74.0 | ||||
| %global bootstrap_channel 1.74.0 | ||||
| %global bootstrap_date 2023-11-16 | ||||
| 
 | ||||
| # Only the specified arches will use bootstrap binaries. | ||||
| # NOTE: Those binaries used to be uploaded with every new release, but that was | ||||
| @ -30,42 +36,51 @@ | ||||
| %if 0%{?fedora} | ||||
| %global mingw_targets i686-pc-windows-gnu x86_64-pc-windows-gnu | ||||
| %endif | ||||
| %if 0%{?fedora} || 0%{?rhel} >= 8 | ||||
| %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 | ||||
| # 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_ref wasi-sdk-20 | ||||
| #global wasi_libc_ref wasi-sdk-20 | ||||
| %global wasi_libc_ref bd950eb128bff337153de217b11270f948d04bb4 | ||||
| %global wasi_libc_name wasi-libc-%{wasi_libc_ref} | ||||
| %global wasi_libc_source %{wasi_libc_url}/archive/%{wasi_libc_ref}/%{wasi_libc_name}.tar.gz | ||||
| %global wasi_libc_dir %{_builddir}/%{wasi_libc_name} | ||||
| %if 0%{?fedora} | ||||
| %bcond_with bundled_wasi_libc | ||||
| %else | ||||
| %bcond_without bundled_wasi_libc | ||||
| %endif | ||||
| 
 | ||||
| # Using llvm-static may be helpful as an opt-in, e.g. to aid LLVM rebases. | ||||
| %bcond_with llvm_static | ||||
| 
 | ||||
| # We can also choose to just use Rust's bundled LLVM, in case the system LLVM | ||||
| # is insufficient.  Rust currently requires LLVM 14.0+. | ||||
| %global min_llvm_version 14.0.0 | ||||
| %global bundled_llvm_version 16.0.5 | ||||
| # is insufficient.  Rust currently requires LLVM 15.0+. | ||||
| %global min_llvm_version 15.0.0 | ||||
| %global bundled_llvm_version 17.0.5 | ||||
| %bcond_with bundled_llvm | ||||
| 
 | ||||
| # Requires stable libgit2 1.6, 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. | ||||
| %global min_libgit2_version 1.6.4 | ||||
| %global next_libgit2_version 1.7.0~ | ||||
| %global bundled_libgit2_version 1.6.4 | ||||
| %if 0%{?fedora} >= 38 | ||||
| %global min_libgit2_version 1.7.1 | ||||
| %global next_libgit2_version 1.8.0~ | ||||
| %global bundled_libgit2_version 1.7.1 | ||||
| %if 0%{?fedora} >= 39 | ||||
| %bcond_with bundled_libgit2 | ||||
| %else | ||||
| %bcond_without bundled_libgit2 | ||||
| %endif | ||||
| 
 | ||||
| # needs libssh2_userauth_publickey_frommemory | ||||
| %global min_libssh2_version 1.6.0 | ||||
| %if 0%{?rhel} | ||||
| # Disable cargo->libgit2->libssh2 on RHEL, as it's not approved for FIPS (rhbz1732949) | ||||
| %bcond_without disabled_libssh2 | ||||
| @ -73,39 +88,26 @@ | ||||
| %bcond_with disabled_libssh2 | ||||
| %endif | ||||
| 
 | ||||
| %if 0%{?rhel} && 0%{?rhel} < 8 | ||||
| %bcond_with curl_http2 | ||||
| %if 0%{?__isa_bits} == 32 | ||||
| # Disable PGO on 32-bit to reduce build memory | ||||
| %bcond_with rustc_pgo | ||||
| %else | ||||
| %bcond_without curl_http2 | ||||
| %bcond_without rustc_pgo | ||||
| %endif | ||||
| 
 | ||||
| # LLDB isn't available everywhere... | ||||
| %if 0%{?rhel} && 0%{?rhel} < 8 | ||||
| %bcond_with lldb | ||||
| %else | ||||
| %bcond_without lldb | ||||
| %endif | ||||
| 
 | ||||
| Name:           rust | ||||
| Version:        1.71.1 | ||||
| Release:        1%{?dist} | ||||
| Summary:        The Rust Programming Language | ||||
| License:        (ASL 2.0 or MIT) and (BSD and MIT) | ||||
| # ^ written as: (rust itself) and (bundled libraries) | ||||
| URL:            https://www.rust-lang.org | ||||
| ExclusiveArch:  %{rust_arches} | ||||
| 
 | ||||
| %if "%{channel}" == "stable" | ||||
| %global rustc_package rustc-%{version}-src | ||||
| %else | ||||
| %global rustc_package rustc-%{channel}-src | ||||
| %endif | ||||
| # Detect non-stable channels from the version, like 1.74.0~beta.1 | ||||
| %{lua: do | ||||
|   local version = rpm.expand("%{version}") | ||||
|   local version_channel, subs = string.gsub(version, "^.*~(%w+).*$", "%1", 1) | ||||
|   rpm.define("channel " .. (subs ~= 0 and version_channel or "stable")) | ||||
|   rpm.define("rustc_package rustc-" .. version_channel .. "-src") | ||||
| end} | ||||
| Source0:        https://static.rust-lang.org/dist/%{rustc_package}.tar.xz | ||||
| Source1:        %{wasi_libc_source} | ||||
| # Sources for bootstrap_arches are inserted by lua below | ||||
| 
 | ||||
| # By default, rust tries to use "rust-lld" as a linker for WebAssembly. | ||||
| Patch1:         0001-Use-lld-provided-by-system-for-wasm.patch | ||||
| # By default, rust tries to use "rust-lld" as a linker for some targets. | ||||
| Patch1:         0001-Use-lld-provided-by-system.patch | ||||
| 
 | ||||
| # Set a substitute-path in rust-gdb for standard library sources. | ||||
| Patch2:         rustc-1.70.0-rust-gdb-substitute-path.patch | ||||
| @ -114,12 +116,14 @@ Patch2:         rustc-1.70.0-rust-gdb-substitute-path.patch | ||||
| # TODO: upstream this ability into the actual build configuration | ||||
| Patch3:         0001-Let-environment-variables-override-some-default-CPUs.patch | ||||
| 
 | ||||
| # Enable the profiler runtime for native hosts | ||||
| # https://github.com/rust-lang/rust/pull/114069 | ||||
| Patch4:         0001-Allow-using-external-builds-of-the-compiler-rt-profi.patch | ||||
| # Override the default self-contained system libraries | ||||
| # TODO: the first can probably be upstreamed, but the second is hard-coded, | ||||
| # and we're only applying that if not with bundled_wasi_libc. | ||||
| Patch4:         0001-bootstrap-allow-disabling-target-self-contained.patch | ||||
| Patch5:         0002-set-an-external-library-path-for-wasm32-wasi.patch | ||||
| 
 | ||||
| # https://github.com/rust-lang/rust/pull/114440 | ||||
| Patch5:         0001-bootstrap-config-fix-version-comparison-bug.patch | ||||
| # https://github.com/rust-lang/rust/pull/117982 | ||||
| Patch6:         0001-bootstrap-only-show-PGO-warnings-when-verbose.patch | ||||
| 
 | ||||
| ### RHEL-specific patches below ### | ||||
| 
 | ||||
| @ -127,11 +131,7 @@ Patch5:         0001-bootstrap-config-fix-version-comparison-bug.patch | ||||
| Source100:      macros.rust-toolset | ||||
| 
 | ||||
| # Disable cargo->libgit2->libssh2 on RHEL, as it's not approved for FIPS (rhbz1732949) | ||||
| Patch100:       rustc-1.71.0-disable-libssh2.patch | ||||
| 
 | ||||
| # libcurl on RHEL7 doesn't have http2, but since cargo requests it, curl-sys | ||||
| # will try to build it statically -- instead we turn off the feature. | ||||
| Patch101:       rustc-1.71.0-disable-http2.patch | ||||
| Patch100:       rustc-1.75.0-disable-libssh2.patch | ||||
| 
 | ||||
| # Get the Rust triple for any arch. | ||||
| %{lua: function rust_triple(arch) | ||||
| @ -149,14 +149,12 @@ Patch101:       rustc-1.71.0-disable-http2.patch | ||||
|   return arch.."-unknown-linux-"..abi | ||||
| end} | ||||
| 
 | ||||
| # Get the environment form of a Rust triple | ||||
| %{lua: function rust_triple_env(triple) | ||||
|   local sub = string.gsub(triple, "-", "_") | ||||
|   return string.upper(sub) | ||||
| end} | ||||
| 
 | ||||
| %global rust_triple %{lua: print(rust_triple(rpm.expand("%{_target_cpu}")))} | ||||
| %global rust_triple_env %{lua: print(rust_triple_env(rpm.expand("%{rust_triple}")))} | ||||
| 
 | ||||
| # Get the environment form of the Rust triple | ||||
| %global rust_triple_env %{lua: | ||||
|   print(string.upper(string.gsub(rpm.expand("%{rust_triple}"), "-", "_"))) | ||||
| } | ||||
| 
 | ||||
| %if %defined bootstrap_arches | ||||
| # For each bootstrap arch, add an additional binary Source. | ||||
| @ -190,12 +188,7 @@ end} | ||||
| Provides:       bundled(%{name}-bootstrap) = %{bootstrap_version} | ||||
| %else | ||||
| BuildRequires:  cargo >= %{bootstrap_version} | ||||
| %if 0%{?rhel} && 0%{?rhel} < 8 | ||||
| BuildRequires:  %{name} >= %{bootstrap_version} | ||||
| BuildConflicts: %{name} > %{version} | ||||
| %else | ||||
| BuildRequires:  (%{name} >= %{bootstrap_version} with %{name} <= %{version}) | ||||
| %endif | ||||
| %global local_rust_root %{_prefix} | ||||
| %endif | ||||
| 
 | ||||
| @ -215,7 +208,7 @@ BuildRequires:  (pkgconfig(libgit2) >= %{min_libgit2_version} with pkgconfig(lib | ||||
| %endif | ||||
| 
 | ||||
| %if %{without disabled_libssh2} | ||||
| BuildRequires:  pkgconfig(libssh2) >= %{min_libssh2_version} | ||||
| BuildRequires:  pkgconfig(libssh2) | ||||
| %endif | ||||
| 
 | ||||
| %if 0%{?rhel} == 8 | ||||
| @ -226,14 +219,11 @@ BuildRequires:  python3 | ||||
| BuildRequires:  python3-rpm-macros | ||||
| 
 | ||||
| %if %with bundled_llvm | ||||
| BuildRequires:  cmake3 >= 3.13.4 | ||||
| BuildRequires:  cmake >= 3.20.0 | ||||
| BuildRequires:  ninja-build | ||||
| Provides:       bundled(llvm) = %{bundled_llvm_version} | ||||
| %else | ||||
| BuildRequires:  cmake >= 2.8.11 | ||||
| %if 0%{?epel} == 7 | ||||
| %global llvm llvm14 | ||||
| %endif | ||||
| BuildRequires:  cmake >= 3.5.1 | ||||
| %if %defined llvm | ||||
| %global llvm_root %{_libdir}/%{llvm} | ||||
| %else | ||||
| @ -268,20 +258,7 @@ Requires:       %{name}-std-static%{?_isa} = %{version}-%{release} | ||||
| # https://github.com/rust-lang/rust/issues/11937 | ||||
| Requires:       /usr/bin/cc | ||||
| 
 | ||||
| %if 0%{?epel} == 7 | ||||
| %global devtoolset_name devtoolset-11 | ||||
| BuildRequires:  %{devtoolset_name}-binutils | ||||
| BuildRequires:  %{devtoolset_name}-gcc | ||||
| BuildRequires:  %{devtoolset_name}-gcc-c++ | ||||
| %global devtoolset_bindir /opt/rh/%{devtoolset_name}/root/usr/bin | ||||
| %global __cc     %{devtoolset_bindir}/gcc | ||||
| %global __cxx    %{devtoolset_bindir}/g++ | ||||
| %global __ar     %{devtoolset_bindir}/ar | ||||
| %global __ranlib %{devtoolset_bindir}/ranlib | ||||
| %global __strip  %{devtoolset_bindir}/strip | ||||
| %else | ||||
| %global __ranlib %{_bindir}/ranlib | ||||
| %endif | ||||
| 
 | ||||
| # ALL Rust libraries are private, because they don't keep an ABI. | ||||
| %global _privatelibs lib(.*-[[:xdigit:]]{16}*|rustc.*)[.]so.* | ||||
| @ -293,14 +270,7 @@ BuildRequires:  %{devtoolset_name}-gcc-c++ | ||||
| # While we don't want to encourage dynamic linking to Rust shared libraries, as | ||||
| # there's no stable ABI, we still need the unallocated metadata (.rustc) to | ||||
| # support custom-derive plugins like #[proc_macro_derive(Foo)]. | ||||
| %if 0%{?rhel} && 0%{?rhel} < 8 | ||||
| # eu-strip is very eager by default, so we have to limit it to -g, only debugging symbols. | ||||
| %global _find_debuginfo_opts -g | ||||
| %undefine _include_minidebuginfo | ||||
| %else | ||||
| # Newer find-debuginfo.sh supports --keep-section, which is preferable. rhbz1465997 | ||||
| %global _find_debuginfo_opts --keep-section .rustc | ||||
| %endif | ||||
| 
 | ||||
| %if %{without bundled_llvm} | ||||
| %if "%{llvm_root}" == "%{_prefix}" || 0%{?scl:1} | ||||
| @ -325,7 +295,11 @@ BuildRequires:  mingw64-winpthreads-static | ||||
| %endif | ||||
| 
 | ||||
| %if %defined wasm_targets | ||||
| %if %with bundled_wasi_libc | ||||
| BuildRequires:  clang | ||||
| %else | ||||
| BuildRequires:  wasi-libc-static | ||||
| %endif | ||||
| BuildRequires:  lld | ||||
| # brp-strip-static-archive breaks the archive index for wasm | ||||
| %global __os_install_post \ | ||||
| @ -334,10 +308,8 @@ find '%{buildroot}%{rustlibdir}'/wasm*/lib -type f -regex '.*\\.\\(a\\|rlib\\)' | ||||
| %{nil} | ||||
| %endif | ||||
| 
 | ||||
| %if 0%{?fedora} || 0%{?rhel} >= 8 | ||||
| # For profiler_builtins | ||||
| BuildRequires:  compiler-rt | ||||
| %endif | ||||
| 
 | ||||
| # This component was removed as of Rust 1.69.0. | ||||
| # https://github.com/rust-lang/rust/pull/101841 | ||||
| @ -360,66 +332,69 @@ Requires:       glibc-devel%{?_isa} >= 2.17 | ||||
| This package includes the standard libraries for building applications | ||||
| written in Rust. | ||||
| 
 | ||||
| %if %defined mingw_targets | ||||
| %{lua: do | ||||
|   for triple in string.gmatch(rpm.expand("%{mingw_targets}"), "%S+") do | ||||
|     local subs = { | ||||
|       triple = triple, | ||||
|       name = rpm.expand("%{name}"), | ||||
|       verrel = rpm.expand("%{version}-%{release}"), | ||||
|       mingw = string.sub(triple, 1, 4) == "i686" and "mingw32" or "mingw64", | ||||
|     } | ||||
|     local s = string.gsub([[ | ||||
| %global target_package()                        \ | ||||
| %package std-static-%1                          \ | ||||
| Summary:        Standard library for Rust %1    \ | ||||
| Requires:       %{name} = %{version}-%{release} | ||||
| 
 | ||||
| %package std-static-{{triple}} | ||||
| Summary:        Standard library for Rust {{triple}} | ||||
| %global target_description()                                            \ | ||||
| %description std-static-%1                                              \ | ||||
| This package includes the standard libraries for building applications  \ | ||||
| written in Rust for the %2 target %1. | ||||
| 
 | ||||
| %if %target_enabled i686-pc-windows-gnu | ||||
| %target_package i686-pc-windows-gnu | ||||
| Requires:       mingw32-crt | ||||
| Requires:       mingw32-gcc | ||||
| Requires:       mingw32-winpthreads-static | ||||
| Provides:       mingw32-rust = %{version}-%{release} | ||||
| Provides:       mingw32-rustc = %{version}-%{release} | ||||
| BuildArch:      noarch | ||||
| Provides:       {{mingw}}-rust = {{verrel}} | ||||
| Provides:       {{mingw}}-rustc = {{verrel}} | ||||
| Requires:       {{mingw}}-crt | ||||
| Requires:       {{mingw}}-gcc | ||||
| Requires:       {{mingw}}-winpthreads-static | ||||
| Requires:       {{name}} = {{verrel}} | ||||
| 
 | ||||
| %description std-static-{{triple}} | ||||
| This package includes the standard libraries for building applications | ||||
| written in Rust for the MinGW target {{triple}}. | ||||
| 
 | ||||
| ]], "{{(%w+)}}", subs) | ||||
|     print(s) | ||||
|   end | ||||
| end} | ||||
| %target_description i686-pc-windows-gnu MinGW | ||||
| %endif | ||||
| 
 | ||||
| %if %defined wasm_targets | ||||
| %{lua: do | ||||
|   for triple in string.gmatch(rpm.expand("%{wasm_targets}"), "%S+") do | ||||
|     local subs = { | ||||
|       triple = triple, | ||||
|       name = rpm.expand("%{name}"), | ||||
|       verrel = rpm.expand("%{version}-%{release}"), | ||||
|       wasi = string.find(triple, "-wasi") and 1 or 0, | ||||
|     } | ||||
|     local s = string.gsub([[ | ||||
| %if %target_enabled x86_64-pc-windows-gnu | ||||
| %target_package x86_64-pc-windows-gnu | ||||
| Requires:       mingw64-crt | ||||
| Requires:       mingw64-gcc | ||||
| Requires:       mingw64-winpthreads-static | ||||
| Provides:       mingw64-rust = %{version}-%{release} | ||||
| Provides:       mingw64-rustc = %{version}-%{release} | ||||
| BuildArch:      noarch | ||||
| %target_description x86_64-pc-windows-gnu MinGW | ||||
| %endif | ||||
| 
 | ||||
| %package std-static-{{triple}} | ||||
| Summary:        Standard library for Rust {{triple}} | ||||
| %if %target_enabled wasm32-unknown-unknown | ||||
| %target_package wasm32-unknown-unknown | ||||
| Requires:       lld >= 8.0 | ||||
| # FIX: we can't be noarch while excluding s390x for lack of lld | ||||
| # BuildArch:      noarch | ||||
| Requires:       {{name}} = {{verrel}} | ||||
| Requires:       lld >= 8.0 | ||||
| %if {{wasi}} | ||||
| Provides:       bundled(wasi-libc) | ||||
| %target_description wasm32-unknown-unknown WebAssembly | ||||
| %endif | ||||
| 
 | ||||
| %description std-static-{{triple}} | ||||
| This package includes the standard libraries for building applications | ||||
| written in Rust for the WebAssembly target {{triple}}. | ||||
| %if %target_enabled wasm32-wasi | ||||
| %target_package wasm32-wasi | ||||
| Requires:       lld >= 8.0 | ||||
| %if %with bundled_wasi_libc | ||||
| Provides:       bundled(wasi-libc) | ||||
| %else | ||||
| Requires:       wasi-libc-static | ||||
| %endif | ||||
| # FIX: we can't be noarch while excluding s390x for lack of lld | ||||
| # BuildArch:      noarch | ||||
| %target_description wasm32-wasi WebAssembly | ||||
| %endif | ||||
| 
 | ||||
| ]], "{{(%w+)}}", subs) | ||||
|     print(s) | ||||
|   end | ||||
| end} | ||||
| %if %target_enabled x86_64-unknown-none | ||||
| %target_package x86_64-unknown-none | ||||
| Requires:       lld | ||||
| %target_description x86_64-unknown-none embedded | ||||
| %endif | ||||
| 
 | ||||
| %if %target_enabled x86_64-unknown-uefi | ||||
| %target_package x86_64-unknown-uefi | ||||
| Requires:       lld | ||||
| %target_description x86_64-unknown-uefi embedded | ||||
| %endif | ||||
| 
 | ||||
| 
 | ||||
| @ -442,8 +417,6 @@ This package includes the rust-gdb script, which allows easier debugging of Rust | ||||
| programs. | ||||
| 
 | ||||
| 
 | ||||
| %if %with lldb | ||||
| 
 | ||||
| %package lldb | ||||
| Summary:        LLDB pretty printers for Rust | ||||
| BuildArch:      noarch | ||||
| @ -455,8 +428,6 @@ Requires:       %{name}-debugger-common = %{version}-%{release} | ||||
| This package includes the rust-lldb script, which allows easier debugging of Rust | ||||
| programs. | ||||
| 
 | ||||
| %endif | ||||
| 
 | ||||
| 
 | ||||
| %package doc | ||||
| Summary:        Documentation for Rust | ||||
| @ -500,6 +471,9 @@ and ensure that you'll always get a repeatable build. | ||||
| Summary:        Tool to find and fix Rust formatting issues | ||||
| Requires:       cargo | ||||
| 
 | ||||
| # /usr/bin/rustfmt is dynamically linked against internal rustc libs | ||||
| Requires:       %{name}%{?_isa} = %{version}-%{release} | ||||
| 
 | ||||
| # The component/package was rustfmt-preview until Rust 1.31. | ||||
| Obsoletes:      rustfmt-preview < 1.0.0 | ||||
| Provides:       rustfmt-preview = %{version}-%{release} | ||||
| @ -512,11 +486,7 @@ A tool for formatting Rust code according to style guidelines. | ||||
| Summary:        Rust implementation of the Language Server Protocol | ||||
| 
 | ||||
| # The standard library sources are needed for most functionality. | ||||
| %if 0%{?rhel} && 0%{?rhel} < 8 | ||||
| Requires:       %{name}-src | ||||
| %else | ||||
| Recommends:     %{name}-src | ||||
| %endif | ||||
| 
 | ||||
| # RLS is no longer available as of Rust 1.65, but we're including the stub | ||||
| # binary that implements LSP just enough to recommend rust-analyzer. | ||||
| @ -547,11 +517,7 @@ A collection of lints to catch common mistakes and improve your Rust code. | ||||
| %package src | ||||
| Summary:        Sources for the Rust standard library | ||||
| BuildArch:      noarch | ||||
| %if 0%{?rhel} && 0%{?rhel} < 8 | ||||
| Requires:       %{name}-std-static = %{version}-%{release} | ||||
| %else | ||||
| Recommends:     %{name}-std-static = %{version}-%{release} | ||||
| %endif | ||||
| 
 | ||||
| %description src | ||||
| This package includes source files for the Rust standard library.  It may be | ||||
| @ -587,8 +553,9 @@ test -f '%{local_rust_root}/bin/cargo' | ||||
| test -f '%{local_rust_root}/bin/rustc' | ||||
| %endif | ||||
| 
 | ||||
| %if %defined wasm_targets | ||||
| %if %{defined wasm_targets} && %{with bundled_wasi_libc} | ||||
| %setup -q -n %{wasi_libc_name} -T -b 1 | ||||
| rm -rf %{wasi_libc_dir}/dlmalloc/ | ||||
| %endif | ||||
| 
 | ||||
| %setup -q -n %{rustc_package} | ||||
| @ -597,17 +564,15 @@ test -f '%{local_rust_root}/bin/rustc' | ||||
| %patch -P2 -p1 | ||||
| %patch -P3 -p1 | ||||
| %patch -P4 -p1 | ||||
| %if %without bundled_wasi_libc | ||||
| %patch -P5 -p1 | ||||
| %endif | ||||
| %patch -P6 -p1 | ||||
| 
 | ||||
| %if %with disabled_libssh2 | ||||
| %patch -P100 -p1 | ||||
| %endif | ||||
| 
 | ||||
| %if %without curl_http2 | ||||
| %patch -P101 -p1 | ||||
| rm -rf vendor/libnghttp2-sys*/ | ||||
| %endif | ||||
| 
 | ||||
| # Use our explicit python3 first | ||||
| sed -i.try-python -e '/^try python3 /i try "%{__python3}" "$@"' ./configure | ||||
| 
 | ||||
| @ -619,18 +584,21 @@ rm -rf src/llvm-project/ | ||||
| mkdir -p src/llvm-project/libunwind/ | ||||
| %endif | ||||
| 
 | ||||
| # Remove other unused vendored libraries | ||||
| rm -rf vendor/curl-sys*/curl/ | ||||
| rm -rf vendor/*jemalloc-sys*/jemalloc/ | ||||
| rm -rf vendor/libffi-sys*/libffi/ | ||||
| rm -rf vendor/libmimalloc-sys*/c_src/mimalloc/ | ||||
| rm -rf vendor/libssh2-sys*/libssh2/ | ||||
| rm -rf vendor/libz-sys*/src/zlib{,-ng}/ | ||||
| rm -rf vendor/lzma-sys*/xz-*/ | ||||
| rm -rf vendor/openssl-src*/openssl/ | ||||
| 
 | ||||
| # Remove other unused vendored libraries. This leaves the directory in place, | ||||
| # because some build scripts watch them, e.g. "cargo:rerun-if-changed=curl". | ||||
| %define clear_dir() find ./%1 -mindepth 1 -delete | ||||
| %clear_dir vendor/curl-sys*/curl/ | ||||
| %clear_dir vendor/*jemalloc-sys*/jemalloc/ | ||||
| %clear_dir vendor/libffi-sys*/libffi/ | ||||
| %clear_dir vendor/libmimalloc-sys*/c_src/mimalloc/ | ||||
| %clear_dir vendor/libssh2-sys*/libssh2/ | ||||
| %clear_dir vendor/libz-sys*/src/zlib{,-ng}/ | ||||
| %clear_dir vendor/lzma-sys*/xz-*/ | ||||
| %clear_dir vendor/openssl-src*/openssl/ | ||||
| 
 | ||||
| %if %without bundled_libgit2 | ||||
| rm -rf vendor/libgit2-sys*/libgit2/ | ||||
| %clear_dir vendor/libgit2-sys*/libgit2/ | ||||
| %endif | ||||
| 
 | ||||
| %if %with disabled_libssh2 | ||||
| @ -638,13 +606,7 @@ rm -rf vendor/libssh2-sys*/ | ||||
| %endif | ||||
| 
 | ||||
| # This only affects the transient rust-installer, but let it use our dynamic xz-libs | ||||
| sed -i.lzma -e '/LZMA_API_STATIC/d' src/bootstrap/tool.rs | ||||
| 
 | ||||
| %if %{with bundled_llvm} && 0%{?epel} == 7 | ||||
| mkdir -p cmake-bin | ||||
| ln -s /usr/bin/cmake3 cmake-bin/cmake | ||||
| %global cmake_path $PWD/cmake-bin | ||||
| %endif | ||||
| sed -i.lzma -e '/LZMA_API_STATIC/d' src/bootstrap/src/core/build_steps/tool.rs | ||||
| 
 | ||||
| %if %{without bundled_llvm} && %{with llvm_static} | ||||
| # Static linking to distro LLVM needs to add -lffi | ||||
| @ -670,7 +632,7 @@ find -name '*.rs' -type f -perm /111 -exec chmod -v -x '{}' '+' | ||||
| %endif | ||||
| 
 | ||||
| # These are similar to __cflags_arch_* in /usr/lib/rpm/redhat/macros | ||||
| %{lua: function rustc_target_cpus() | ||||
| %global rustc_target_cpus %{lua: do | ||||
|   local fedora = tonumber(rpm.expand("0%{?fedora}")) | ||||
|   local rhel = tonumber(rpm.expand("0%{?rhel}")) | ||||
|   local env = | ||||
| @ -679,14 +641,11 @@ find -name '*.rs' -type f -perm /111 -exec chmod -v -x '{}' '+' | ||||
|     .. " RUSTC_TARGET_CPU_S390X=" .. | ||||
|         ((rhel >= 9) and "z14" or (rhel == 8 or fedora >= 38) and "z13" or | ||||
|          (fedora >= 26) and "zEC12" or (rhel == 7) and "z196" or "z10") | ||||
|   return env | ||||
|   print(env) | ||||
| end} | ||||
| 
 | ||||
| # Set up shared environment variables for build/install/check | ||||
| %global rust_env %{?rustflags:RUSTFLAGS="%{rustflags}"} %{lua: print(rustc_target_cpus())} | ||||
| %if %defined cmake_path | ||||
| %global rust_env %{?rust_env} PATH="%{cmake_path}:$PATH" | ||||
| %endif | ||||
| %global rust_env %{?rustflags:RUSTFLAGS="%{rustflags}"} %{rustc_target_cpus} | ||||
| %if %without disabled_libssh2 | ||||
| # convince libssh2-sys to use the distro libssh2 | ||||
| %global rust_env %{?rust_env} LIBSSH2_SYS_USE_PKG_CONFIG=1 | ||||
| @ -697,17 +656,13 @@ end} | ||||
| %{export_rust_env} | ||||
| 
 | ||||
| %ifarch %{arm} %{ix86} | ||||
| # full debuginfo is exhausting memory; just do libstd for now | ||||
| # full debuginfo and compiler opts are exhausting memory; just do libstd for now | ||||
| # https://github.com/rust-lang/rust/issues/45854 | ||||
| %if 0%{?rhel} && 0%{?rhel} < 8 | ||||
| # Older rpmbuild didn't work with partial debuginfo coverage. | ||||
| %global debug_package %{nil} | ||||
| %define enable_debuginfo --debuginfo-level=0 | ||||
| %else | ||||
| %define enable_debuginfo --debuginfo-level=0 --debuginfo-level-std=2 | ||||
| %endif | ||||
| %define enable_rust_opts --set rust.codegen-units-std=1 | ||||
| %else | ||||
| %define enable_debuginfo --debuginfo-level=2 | ||||
| %define enable_rust_opts --set rust.codegen-units=1 --set rust.lto=thin | ||||
| %endif | ||||
| 
 | ||||
| # Some builders have relatively little memory for their CPU count. | ||||
| @ -719,45 +674,40 @@ if [ "$max_cpus" -ge 1 -a "$max_cpus" -lt "$ncpus" ]; then | ||||
| fi | ||||
| 
 | ||||
| %if %defined mingw_targets | ||||
| %{lua: do | ||||
|   local cfg = "" | ||||
|   for triple in string.gmatch(rpm.expand("%{mingw_targets}"), "%S+") do | ||||
|     local subs = { | ||||
|       triple = triple, | ||||
|       mingw = string.sub(triple, 1, 4) == "i686" and "mingw32" or "mingw64", | ||||
|     } | ||||
|     local s = string.gsub([[ | ||||
|       --set target.{{triple}}.linker=%{{{mingw}}_cc} | ||||
|       --set target.{{triple}}.cc=%{{{mingw}}_cc} | ||||
|       --set target.{{triple}}.ar=%{{{mingw}}_ar} | ||||
|       --set target.{{triple}}.ranlib=%{{{mingw}}_ranlib} | ||||
|     ]], "{{(%w+)}}", subs) | ||||
|     cfg = cfg .. " " .. s | ||||
|   end | ||||
|   cfg = string.gsub(cfg, "%s+", " ") | ||||
|   rpm.define("mingw_target_config " .. cfg) | ||||
| end} | ||||
| %define mingw_target_config %{shrink: | ||||
|   --set target.i686-pc-windows-gnu.linker=%{mingw32_cc} | ||||
|   --set target.i686-pc-windows-gnu.cc=%{mingw32_cc} | ||||
|   --set target.i686-pc-windows-gnu.ar=%{mingw32_ar} | ||||
|   --set target.i686-pc-windows-gnu.ranlib=%{mingw32_ranlib} | ||||
|   --set target.i686-pc-windows-gnu.self-contained=false | ||||
|   --set target.x86_64-pc-windows-gnu.linker=%{mingw64_cc} | ||||
|   --set target.x86_64-pc-windows-gnu.cc=%{mingw64_cc} | ||||
|   --set target.x86_64-pc-windows-gnu.ar=%{mingw64_ar} | ||||
|   --set target.x86_64-pc-windows-gnu.ranlib=%{mingw64_ranlib} | ||||
|   --set target.x86_64-pc-windows-gnu.self-contained=false | ||||
| } | ||||
| %endif | ||||
| 
 | ||||
| %if %defined wasm_targets | ||||
| %make_build --quiet -C %{wasi_libc_dir} CC=clang AR=llvm-ar NM=llvm-nm | ||||
| %{lua: do | ||||
|   local wasi_root = rpm.expand("%{wasi_libc_dir}") .. "/sysroot" | ||||
|   local cfg = "" | ||||
|   for triple in string.gmatch(rpm.expand("%{wasm_targets}"), "%S+") do | ||||
|     if string.find(triple, "-wasi") then | ||||
|       cfg = cfg .. " --set target." .. triple .. ".wasi-root=" .. wasi_root | ||||
|     end | ||||
|   end | ||||
|   rpm.define("wasm_target_config "..cfg) | ||||
| end} | ||||
| %if %with bundled_wasi_libc | ||||
| %make_build --quiet -C %{wasi_libc_dir} MALLOC_IMPL=emmalloc CC=clang AR=llvm-ar NM=llvm-nm | ||||
| %define wasm_target_config --set target.wasm32-wasi.wasi-root=%{wasi_libc_dir}/sysroot | ||||
| %else | ||||
| %define wasm_target_config %{shrink: | ||||
|   --set target.wasm32-wasi.wasi-root=%{_prefix}/wasm32-wasi | ||||
|   --set target.wasm32-wasi.self-contained=false | ||||
| } | ||||
| %endif | ||||
| %endif | ||||
| 
 | ||||
| %if 0%{?fedora} || 0%{?rhel} >= 8 | ||||
| # The exact profiler path is version dependent, and uses LLVM-specific | ||||
| # arch names in the filename, but this find is good enough for now... | ||||
| PROFILER=$(find %{_libdir}/clang -type f -name 'libclang_rt.profile-*.a') | ||||
| # Find the compiler-rt library for the Rust profiler_builtins crate. | ||||
| %if 0%{?clang_major_version} >= 17 | ||||
| %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 | ||||
| test -r "%{profiler}" | ||||
| 
 | ||||
| %configure --disable-option-checking \ | ||||
|   --libdir=%{common_libdir} \ | ||||
| @ -767,7 +717,7 @@ PROFILER=$(find %{_libdir}/clang -type f -name 'libclang_rt.profile-*.a') | ||||
|   --set target.%{rust_triple}.cxx=%{__cxx} \ | ||||
|   --set target.%{rust_triple}.ar=%{__ar} \ | ||||
|   --set target.%{rust_triple}.ranlib=%{__ranlib} \ | ||||
|   ${PROFILER:+--set target.%{rust_triple}.profiler="$PROFILER"} \ | ||||
|   --set target.%{rust_triple}.profiler="%{profiler}" \ | ||||
|   %{?mingw_target_config} \ | ||||
|   %{?wasm_target_config} \ | ||||
|   --python=%{__python3} \ | ||||
| @ -779,7 +729,7 @@ PROFILER=$(find %{_libdir}/clang -type f -name 'libclang_rt.profile-*.a') | ||||
|   --disable-llvm-static-stdcpp \ | ||||
|   --disable-rpath \ | ||||
|   %{enable_debuginfo} \ | ||||
|   --set rust.codegen-units-std=1 \ | ||||
|   %{enable_rust_opts} \ | ||||
|   --set build.build-stage=2 \ | ||||
|   --set build.doc-stage=2 \ | ||||
|   --set build.install-stage=2 \ | ||||
| @ -792,11 +742,32 @@ PROFILER=$(find %{_libdir}/clang -type f -name 'libclang_rt.profile-*.a') | ||||
|   --release-channel=%{channel} \ | ||||
|   --release-description="%{?fedora:Fedora }%{?rhel:Red Hat }%{version}-%{release}" | ||||
| 
 | ||||
| %{__python3} ./x.py build -j "$ncpus" | ||||
| %{__python3} ./x.py doc | ||||
| %global __x %{__python3} ./x.py | ||||
| %global __xk %{__x} --keep-stage=0 --keep-stage=1 | ||||
| 
 | ||||
| for triple in %{?mingw_targets} %{?wasm_targets}; do | ||||
|   %{__python3} ./x.py build --target=$triple std | ||||
| %if %with rustc_pgo | ||||
| # Build the compiler with profile instrumentation | ||||
| PROFRAW="$PWD/build/profiles" | ||||
| PROFDATA="$PWD/build/rustc.profdata" | ||||
| mkdir -p "$PROFRAW" | ||||
| %{__x} build -j "$ncpus" sysroot --rust-profile-generate="$PROFRAW" | ||||
| # Build cargo as a workload to generate compiler profiles | ||||
| env LLVM_PROFILE_FILE="$PROFRAW/default_%%m_%%p.profraw" %{__xk} build cargo | ||||
| llvm-profdata merge -o "$PROFDATA" "$PROFRAW" | ||||
| rm -r "$PROFRAW" build/%{rust_triple}/stage2*/ | ||||
| # Rebuild the compiler using the profile data | ||||
| %{__x} build -j "$ncpus" sysroot --rust-profile-use="$PROFDATA" | ||||
| %else | ||||
| # Build the compiler without PGO | ||||
| %{__x} build -j "$ncpus" sysroot | ||||
| %endif | ||||
| 
 | ||||
| # Build everything else normally | ||||
| %{__xk} build | ||||
| %{__xk} doc | ||||
| 
 | ||||
| for triple in %{?all_targets} ; do | ||||
|   %{__xk} build --target=$triple std | ||||
| done | ||||
| 
 | ||||
| %install | ||||
| @ -805,10 +776,10 @@ done | ||||
| %endif | ||||
| %{export_rust_env} | ||||
| 
 | ||||
| DESTDIR=%{buildroot} %{__python3} ./x.py install | ||||
| DESTDIR=%{buildroot} %{__xk} install | ||||
| 
 | ||||
| for triple in %{?mingw_targets} %{?wasm_targets}; do | ||||
|   DESTDIR=%{buildroot} %{__python3} ./x.py install --target=$triple std | ||||
| for triple in %{?all_targets} ; do | ||||
|   DESTDIR=%{buildroot} %{__xk} install --target=$triple std | ||||
| done | ||||
| 
 | ||||
| # The rls stub doesn't have an install target, but we can just copy it. | ||||
| @ -878,11 +849,6 @@ mkdir -p %{buildroot}%{_datadir}/cargo/registry | ||||
| mkdir -p %{buildroot}%{_docdir}/cargo | ||||
| ln -sT ../rust/html/cargo/ %{buildroot}%{_docdir}/cargo/html | ||||
| 
 | ||||
| %if %without lldb | ||||
| rm -f %{buildroot}%{_bindir}/rust-lldb | ||||
| rm -f %{buildroot}%{rustlibdir}/etc/lldb_* | ||||
| %endif | ||||
| 
 | ||||
| # We don't want Rust copies of LLVM tools (rust-lld, rust-llvm-dwp) | ||||
| rm -f %{buildroot}%{rustlibdir}/%{rust_triple}/bin/rust-ll* | ||||
| 
 | ||||
| @ -899,34 +865,41 @@ rm -f %{buildroot}%{rustlibdir}/%{rust_triple}/bin/rust-ll* | ||||
| %{export_rust_env} | ||||
| 
 | ||||
| # Sanity-check the installed binaries, debuginfo-stripped and all. | ||||
| %{buildroot}%{_bindir}/cargo new build/hello-world | ||||
| env RUSTC=%{buildroot}%{_bindir}/rustc \ | ||||
|     LD_LIBRARY_PATH="%{buildroot}%{_libdir}:$LD_LIBRARY_PATH" \ | ||||
|     %{buildroot}%{_bindir}/cargo run --manifest-path build/hello-world/Cargo.toml | ||||
| TMP_HELLO=$(mktemp -d) | ||||
| ( | ||||
|   cd "$TMP_HELLO" | ||||
|   export RUSTC=%{buildroot}%{_bindir}/rustc \ | ||||
|     LD_LIBRARY_PATH="%{buildroot}%{_libdir}:$LD_LIBRARY_PATH" | ||||
|   %{buildroot}%{_bindir}/cargo init --name hello-world | ||||
|   %{buildroot}%{_bindir}/cargo run --verbose | ||||
| 
 | ||||
| # Try a build sanity-check for other targets | ||||
| for triple in %{?mingw_targets} %{?wasm_targets}; do | ||||
|   env RUSTC=%{buildroot}%{_bindir}/rustc \ | ||||
|       LD_LIBRARY_PATH="%{buildroot}%{_libdir}:$LD_LIBRARY_PATH" \ | ||||
|       %{buildroot}%{_bindir}/cargo build --manifest-path build/hello-world/Cargo.toml --target=$triple | ||||
| done | ||||
|   # Sanity-check that code-coverage builds and runs | ||||
|   env RUSTFLAGS="-Cinstrument-coverage" %{buildroot}%{_bindir}/cargo run --verbose | ||||
|   test -r default_*.profraw | ||||
| 
 | ||||
|   # Try a build sanity-check for other std-enabled targets | ||||
|   for triple in %{?mingw_targets} %{?wasm_targets}; do | ||||
|     %{buildroot}%{_bindir}/cargo build --verbose --target=$triple | ||||
|   done | ||||
| ) | ||||
| rm -rf "$TMP_HELLO" | ||||
| 
 | ||||
| # 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. | ||||
| 
 | ||||
| # Bootstrap is excluded because it's not something we ship, and a lot of its | ||||
| # tests are geared toward the upstream CI environment. | ||||
| timeout -v 90m %{__python3} ./x.py test --no-fail-fast --exclude src/bootstrap || : | ||||
| timeout -v 90m %{__xk} test --no-fail-fast --skip src/bootstrap || : | ||||
| rm -rf "./build/%{rust_triple}/test/" | ||||
| 
 | ||||
| timeout -v 30m %{__python3} ./x.py test --no-fail-fast cargo || : | ||||
| timeout -v 30m %{__xk} test --no-fail-fast cargo || : | ||||
| rm -rf "./build/%{rust_triple}/stage2-tools/%{rust_triple}/cit/" | ||||
| 
 | ||||
| timeout -v 30m %{__python3} ./x.py test --no-fail-fast clippy || : | ||||
| timeout -v 30m %{__xk} test --no-fail-fast clippy || : | ||||
| 
 | ||||
| timeout -v 30m %{__python3} ./x.py test --no-fail-fast rust-analyzer || : | ||||
| timeout -v 30m %{__xk} test --no-fail-fast rust-analyzer || : | ||||
| 
 | ||||
| timeout -v 30m %{__python3} ./x.py test --no-fail-fast rustfmt || : | ||||
| timeout -v 30m %{__xk} test --no-fail-fast rustfmt || : | ||||
| 
 | ||||
| 
 | ||||
| %ldconfig_scriptlets | ||||
| @ -953,58 +926,46 @@ timeout -v 30m %{__python3} ./x.py test --no-fail-fast rustfmt || : | ||||
| %dir %{rustlibdir}/%{rust_triple}/lib | ||||
| %{rustlibdir}/%{rust_triple}/lib/*.rlib | ||||
| 
 | ||||
| %global target_files()      \ | ||||
| %files std-static-%1        \ | ||||
| %dir %{rustlibdir}          \ | ||||
| %dir %{rustlibdir}/%1       \ | ||||
| %dir %{rustlibdir}/%1/lib   \ | ||||
| %{rustlibdir}/%1/lib/*.rlib | ||||
| 
 | ||||
| %if %defined mingw_targets | ||||
| %{lua: do | ||||
|   for triple in string.gmatch(rpm.expand("%{mingw_targets}"), "%S+") do | ||||
|     local subs = { | ||||
|       triple = triple, | ||||
|       rustlibdir = rpm.expand("%{rustlibdir}"), | ||||
|     } | ||||
|     local s = string.gsub([[ | ||||
| 
 | ||||
| %files std-static-{{triple}} | ||||
| %dir {{rustlibdir}} | ||||
| %dir {{rustlibdir}}/{{triple}} | ||||
| %dir {{rustlibdir}}/{{triple}}/lib | ||||
| {{rustlibdir}}/{{triple}}/lib/*.rlib | ||||
| {{rustlibdir}}/{{triple}}/lib/rs*.o | ||||
| %exclude {{rustlibdir}}/{{triple}}/lib/*.dll | ||||
| %exclude {{rustlibdir}}/{{triple}}/lib/*.dll.a | ||||
| %exclude {{rustlibdir}}/{{triple}}/lib/self-contained | ||||
| 
 | ||||
| ]], "{{(%w+)}}", subs) | ||||
|     print(s) | ||||
|   end | ||||
| end} | ||||
| %if %target_enabled i686-pc-windows-gnu | ||||
| %target_files i686-pc-windows-gnu | ||||
| %{rustlibdir}/i686-pc-windows-gnu/lib/rs*.o | ||||
| %exclude %{rustlibdir}/i686-pc-windows-gnu/lib/*.dll | ||||
| %exclude %{rustlibdir}/i686-pc-windows-gnu/lib/*.dll.a | ||||
| %endif | ||||
| 
 | ||||
| 
 | ||||
| %if %defined wasm_targets | ||||
| %{lua: do | ||||
|   for triple in string.gmatch(rpm.expand("%{wasm_targets}"), "%S+") do | ||||
|     local subs = { | ||||
|       triple = triple, | ||||
|       rustlibdir = rpm.expand("%{rustlibdir}"), | ||||
|       wasi = string.find(triple, "-wasi") and 1 or 0, | ||||
|     } | ||||
|     local s = string.gsub([[ | ||||
| 
 | ||||
| %files std-static-{{triple}} | ||||
| %dir {{rustlibdir}} | ||||
| %dir {{rustlibdir}}/{{triple}} | ||||
| %dir {{rustlibdir}}/{{triple}}/lib | ||||
| {{rustlibdir}}/{{triple}}/lib/*.rlib | ||||
| %if {{wasi}} | ||||
| %dir {{rustlibdir}}/{{triple}}/lib/self-contained | ||||
| {{rustlibdir}}/{{triple}}/lib/self-contained/crt*.o | ||||
| {{rustlibdir}}/{{triple}}/lib/self-contained/libc.a | ||||
| %if %target_enabled x86_64-pc-windows-gnu | ||||
| %target_files x86_64-pc-windows-gnu | ||||
| %{rustlibdir}/x86_64-pc-windows-gnu/lib/rs*.o | ||||
| %exclude %{rustlibdir}/x86_64-pc-windows-gnu/lib/*.dll | ||||
| %exclude %{rustlibdir}/x86_64-pc-windows-gnu/lib/*.dll.a | ||||
| %endif | ||||
| 
 | ||||
| ]], "{{(%w+)}}", subs) | ||||
|     print(s) | ||||
|   end | ||||
| end} | ||||
| %if %target_enabled wasm32-unknown-unknown | ||||
| %target_files wasm32-unknown-unknown | ||||
| %endif | ||||
| 
 | ||||
| %if %target_enabled wasm32-wasi | ||||
| %target_files wasm32-wasi | ||||
| %if %with bundled_wasi_libc | ||||
| %dir %{rustlibdir}/wasm32-wasi/lib/self-contained | ||||
| %{rustlibdir}/wasm32-wasi/lib/self-contained/crt*.o | ||||
| %{rustlibdir}/wasm32-wasi/lib/self-contained/libc.a | ||||
| %endif | ||||
| %endif | ||||
| 
 | ||||
| %if %target_enabled x86_64-unknown-none | ||||
| %target_files x86_64-unknown-none | ||||
| %endif | ||||
| 
 | ||||
| %if %target_enabled x86_64-unknown-uefi | ||||
| %target_files x86_64-unknown-uefi | ||||
| %endif | ||||
| 
 | ||||
| 
 | ||||
| @ -1020,11 +981,9 @@ end} | ||||
| %exclude %{_bindir}/rust-gdbgui | ||||
| 
 | ||||
| 
 | ||||
| %if %with lldb | ||||
| %files lldb | ||||
| %{_bindir}/rust-lldb | ||||
| %{rustlibdir}/etc/lldb_* | ||||
| %endif | ||||
| 
 | ||||
| 
 | ||||
| %files doc | ||||
| @ -1041,7 +1000,6 @@ end} | ||||
| %license src/tools/cargo/LICENSE-{APACHE,MIT,THIRD-PARTY} | ||||
| %doc src/tools/cargo/README.md | ||||
| %{_bindir}/cargo | ||||
| %{_libexecdir}/cargo* | ||||
| %{_mandir}/man1/cargo*.1* | ||||
| %{_sysconfdir}/bash_completion.d/cargo | ||||
| %{_datadir}/zsh/site-functions/_cargo | ||||
| @ -1082,6 +1040,20 @@ end} | ||||
| 
 | ||||
| 
 | ||||
| %changelog | ||||
| * Fri Jan 05 2024 Josh Stone <jistone@redhat.com> - 1.75.0-1 | ||||
| - Update to 1.75.0. | ||||
| 
 | ||||
| * Wed Jan 03 2024 Josh Stone <jistone@redhat.com> - 1.74.1-1 | ||||
| - Update to 1.74.1. | ||||
| 
 | ||||
| * Tue Oct 17 2023 Josh Stone <jistone@redhat.com> - 1.73.0-1 | ||||
| - Update to 1.73.0. | ||||
| - Use emmalloc instead of CC0 dlmalloc when bundling wasi-libc | ||||
| 
 | ||||
| * Thu Oct 12 2023 Josh Stone <jistone@redhat.com> - 1.72.1-1 | ||||
| - Update to 1.72.1. | ||||
| - Migrated to SPDX license | ||||
| 
 | ||||
| * Tue Aug 08 2023 Josh Stone <jistone@redhat.com> - 1.71.1-1 | ||||
| - Update to 1.71.1. | ||||
| - Security fix for CVE-2023-38497 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user