Skip to content

Commit d3fb2b8

Browse files
committed
miri-script: pass around the relative crate dir, not the absolute path to the toml file
1 parent c64efd7 commit d3fb2b8

File tree

2 files changed

+28
-34
lines changed

2 files changed

+28
-34
lines changed

miri-script/src/commands.rs

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,10 @@ impl MiriEnv {
3535
// Sysroot already set, use that.
3636
return Ok(miri_sysroot.into());
3737
}
38-
let manifest_path = path!(self.miri_dir / "cargo-miri" / "Cargo.toml");
3938

4039
// Make sure everything is built. Also Miri itself.
41-
self.build(path!(self.miri_dir / "Cargo.toml"), &[], quiet)?;
42-
self.build(&manifest_path, &[], quiet)?;
40+
self.build(".", &[], quiet)?;
41+
self.build("cargo-miri", &[], quiet)?;
4342

4443
let target_flag = if let Some(target) = &target {
4544
vec![OsStr::new("--target"), target.as_ref()]
@@ -57,7 +56,7 @@ impl MiriEnv {
5756
}
5857

5958
let mut cmd = self
60-
.cargo_cmd(&manifest_path, "run")
59+
.cargo_cmd("cargo-miri", "run")
6160
.arg("--quiet")
6261
.arg("--")
6362
.args(&["miri", "setup", "--print-sysroot"])
@@ -429,30 +428,30 @@ impl Command {
429428

430429
fn build(flags: Vec<String>) -> Result<()> {
431430
let e = MiriEnv::new()?;
432-
e.build(path!(e.miri_dir / "Cargo.toml"), &flags, /* quiet */ false)?;
433-
e.build(path!(e.miri_dir / "cargo-miri" / "Cargo.toml"), &flags, /* quiet */ false)?;
431+
e.build(".", &flags, /* quiet */ false)?;
432+
e.build("cargo-miri", &flags, /* quiet */ false)?;
434433
Ok(())
435434
}
436435

437436
fn check(flags: Vec<String>) -> Result<()> {
438437
let e = MiriEnv::new()?;
439-
e.check(path!(e.miri_dir / "Cargo.toml"), &flags)?;
440-
e.check(path!(e.miri_dir / "cargo-miri" / "Cargo.toml"), &flags)?;
438+
e.check(".", &flags)?;
439+
e.check("cargo-miri", &flags)?;
441440
Ok(())
442441
}
443442

444443
fn doc(flags: Vec<String>) -> Result<()> {
445444
let e = MiriEnv::new()?;
446-
e.doc(path!(e.miri_dir / "Cargo.toml"), &flags)?;
447-
e.doc(path!(e.miri_dir / "cargo-miri" / "Cargo.toml"), &flags)?;
445+
e.doc(".", &flags)?;
446+
e.doc("cargo-miri", &flags)?;
448447
Ok(())
449448
}
450449

451450
fn clippy(flags: Vec<String>) -> Result<()> {
452451
let e = MiriEnv::new()?;
453-
e.clippy(path!(e.miri_dir / "Cargo.toml"), &flags)?;
454-
e.clippy(path!(e.miri_dir / "cargo-miri" / "Cargo.toml"), &flags)?;
455-
e.clippy(path!(e.miri_dir / "miri-script" / "Cargo.toml"), &flags)?;
452+
e.clippy(".", &flags)?;
453+
e.clippy("cargo-miri", &flags)?;
454+
e.clippy("miri-script", &flags)?;
456455
Ok(())
457456
}
458457

@@ -476,7 +475,7 @@ impl Command {
476475

477476
// Then test, and let caller control flags.
478477
// Only in root project as `cargo-miri` has no tests.
479-
e.test(path!(e.miri_dir / "Cargo.toml"), &flags)?;
478+
e.test(".", &flags)?;
480479
Ok(())
481480
}
482481

@@ -510,7 +509,6 @@ impl Command {
510509
early_flags.push(miri_sysroot.into());
511510

512511
// Compute everything needed to run the actual command. Also add MIRIFLAGS.
513-
let miri_manifest = path!(e.miri_dir / "Cargo.toml");
514512
let miri_flags = e.sh.var("MIRIFLAGS").unwrap_or_default();
515513
let miri_flags = flagsplit(&miri_flags);
516514
let quiet_flag = if verbose { None } else { Some("--quiet") };
@@ -519,13 +517,13 @@ impl Command {
519517
let run_miri = |e: &MiriEnv, seed_flag: Option<String>| -> Result<()> {
520518
// The basic command that executes the Miri driver.
521519
let mut cmd = if dep {
522-
e.cargo_cmd(&miri_manifest, "test")
520+
e.cargo_cmd(".", "test")
523521
.args(&["--test", "ui"])
524522
.args(quiet_flag)
525523
.arg("--")
526524
.args(&["--miri-run-dep-mode"])
527525
} else {
528-
e.cargo_cmd(&miri_manifest, "run").args(quiet_flag).arg("--")
526+
e.cargo_cmd(".", "run").args(quiet_flag).arg("--")
529527
};
530528
cmd.set_quiet(!verbose);
531529
// Add Miri flags

miri-script/src/util.rs

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,9 @@ impl MiriEnv {
102102
Ok(MiriEnv { miri_dir, toolchain, sh, sysroot, cargo_extra_flags })
103103
}
104104

105-
pub fn cargo_cmd(&self, manifest_path: impl AsRef<OsStr>, cmd: &str) -> Cmd<'_> {
105+
pub fn cargo_cmd(&self, crate_dir: impl AsRef<OsStr>, cmd: &str) -> Cmd<'_> {
106106
let MiriEnv { toolchain, cargo_extra_flags, .. } = self;
107-
let manifest_path = Path::new(manifest_path.as_ref());
107+
let manifest_path = path!(self.miri_dir / crate_dir.as_ref() / "Cargo.toml");
108108
cmd!(
109109
self.sh,
110110
"cargo +{toolchain} {cmd} {cargo_extra_flags...} --manifest-path {manifest_path}"
@@ -117,26 +117,22 @@ impl MiriEnv {
117117
args: impl IntoIterator<Item = impl AsRef<OsStr>>,
118118
) -> Result<()> {
119119
let MiriEnv { sysroot, toolchain, cargo_extra_flags, .. } = self;
120+
let path = path!(self.miri_dir / path.as_ref());
120121
// Install binaries to the miri toolchain's `sysroot` so they do not interact with other toolchains.
121122
// (Not using `cargo_cmd` as `install` is special and doesn't use `--manifest-path`.)
122123
cmd!(self.sh, "cargo +{toolchain} install {cargo_extra_flags...} --path {path} --force --root {sysroot} {args...}").run()?;
123124
Ok(())
124125
}
125126

126-
pub fn build(
127-
&self,
128-
manifest_path: impl AsRef<OsStr>,
129-
args: &[String],
130-
quiet: bool,
131-
) -> Result<()> {
127+
pub fn build(&self, crate_dir: impl AsRef<OsStr>, args: &[String], quiet: bool) -> Result<()> {
132128
let quiet_flag = if quiet { Some("--quiet") } else { None };
133129
// We build the tests as well, (a) to avoid having rebuilds when building the tests later
134130
// and (b) to have more parallelism during the build of Miri and its tests.
135131
// This means `./miri run` without `--dep` will build Miri twice (for the sysroot with
136132
// dev-dependencies, and then for running without dev-dependencies), but the way more common
137133
// `./miri test` will avoid building Miri twice.
138134
let mut cmd = self
139-
.cargo_cmd(manifest_path, "build")
135+
.cargo_cmd(crate_dir, "build")
140136
.args(&["--bins", "--tests"])
141137
.args(quiet_flag)
142138
.args(args);
@@ -145,23 +141,23 @@ impl MiriEnv {
145141
Ok(())
146142
}
147143

148-
pub fn check(&self, manifest_path: impl AsRef<OsStr>, args: &[String]) -> Result<()> {
149-
self.cargo_cmd(manifest_path, "check").arg("--all-targets").args(args).run()?;
144+
pub fn check(&self, crate_dir: impl AsRef<OsStr>, args: &[String]) -> Result<()> {
145+
self.cargo_cmd(crate_dir, "check").arg("--all-targets").args(args).run()?;
150146
Ok(())
151147
}
152148

153-
pub fn doc(&self, manifest_path: impl AsRef<OsStr>, args: &[String]) -> Result<()> {
154-
self.cargo_cmd(manifest_path, "doc").args(args).run()?;
149+
pub fn doc(&self, crate_dir: impl AsRef<OsStr>, args: &[String]) -> Result<()> {
150+
self.cargo_cmd(crate_dir, "doc").args(args).run()?;
155151
Ok(())
156152
}
157153

158-
pub fn clippy(&self, manifest_path: impl AsRef<OsStr>, args: &[String]) -> Result<()> {
159-
self.cargo_cmd(manifest_path, "clippy").arg("--all-targets").args(args).run()?;
154+
pub fn clippy(&self, crate_dir: impl AsRef<OsStr>, args: &[String]) -> Result<()> {
155+
self.cargo_cmd(crate_dir, "clippy").arg("--all-targets").args(args).run()?;
160156
Ok(())
161157
}
162158

163-
pub fn test(&self, manifest_path: impl AsRef<OsStr>, args: &[String]) -> Result<()> {
164-
self.cargo_cmd(manifest_path, "test").args(args).run()?;
159+
pub fn test(&self, crate_dir: impl AsRef<OsStr>, args: &[String]) -> Result<()> {
160+
self.cargo_cmd(crate_dir, "test").args(args).run()?;
165161
Ok(())
166162
}
167163

0 commit comments

Comments
 (0)