diff --git a/Cargo.lock b/Cargo.lock index dd4d48c126fdf37d2c5adb47690a7ed015a03ad2..a912eee97dbf20ce638bcc7e2538a0185d88d4cd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -176,7 +176,6 @@ dependencies = [ "getopts", "ignore", "libc", - "merge", "num_cpus", "once_cell", "opener", @@ -2220,12 +2219,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "merge" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10bbef93abb1da61525bbc45eeaff6473a41907d19f8f9aa5168d214e10693e9" - [[package]] name = "minifier" version = "0.0.41" diff --git a/src/bootstrap/Cargo.toml b/src/bootstrap/Cargo.toml index 1f218dd8d67bc2567f1d9a72e2b5009bd9e55953..b68b2163f873a07291342ffef28dc7e7edbf8bd3 100644 --- a/src/bootstrap/Cargo.toml +++ b/src/bootstrap/Cargo.toml @@ -47,7 +47,6 @@ toml = "0.5" time = "0.1" ignore = "0.4.10" opener = "0.5" -merge = { version = "0.1.0", default-features = false, features = ["std"] } once_cell = "1.7.2" [target.'cfg(windows)'.dependencies.winapi] diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs index fcca783fbfe3ec31f002a16588e77b978c9f6f24..c930657c5bd2f0378cbebba8e7d407291c1f3d8c 100644 --- a/src/bootstrap/config.rs +++ b/src/bootstrap/config.rs @@ -18,7 +18,6 @@ use crate::flags::{Color, Flags}; use crate::util::exe; use build_helper::t; -use merge::Merge; use serde::Deserialize; macro_rules! check_ci_llvm { @@ -334,6 +333,10 @@ struct TomlConfig { profile: Option, } +trait Merge { + fn merge(&mut self, other: Self); +} + impl Merge for TomlConfig { fn merge( &mut self, @@ -357,6 +360,8 @@ fn do_merge(x: &mut Option, y: Option) { } } +// We are using a decl macro instead of a derive proc macro here to reduce the compile time of +// rustbuild. macro_rules! derive_merge { ($(#[$attr:meta])* struct $name:ident { $($field:ident: $field_ty:ty,)* @@ -369,7 +374,9 @@ struct $name { impl Merge for $name { fn merge(&mut self, other: Self) { $( - Merge::merge(&mut self.$field, other.$field); + if !self.$field.is_some() { + self.$field = other.$field; + } )* } }