Skip to content

Commit

Permalink
Make download-rustc incompatible with rust.debug-assertions for now
Browse files Browse the repository at this point in the history
Alt rustc builds currently do not have rustc debug assertions enabled.
  • Loading branch information
jieyouxu committed Nov 17, 2024
1 parent 4d18ea5 commit 727183f
Show file tree
Hide file tree
Showing 2 changed files with 90 additions and 0 deletions.
25 changes: 25 additions & 0 deletions src/bootstrap/src/core/config/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1767,6 +1767,29 @@ impl Config {
std_features: std_features_toml,
} = rust;

// Before something like [Enable debug assertions on alt
// builds](https://github.com/rust-lang/rust/pull/131077) lands, alt rustc builds do
// *not* have rustc debug assertions enabled. We must not download an CI alt rustc if we
// need rustc to have debug assertions (e.g. for crashes test suite).
//
// Note that `rust.debug = true` (currently) implies `rust.debug-assertions = true`!
//
// This relies also on the fact that global default for `download-rustc` will be `false`
// if it's not explicitly set.
if matches!(rustc_debug_assertions, Some(true))
|| (matches!(debug, Some(true)) && rustc_debug_assertions.is_none())
{
if let Some(ref opt) = download_rustc {
if opt.is_string_or_true() {
panic!(
"ERROR: currently no CI rustc builds have rustc debug assertions\
enabled. Please either set `rust.debug-assertions` to `false` or set \
`rust.download-rustc` to `false`."
);
}
}
}

config.download_rustc_commit =
config.download_ci_rustc_commit(download_rustc, config.llvm_assertions);

Expand Down Expand Up @@ -2172,7 +2195,9 @@ impl Config {
config.rust_std_features = std_features.unwrap_or(default_std_features);

let default = debug == Some(true);

config.rustc_debug_assertions = rustc_debug_assertions.unwrap_or(default);

config.std_debug_assertions = std_debug_assertions.unwrap_or(config.rustc_debug_assertions);
config.rust_overflow_checks = overflow_checks.unwrap_or(default);
config.rust_overflow_checks_std =
Expand Down
65 changes: 65 additions & 0 deletions src/bootstrap/src/core/config/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -447,3 +447,68 @@ fn check_rustc_if_unchanged_paths() {
assert!(config.src.join(p).exists(), "{p} doesn't exist.");
}
}

#[test]
#[should_panic]
fn download_rustc_xor_rustc_debug_assertions_both_true() {
parse(
r#"
[rust]
debug-assertions = true
download-rustc = true
"#,
);
}

#[test]
#[should_panic]
fn download_rustc_xor_rustc_debug_assertions_debug_download_unchanged() {
parse(
r#"
[rust]
debug-assertions = true
download-rustc = 'if-unchanged'
"#,
);
}

#[test]
#[should_panic]
fn download_rustc_xor_rustc_debug_assertions_debug_true() {
parse(
r#"
[rust]
debug = true
download-rustc = true
"#,
);
}

#[test]
fn download_rustc_xor_rustc_debug_assertions_only_download_rustc() {
let _ = parse(
r#"
[rust]
download-rustc = true
"#,
);

let _ = parse(
r#"
[rust]
download-rustc = 'if-unchanged'
"#,
);
}

#[test]
fn download_rustc_xor_rustc_debug_assertions_no_debug_assert_ok() {
let _ = parse(
r#"
[rust]
debug = true
debug-assertions = false
download-rustc = true
"#,
);
}

0 comments on commit 727183f

Please sign in to comment.