Skip to content

Commit

Permalink
Make the config.src handling for downloadable bootstrap a little mo…
Browse files Browse the repository at this point in the history
…re conservative

In particular, this supports build directories within an unrelated git repository.

As a side effect, it will fall back to the old logic when the source directory is being built from a tarball within an unrelated git repository.
However, that second case is unsupported and untested; we reserve the right to break it in the future.
  • Loading branch information
jyn514 committed Oct 2, 2022
1 parent 756e7be commit 67220d6
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion src/bootstrap/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -829,10 +829,19 @@ impl Config {
let s = git_root.to_str().unwrap();

// Bootstrap is quite bad at handling /? in front of paths
config.src = match s.strip_prefix("\\\\?\\") {
let src = match s.strip_prefix("\\\\?\\") {
Some(p) => PathBuf::from(p),
None => PathBuf::from(git_root),
};
// If this doesn't have at least `stage0.json`, we guessed wrong. This can happen when,
// for example, the build directory is inside of another unrelated git directory.
// In that case keep the original `CARGO_MANIFEST_DIR` handling.
//
// NOTE: this implies that downloadable bootstrap isn't supported when the build directory is outside
// the source directory. We could fix that by setting a variable from all three of python, ./x, and x.ps1.
if src.join("src").join("stage0.json").exists() {
config.src = src;
}
} else {
// We're building from a tarball, not git sources.
// We don't support pre-downloaded bootstrap in this case.
Expand Down

0 comments on commit 67220d6

Please sign in to comment.