Skip to content

Commit

Permalink
fix(embedded): Keep target dir in cargo home
Browse files Browse the repository at this point in the history
This was broken in rust-lang#12268 when we stopped using an intermediate
`Cargo.toml` file.

Unlike pre-rust-lang#12268,
- We are hashing the path, rather than the content, with the assumption
  that people change content more frequently than the path
- We are using a simpler hash than `blake3` in the hopes that we can get
  away with it

Unlike the Pre-RFC demo
- We are not forcing a single target dir for all scripts in the hopes
  that we get rust-lang#5931
  • Loading branch information
epage committed Jun 17, 2023
1 parent 282a3e7 commit aca7b08
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 2 deletions.
12 changes: 11 additions & 1 deletion src/cargo/core/workspace.rs
Original file line number Diff line number Diff line change
Expand Up @@ -385,7 +385,17 @@ impl<'cfg> Workspace<'cfg> {
}

fn default_target_dir(&self) -> Filesystem {
Filesystem::new(self.root().join("target"))
if self.root_maybe().is_embedded() {
let hash = crate::util::hex::short_hash(&self.root_manifest().to_string_lossy());
let mut rel_path = PathBuf::new();
rel_path.push("target");
rel_path.push(&hash[0..2]);
rel_path.push(&hash[2..]);

self.config().home().join(rel_path)
} else {
Filesystem::new(self.root().join("target"))
}
}

/// Returns the root `[replace]` section of this workspace.
Expand Down
27 changes: 26 additions & 1 deletion tests/testsuite/script.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ args: []
[WARNING] `package.edition` is unspecifiead, defaulting to `2021`
[COMPILING] echo v0.0.0 ([ROOT]/foo)
[FINISHED] dev [unoptimized + debuginfo] target(s) in [..]s
[RUNNING] `[..]debug/echo[EXE]`
[RUNNING] `[..]/debug/echo[EXE]`
",
)
.run();
Expand Down Expand Up @@ -537,3 +537,28 @@ fn main() {
)
.run();
}

#[cargo_test]
fn implicit_target_dir() {
let script = ECHO_SCRIPT;
let p = cargo_test_support::project()
.file("script.rs", script)
.build();

p.cargo("-Zscript script.rs")
.masquerade_as_nightly_cargo(&["script"])
.with_stdout(
r#"bin: [ROOT]/home/.cargo/target/[..]/debug/script[EXE]
args: []
"#,
)
.with_stderr(
"\
[WARNING] `package.edition` is unspecifiead, defaulting to `2021`
[COMPILING] script v0.0.0 ([ROOT]/foo)
[FINISHED] dev [unoptimized + debuginfo] target(s) in [..]s
[RUNNING] `[ROOT]/home/.cargo/target/[..]/debug/script[EXE]`
",
)
.run();
}

0 comments on commit aca7b08

Please sign in to comment.