about summary refs log tree commit diff
diff options
context:
space:
mode:
authoronur-ozkan <work@onurozkan.dev>2025-04-15 10:44:19 +0300
committeronur-ozkan <work@onurozkan.dev>2025-04-15 11:33:15 +0300
commit8e6f50bb4d30801d04619a4cd6406b320eb8919f (patch)
tree8c9e05d179c4d592c0ac86f7ba0bb6439fba68ec
parent3f70f197f2d131a1f57912f202072b2447d3e326 (diff)
downloadrust-8e6f50bb4d30801d04619a4cd6406b320eb8919f.tar.gz
rust-8e6f50bb4d30801d04619a4cd6406b320eb8919f.zip
fix path and the ordering logic
Signed-off-by: onur-ozkan <work@onurozkan.dev>
-rw-r--r--src/bootstrap/src/core/config/config.rs54
1 files changed, 28 insertions, 26 deletions
diff --git a/src/bootstrap/src/core/config/config.rs b/src/bootstrap/src/core/config/config.rs
index e70ac74c7da..19ed442c500 100644
--- a/src/bootstrap/src/core/config/config.rs
+++ b/src/bootstrap/src/core/config/config.rs
@@ -776,6 +776,30 @@ impl Merge for TomlConfig {
             }
         }
 
+        self.change_id.inner.merge(None, &mut Default::default(), change_id.inner, replace);
+        self.profile.merge(None, &mut Default::default(), profile, replace);
+
+        do_merge(&mut self.build, build, replace);
+        do_merge(&mut self.install, install, replace);
+        do_merge(&mut self.llvm, llvm, replace);
+        do_merge(&mut self.gcc, gcc, replace);
+        do_merge(&mut self.rust, rust, replace);
+        do_merge(&mut self.dist, dist, replace);
+
+        match (self.target.as_mut(), target) {
+            (_, None) => {}
+            (None, Some(target)) => self.target = Some(target),
+            (Some(original_target), Some(new_target)) => {
+                for (triple, new) in new_target {
+                    if let Some(original) = original_target.get_mut(&triple) {
+                        original.merge(None, &mut Default::default(), new, replace);
+                    } else {
+                        original_target.insert(triple, new);
+                    }
+                }
+            }
+        }
+
         let parent_dir = parent_config_path
             .as_ref()
             .and_then(|p| p.parent().map(ToOwned::to_owned))
@@ -810,30 +834,6 @@ impl Merge for TomlConfig {
 
             included_extensions.remove(&include_path);
         }
-
-        self.change_id.inner.merge(None, &mut Default::default(), change_id.inner, replace);
-        self.profile.merge(None, &mut Default::default(), profile, replace);
-
-        do_merge(&mut self.build, build, replace);
-        do_merge(&mut self.install, install, replace);
-        do_merge(&mut self.llvm, llvm, replace);
-        do_merge(&mut self.gcc, gcc, replace);
-        do_merge(&mut self.rust, rust, replace);
-        do_merge(&mut self.dist, dist, replace);
-
-        match (self.target.as_mut(), target) {
-            (_, None) => {}
-            (None, Some(target)) => self.target = Some(target),
-            (Some(original_target), Some(new_target)) => {
-                for (triple, new) in new_target {
-                    if let Some(original) = original_target.get_mut(&triple) {
-                        original.merge(None, &mut Default::default(), new, replace);
-                    } else {
-                        original_target.insert(triple, new);
-                    }
-                }
-            }
-        }
     }
 }
 
@@ -1640,12 +1640,14 @@ impl Config {
         // This must be handled before applying the `profile` since `include`s should always take
         // precedence over `profile`s.
         for include_path in toml.include.clone().unwrap_or_default().iter().rev() {
-            let included_toml = get_toml(include_path).unwrap_or_else(|e| {
+            let include_path = toml_path.parent().unwrap().join(include_path);
+
+            let included_toml = get_toml(&include_path).unwrap_or_else(|e| {
                 eprintln!("ERROR: Failed to parse '{}': {e}", include_path.display());
                 exit!(2);
             });
             toml.merge(
-                Some(toml_path.join(include_path)),
+                Some(include_path),
                 &mut Default::default(),
                 included_toml,
                 ReplaceOpt::IgnoreDuplicate,