From: Debian Rust Maintainers Date: Sun, 3 Sep 2023 17:58:53 +0000 (+0100) Subject: Fix get_toml() when cfg(test) X-Git-Tag: archive/raspbian/1.67.1+dfsg1-1+rpi1^2~37 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=edda2b78e8b2c7fd905696b71687cb0860046c04;p=rustc.git Fix get_toml() when cfg(test) Bug: https://github.com/rust-lang/rust/issues/105766 Last-Update: 2023-03-29 When cfg(test), Config::parse doesn't parse a config.toml but uses default values, failing when the initial rustc is needed. This is a workaround before upstream issue gets solved. Last-Update: 2023-03-29 Gbp-Pq: Name u-fix-get-toml-when-test.patch --- diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs index d8c15c76e2..1ee9d157a8 100644 --- a/src/bootstrap/config.rs +++ b/src/bootstrap/config.rs @@ -907,9 +907,9 @@ impl Config { config.stage0_metadata = t!(serde_json::from_slice::(&stage0_json)); - #[cfg(test)] + /*#[cfg(test)] let get_toml = |_| TomlConfig::default(); - #[cfg(not(test))] + #[cfg(not(test))]*/ let get_toml = |file: &Path| { let contents = t!(fs::read_to_string(file), format!("config file {} not found", file.display())); @@ -918,7 +918,22 @@ impl Config { match toml::from_str(&contents) .and_then(|table: toml::Value| TomlConfig::deserialize(table)) { - Ok(table) => table, + /// Debian: We use previous version as a custom rustc, which unfortunately won't be + /// picked up because config.toml isn't read when cfg!(test). Making tests use the + /// entirety of our config.toml isn't feasible either as it panicks on GitRepo::Llvm + /// (d-bootstrap-custom-debuginfo-path.patch), so only give paths of initial rustc + /// and cargo. + Ok(table) => if !cfg!(test) || table.build.is_none() { + table + } else { + let mut config = TomlConfig::default(); + let mut build = Build::default(); + let cbuild = table.build.unwrap(); + build.rustc = cbuild.rustc; + build.cargo = cbuild.cargo; + config.build = Some(build); + config + }, Err(err) => { eprintln!("failed to parse TOML configuration '{}': {}", file.display(), err); crate::detail_exit(2);