about summary refs log tree commit diff
diff options
context:
space:
mode:
authorlionelllohcd <lionellloh@gmail.com>2023-02-18 23:34:06 -0800
committerlionelllohcd <lionellloh@gmail.com>2023-02-18 23:36:51 -0800
commit960ac2e07f2edc7ac23f006d0c07467ac0967833 (patch)
treee2b6eb1a28b63e82535d35874d226b730c4ff734
parent3eb5c4581a386b13c414e8c8bd73846ef37236d1 (diff)
downloadrust-960ac2e07f2edc7ac23f006d0c07467ac0967833.tar.gz
rust-960ac2e07f2edc7ac23f006d0c07467ac0967833.zip
[107049] Recognise top level keys in config.toml.example
-rwxr-xr-xsrc/bootstrap/configure.py27
1 files changed, 22 insertions, 5 deletions
diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py
index 0af329e7007..91af36d9070 100755
--- a/src/bootstrap/configure.py
+++ b/src/bootstrap/configure.py
@@ -379,8 +379,14 @@ cur_section = None
 sections[None] = []
 section_order = [None]
 targets = {}
+top_level_keys = []
 
 for line in open(rust_dir + '/config.toml.example').read().split("\n"):
+    if cur_section == None: 
+        if line.count('=') == 1: 
+            top_level_key = line.split('=')[0]
+            top_level_key = top_level_key.strip(' #')
+            top_level_keys.append(top_level_key)
     if line.startswith('['):
         cur_section = line[1:-1]
         if cur_section.startswith('target'):
@@ -459,12 +465,23 @@ def configure_section(lines, config):
                 raise RuntimeError("failed to find config line for {}".format(key))
 
 
-for section_key in config:
-    section_config = config[section_key]
-    if section_key not in sections:
-        raise RuntimeError("config key {} not in sections".format(section_key))
+def configure_top_level_key(lines, top_level_key, value): 
+    for i, line in enumerate(lines): 
+        if line.startswith('#' + top_level_key + ' = ') or line.startswith(top_level_key + ' = '): 
+            lines[i] = "{} = {}".format(top_level_key, value)
+            return 
+        
+    raise RuntimeError("failed to find config line for {}".format(top_level_key))
 
-    if section_key == 'target':
+      
+for section_key, section_config in config.items():
+    if section_key not in sections and section_key not in top_level_keys: 
+        raise RuntimeError("config key {} not in sections or top_level_keys".format(section_key))
+    
+    if section_key in top_level_keys: 
+        configure_top_level_key(sections[None], section_key, section_config)
+
+    elif  section_key == 'target':
         for target in section_config:
             configure_section(targets[target], section_config[target])
     else: