Update to 1.77.2.
Resolves: RHEL-30089
This commit is contained in:
parent
40c30b7665
commit
ecb1f8a349
2
.gitignore
vendored
2
.gitignore
vendored
@ -20,3 +20,5 @@ SOURCES/wasi-libc-wasi-sdk-17.tar.gz
|
||||
/rustc-1.75.0-src.tar.xz
|
||||
/rustc-1.76.0-src.tar.xz
|
||||
/wasi-libc-03b228e46bb02fcc5927253e1b8ad715072b1ae4.tar.gz
|
||||
/rustc-1.77.0-src.tar.xz
|
||||
/rustc-1.77.2-src.tar.xz
|
||||
|
51
0001-Fix-UI-tests-with-dist-vendored-dependencies.patch
Normal file
51
0001-Fix-UI-tests-with-dist-vendored-dependencies.patch
Normal file
@ -0,0 +1,51 @@
|
||||
From fb4d9ee194e4e6488dcbf9a7e4e16bb1e65ce5f2 Mon Sep 17 00:00:00 2001
|
||||
From: Josh Stone <jistone@redhat.com>
|
||||
Date: Mon, 8 Apr 2024 15:04:44 -0700
|
||||
Subject: [PATCH] Fix UI tests with dist-vendored dependencies
|
||||
|
||||
There is already a workaround in `compiletest` to deal with custom
|
||||
`CARGO_HOME` using `-Zignore-directory-in-diagnostics-source-blocks={}`.
|
||||
A similar need exists when dependencies come from the local `vendor`
|
||||
directory, which distro builds often use, so now we ignore that too.
|
||||
|
||||
Also, `issue-21763.rs` was normalizing `hashbrown-` paths, presumably
|
||||
expecting a version suffix, but the vendored path doesn't include the
|
||||
version. Now that matches `[\\/]hashbrown` instead.
|
||||
|
||||
(cherry picked from commit f7b2e37f7232540d9f2b2dc6e33597fbb74f4f63)
|
||||
---
|
||||
src/tools/compiletest/src/runtest.rs | 5 +++++
|
||||
tests/ui/issues/issue-21763.rs | 2 +-
|
||||
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs
|
||||
index 8be4def15ded..644775c0385c 100644
|
||||
--- a/src/tools/compiletest/src/runtest.rs
|
||||
+++ b/src/tools/compiletest/src/runtest.rs
|
||||
@@ -2362,6 +2362,11 @@ fn make_compile_args(
|
||||
"ignore-directory-in-diagnostics-source-blocks={}",
|
||||
home::cargo_home().expect("failed to find cargo home").to_str().unwrap()
|
||||
));
|
||||
+ // Similarly, vendored sources shouldn't be shown when running from a dist tarball.
|
||||
+ rustc.arg("-Z").arg(format!(
|
||||
+ "ignore-directory-in-diagnostics-source-blocks={}",
|
||||
+ self.config.find_rust_src_root().unwrap().join("vendor").display(),
|
||||
+ ));
|
||||
|
||||
// Optionally prevent default --sysroot if specified in test compile-flags.
|
||||
if !self.props.compile_flags.iter().any(|flag| flag.starts_with("--sysroot"))
|
||||
diff --git a/tests/ui/issues/issue-21763.rs b/tests/ui/issues/issue-21763.rs
|
||||
index 38103ff4f9c8..cc1a00687b30 100644
|
||||
--- a/tests/ui/issues/issue-21763.rs
|
||||
+++ b/tests/ui/issues/issue-21763.rs
|
||||
@@ -1,6 +1,6 @@
|
||||
// Regression test for HashMap only impl'ing Send/Sync if its contents do
|
||||
|
||||
-// normalize-stderr-test: "\S+hashbrown-\S+" -> "$$HASHBROWN_SRC_LOCATION"
|
||||
+// normalize-stderr-test: "\S+[\\/]hashbrown\S+" -> "$$HASHBROWN_SRC_LOCATION"
|
||||
|
||||
use std::collections::HashMap;
|
||||
use std::rc::Rc;
|
||||
--
|
||||
2.44.0
|
||||
|
26
0001-Step-all-bootstrap-cfgs-forward.patch
Normal file
26
0001-Step-all-bootstrap-cfgs-forward.patch
Normal file
@ -0,0 +1,26 @@
|
||||
From 9a5034a20ed8b055dc615271f9d9cf27f9e494f0 Mon Sep 17 00:00:00 2001
|
||||
From: Mark Rousskov <mark.simulacrum@gmail.com>
|
||||
Date: Mon, 5 Feb 2024 07:34:48 -0500
|
||||
Subject: [PATCH] Step all bootstrap cfgs forward
|
||||
|
||||
This also takes care of other bootstrap-related changes.
|
||||
---
|
||||
src/tools/coverage-dump/src/covfun.rs | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/tools/coverage-dump/src/covfun.rs b/src/tools/coverage-dump/src/covfun.rs
|
||||
index 3a5866dea3e0..49e3a6ed5838 100644
|
||||
--- a/src/tools/coverage-dump/src/covfun.rs
|
||||
+++ b/src/tools/coverage-dump/src/covfun.rs
|
||||
@@ -219,7 +219,7 @@ pub(crate) fn decode(input: u32) -> Option<Self> {
|
||||
enum MappingKind {
|
||||
Code(CovTerm),
|
||||
Gap(CovTerm),
|
||||
- Expansion(u32),
|
||||
+ Expansion(#[allow(dead_code)] u32),
|
||||
Skip,
|
||||
// Using raw identifiers here makes the dump output a little bit nicer
|
||||
// (via the derived Debug), at the expense of making this tool's source
|
||||
--
|
||||
2.44.0
|
||||
|
233
0001-The-multiple_unsafe_ops_per_block-test-needs-asm.patch
Normal file
233
0001-The-multiple_unsafe_ops_per_block-test-needs-asm.patch
Normal file
@ -0,0 +1,233 @@
|
||||
From 29ed7749a3a0e4399b91b3d4198891a4d861f105 Mon Sep 17 00:00:00 2001
|
||||
From: Josh Stone <cuviper@gmail.com>
|
||||
Date: Tue, 16 Apr 2024 16:45:59 -0700
|
||||
Subject: [PATCH] The `multiple_unsafe_ops_per_block` test needs `asm!`
|
||||
|
||||
(cherry picked from commit 245fbeef49c2395471498d20e67f4edf4222c865)
|
||||
---
|
||||
tests/ui/multiple_unsafe_ops_per_block.rs | 1 +
|
||||
tests/ui/multiple_unsafe_ops_per_block.stderr | 58 +++++++++----------
|
||||
2 files changed, 30 insertions(+), 29 deletions(-)
|
||||
|
||||
diff --git a/tests/ui/multiple_unsafe_ops_per_block.rs b/tests/ui/multiple_unsafe_ops_per_block.rs
|
||||
index 8afb4df20af4..6b8a103d4a94 100644
|
||||
--- a/tests/ui/multiple_unsafe_ops_per_block.rs
|
||||
+++ b/tests/ui/multiple_unsafe_ops_per_block.rs
|
||||
@@ -1,3 +1,4 @@
|
||||
+//@needs-asm-support
|
||||
//@aux-build:proc_macros.rs
|
||||
#![allow(unused)]
|
||||
#![allow(deref_nullptr)]
|
||||
diff --git a/tests/ui/multiple_unsafe_ops_per_block.stderr b/tests/ui/multiple_unsafe_ops_per_block.stderr
|
||||
index 4803a5089ab2..f9b22c68ddb1 100644
|
||||
--- a/tests/ui/multiple_unsafe_ops_per_block.stderr
|
||||
+++ b/tests/ui/multiple_unsafe_ops_per_block.stderr
|
||||
@@ -1,5 +1,5 @@
|
||||
error: this `unsafe` block contains 2 unsafe operations, expected only one
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:36:5
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:37:5
|
||||
|
|
||||
LL | / unsafe {
|
||||
LL | | STATIC += 1;
|
||||
@@ -8,12 +8,12 @@ LL | | }
|
||||
| |_____^
|
||||
|
|
||||
note: modification of a mutable static occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:37:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:38:9
|
||||
|
|
||||
LL | STATIC += 1;
|
||||
| ^^^^^^^^^^^
|
||||
note: unsafe function call occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:38:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:39:9
|
||||
|
|
||||
LL | not_very_safe();
|
||||
| ^^^^^^^^^^^^^^^
|
||||
@@ -21,7 +21,7 @@ LL | not_very_safe();
|
||||
= help: to override `-D warnings` add `#[allow(clippy::multiple_unsafe_ops_per_block)]`
|
||||
|
||||
error: this `unsafe` block contains 2 unsafe operations, expected only one
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:45:5
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:46:5
|
||||
|
|
||||
LL | / unsafe {
|
||||
LL | | drop(u.u);
|
||||
@@ -30,18 +30,18 @@ LL | | }
|
||||
| |_____^
|
||||
|
|
||||
note: union field access occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:46:14
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:47:14
|
||||
|
|
||||
LL | drop(u.u);
|
||||
| ^^^
|
||||
note: raw pointer dereference occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:47:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:48:9
|
||||
|
|
||||
LL | *raw_ptr();
|
||||
| ^^^^^^^^^^
|
||||
|
||||
error: this `unsafe` block contains 3 unsafe operations, expected only one
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:52:5
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:53:5
|
||||
|
|
||||
LL | / unsafe {
|
||||
LL | | asm!("nop");
|
||||
@@ -51,23 +51,23 @@ LL | | }
|
||||
| |_____^
|
||||
|
|
||||
note: inline assembly used here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:53:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:54:9
|
||||
|
|
||||
LL | asm!("nop");
|
||||
| ^^^^^^^^^^^
|
||||
note: unsafe method call occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:54:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:55:9
|
||||
|
|
||||
LL | sample.not_very_safe();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
note: modification of a mutable static occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:55:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:56:9
|
||||
|
|
||||
LL | STATIC = 0;
|
||||
| ^^^^^^^^^^
|
||||
|
||||
error: this `unsafe` block contains 6 unsafe operations, expected only one
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:61:5
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:62:5
|
||||
|
|
||||
LL | / unsafe {
|
||||
LL | | drop(u.u);
|
||||
@@ -79,55 +79,55 @@ LL | | }
|
||||
| |_____^
|
||||
|
|
||||
note: union field access occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:62:14
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:63:14
|
||||
|
|
||||
LL | drop(u.u);
|
||||
| ^^^
|
||||
note: access of a mutable static occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:63:14
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:64:14
|
||||
|
|
||||
LL | drop(STATIC);
|
||||
| ^^^^^^
|
||||
note: unsafe method call occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:64:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:65:9
|
||||
|
|
||||
LL | sample.not_very_safe();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
note: unsafe function call occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:65:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:66:9
|
||||
|
|
||||
LL | not_very_safe();
|
||||
| ^^^^^^^^^^^^^^^
|
||||
note: raw pointer dereference occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:66:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:67:9
|
||||
|
|
||||
LL | *raw_ptr();
|
||||
| ^^^^^^^^^^
|
||||
note: inline assembly used here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:67:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:68:9
|
||||
|
|
||||
LL | asm!("nop");
|
||||
| ^^^^^^^^^^^
|
||||
|
||||
error: this `unsafe` block contains 2 unsafe operations, expected only one
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:105:5
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:106:5
|
||||
|
|
||||
LL | unsafe { char::from_u32_unchecked(*ptr.cast::<u32>()) }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: unsafe function call occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:105:14
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:106:14
|
||||
|
|
||||
LL | unsafe { char::from_u32_unchecked(*ptr.cast::<u32>()) }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
note: raw pointer dereference occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:105:39
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:106:39
|
||||
|
|
||||
LL | unsafe { char::from_u32_unchecked(*ptr.cast::<u32>()) }
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: this `unsafe` block contains 2 unsafe operations, expected only one
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:123:5
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:124:5
|
||||
|
|
||||
LL | / unsafe {
|
||||
LL | | x();
|
||||
@@ -136,18 +136,18 @@ LL | | }
|
||||
| |_____^
|
||||
|
|
||||
note: unsafe function call occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:124:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:125:9
|
||||
|
|
||||
LL | x();
|
||||
| ^^^
|
||||
note: unsafe function call occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:125:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:126:9
|
||||
|
|
||||
LL | x();
|
||||
| ^^^
|
||||
|
||||
error: this `unsafe` block contains 2 unsafe operations, expected only one
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:134:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:135:9
|
||||
|
|
||||
LL | / unsafe {
|
||||
LL | | T::X();
|
||||
@@ -156,18 +156,18 @@ LL | | }
|
||||
| |_________^
|
||||
|
|
||||
note: unsafe function call occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:135:13
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:136:13
|
||||
|
|
||||
LL | T::X();
|
||||
| ^^^^^^
|
||||
note: unsafe function call occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:136:13
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:137:13
|
||||
|
|
||||
LL | T::X();
|
||||
| ^^^^^^
|
||||
|
||||
error: this `unsafe` block contains 2 unsafe operations, expected only one
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:144:5
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:145:5
|
||||
|
|
||||
LL | / unsafe {
|
||||
LL | | x.0();
|
||||
@@ -176,12 +176,12 @@ LL | | }
|
||||
| |_____^
|
||||
|
|
||||
note: unsafe function call occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:145:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:146:9
|
||||
|
|
||||
LL | x.0();
|
||||
| ^^^^^
|
||||
note: unsafe function call occurs here
|
||||
- --> $DIR/multiple_unsafe_ops_per_block.rs:146:9
|
||||
+ --> $DIR/multiple_unsafe_ops_per_block.rs:147:9
|
||||
|
|
||||
LL | x.0();
|
||||
| ^^^^^
|
||||
--
|
||||
2.44.0
|
||||
|
@ -48,6 +48,18 @@ index 5abfb8162f70..13cb43bda1a4 100644
|
||||
|
||||
// We disable MMX and SSE for now, even though UEFI allows using them. Problem is, you have to
|
||||
// enable these CPU features explicitly before their first use, otherwise their instructions
|
||||
diff -Naur a/compiler/rustc_target/src/spec/targets/aarch64_unknown_none_softfloat.rs b/compiler/rustc_target/src/spec/targets/aarch64_unknown_none_softfloat.rs
|
||||
--- a/compiler/rustc_target/src/spec/targets/aarch64_unknown_none_softfloat.rs 2024-03-17 12:03:00.000000000 -0700
|
||||
+++ b/compiler/rustc_target/src/spec/targets/aarch64_unknown_none_softfloat.rs 2024-03-22 10:02:17.742806274 -0700
|
||||
@@ -14,7 +14,7 @@
|
||||
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,
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
200
0001-bootstrap-move-all-of-rustc-s-flags-to-rustc_cargo.patch
Normal file
200
0001-bootstrap-move-all-of-rustc-s-flags-to-rustc_cargo.patch
Normal file
@ -0,0 +1,200 @@
|
||||
From 56942ed6d13d330facddbd71470a3c115a3fe0d1 Mon Sep 17 00:00:00 2001
|
||||
From: Josh Stone <jistone@redhat.com>
|
||||
Date: Fri, 5 Apr 2024 15:07:58 -0700
|
||||
Subject: [PATCH] bootstrap: move all of rustc's flags to `rustc_cargo`
|
||||
|
||||
This ensures that `RUSTFLAGS` will be consistent between all modes of
|
||||
building the compiler, so they won't trigger a rebuild by cargo. This
|
||||
kind of fix was started in #119414 just for LTO flags, but it's
|
||||
applicable to all kinds of flags that might be configured.
|
||||
|
||||
(cherry picked from commit e8fb8c36ca0de817b3d30f603d6d6b3c56e8b0be)
|
||||
---
|
||||
src/bootstrap/src/core/build_steps/check.rs | 2 +-
|
||||
src/bootstrap/src/core/build_steps/compile.rs | 107 +++++++++---------
|
||||
src/bootstrap/src/core/build_steps/doc.rs | 2 +-
|
||||
src/bootstrap/src/core/build_steps/test.rs | 2 +-
|
||||
4 files changed, 59 insertions(+), 54 deletions(-)
|
||||
|
||||
diff --git a/src/bootstrap/src/core/build_steps/check.rs b/src/bootstrap/src/core/build_steps/check.rs
|
||||
index 5f0afdb1b36c..dd866c2eb0f3 100644
|
||||
--- a/src/bootstrap/src/core/build_steps/check.rs
|
||||
+++ b/src/bootstrap/src/core/build_steps/check.rs
|
||||
@@ -263,7 +263,7 @@ fn run(self, builder: &Builder<'_>) {
|
||||
target,
|
||||
cargo_subcommand(builder.kind),
|
||||
);
|
||||
- rustc_cargo(builder, &mut cargo, target, compiler.stage);
|
||||
+ rustc_cargo(builder, &mut cargo, target, &compiler);
|
||||
|
||||
// For ./x.py clippy, don't run with --all-targets because
|
||||
// linting tests and benchmarks can produce very noisy results
|
||||
diff --git a/src/bootstrap/src/core/build_steps/compile.rs b/src/bootstrap/src/core/build_steps/compile.rs
|
||||
index ddbe18ab8388..607a658617b5 100644
|
||||
--- a/src/bootstrap/src/core/build_steps/compile.rs
|
||||
+++ b/src/bootstrap/src/core/build_steps/compile.rs
|
||||
@@ -898,55 +898,10 @@ fn run(self, builder: &Builder<'_>) -> u32 {
|
||||
));
|
||||
|
||||
let mut cargo = builder.cargo(compiler, Mode::Rustc, SourceType::InTree, target, "build");
|
||||
- rustc_cargo(builder, &mut cargo, target, compiler.stage);
|
||||
+ rustc_cargo(builder, &mut cargo, target, &compiler);
|
||||
|
||||
- if builder.config.rust_profile_use.is_some()
|
||||
- && builder.config.rust_profile_generate.is_some()
|
||||
- {
|
||||
- panic!("Cannot use and generate PGO profiles at the same time");
|
||||
- }
|
||||
-
|
||||
- // With LLD, we can use ICF (identical code folding) to reduce the executable size
|
||||
- // of librustc_driver/rustc and to improve i-cache utilization.
|
||||
- //
|
||||
- // -Wl,[link options] doesn't work on MSVC. However, /OPT:ICF (technically /OPT:REF,ICF)
|
||||
- // is already on by default in MSVC optimized builds, which is interpreted as --icf=all:
|
||||
- // https://github.com/llvm/llvm-project/blob/3329cec2f79185bafd678f310fafadba2a8c76d2/lld/COFF/Driver.cpp#L1746
|
||||
- // https://github.com/rust-lang/rust/blob/f22819bcce4abaff7d1246a56eec493418f9f4ee/compiler/rustc_codegen_ssa/src/back/linker.rs#L827
|
||||
- if builder.config.lld_mode.is_used() && !compiler.host.is_msvc() {
|
||||
- cargo.rustflag("-Clink-args=-Wl,--icf=all");
|
||||
- }
|
||||
-
|
||||
- let is_collecting = if let Some(path) = &builder.config.rust_profile_generate {
|
||||
- if compiler.stage == 1 {
|
||||
- cargo.rustflag(&format!("-Cprofile-generate={path}"));
|
||||
- // Apparently necessary to avoid overflowing the counters during
|
||||
- // a Cargo build profile
|
||||
- cargo.rustflag("-Cllvm-args=-vp-counters-per-site=4");
|
||||
- true
|
||||
- } else {
|
||||
- false
|
||||
- }
|
||||
- } else if let Some(path) = &builder.config.rust_profile_use {
|
||||
- if compiler.stage == 1 {
|
||||
- cargo.rustflag(&format!("-Cprofile-use={path}"));
|
||||
- if builder.is_verbose() {
|
||||
- cargo.rustflag("-Cllvm-args=-pgo-warn-missing-function");
|
||||
- }
|
||||
- true
|
||||
- } else {
|
||||
- false
|
||||
- }
|
||||
- } else {
|
||||
- false
|
||||
- };
|
||||
- if is_collecting {
|
||||
- // Ensure paths to Rust sources are relative, not absolute.
|
||||
- cargo.rustflag(&format!(
|
||||
- "-Cllvm-args=-static-func-strip-dirname-prefix={}",
|
||||
- builder.config.src.components().count()
|
||||
- ));
|
||||
- }
|
||||
+ // NB: all RUSTFLAGS should be added to `rustc_cargo()` so they will be
|
||||
+ // consistently applied by check/doc/test modes too.
|
||||
|
||||
for krate in &*self.crates {
|
||||
cargo.arg("-p").arg(krate);
|
||||
@@ -997,7 +952,12 @@ fn run(self, builder: &Builder<'_>) -> u32 {
|
||||
}
|
||||
}
|
||||
|
||||
-pub fn rustc_cargo(builder: &Builder<'_>, cargo: &mut Cargo, target: TargetSelection, stage: u32) {
|
||||
+pub fn rustc_cargo(
|
||||
+ builder: &Builder<'_>,
|
||||
+ cargo: &mut Cargo,
|
||||
+ target: TargetSelection,
|
||||
+ compiler: &Compiler,
|
||||
+) {
|
||||
cargo
|
||||
.arg("--features")
|
||||
.arg(builder.rustc_features(builder.kind))
|
||||
@@ -1008,7 +968,7 @@ pub fn rustc_cargo(builder: &Builder<'_>, cargo: &mut Cargo, target: TargetSelec
|
||||
|
||||
// We currently don't support cross-crate LTO in stage0. This also isn't hugely necessary
|
||||
// and may just be a time sink.
|
||||
- if stage != 0 {
|
||||
+ if compiler.stage != 0 {
|
||||
match builder.config.rust_lto {
|
||||
RustcLto::Thin | RustcLto::Fat => {
|
||||
// Since using LTO for optimizing dylibs is currently experimental,
|
||||
@@ -1034,7 +994,52 @@ pub fn rustc_cargo(builder: &Builder<'_>, cargo: &mut Cargo, target: TargetSelec
|
||||
cargo.rustflag("-Clto=off");
|
||||
}
|
||||
|
||||
- rustc_cargo_env(builder, cargo, target, stage);
|
||||
+ // With LLD, we can use ICF (identical code folding) to reduce the executable size
|
||||
+ // of librustc_driver/rustc and to improve i-cache utilization.
|
||||
+ //
|
||||
+ // -Wl,[link options] doesn't work on MSVC. However, /OPT:ICF (technically /OPT:REF,ICF)
|
||||
+ // is already on by default in MSVC optimized builds, which is interpreted as --icf=all:
|
||||
+ // https://github.com/llvm/llvm-project/blob/3329cec2f79185bafd678f310fafadba2a8c76d2/lld/COFF/Driver.cpp#L1746
|
||||
+ // https://github.com/rust-lang/rust/blob/f22819bcce4abaff7d1246a56eec493418f9f4ee/compiler/rustc_codegen_ssa/src/back/linker.rs#L827
|
||||
+ if builder.config.lld_mode.is_used() && !compiler.host.is_msvc() {
|
||||
+ cargo.rustflag("-Clink-args=-Wl,--icf=all");
|
||||
+ }
|
||||
+
|
||||
+ if builder.config.rust_profile_use.is_some() && builder.config.rust_profile_generate.is_some() {
|
||||
+ panic!("Cannot use and generate PGO profiles at the same time");
|
||||
+ }
|
||||
+ let is_collecting = if let Some(path) = &builder.config.rust_profile_generate {
|
||||
+ if compiler.stage == 1 {
|
||||
+ cargo.rustflag(&format!("-Cprofile-generate={path}"));
|
||||
+ // Apparently necessary to avoid overflowing the counters during
|
||||
+ // a Cargo build profile
|
||||
+ cargo.rustflag("-Cllvm-args=-vp-counters-per-site=4");
|
||||
+ true
|
||||
+ } else {
|
||||
+ false
|
||||
+ }
|
||||
+ } else if let Some(path) = &builder.config.rust_profile_use {
|
||||
+ if compiler.stage == 1 {
|
||||
+ cargo.rustflag(&format!("-Cprofile-use={path}"));
|
||||
+ if builder.is_verbose() {
|
||||
+ cargo.rustflag("-Cllvm-args=-pgo-warn-missing-function");
|
||||
+ }
|
||||
+ true
|
||||
+ } else {
|
||||
+ false
|
||||
+ }
|
||||
+ } else {
|
||||
+ false
|
||||
+ };
|
||||
+ if is_collecting {
|
||||
+ // Ensure paths to Rust sources are relative, not absolute.
|
||||
+ cargo.rustflag(&format!(
|
||||
+ "-Cllvm-args=-static-func-strip-dirname-prefix={}",
|
||||
+ builder.config.src.components().count()
|
||||
+ ));
|
||||
+ }
|
||||
+
|
||||
+ rustc_cargo_env(builder, cargo, target, compiler.stage);
|
||||
}
|
||||
|
||||
pub fn rustc_cargo_env(
|
||||
diff --git a/src/bootstrap/src/core/build_steps/doc.rs b/src/bootstrap/src/core/build_steps/doc.rs
|
||||
index 57e63927c95e..e10035f07c05 100644
|
||||
--- a/src/bootstrap/src/core/build_steps/doc.rs
|
||||
+++ b/src/bootstrap/src/core/build_steps/doc.rs
|
||||
@@ -794,7 +794,7 @@ fn run(self, builder: &Builder<'_>) {
|
||||
cargo.rustdocflag("-Znormalize-docs");
|
||||
cargo.rustdocflag("--show-type-layout");
|
||||
cargo.rustdocflag("--generate-link-to-definition");
|
||||
- compile::rustc_cargo(builder, &mut cargo, target, compiler.stage);
|
||||
+ compile::rustc_cargo(builder, &mut cargo, target, &compiler);
|
||||
cargo.arg("-Zunstable-options");
|
||||
cargo.arg("-Zskip-rustdoc-fingerprint");
|
||||
|
||||
diff --git a/src/bootstrap/src/core/build_steps/test.rs b/src/bootstrap/src/core/build_steps/test.rs
|
||||
index 04728e2e00dc..c4fdda0a2606 100644
|
||||
--- a/src/bootstrap/src/core/build_steps/test.rs
|
||||
+++ b/src/bootstrap/src/core/build_steps/test.rs
|
||||
@@ -2558,7 +2558,7 @@ fn run(self, builder: &Builder<'_>) {
|
||||
}
|
||||
}
|
||||
Mode::Rustc => {
|
||||
- compile::rustc_cargo(builder, &mut cargo, target, compiler.stage);
|
||||
+ compile::rustc_cargo(builder, &mut cargo, target, &compiler);
|
||||
}
|
||||
_ => panic!("can only test libraries"),
|
||||
};
|
||||
--
|
||||
2.44.0
|
||||
|
82
0001-remove-stderr-per-bitwidth-from-some-tests.patch
Normal file
82
0001-remove-stderr-per-bitwidth-from-some-tests.patch
Normal file
@ -0,0 +1,82 @@
|
||||
From 96e7b2767b30c215361d26626ef235f5ec0e8cd5 Mon Sep 17 00:00:00 2001
|
||||
From: Ralf Jung <post@ralfj.de>
|
||||
Date: Fri, 16 Feb 2024 10:01:43 +0100
|
||||
Subject: [PATCH] remove stderr-per-bitwidth from some tests
|
||||
|
||||
(cherry picked from commit f68e79dcac3acb635c58ff2fa4178b9a0b040fe4)
|
||||
---
|
||||
...ut_ref_in_final_dynamic_check.64bit.stderr | 20 -------------------
|
||||
.../mut_ref_in_final_dynamic_check.rs | 3 ++-
|
||||
... => mut_ref_in_final_dynamic_check.stderr} | 8 ++++----
|
||||
3 files changed, 6 insertions(+), 25 deletions(-)
|
||||
delete mode 100644 tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.64bit.stderr
|
||||
rename tests/ui/consts/const-mut-refs/{mut_ref_in_final_dynamic_check.32bit.stderr => mut_ref_in_final_dynamic_check.stderr} (75%)
|
||||
|
||||
diff --git a/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.64bit.stderr b/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.64bit.stderr
|
||||
deleted file mode 100644
|
||||
index fc68207512c0..000000000000
|
||||
--- a/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.64bit.stderr
|
||||
+++ /dev/null
|
||||
@@ -1,20 +0,0 @@
|
||||
-error[E0080]: it is undefined behavior to use this value
|
||||
- --> $DIR/mut_ref_in_final_dynamic_check.rs:15:1
|
||||
- |
|
||||
-LL | const A: Option<&mut i32> = helper();
|
||||
- | ^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .<enum-variant(Some)>.0: encountered mutable reference in a `const` or `static`
|
||||
- |
|
||||
- = note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior.
|
||||
- = note: the raw bytes of the constant (size: 8, align: 8) {
|
||||
- 2a 00 00 00 00 00 00 00 │ *.......
|
||||
- }
|
||||
-
|
||||
-error: encountered dangling pointer in final value of constant
|
||||
- --> $DIR/mut_ref_in_final_dynamic_check.rs:22:1
|
||||
- |
|
||||
-LL | const B: Option<&mut i32> = helper2();
|
||||
- | ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
-
|
||||
-error: aborting due to 2 previous errors
|
||||
-
|
||||
-For more information about this error, try `rustc --explain E0080`.
|
||||
diff --git a/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.rs b/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.rs
|
||||
index 455b557b97c4..b98f4d920694 100644
|
||||
--- a/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.rs
|
||||
+++ b/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.rs
|
||||
@@ -1,4 +1,5 @@
|
||||
-// stderr-per-bitwidth
|
||||
+// normalize-stderr-test "(the raw bytes of the constant) \(size: [0-9]*, align: [0-9]*\)" -> "$1 (size: $$SIZE, align: $$ALIGN)"
|
||||
+// normalize-stderr-test "([0-9a-f][0-9a-f] |╾─*ALLOC[0-9]+(\+[a-z0-9]+)?(<imm>)?─*╼ )+ *│.*" -> "HEX_DUMP"
|
||||
#![feature(const_mut_refs)]
|
||||
#![feature(raw_ref_op)]
|
||||
|
||||
diff --git a/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.32bit.stderr b/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.stderr
|
||||
similarity index 75%
|
||||
rename from tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.32bit.stderr
|
||||
rename to tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.stderr
|
||||
index 87420a037514..bb3c5518680b 100644
|
||||
--- a/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.32bit.stderr
|
||||
+++ b/tests/ui/consts/const-mut-refs/mut_ref_in_final_dynamic_check.stderr
|
||||
@@ -1,16 +1,16 @@
|
||||
error[E0080]: it is undefined behavior to use this value
|
||||
- --> $DIR/mut_ref_in_final_dynamic_check.rs:15:1
|
||||
+ --> $DIR/mut_ref_in_final_dynamic_check.rs:16:1
|
||||
|
|
||||
LL | const A: Option<&mut i32> = helper();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ constructing invalid value at .<enum-variant(Some)>.0: encountered mutable reference in a `const` or `static`
|
||||
|
|
||||
= note: The rules on what exactly is undefined behavior aren't clear, so this check might be overzealous. Please open an issue on the rustc repository if you believe it should not be considered undefined behavior.
|
||||
- = note: the raw bytes of the constant (size: 4, align: 4) {
|
||||
- 2a 00 00 00 │ *...
|
||||
+ = note: the raw bytes of the constant (size: $SIZE, align: $ALIGN) {
|
||||
+ HEX_DUMP
|
||||
}
|
||||
|
||||
error: encountered dangling pointer in final value of constant
|
||||
- --> $DIR/mut_ref_in_final_dynamic_check.rs:22:1
|
||||
+ --> $DIR/mut_ref_in_final_dynamic_check.rs:23:1
|
||||
|
|
||||
LL | const B: Option<&mut i32> = helper2();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
--
|
||||
2.44.0
|
||||
|
185
0001-test-don-t-compress-test-registry-crates.patch
Normal file
185
0001-test-don-t-compress-test-registry-crates.patch
Normal file
@ -0,0 +1,185 @@
|
||||
From ed8e223cc58103cae0586351fd9113a727523cab Mon Sep 17 00:00:00 2001
|
||||
From: Josh Stone <jistone@redhat.com>
|
||||
Date: Thu, 11 Apr 2024 14:58:42 -0700
|
||||
Subject: [PATCH] test: don't compress test registry crates
|
||||
|
||||
They are still nominally gzipped, but using `Compression::none()` makes
|
||||
them consistent even across zlib and zlib-ng, and this fixes checksum
|
||||
differences in the testsuite. There is a one-time update of all those
|
||||
checksums to catch up with this change though.
|
||||
|
||||
(cherry picked from commit a70f23c50b61c1a3335f2943375a04ae7abf2fa4)
|
||||
---
|
||||
crates/cargo-test-support/src/registry.rs | 2 +-
|
||||
tests/testsuite/alt_registry.rs | 2 +-
|
||||
.../cargo_add/locked_unchanged/in/Cargo.lock | 2 +-
|
||||
.../cargo_add/lockfile_updated/in/Cargo.lock | 2 +-
|
||||
.../cargo_add/lockfile_updated/out/Cargo.lock | 4 ++--
|
||||
.../cargo_remove/update_lock_file/in/Cargo.lock | 16 ++++++++--------
|
||||
.../cargo_remove/update_lock_file/out/Cargo.lock | 12 ++++++------
|
||||
7 files changed, 20 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/crates/cargo-test-support/src/registry.rs b/crates/cargo-test-support/src/registry.rs
|
||||
index cc51707dbbf9..e27d1e354d7b 100644
|
||||
--- a/crates/cargo-test-support/src/registry.rs
|
||||
+++ b/crates/cargo-test-support/src/registry.rs
|
||||
@@ -1469,7 +1469,7 @@ impl Package {
|
||||
let dst = self.archive_dst();
|
||||
t!(fs::create_dir_all(dst.parent().unwrap()));
|
||||
let f = t!(File::create(&dst));
|
||||
- let mut a = Builder::new(GzEncoder::new(f, Compression::default()));
|
||||
+ let mut a = Builder::new(GzEncoder::new(f, Compression::none()));
|
||||
|
||||
if !self
|
||||
.files
|
||||
diff --git a/tests/testsuite/alt_registry.rs b/tests/testsuite/alt_registry.rs
|
||||
index f286dc018122..42b818493244 100644
|
||||
--- a/tests/testsuite/alt_registry.rs
|
||||
+++ b/tests/testsuite/alt_registry.rs
|
||||
@@ -1466,7 +1466,7 @@ dependencies = [
|
||||
name = "foo"
|
||||
version = "0.1.0"
|
||||
source = "sparse+http://[..]/"
|
||||
-checksum = "f6a200a9339fef960979d94d5c99cbbfd899b6f5a396a55d9775089119050203""#,
|
||||
+checksum = "458c1addb23fde7dfbca0410afdbcc0086f96197281ec304d9e0e10def3cb899""#,
|
||||
);
|
||||
}
|
||||
|
||||
diff --git a/tests/testsuite/cargo_add/locked_unchanged/in/Cargo.lock b/tests/testsuite/cargo_add/locked_unchanged/in/Cargo.lock
|
||||
index 011b335926ee..b88709a9e9be 100644
|
||||
--- a/tests/testsuite/cargo_add/locked_unchanged/in/Cargo.lock
|
||||
+++ b/tests/testsuite/cargo_add/locked_unchanged/in/Cargo.lock
|
||||
@@ -13,4 +13,4 @@ dependencies = [
|
||||
name = "my-package"
|
||||
version = "99999.0.0+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "62c45acf9e11d2f97f5b318143219c0b4102eafef1c22a4b545b47104691d915"
|
||||
+checksum = "73cfa03cf28feb001362b377a837910c5a6ec1cc5cceaa562b97fc14d15edec8"
|
||||
diff --git a/tests/testsuite/cargo_add/lockfile_updated/in/Cargo.lock b/tests/testsuite/cargo_add/lockfile_updated/in/Cargo.lock
|
||||
index d9bcc988d3f2..d8fa962f3069 100644
|
||||
--- a/tests/testsuite/cargo_add/lockfile_updated/in/Cargo.lock
|
||||
+++ b/tests/testsuite/cargo_add/lockfile_updated/in/Cargo.lock
|
||||
@@ -14,4 +14,4 @@ dependencies = [
|
||||
name = "unrelateed-crate"
|
||||
version = "0.2.0+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "266de4849a570b5dfda5e8e082a2aff885e9d2d4965dae8f8b6c8535e1ec731f"
|
||||
+checksum = "b16af1a8ba7e4331ca62d945483a3028c2afbbe06a7f2ffaa0a3538ef0a7d63e"
|
||||
diff --git a/tests/testsuite/cargo_add/lockfile_updated/out/Cargo.lock b/tests/testsuite/cargo_add/lockfile_updated/out/Cargo.lock
|
||||
index 4b5fb465f104..e423b3d1f8b7 100644
|
||||
--- a/tests/testsuite/cargo_add/lockfile_updated/out/Cargo.lock
|
||||
+++ b/tests/testsuite/cargo_add/lockfile_updated/out/Cargo.lock
|
||||
@@ -14,10 +14,10 @@ dependencies = [
|
||||
name = "my-package"
|
||||
version = "99999.0.0+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "62c45acf9e11d2f97f5b318143219c0b4102eafef1c22a4b545b47104691d915"
|
||||
+checksum = "73cfa03cf28feb001362b377a837910c5a6ec1cc5cceaa562b97fc14d15edec8"
|
||||
|
||||
[[package]]
|
||||
name = "unrelateed-crate"
|
||||
version = "0.2.0+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "266de4849a570b5dfda5e8e082a2aff885e9d2d4965dae8f8b6c8535e1ec731f"
|
||||
+checksum = "b16af1a8ba7e4331ca62d945483a3028c2afbbe06a7f2ffaa0a3538ef0a7d63e"
|
||||
diff --git a/tests/testsuite/cargo_remove/update_lock_file/in/Cargo.lock b/tests/testsuite/cargo_remove/update_lock_file/in/Cargo.lock
|
||||
index 2302220f2fb7..a4018e70eb47 100644
|
||||
--- a/tests/testsuite/cargo_remove/update_lock_file/in/Cargo.lock
|
||||
+++ b/tests/testsuite/cargo_remove/update_lock_file/in/Cargo.lock
|
||||
@@ -19,40 +19,40 @@ dependencies = [
|
||||
name = "clippy"
|
||||
version = "0.4.1+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "47ced0eda54e9ddc6063f0e1d0164493cd16c84c6b6a0329a536967c44e205f7"
|
||||
+checksum = "e95568c5ce98de9c470c1d9b387466f4d5efa9687d3af7998e7c9c1da5e399fb"
|
||||
|
||||
[[package]]
|
||||
name = "docopt"
|
||||
version = "0.6.2+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "b600540c4fafb27bf6e6961f0f1e6f547c9d6126ce581ab3a92f878c8e2c9a2c"
|
||||
+checksum = "d4414d2705e6b42fe10772b4ab4e3260f362669e45606eb562dc4c0023e911f6"
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "0.1.1+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "84949cb53285a6c481d0133065a7b669871acfd9e20f273f4ce1283c309775d5"
|
||||
+checksum = "bc4552a1d503f3a436bb18d1efff62eb95bd97f724d06466c55ef151ea2de9e0"
|
||||
|
||||
[[package]]
|
||||
name = "rustc-serialize"
|
||||
-version = "0.4.1+my-package"
|
||||
+version = "0.4.0+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "31162e7d23a085553c42dee375787b451a481275473f7779c4a63bcc267a24fd"
|
||||
+checksum = "48c3645ec42f69a343fbe9734a477ae59448192e779206dbcb1a9c3397563fd8"
|
||||
|
||||
[[package]]
|
||||
name = "semver"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "106bee742e3199d9e59f4269e458dfc825c1b4648c483b1c2b7a45cd2610a308"
|
||||
+checksum = "20070289360e74dcdc28f437b08dda0c0c861c2328d749bb0d6e1a428013af83"
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.90"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "be7d269f612a60e3c2c4a4a120e2d878a3f3298a5285eda6e95453905a107d9a"
|
||||
+checksum = "ba76b226746eabf28375d5ad184926bbb9cd727425c8d027ea10f6c508895c6c"
|
||||
|
||||
[[package]]
|
||||
name = "toml"
|
||||
version = "0.1.1+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "a0f6c7804525ce0a968ef270e55a516cf4bdcf1fea0b09d130e0aa34a66745b3"
|
||||
+checksum = "a9ea5fa6eaed7d7e6d9fb4571bb9d915b577e19bf2a95321ebb70fd3d894ce49"
|
||||
diff --git a/tests/testsuite/cargo_remove/update_lock_file/out/Cargo.lock b/tests/testsuite/cargo_remove/update_lock_file/out/Cargo.lock
|
||||
index 0946cee47717..af60414ddad2 100644
|
||||
--- a/tests/testsuite/cargo_remove/update_lock_file/out/Cargo.lock
|
||||
+++ b/tests/testsuite/cargo_remove/update_lock_file/out/Cargo.lock
|
||||
@@ -18,34 +18,34 @@ dependencies = [
|
||||
name = "clippy"
|
||||
version = "0.4.1+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "47ced0eda54e9ddc6063f0e1d0164493cd16c84c6b6a0329a536967c44e205f7"
|
||||
+checksum = "e95568c5ce98de9c470c1d9b387466f4d5efa9687d3af7998e7c9c1da5e399fb"
|
||||
|
||||
[[package]]
|
||||
name = "docopt"
|
||||
version = "0.6.2+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "b600540c4fafb27bf6e6961f0f1e6f547c9d6126ce581ab3a92f878c8e2c9a2c"
|
||||
+checksum = "d4414d2705e6b42fe10772b4ab4e3260f362669e45606eb562dc4c0023e911f6"
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "0.1.1+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "84949cb53285a6c481d0133065a7b669871acfd9e20f273f4ce1283c309775d5"
|
||||
+checksum = "bc4552a1d503f3a436bb18d1efff62eb95bd97f724d06466c55ef151ea2de9e0"
|
||||
|
||||
[[package]]
|
||||
name = "semver"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "106bee742e3199d9e59f4269e458dfc825c1b4648c483b1c2b7a45cd2610a308"
|
||||
+checksum = "20070289360e74dcdc28f437b08dda0c0c861c2328d749bb0d6e1a428013af83"
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.90"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "be7d269f612a60e3c2c4a4a120e2d878a3f3298a5285eda6e95453905a107d9a"
|
||||
+checksum = "ba76b226746eabf28375d5ad184926bbb9cd727425c8d027ea10f6c508895c6c"
|
||||
|
||||
[[package]]
|
||||
name = "toml"
|
||||
version = "0.1.1+my-package"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
-checksum = "a0f6c7804525ce0a968ef270e55a516cf4bdcf1fea0b09d130e0aa34a66745b3"
|
||||
+checksum = "a9ea5fa6eaed7d7e6d9fb4571bb9d915b577e19bf2a95321ebb70fd3d894ce49"
|
||||
--
|
||||
2.44.0
|
||||
|
62
120529.patch
Normal file
62
120529.patch
Normal file
@ -0,0 +1,62 @@
|
||||
From 8eb48b4f4c6e3d48f2600159a75184ec4d74b249 Mon Sep 17 00:00:00 2001
|
||||
From: Nikita Popov <npopov@redhat.com>
|
||||
Date: Wed, 31 Jan 2024 15:08:08 +0100
|
||||
Subject: [PATCH] Update data layouts in custom target tests for LLVM 18
|
||||
|
||||
Fixes https://github.com/rust-lang/rust/issues/120492.
|
||||
---
|
||||
tests/run-make/rust-lld-custom-target/custom-target.json | 2 +-
|
||||
tests/run-make/rustdoc-target-spec-json-path/target.json | 2 +-
|
||||
tests/run-make/target-specs/my-awesome-platform.json | 2 +-
|
||||
.../target-specs/my-x86_64-unknown-linux-gnu-platform.json | 2 +-
|
||||
4 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/tests/run-make/rust-lld-custom-target/custom-target.json b/tests/run-make/rust-lld-custom-target/custom-target.json
|
||||
index 7828a99f235c1..e2c64cbdb43c2 100644
|
||||
--- a/tests/run-make/rust-lld-custom-target/custom-target.json
|
||||
+++ b/tests/run-make/rust-lld-custom-target/custom-target.json
|
||||
@@ -2,7 +2,7 @@
|
||||
"arch": "x86_64",
|
||||
"cpu": "x86-64",
|
||||
"crt-static-respected": true,
|
||||
- "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128",
|
||||
+ "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128",
|
||||
"dynamic-linking": true,
|
||||
"env": "gnu",
|
||||
"has-rpath": true,
|
||||
diff --git a/tests/run-make/rustdoc-target-spec-json-path/target.json b/tests/run-make/rustdoc-target-spec-json-path/target.json
|
||||
index 34357182c205e..c478f1196fae0 100644
|
||||
--- a/tests/run-make/rustdoc-target-spec-json-path/target.json
|
||||
+++ b/tests/run-make/rustdoc-target-spec-json-path/target.json
|
||||
@@ -2,7 +2,7 @@
|
||||
"arch": "x86_64",
|
||||
"cpu": "x86-64",
|
||||
"crt-static-respected": true,
|
||||
- "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128",
|
||||
+ "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128",
|
||||
"dynamic-linking": true,
|
||||
"env": "gnu",
|
||||
"executables": true,
|
||||
diff --git a/tests/run-make/target-specs/my-awesome-platform.json b/tests/run-make/target-specs/my-awesome-platform.json
|
||||
index 00de3de05f07a..1673ef7bd54d1 100644
|
||||
--- a/tests/run-make/target-specs/my-awesome-platform.json
|
||||
+++ b/tests/run-make/target-specs/my-awesome-platform.json
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
- "data-layout": "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-f64:32:64-f80:32-n8:16:32-S128",
|
||||
+ "data-layout": "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-i128:128-f64:32:64-f80:32-n8:16:32-S128",
|
||||
"linker-flavor": "gcc",
|
||||
"llvm-target": "i686-unknown-linux-gnu",
|
||||
"target-endian": "little",
|
||||
diff --git a/tests/run-make/target-specs/my-x86_64-unknown-linux-gnu-platform.json b/tests/run-make/target-specs/my-x86_64-unknown-linux-gnu-platform.json
|
||||
index 6d5e964ed4fee..0cafce15a9fef 100644
|
||||
--- a/tests/run-make/target-specs/my-x86_64-unknown-linux-gnu-platform.json
|
||||
+++ b/tests/run-make/target-specs/my-x86_64-unknown-linux-gnu-platform.json
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"pre-link-args": {"gcc": ["-m64"]},
|
||||
- "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128",
|
||||
+ "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128",
|
||||
"linker-flavor": "gcc",
|
||||
"llvm-target": "x86_64-unknown-linux-gnu",
|
||||
"target-endian": "little",
|
55
121088.patch
Normal file
55
121088.patch
Normal file
@ -0,0 +1,55 @@
|
||||
From 369fff6c0640fe89be9b915adaa83e66a022e00d Mon Sep 17 00:00:00 2001
|
||||
From: Nikita Popov <npopov@redhat.com>
|
||||
Date: Wed, 14 Feb 2024 16:26:20 +0100
|
||||
Subject: [PATCH] Implicitly enable evex512 if avx512 is enabled
|
||||
|
||||
LLVM 18 requires the evex512 feature to allow use of zmm registers.
|
||||
LLVM automatically sets it when using a generic CPU, but not when
|
||||
`-C target-cpu` is specified. This will result either in backend
|
||||
legalization crashes, or code unexpectedly using ymm instead of
|
||||
zmm registers.
|
||||
|
||||
For now, make sure that `avx512*` features imply `evex512`. Long
|
||||
term we'll probably have to deal with the AVX10 mess somehow.
|
||||
---
|
||||
compiler/rustc_codegen_llvm/src/llvm_util.rs | 4 ++++
|
||||
tests/ui/asm/x86_64/evex512-implicit-feature.rs | 15 +++++++++++++++
|
||||
2 files changed, 19 insertions(+)
|
||||
create mode 100644 tests/ui/asm/x86_64/evex512-implicit-feature.rs
|
||||
|
||||
diff --git a/compiler/rustc_codegen_llvm/src/llvm_util.rs b/compiler/rustc_codegen_llvm/src/llvm_util.rs
|
||||
index e48479c8da279..54e8ed85e3250 100644
|
||||
--- a/compiler/rustc_codegen_llvm/src/llvm_util.rs
|
||||
+++ b/compiler/rustc_codegen_llvm/src/llvm_util.rs
|
||||
@@ -266,6 +266,10 @@ pub fn to_llvm_features<'a>(sess: &Session, s: &'a str) -> LLVMFeature<'a> {
|
||||
("riscv32" | "riscv64", "fast-unaligned-access") if get_version().0 <= 17 => {
|
||||
LLVMFeature::new("unaligned-scalar-mem")
|
||||
}
|
||||
+ // For LLVM 18, enable the evex512 target feature if a avx512 target feature is enabled.
|
||||
+ ("x86", s) if get_version().0 >= 18 && s.starts_with("avx512") => {
|
||||
+ LLVMFeature::with_dependency(s, TargetFeatureFoldStrength::EnableOnly("evex512"))
|
||||
+ }
|
||||
(_, s) => LLVMFeature::new(s),
|
||||
}
|
||||
}
|
||||
diff --git a/tests/ui/asm/x86_64/evex512-implicit-feature.rs b/tests/ui/asm/x86_64/evex512-implicit-feature.rs
|
||||
new file mode 100644
|
||||
index 0000000000000..a15060857eccb
|
||||
--- /dev/null
|
||||
+++ b/tests/ui/asm/x86_64/evex512-implicit-feature.rs
|
||||
@@ -0,0 +1,15 @@
|
||||
+// build-pass
|
||||
+// only-x86_64
|
||||
+// compile-flags: --crate-type=lib -C target-cpu=skylake
|
||||
+
|
||||
+#![feature(avx512_target_feature)]
|
||||
+#![feature(stdsimd)]
|
||||
+
|
||||
+use std::arch::x86_64::*;
|
||||
+
|
||||
+#[target_feature(enable = "avx512f")]
|
||||
+#[no_mangle]
|
||||
+pub unsafe fn test(res: *mut f64, p: *const f64) {
|
||||
+ let arg = _mm512_load_pd(p);
|
||||
+ _mm512_store_pd(res, _mm512_fmaddsub_pd(arg, arg, arg));
|
||||
+}
|
164
rust.spec
164
rust.spec
@ -1,5 +1,5 @@
|
||||
Name: rust
|
||||
Version: 1.76.0
|
||||
Version: 1.77.2
|
||||
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)
|
||||
@ -14,9 +14,9 @@ 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.75.0
|
||||
%global bootstrap_channel 1.75.0
|
||||
%global bootstrap_date 2023-12-28
|
||||
%global bootstrap_version 1.76.0
|
||||
%global bootstrap_channel 1.76.0
|
||||
%global bootstrap_date 2024-02-08
|
||||
|
||||
# Only the specified arches will use bootstrap binaries.
|
||||
# NOTE: Those binaries used to be uploaded with every new release, but that was
|
||||
@ -41,6 +41,11 @@ ExclusiveArch: %{rust_arches}
|
||||
%global extra_targets x86_64-unknown-none x86_64-unknown-uefi
|
||||
%endif
|
||||
%endif
|
||||
%ifarch aarch64
|
||||
%if 0%{?fedora} || 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)
|
||||
@ -67,19 +72,30 @@ ExclusiveArch: %{rust_arches}
|
||||
# is insufficient. Rust currently requires LLVM 15.0+.
|
||||
%global min_llvm_version 15.0.0
|
||||
%global bundled_llvm_version 17.0.6
|
||||
#global llvm_compat_version 17
|
||||
%global llvm llvm%{?llvm_compat_version}
|
||||
%bcond_with bundled_llvm
|
||||
|
||||
# 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.7.1
|
||||
%global min_libgit2_version 1.7.2
|
||||
%global next_libgit2_version 1.8.0~
|
||||
%global bundled_libgit2_version 1.7.1
|
||||
%global bundled_libgit2_version 1.7.2
|
||||
%if 0%{?fedora} >= 39
|
||||
%bcond_with bundled_libgit2
|
||||
%else
|
||||
%bcond_without bundled_libgit2
|
||||
%endif
|
||||
|
||||
# Cargo uses UPSERTs with omitted conflict targets
|
||||
%global min_sqlite3_version 3.35
|
||||
%global bundled_sqlite3_version 3.44.0
|
||||
%if 0%{?rhel} && 0%{?rhel} < 10
|
||||
%bcond_without bundled_sqlite3
|
||||
%else
|
||||
%bcond_with bundled_sqlite3
|
||||
%endif
|
||||
|
||||
%if 0%{?rhel}
|
||||
# Disable cargo->libgit2->libssh2 on RHEL, as it's not approved for FIPS (rhbz1732949)
|
||||
%bcond_without disabled_libssh2
|
||||
@ -87,9 +103,20 @@ ExclusiveArch: %{rust_arches}
|
||||
%bcond_with disabled_libssh2
|
||||
%endif
|
||||
|
||||
%if 0%{?__isa_bits} == 32
|
||||
# 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
|
||||
%global reduced_debuginfo 1
|
||||
%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
|
||||
@ -128,7 +155,29 @@ Patch4: 0001-bootstrap-allow-disabling-target-self-contained.patch
|
||||
Patch5: 0002-set-an-external-library-path-for-wasm32-wasi.patch
|
||||
|
||||
# We don't want to use the bundled library in libsqlite3-sys
|
||||
Patch6: rustc-1.76.0-unbundle-sqlite.patch
|
||||
Patch6: rustc-1.77.0-unbundle-sqlite.patch
|
||||
|
||||
# Backports of fixes for LLVM 18 compatibility
|
||||
Patch7: 120529.patch
|
||||
Patch8: 121088.patch
|
||||
|
||||
# https://github.com/rust-lang/rust/pull/123520
|
||||
Patch9: 0001-bootstrap-move-all-of-rustc-s-flags-to-rustc_cargo.patch
|
||||
|
||||
# https://github.com/rust-lang/rust/pull/123652
|
||||
Patch10: 0001-Fix-UI-tests-with-dist-vendored-dependencies.patch
|
||||
|
||||
# https://github.com/rust-lang/rust/pull/121179 (partial)
|
||||
Patch11: 0001-remove-stderr-per-bitwidth-from-some-tests.patch
|
||||
|
||||
# https://github.com/rust-lang/cargo/pull/13744
|
||||
Patch12: 0001-test-don-t-compress-test-registry-crates.patch
|
||||
|
||||
# https://github.com/rust-lang/rust-clippy/pull/12682
|
||||
Patch13: 0001-The-multiple_unsafe_ops_per_block-test-needs-asm.patch
|
||||
|
||||
# https://github.com/rust-lang/rust/pull/120676 (partial)
|
||||
Patch14: 0001-Step-all-bootstrap-cfgs-forward.patch
|
||||
|
||||
### RHEL-specific patches below ###
|
||||
|
||||
@ -138,7 +187,7 @@ Source101: cargo_vendor.attr
|
||||
Source102: cargo_vendor.prov
|
||||
|
||||
# Disable cargo->libgit2->libssh2 on RHEL, as it's not approved for FIPS (rhbz1732949)
|
||||
Patch100: rustc-1.76.0-disable-libssh2.patch
|
||||
Patch100: rustc-1.77.0-disable-libssh2.patch
|
||||
|
||||
# Get the Rust triple for any arch.
|
||||
%{lua: function rust_triple(arch)
|
||||
@ -208,13 +257,16 @@ BuildRequires: curl-devel
|
||||
BuildRequires: pkgconfig(libcurl)
|
||||
BuildRequires: pkgconfig(liblzma)
|
||||
BuildRequires: pkgconfig(openssl)
|
||||
BuildRequires: pkgconfig(sqlite3)
|
||||
BuildRequires: pkgconfig(zlib)
|
||||
|
||||
%if %{without bundled_libgit2}
|
||||
BuildRequires: (pkgconfig(libgit2) >= %{min_libgit2_version} with pkgconfig(libgit2) < %{next_libgit2_version})
|
||||
%endif
|
||||
|
||||
%if %{without bundled_sqlite3}
|
||||
BuildRequires: pkgconfig(sqlite3) >= %{min_sqlite3_version}
|
||||
%endif
|
||||
|
||||
%if %{without disabled_libssh2}
|
||||
BuildRequires: pkgconfig(libssh2)
|
||||
%endif
|
||||
@ -232,10 +284,9 @@ BuildRequires: ninja-build
|
||||
Provides: bundled(llvm) = %{bundled_llvm_version}
|
||||
%else
|
||||
BuildRequires: cmake >= 3.5.1
|
||||
%if %defined llvm
|
||||
%if %defined llvm_compat_version
|
||||
%global llvm_root %{_libdir}/%{llvm}
|
||||
%else
|
||||
%global llvm llvm
|
||||
%global llvm_root %{_prefix}
|
||||
%endif
|
||||
BuildRequires: %{llvm}-devel >= %{min_llvm_version}
|
||||
@ -317,7 +368,7 @@ find '%{buildroot}%{rustlibdir}'/wasm*/lib -type f -regex '.*\\.\\(a\\|rlib\\)'
|
||||
%endif
|
||||
|
||||
# For profiler_builtins
|
||||
BuildRequires: compiler-rt
|
||||
BuildRequires: compiler-rt%{?llvm_compat_version}
|
||||
|
||||
# This component was removed as of Rust 1.69.0.
|
||||
# https://github.com/rust-lang/rust/pull/101841
|
||||
@ -405,6 +456,12 @@ Requires: lld
|
||||
%target_description x86_64-unknown-uefi embedded
|
||||
%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
|
||||
Summary: Common debugger pretty printers for Rust
|
||||
@ -460,6 +517,9 @@ Summary: Rust's package manager and build tool
|
||||
%if %with bundled_libgit2
|
||||
Provides: bundled(libgit2) = %{bundled_libgit2_version}
|
||||
%endif
|
||||
%if %with bundled_sqlite3
|
||||
Provides: bundled(sqlite) = %{bundled_sqlite3_version}
|
||||
%endif
|
||||
# For tests:
|
||||
BuildRequires: git-core
|
||||
# Cargo is not much use without Rust
|
||||
@ -575,7 +635,17 @@ rm -rf %{wasi_libc_dir}/dlmalloc/
|
||||
%if %without bundled_wasi_libc
|
||||
%patch -P5 -p1
|
||||
%endif
|
||||
%if %without bundled_sqlite3
|
||||
%patch -P6 -p1
|
||||
%endif
|
||||
%patch -P7 -p1
|
||||
%patch -P8 -p1
|
||||
%patch -P9 -p1
|
||||
%patch -P10 -p1
|
||||
%patch -P11 -p1
|
||||
%patch -P12 -p1 -d src/tools/cargo
|
||||
%patch -P13 -p1 -d src/tools/clippy
|
||||
%patch -P14 -p1
|
||||
|
||||
%if %with disabled_libssh2
|
||||
%patch -P100 -p1
|
||||
@ -600,7 +670,7 @@ mkdir -p src/llvm-project/libunwind/
|
||||
%clear_dir vendor/*jemalloc-sys*/jemalloc/
|
||||
%clear_dir vendor/libffi-sys*/libffi/
|
||||
%clear_dir vendor/libmimalloc-sys*/c_src/mimalloc/
|
||||
%clear_dir vendor/libsqlite3-sys*/{sqlite3,sqlcipher}/
|
||||
%clear_dir vendor/libsqlite3-sys*/sqlcipher/
|
||||
%clear_dir vendor/libssh2-sys*/libssh2/
|
||||
%clear_dir vendor/libz-sys*/src/zlib{,-ng}/
|
||||
%clear_dir vendor/lzma-sys*/xz-*/
|
||||
@ -610,6 +680,10 @@ mkdir -p src/llvm-project/libunwind/
|
||||
%clear_dir vendor/libgit2-sys*/libgit2/
|
||||
%endif
|
||||
|
||||
%if %without bundled_sqlite3
|
||||
%clear_dir vendor/libsqlite3-sys*/sqlite3/
|
||||
%endif
|
||||
|
||||
%if %with disabled_libssh2
|
||||
rm -rf vendor/libssh2-sys*/
|
||||
%endif
|
||||
@ -658,7 +732,7 @@ end}
|
||||
%global rust_env %{shrink:
|
||||
%{?rustflags:RUSTFLAGS="%{rustflags}"}
|
||||
%{rustc_target_cpus}
|
||||
LIBSQLITE3_SYS_USE_PKG_CONFIG=1
|
||||
%{!?with_bundled_sqlite3:LIBSQLITE3_SYS_USE_PKG_CONFIG=1}
|
||||
%{!?with_disabled_libssh2:LIBSSH2_SYS_USE_PKG_CONFIG=1}
|
||||
}
|
||||
%global export_rust_env export %{rust_env}
|
||||
@ -702,12 +776,17 @@ fi
|
||||
%endif
|
||||
|
||||
# Find the compiler-rt library for the Rust profiler_builtins crate.
|
||||
%if %defined llvm_compat_version
|
||||
# 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
|
||||
%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
|
||||
%endif
|
||||
test -r "%{profiler}"
|
||||
|
||||
%configure --disable-option-checking \
|
||||
@ -735,6 +814,7 @@ test -r "%{profiler}"
|
||||
--set build.doc-stage=2 \
|
||||
--set build.install-stage=2 \
|
||||
--set build.test-stage=2 \
|
||||
--set build.optimized-compiler-builtins=false \
|
||||
--enable-extended \
|
||||
--tools=cargo,clippy,rls,rust-analyzer,rustfmt,src \
|
||||
--enable-vendor \
|
||||
@ -744,31 +824,32 @@ test -r "%{profiler}"
|
||||
--release-description="%{?fedora:Fedora }%{?rhel:Red Hat }%{version}-%{release}"
|
||||
|
||||
%global __x %{__python3} ./x.py
|
||||
%global __xk %{__x} --keep-stage=0 --keep-stage=1
|
||||
|
||||
%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"
|
||||
%define profraw $PWD/build/profiles
|
||||
%define 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
|
||||
env LLVM_PROFILE_FILE="%{profraw}/default_%%m_%%p.profraw" \
|
||||
%{__x} --keep-stage=0 --keep-stage=1 build cargo
|
||||
# Finalize the profile data and clean up the raw files
|
||||
%{llvm_root}/bin/llvm-profdata merge -o "%{profdata}" "%{profraw}"
|
||||
rm -r "%{profraw}" build/%{rust_triple}/stage2*/
|
||||
# Redefine the macro to use that profile data from now on
|
||||
%global __x %{__x} --rust-profile-use="%{profdata}"
|
||||
%endif
|
||||
|
||||
# Build the compiler normally (with or without PGO)
|
||||
%{__x} build -j "$ncpus" sysroot
|
||||
|
||||
# Build everything else normally
|
||||
%{__xk} build
|
||||
%{__xk} doc
|
||||
%{__x} build
|
||||
%{__x} doc
|
||||
|
||||
for triple in %{?all_targets} ; do
|
||||
%{__xk} build --target=$triple std
|
||||
%{__x} build --target=$triple std
|
||||
done
|
||||
|
||||
%install
|
||||
@ -777,10 +858,10 @@ done
|
||||
%endif
|
||||
%{export_rust_env}
|
||||
|
||||
DESTDIR=%{buildroot} %{__xk} install
|
||||
DESTDIR=%{buildroot} %{__x} install
|
||||
|
||||
for triple in %{?all_targets} ; do
|
||||
DESTDIR=%{buildroot} %{__xk} install --target=$triple std
|
||||
DESTDIR=%{buildroot} %{__x} install --target=$triple std
|
||||
done
|
||||
|
||||
# The rls stub doesn't have an install target, but we can just copy it.
|
||||
@ -892,17 +973,17 @@ rm -rf "$TMP_HELLO"
|
||||
|
||||
# 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 %{__xk} test --no-fail-fast --skip src/bootstrap || :
|
||||
timeout -v 90m %{__x} test --no-fail-fast --skip src/bootstrap || :
|
||||
rm -rf "./build/%{rust_triple}/test/"
|
||||
|
||||
timeout -v 30m %{__xk} test --no-fail-fast cargo || :
|
||||
timeout -v 30m %{__x} test --no-fail-fast cargo || :
|
||||
rm -rf "./build/%{rust_triple}/stage2-tools/%{rust_triple}/cit/"
|
||||
|
||||
timeout -v 30m %{__xk} test --no-fail-fast clippy || :
|
||||
timeout -v 30m %{__x} test --no-fail-fast clippy || :
|
||||
|
||||
timeout -v 30m %{__xk} test --no-fail-fast rust-analyzer || :
|
||||
timeout -v 30m %{__x} test --no-fail-fast rust-analyzer || :
|
||||
|
||||
timeout -v 30m %{__xk} test --no-fail-fast rustfmt || :
|
||||
timeout -v 30m %{__x} test --no-fail-fast rustfmt || :
|
||||
|
||||
|
||||
%ldconfig_scriptlets
|
||||
@ -971,6 +1052,10 @@ timeout -v 30m %{__xk} test --no-fail-fast rustfmt || :
|
||||
%target_files x86_64-unknown-uefi
|
||||
%endif
|
||||
|
||||
%if %target_enabled aarch64-unknown-none-softfloat
|
||||
%target_files aarch64-unknown-none-softfloat
|
||||
%endif
|
||||
|
||||
|
||||
%files debugger-common
|
||||
%dir %{rustlibdir}
|
||||
@ -1045,6 +1130,9 @@ timeout -v 30m %{__xk} test --no-fail-fast rustfmt || :
|
||||
|
||||
|
||||
%changelog
|
||||
* 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
|
||||
|
@ -1,42 +0,0 @@
|
||||
--- rustc-beta-src/src/tools/cargo/Cargo.lock.orig 2024-01-07 18:12:08.000000000 -0800
|
||||
+++ rustc-beta-src/src/tools/cargo/Cargo.lock 2024-01-09 15:25:51.519781381 -0800
|
||||
@@ -2071,7 +2071,6 @@
|
||||
dependencies = [
|
||||
"cc",
|
||||
"libc",
|
||||
- "libssh2-sys",
|
||||
"libz-sys",
|
||||
"openssl-sys",
|
||||
"pkg-config",
|
||||
@@ -2113,20 +2112,6 @@
|
||||
"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"
|
||||
--- rustc-beta-src/src/tools/cargo/Cargo.toml.orig 2024-01-09 15:23:02.369032291 -0800
|
||||
+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2024-01-09 15:24:44.015679666 -0800
|
||||
@@ -40,7 +40,7 @@
|
||||
curl-sys = "0.4.70"
|
||||
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.56.0", 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,21 +0,0 @@
|
||||
--- rustc-beta-src/src/tools/cargo/Cargo.lock.orig 2024-01-07 18:12:08.000000000 -0800
|
||||
+++ rustc-beta-src/src/tools/cargo/Cargo.lock 2024-01-09 15:36:23.808367445 -0800
|
||||
@@ -2109,7 +2109,6 @@
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716"
|
||||
dependencies = [
|
||||
- "cc",
|
||||
"pkg-config",
|
||||
"vcpkg",
|
||||
]
|
||||
--- rustc-beta-src/src/tools/cargo/Cargo.toml.orig 2024-01-07 18:12:08.000000000 -0800
|
||||
+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2024-01-09 15:36:18.534437627 -0800
|
||||
@@ -73,7 +73,7 @@
|
||||
pulldown-cmark = { version = "0.9.3", default-features = false }
|
||||
rand = "0.8.5"
|
||||
regex = "1.10.2"
|
||||
-rusqlite = { version = "0.30.0", features = ["bundled"] }
|
||||
+rusqlite = { version = "0.30.0", features = [] }
|
||||
rustfix = { version = "0.7.0", path = "crates/rustfix" }
|
||||
same-file = "1.0.6"
|
||||
security-framework = "2.9.2"
|
44
rustc-1.77.0-disable-libssh2.patch
Normal file
44
rustc-1.77.0-disable-libssh2.patch
Normal file
@ -0,0 +1,44 @@
|
||||
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-02-14 14:06:05.881165093 +0100
|
||||
+++ rustc-beta-src/src/tools/cargo/Cargo.lock 2024-02-14 14:06:27.169456166 +0100
|
||||
@@ -2072,7 +2072,6 @@ checksum = "ee4126d8b4ee5c9d9ea891dd875c
|
||||
dependencies = [
|
||||
"cc",
|
||||
"libc",
|
||||
- "libssh2-sys",
|
||||
"libz-sys",
|
||||
"openssl-sys",
|
||||
"pkg-config",
|
||||
@@ -2113,20 +2112,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-02-14 14:06:10.400226884 +0100
|
||||
+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2024-02-14 14:06:51.225785086 +0100
|
||||
@@ -44,7 +44,7 @@ curl = "0.4.44"
|
||||
curl-sys = "0.4.70"
|
||||
filetime = "0.2.23"
|
||||
flate2 = { version = "1.0.28", default-features = false, features = ["zlib"] }
|
||||
-git2 = "0.18.2"
|
||||
+git2 = { version = "0.18.2", default-features = false, features = ["https"] }
|
||||
git2-curl = "0.19.0"
|
||||
gix = { version = "0.57.1", default-features = false, features = ["blocking-http-transport-curl", "progress-tree", "revision"] }
|
||||
gix-features-for-configuration-only = { version = "0.37.1", package = "gix-features", features = [ "parallel" ] }
|
23
rustc-1.77.0-unbundle-sqlite.patch
Normal file
23
rustc-1.77.0-unbundle-sqlite.patch
Normal file
@ -0,0 +1,23 @@
|
||||
diff -up rustc-beta-src/src/tools/cargo/Cargo.lock.orig rustc-beta-src/src/tools/cargo/Cargo.lock
|
||||
--- rustc-beta-src/src/tools/cargo/Cargo.lock.orig 2024-02-14 13:00:20.318976752 +0100
|
||||
+++ rustc-beta-src/src/tools/cargo/Cargo.lock 2024-02-14 13:00:28.447051475 +0100
|
||||
@@ -2110,7 +2110,6 @@ version = "0.27.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716"
|
||||
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-02-14 13:00:14.942927327 +0100
|
||||
+++ rustc-beta-src/src/tools/cargo/Cargo.toml 2024-02-14 13:00:40.688164017 +0100
|
||||
@@ -77,7 +77,7 @@ proptest = "1.4.0"
|
||||
pulldown-cmark = { version = "0.9.3", default-features = false }
|
||||
rand = "0.8.5"
|
||||
regex = "1.10.2"
|
||||
-rusqlite = { version = "0.30.0", features = ["bundled"] }
|
||||
+rusqlite = { version = "0.30.0", features = [] }
|
||||
rustfix = { version = "0.8.0", path = "crates/rustfix" }
|
||||
same-file = "1.0.6"
|
||||
security-framework = "2.9.2"
|
2
sources
2
sources
@ -1,2 +1,2 @@
|
||||
SHA512 (rustc-1.76.0-src.tar.xz) = 92e16cfdeb91bde341fe6c2774d92868275b07aa1d46d870ddc9291eadfe4ea9af93e06586fa7d6b8d60534903945cbbe706d354c90272712989c58d2bf174bf
|
||||
SHA512 (rustc-1.77.2-src.tar.xz) = ab099a5e545892f145af9f4c21f41693463248697accf1c92d9afbe6c711639c3859e89c1bb99b84854c462784cc5970fb84dd7c89260ff92174e3684f76920c
|
||||
SHA512 (wasi-libc-03b228e46bb02fcc5927253e1b8ad715072b1ae4.tar.gz) = 56306817a6d683aeaf61c3376700804f143b9be101729693c1c88666ea201f02a3e7a3b32150f688a784ac4aae30e46bdbe3fc79a1a9c62e7b460d11ad509045
|
||||
|
Loading…
Reference in New Issue
Block a user