diff options
Diffstat (limited to 'debian/patches/u-fix-get-toml-when-test.patch')
-rw-r--r-- | debian/patches/u-fix-get-toml-when-test.patch | 55 |
1 files changed, 27 insertions, 28 deletions
diff --git a/debian/patches/u-fix-get-toml-when-test.patch b/debian/patches/u-fix-get-toml-when-test.patch index 34789ecae..4b5bcb6d5 100644 --- a/debian/patches/u-fix-get-toml-when-test.patch +++ b/debian/patches/u-fix-get-toml-when-test.patch @@ -10,32 +10,27 @@ Index: rust/src/bootstrap/config.rs =================================================================== --- rust.orig/src/bootstrap/config.rs +++ rust/src/bootstrap/config.rs -@@ -848,9 +848,9 @@ impl Config { - } +@@ -931,9 +931,32 @@ impl Config { pub fn parse(args: &[String]) -> Config { -- #[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())); -@@ -859,7 +859,23 @@ 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 { + #[cfg(test)] +- fn get_toml(_: &Path) -> TomlConfig { +- TomlConfig::default() +- } ++ fn get_toml(file: &Path) -> TomlConfig { ++ // 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. ++ let contents = ++ t!(fs::read_to_string(file), format!("config file {} not found", file.display())); ++ // Deserialize to Value and then TomlConfig to prevent the Deserialize impl of ++ // TomlConfig and sub types to be monomorphized 5x by toml. ++ toml::from_str(&contents) ++ .and_then(|table: toml::Value| TomlConfig::deserialize(table)) ++ .map(|table| { + let mut config = TomlConfig::default(); + let mut build = Build::default(); + let cbuild = table.build.unwrap(); @@ -43,7 +38,11 @@ Index: rust/src/bootstrap/config.rs + build.cargo = cbuild.cargo; + config.build = Some(build); + config -+ }, - Err(err) => { - eprintln!("failed to parse TOML configuration '{}': {}", file.display(), err); - crate::detail_exit(2); ++ }) ++ .unwrap_or_else(|err| { ++ eprintln!("failed to parse TOML configuration '{}': {err}", file.display()); ++ crate::detail_exit(2); ++ }) } + + #[cfg(not(test))] + fn get_toml(file: &Path) -> TomlConfig { |