Skip to content

Commit

Permalink
Rollup merge of #129000 - RalfJung:miri-bootstrap-clear, r=onur-ozkan
Browse files Browse the repository at this point in the history
bootstrap: clear miri ui-test deps when miri sysroot gets rebuilt

Second attempt after #128683: seems like it's not the compiler changing that we care about, but the sysroot changing.

I did some local testing with sysroot rebuilds and it works fine for at least those cases I checked.

r? `@onur-ozkan`
  • Loading branch information
matthiaskrgr authored Aug 12, 2024
2 parents 4c2362a + 6839a8f commit 23cf189
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions src/bootstrap/src/core/build_steps/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -434,7 +434,7 @@ impl Miri {
builder: &Builder<'_>,
compiler: Compiler,
target: TargetSelection,
) -> String {
) -> PathBuf {
let miri_sysroot = builder.out.join(compiler.host.triple).join("miri-sysroot");
let mut cargo = builder::Cargo::new(
builder,
Expand Down Expand Up @@ -467,7 +467,7 @@ impl Miri {
// Output is "<sysroot>\n".
let sysroot = stdout.trim_end();
builder.verbose(|| println!("`cargo miri setup --print-sysroot` said: {sysroot:?}"));
sysroot.to_owned()
PathBuf::from(sysroot)
}
}

Expand Down Expand Up @@ -520,12 +520,14 @@ impl Step for Miri {
builder.ensure(compile::Std::new(target_compiler, host));
let host_sysroot = builder.sysroot(target_compiler);

// Miri has its own "target dir" for ui test dependencies. Make sure it gets cleared
// properly when rustc changes. Similar to `Builder::cargo`, we skip this in dry runs to
// make sure the relevant compiler has been set up properly.
// Miri has its own "target dir" for ui test dependencies. Make sure it gets cleared when
// the sysroot gets rebuilt, to avoid "found possibly newer version of crate `std`" errors.
if !builder.config.dry_run() {
let ui_test_dep_dir = builder.stage_out(host_compiler, Mode::ToolStd).join("miri_ui");
builder.clear_if_dirty(&ui_test_dep_dir, &builder.rustc(host_compiler));
// The mtime of `miri_sysroot` changes when the sysroot gets rebuilt (also see
// <https://github.com/RalfJung/rustc-build-sysroot/commit/10ebcf60b80fe2c3dc765af0ff19fdc0da4b7466>).
// We can hence use that directly as a signal to clear the ui test dir.
builder.clear_if_dirty(&ui_test_dep_dir, &miri_sysroot);
}

// Run `cargo test`.
Expand Down

0 comments on commit 23cf189

Please sign in to comment.