diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2024-07-23 19:42:38 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-23 19:42:38 +0200 |
| commit | 041b8c4447f73322203b97ffb842be3d72b8123b (patch) | |
| tree | c853bd00ed4811a32ab33f9c8b84a1d0b7e6ec7b | |
| parent | c2ba4b1cb02e680f262e239ea0f317581049fe03 (diff) | |
| parent | d4f3673a54fecf005920ef2fffd5e1f78cc87b85 (diff) | |
| download | rust-041b8c4447f73322203b97ffb842be3d72b8123b.tar.gz rust-041b8c4447f73322203b97ffb842be3d72b8123b.zip | |
Rollup merge of #128098 - onur-ozkan:incompatible-option-behaviour, r=Kobzol
make it possible to disable download-rustc if it's incompatible Primarily needed by CI runners to avoid handling download-rustc incompatible options one by one on shell scripts. This will significantly help to #122709.
| -rw-r--r-- | src/bootstrap/src/core/config/config.rs | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/src/bootstrap/src/core/config/config.rs b/src/bootstrap/src/core/config/config.rs index 9d5aa795c6c..e32288e2caf 100644 --- a/src/bootstrap/src/core/config/config.rs +++ b/src/bootstrap/src/core/config/config.rs @@ -1570,11 +1570,22 @@ impl Config { let mut is_user_configured_rust_channel = false; if let Some(rust) = toml.rust { - config.download_rustc_commit = - config.download_ci_rustc_commit(rust.download_rustc.clone()); - - if config.download_rustc_commit.is_some() { - check_incompatible_options_for_ci_rustc(&rust); + if let Some(commit) = config.download_ci_rustc_commit(rust.download_rustc.clone()) { + // Primarily used by CI runners to avoid handling download-rustc incompatible + // options one by one on shell scripts. + let disable_ci_rustc_if_incompatible = + env::var_os("DISABLE_CI_RUSTC_IF_INCOMPATIBLE") + .is_some_and(|s| s == "1" || s == "true"); + + if let Err(e) = check_incompatible_options_for_ci_rustc(&rust) { + if disable_ci_rustc_if_incompatible { + config.download_rustc_commit = None; + } else { + panic!("{}", e); + } + } else { + config.download_rustc_commit = Some(commit); + } } let Rust { @@ -2612,14 +2623,15 @@ impl Config { /// Checks the CI rustc incompatible options by destructuring the `Rust` instance /// and makes sure that no rust options from config.toml are missed. -fn check_incompatible_options_for_ci_rustc(rust: &Rust) { +fn check_incompatible_options_for_ci_rustc(rust: &Rust) -> Result<(), String> { macro_rules! err { ($name:expr) => { - assert!( - $name.is_none(), - "ERROR: Setting `rust.{}` is incompatible with `rust.download-rustc`.", - stringify!($name).replace("_", "-") - ); + if $name.is_some() { + return Err(format!( + "ERROR: Setting `rust.{}` is incompatible with `rust.download-rustc`.", + stringify!($name).replace("_", "-") + )); + } }; } @@ -2715,6 +2727,8 @@ fn check_incompatible_options_for_ci_rustc(rust: &Rust) { warn!(channel); warn!(description); warn!(incremental); + + Ok(()) } fn set<T>(field: &mut T, val: Option<T>) { |
