diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2024-08-03 20:51:52 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-03 20:51:52 +0200 |
| commit | 0afbe482f06c419734a6c1b668933db8427d0ef8 (patch) | |
| tree | 66dd2dfff3ccc9f3d43665f0ac7f1c08ac58e8c0 | |
| parent | 7d9ed2a864f505c1ffab015a08e915a9983dbcce (diff) | |
| parent | 6264d2eba9d5b237a5c5c9a9527fbda54d751203 (diff) | |
| download | rust-0afbe482f06c419734a6c1b668933db8427d0ef8.tar.gz rust-0afbe482f06c419734a6c1b668933db8427d0ef8.zip | |
Rollup merge of #128283 - lolbinarycat:bootstrap-custom-target, r=albertlarsan68
bootstrap: fix bug preventing the use of custom targets the bug was caused by two factors: 1. only checking the RUST_TARGET_PATH form, not the full filepath form 2. indirectly trying to use the Debug presentation to get the file path
| -rw-r--r-- | src/bootstrap/src/core/config/config.rs | 5 | ||||
| -rw-r--r-- | src/bootstrap/src/core/sanity.rs | 12 |
2 files changed, 14 insertions, 3 deletions
diff --git a/src/bootstrap/src/core/config/config.rs b/src/bootstrap/src/core/config/config.rs index 1343e257efe..776e2c5cb17 100644 --- a/src/bootstrap/src/core/config/config.rs +++ b/src/bootstrap/src/core/config/config.rs @@ -512,6 +512,11 @@ impl TargetSelection { pub fn is_windows(&self) -> bool { self.contains("windows") } + + /// Path to the file defining the custom target, if any. + pub fn filepath(&self) -> Option<&Path> { + self.file.as_ref().map(Path::new) + } } impl fmt::Display for TargetSelection { diff --git a/src/bootstrap/src/core/sanity.rs b/src/bootstrap/src/core/sanity.rs index 45f4090ef22..c42d4c56c38 100644 --- a/src/bootstrap/src/core/sanity.rs +++ b/src/bootstrap/src/core/sanity.rs @@ -260,7 +260,9 @@ than building it. if !has_target { // This might also be a custom target, so check the target file that could have been specified by the user. - if let Some(custom_target_path) = env::var_os("RUST_TARGET_PATH") { + if target.filepath().is_some_and(|p| p.exists()) { + has_target = true; + } else if let Some(custom_target_path) = env::var_os("RUST_TARGET_PATH") { let mut target_filename = OsString::from(&target_str); // Target filename ends with `.json`. target_filename.push(".json"); @@ -275,8 +277,12 @@ than building it. if !has_target { panic!( - "No such target exists in the target list, - specify a correct location of the JSON specification file for custom targets!" + "No such target exists in the target list,\n\ + make sure to correctly specify the location \ + of the JSON specification file \ + for custom targets!\n\ + Use BOOTSTRAP_SKIP_TARGET_SANITY=1 to \ + bypass this check." ); } } |
