Skip to content

Commit

Permalink
Rollup merge of rust-lang#128098 - onur-ozkan:incompatible-option-beh…
Browse files Browse the repository at this point in the history
…aviour, 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 rust-lang#122709.
  • Loading branch information
matthiaskrgr committed Jul 23, 2024
2 parents c2ba4b1 + d4f3673 commit 041b8c4
Showing 1 changed file with 25 additions and 11 deletions.
36 changes: 25 additions & 11 deletions src/bootstrap/src/core/config/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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("_", "-")
));
}
};
}

Expand Down Expand Up @@ -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>) {
Expand Down

0 comments on commit 041b8c4

Please sign in to comment.