Skip to content

Commit 433b04f

Browse files
xtask: Enable strict provenance checks in Miri
1 parent 11ccc4c commit 433b04f

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

xtask/src/cargo.rs

+21
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,19 @@ pub fn fix_nested_cargo_env(cmd: &mut Command) {
212212
cmd.env("PATH", sanitized_path(orig_path));
213213
}
214214

215+
/// Check if the three UEFI targets are installed via rustup (only
216+
/// supported since nightly-2022-11-10).
217+
fn is_target_installed(target: &str) -> Result<bool> {
218+
let output = Command::new("rustup")
219+
.args(["target", "list", "--installed"])
220+
.output()?;
221+
if !output.status.success() {
222+
bail!("failed to get installed targets");
223+
}
224+
let stdout = String::from_utf8(output.stdout)?;
225+
Ok(stdout.lines().any(|x| x == target))
226+
}
227+
215228
#[derive(Debug)]
216229
pub struct Cargo {
217230
pub action: CargoAction,
@@ -261,6 +274,7 @@ impl Cargo {
261274
CargoAction::Miri => {
262275
action = "miri";
263276
sub_action = Some("test");
277+
cmd.env("MIRIFLAGS", "-Zmiri-strict-provenance");
264278
}
265279
CargoAction::Test => {
266280
action = "test";
@@ -277,6 +291,13 @@ impl Cargo {
277291

278292
if let Some(target) = self.target {
279293
cmd.args(["--target", target.as_triple()]);
294+
295+
// If the target is not installed, use build-std. Keep this
296+
// around until our minimum-supported nightly version is at
297+
// least 2022-11-10.
298+
if !is_target_installed(target.as_triple())? {
299+
cmd.args(["-Zbuild-std=core,alloc"]);
300+
}
280301
}
281302

282303
if self.packages.is_empty() {

0 commit comments

Comments
 (0)