./x test miri: fix cleaning the miri_ui directory

This commit is contained in:
Ralf Jung 2025-07-12 09:39:29 +02:00
parent 855e0fe46e
commit b0e4c3594f
2 changed files with 9 additions and 2 deletions

View file

@ -556,8 +556,13 @@ impl Step for Miri {
// 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(miri.build_compiler, Mode::ToolStd).join("miri_ui");
// This has to match `CARGO_TARGET_TMPDIR` in Miri's `ui.rs`.
// This means we need `host` here as that's the target `ui.rs` is built for.
let ui_test_dep_dir = builder
.stage_out(miri.build_compiler, Mode::ToolStd)
.join(host)
.join("tmp")
.join("miri_ui");
// 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.

View file

@ -97,6 +97,8 @@ fn miri_config(
let mut config = Config {
target: Some(target.to_owned()),
program,
// When changing this, remember to also adjust the logic in bootstrap, in Miri's test step,
// that deletes the `miri_ui` dir when it needs a rebuild.
out_dir: PathBuf::from(env!("CARGO_TARGET_TMPDIR")).join("miri_ui"),
threads: std::env::var("MIRI_TEST_THREADS")
.ok()