Auto merge of #3531 - narpfel:quiet-sysroot, r=RalfJung

Don’t print `Preparing a sysroot` when `-q`/`--quiet` is passed

Resolves #3530.

This also fixes a typo in `cargo miri --help` that I found while trying to run the `--print-sysroot` example.
This commit is contained in:
bors 2024-05-01 20:44:13 +00:00
commit b0bdbcc5e5
3 changed files with 10 additions and 9 deletions

View File

@ -28,7 +28,7 @@
cargo miri run cargo miri run
cargo miri test -- test-suite-filter cargo miri test -- test-suite-filter
cargo miri setup --print sysroot cargo miri setup --print-sysroot
This will print the path to the generated sysroot (and nothing else) on stdout. This will print the path to the generated sysroot (and nothing else) on stdout.
stderr will still contain progress information about how the build is doing. stderr will still contain progress information about how the build is doing.
@ -87,6 +87,7 @@ pub fn phase_cargo_miri(mut args: impl Iterator<Item = String>) {
), ),
}; };
let verbose = num_arg_flag("-v"); let verbose = num_arg_flag("-v");
let quiet = has_arg_flag("-q") || has_arg_flag("--quiet");
// Determine the involved architectures. // Determine the involved architectures.
let rustc_version = VersionMeta::for_command(miri_for_host()).unwrap_or_else(|err| { let rustc_version = VersionMeta::for_command(miri_for_host()).unwrap_or_else(|err| {
@ -110,7 +111,7 @@ pub fn phase_cargo_miri(mut args: impl Iterator<Item = String>) {
} }
// We always setup. // We always setup.
let miri_sysroot = setup(&subcommand, target, &rustc_version, verbose); let miri_sysroot = setup(&subcommand, target, &rustc_version, verbose, quiet);
// Invoke actual cargo for the job, but with different flags. // Invoke actual cargo for the job, but with different flags.
// We re-use `cargo test` and `cargo run`, which makes target and binary handling very easy but // We re-use `cargo test` and `cargo run`, which makes target and binary handling very easy but

View File

@ -19,6 +19,7 @@ pub fn setup(
target: &str, target: &str,
rustc_version: &VersionMeta, rustc_version: &VersionMeta,
verbose: usize, verbose: usize,
quiet: bool,
) -> PathBuf { ) -> PathBuf {
let only_setup = matches!(subcommand, MiriCommand::Setup); let only_setup = matches!(subcommand, MiriCommand::Setup);
let ask_user = !only_setup; let ask_user = !only_setup;
@ -119,6 +120,9 @@ pub fn setup(
for _ in 0..verbose { for _ in 0..verbose {
command.arg("-v"); command.arg("-v");
} }
if quiet {
command.arg("--quiet");
}
} else { } else {
// Suppress output. // Suppress output.
command.stdout(process::Stdio::null()); command.stdout(process::Stdio::null());
@ -134,7 +138,7 @@ pub fn setup(
let rustflags = &["-Cdebug-assertions=off", "-Coverflow-checks=on"]; let rustflags = &["-Cdebug-assertions=off", "-Coverflow-checks=on"];
// Do the build. // Do the build.
if print_sysroot { if print_sysroot || quiet {
// Be silent. // Be silent.
} else { } else {
let mut msg = String::new(); let mut msg = String::new();
@ -169,7 +173,7 @@ pub fn setup(
) )
} }
}); });
if print_sysroot { if print_sysroot || quiet {
// Be silent. // Be silent.
} else if only_setup { } else if only_setup {
eprintln!("A sysroot for Miri is now available in `{}`.", sysroot_dir.display()); eprintln!("A sysroot for Miri is now available in `{}`.", sysroot_dir.display());

View File

@ -34,10 +34,6 @@ def normalize_stdout(str):
str = re.sub("finished in \\d+\\.\\d\\ds", "finished in $TIME", str) # the time keeps changing, obviously str = re.sub("finished in \\d+\\.\\d\\ds", "finished in $TIME", str) # the time keeps changing, obviously
return str return str
def normalize_stderr(str):
str = re.sub("Preparing a sysroot for Miri \\(target: [a-z0-9_-]+\\)\\.\\.\\. done\n", "", str) # remove leading cargo-miri setup output
return str
def check_output(actual, path, name): def check_output(actual, path, name):
if os.environ.get("RUSTC_BLESS", "0") != "0": if os.environ.get("RUSTC_BLESS", "0") != "0":
# Write the output only if bless is set # Write the output only if bless is set
@ -69,7 +65,7 @@ def test(name, cmd, stdout_ref, stderr_ref, stdin=b'', env=None):
) )
(stdout, stderr) = p.communicate(input=stdin) (stdout, stderr) = p.communicate(input=stdin)
stdout = normalize_stdout(stdout.decode("UTF-8")) stdout = normalize_stdout(stdout.decode("UTF-8"))
stderr = normalize_stderr(stderr.decode("UTF-8")) stderr = stderr.decode("UTF-8")
stdout_matches = check_output(stdout, stdout_ref, "stdout") stdout_matches = check_output(stdout, stdout_ref, "stdout")
stderr_matches = check_output(stderr, stderr_ref, "stderr") stderr_matches = check_output(stderr, stderr_ref, "stderr")