Skip to content

Commit

Permalink
Unrolled build for rust-lang#136157
Browse files Browse the repository at this point in the history
Rollup merge of rust-lang#136157 - onur-ozkan:override-release-profile, r=Kobzol

override build profile for bootstrap tests

Using the release profile for bootstrap self tests puts too much load on the CPU and makes it quite hot on `x test bootstrap` invocation for no good reason. It also makes the compilation take longer than usual (see rust-lang#136048 (comment)). This change turns off the release flag for bootstrap self tests.
  • Loading branch information
rust-timer authored Jan 31, 2025
2 parents a730edc + 869bc2f commit b85cb3c
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 8 deletions.
3 changes: 3 additions & 0 deletions src/bootstrap/src/core/build_steps/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ impl Step for CrateBootstrap {
SourceType::InTree,
&[],
);

let crate_name = path.rsplit_once('/').unwrap().1;
run_cargo_test(cargo, &[], &[], crate_name, crate_name, bootstrap_host, builder);
}
Expand Down Expand Up @@ -3106,6 +3107,8 @@ impl Step for Bootstrap {
&[],
);

cargo.release_build(false);

cargo
.rustflag("-Cdebuginfo=2")
.env("CARGO_TARGET_DIR", builder.out.join("bootstrap"))
Expand Down
28 changes: 20 additions & 8 deletions src/bootstrap/src/core/builder/cargo.rs
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,14 @@ impl HostFlags {
#[derive(Debug)]
pub struct Cargo {
command: BootstrapCommand,
args: Vec<OsString>,
compiler: Compiler,
target: TargetSelection,
rustflags: Rustflags,
rustdocflags: Rustflags,
hostflags: HostFlags,
allow_features: String,
release_build: bool,
}

impl Cargo {
Expand Down Expand Up @@ -121,6 +123,10 @@ impl Cargo {
cargo
}

pub fn release_build(&mut self, release_build: bool) {
self.release_build = release_build;
}

pub fn compiler(&self) -> Compiler {
self.compiler
}
Expand Down Expand Up @@ -153,7 +159,7 @@ impl Cargo {
}

pub fn arg(&mut self, arg: impl AsRef<OsStr>) -> &mut Cargo {
self.command.arg(arg.as_ref());
self.args.push(arg.as_ref().into());
self
}

Expand Down Expand Up @@ -342,6 +348,12 @@ impl Cargo {

impl From<Cargo> for BootstrapCommand {
fn from(mut cargo: Cargo) -> BootstrapCommand {
if cargo.release_build {
cargo.args.insert(0, "--release".into());
}

cargo.command.args(cargo.args);

let rustflags = &cargo.rustflags.0;
if !rustflags.is_empty() {
cargo.command.env("RUSTFLAGS", rustflags);
Expand All @@ -360,6 +372,7 @@ impl From<Cargo> for BootstrapCommand {
if !cargo.allow_features.is_empty() {
cargo.command.env("RUSTC_ALLOW_FEATURES", cargo.allow_features);
}

cargo.command
}
}
Expand Down Expand Up @@ -429,13 +442,6 @@ impl Builder<'_> {
assert_eq!(target, compiler.host);
}

if self.config.rust_optimize.is_release() &&
// cargo bench/install do not accept `--release` and miri doesn't want it
!matches!(cmd_kind, Kind::Bench | Kind::Install | Kind::Miri | Kind::MiriSetup | Kind::MiriTest)
{
cargo.arg("--release");
}

// Remove make-related flags to ensure Cargo can correctly set things up
cargo.env_remove("MAKEFLAGS");
cargo.env_remove("MFLAGS");
Expand Down Expand Up @@ -1218,14 +1224,20 @@ impl Builder<'_> {
rustflags.arg("-Zmir_strip_debuginfo=locals-in-tiny-functions");
}

let release_build = self.config.rust_optimize.is_release() &&
// cargo bench/install do not accept `--release` and miri doesn't want it
!matches!(cmd_kind, Kind::Bench | Kind::Install | Kind::Miri | Kind::MiriSetup | Kind::MiriTest);

Cargo {
command: cargo,
args: vec![],
compiler,
target,
rustflags,
rustdocflags,
hostflags,
allow_features,
release_build,
}
}
}
Expand Down

0 comments on commit b85cb3c

Please sign in to comment.