Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 4 additions & 9 deletions library/test/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,11 @@ fn main() {
println!("cargo:rerun-if-changed=build.rs");
println!("cargo:rustc-check-cfg=cfg(enable_unstable_features)");

// Miri testing uses unstable features, so always enable that for its sysroot.
// Otherwise, only enable unstable if rustc looks like a nightly or dev build.
let enable_unstable_features = std::env::var("MIRI_CALLED_FROM_SETUP").is_ok() || {
let rustc = std::env::var("RUSTC").unwrap_or_else(|_| "rustc".into());
let version = std::process::Command::new(rustc).arg("-vV").output().unwrap();
let stdout = String::from_utf8(version.stdout).unwrap();
stdout.contains("nightly") || stdout.contains("dev")
};
let rustc = std::env::var("RUSTC").unwrap_or_else(|_| "rustc".into());
let version = std::process::Command::new(rustc).arg("-vV").output().unwrap();
let stdout = String::from_utf8(version.stdout).unwrap();

if enable_unstable_features {
if stdout.contains("nightly") || stdout.contains("dev") {
println!("cargo:rustc-cfg=enable_unstable_features");
}
}
19 changes: 18 additions & 1 deletion src/bootstrap/src/core/build_steps/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -741,7 +741,13 @@ impl Step for Miri {

// Run it again for mir-opt-level 4 to catch some miscompilations.
if builder.config.test_args().is_empty() {
cargo.env("MIRIFLAGS", "-O -Zmir-opt-level=4 -Cdebug-assertions=yes");
cargo.env(
"MIRIFLAGS",
format!(
"{} -O -Zmir-opt-level=4 -Cdebug-assertions=yes",
env::var("MIRIFLAGS").unwrap_or_default()
),
);
// Optimizations can change backtraces
cargo.env("MIRI_SKIP_UI_CHECKS", "1");
// `MIRI_SKIP_UI_CHECKS` and `RUSTC_BLESS` are incompatible
Expand Down Expand Up @@ -3108,6 +3114,17 @@ impl Step for Crate {
// does not set this directly, but relies on the rustc wrapper to set it, and we are not using
// the wrapper -- hence we have to set it ourselves.
cargo.rustflag("-Zforce-unstable-if-unmarked");
// Miri is told to invoke the libtest runner and bootstrap sets unstable flags
// for that runner. That only works when RUSTC_BOOTSTRAP is set. Bootstrap sets
// that flag but Miri by default does not forward the host environment to the test.
// Here we set up MIRIFLAGS to forward that env var.
cargo.env(
"MIRIFLAGS",
format!(
"{} -Zmiri-env-forward=RUSTC_BOOTSTRAP",
env::var("MIRIFLAGS").unwrap_or_default()
),
);
cargo
} else {
// Also prepare a sysroot for the target.
Expand Down
Loading