Rollup merge of #129000 - RalfJung:miri-bootstrap-clear, r=onur-ozkan
bootstrap: clear miri ui-test deps when miri sysroot gets rebuilt Second attempt after https://github.com/rust-lang/rust/pull/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``
This commit is contained in:
commit
301a4cab68
@ -434,7 +434,7 @@ pub fn build_miri_sysroot(
|
||||
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,
|
||||
@ -467,7 +467,7 @@ pub fn build_miri_sysroot(
|
||||
// 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)
|
||||
}
|
||||
}
|
||||
|
||||
@ -520,12 +520,14 @@ fn run(self, builder: &Builder<'_>) {
|
||||
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`.
|
||||
|
Loading…
Reference in New Issue
Block a user