// `config.toml`.
command.env("RUSTC_WRAPPER", "");
- if only_setup {
- if print_sysroot {
- // Be extra sure there is no noise on stdout.
- command.stdout(process::Stdio::null());
- }
+ if only_setup && !print_sysroot {
+ // Forward output.
} else {
+ // Supress output.
command.stdout(process::Stdio::null());
command.stderr(process::Stdio::null());
}
std::env::set_var("MIRI_SYSROOT", &sysroot_dir);
// Do the build.
- if only_setup {
+ if print_sysroot {
+ // Be silent.
+ } else if only_setup {
// We want to be explicit.
eprintln!("Preparing a sysroot for Miri (target: {target})...");
} else {
)
}
});
- if only_setup {
+ if print_sysroot {
+ // Be silent.
+ } else if only_setup {
eprintln!("A sysroot for Miri is now available in `{}`.", sysroot_dir.display());
} else {
eprintln!("done");
./miri many-seeds <command>:
Runs <command> over and over again with different seeds for Miri. The MIRIFLAGS
variable is set to its original value appended with ` -Zmiri-seed=$SEED` for
-many different seeds.
+many different seeds. The MIRI_SEEDS variable controls how many seeds are being
+tried; MIRI_SEED_START controls the first seed to try.
./miri bench <benches>:
Runs the benchmarks from bench-cargo-miri in hyperfine. hyperfine needs to be installed.
fi
;;
many-seeds)
- for SEED in $(seq 0 255); do
+ MIRI_SEED_START=${MIRI_SEED_START:-0} # default to 0
+ MIRI_SEEDS=${MIRI_SEEDS:-256} # default to 256
+ for SEED in $(seq $MIRI_SEED_START $(( $MIRI_SEED_START + $MIRI_SEEDS - 1 )) ); do
echo "Trying seed: $SEED"
MIRIFLAGS="$MIRIFLAGS -Zlayout-seed=$SEED -Zmiri-seed=$SEED" $@ || { echo "Failing seed: $SEED"; break; }
done
# Build a sysroot and set MIRI_SYSROOT to use it. Arguments are passed to `cargo miri setup`.
build_sysroot() {
if ! MIRI_SYSROOT="$($CARGO run $CARGO_EXTRA_FLAGS --manifest-path "$MIRIDIR"/cargo-miri/Cargo.toml -- miri setup --print-sysroot "$@")"; then
+ # Run it again so the user can see the error.
+ $CARGO run $CARGO_EXTRA_FLAGS --manifest-path "$MIRIDIR"/cargo-miri/Cargo.toml -- miri setup "$@"
echo "'cargo miri setup' failed"
exit 1
fi