update configure.py to handle new bootstrap.example.toml
This commit is contained in:
@@ -385,7 +385,7 @@
|
||||
#
|
||||
# The default value for the `features` array is `[]`. However, please note that other flags in
|
||||
# `bootstrap.toml` might influence the features enabled for some tools.
|
||||
#tool.TOOL_NAME.features = [FEATURE1, FEATURE2]
|
||||
#build.tool.TOOL_NAME.features = [FEATURE1, FEATURE2]
|
||||
|
||||
# Verbosity level: 0 == not verbose, 1 == verbose, 2 == very verbose, 3 == print environment variables on each rustc invocation
|
||||
#build.verbose = 0
|
||||
|
||||
@@ -6,6 +6,7 @@ from __future__ import absolute_import, division, print_function
|
||||
import shlex
|
||||
import sys
|
||||
import os
|
||||
import re
|
||||
|
||||
rust_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
rust_dir = os.path.dirname(rust_dir)
|
||||
@@ -585,16 +586,31 @@ def parse_example_config(known_args, config):
|
||||
section_order = [None]
|
||||
targets = {}
|
||||
top_level_keys = []
|
||||
comment_lines = []
|
||||
|
||||
with open(rust_dir + "/bootstrap.example.toml") as example_config:
|
||||
example_lines = example_config.read().split("\n")
|
||||
for line in example_lines:
|
||||
if cur_section is 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("["):
|
||||
if line.count("=") == 1 and not line.startswith("# "):
|
||||
key = line.split("=")[0]
|
||||
key = key.strip(" #")
|
||||
parts = key.split(".")
|
||||
if len(parts) > 1:
|
||||
cur_section = parts[0]
|
||||
if cur_section not in sections:
|
||||
sections[cur_section] = ["[" + cur_section + "]"]
|
||||
section_order.append(cur_section)
|
||||
elif cur_section is None:
|
||||
top_level_keys.append(key)
|
||||
# put the comment lines within the start of
|
||||
# a new section, not outside it.
|
||||
sections[cur_section] += comment_lines
|
||||
comment_lines = []
|
||||
# remove just the `section.` part from the line, if present.
|
||||
sections[cur_section].append(
|
||||
re.sub("(#?)([a-zA-Z_-]+\\.)?(.*)", "\\1\\3", line)
|
||||
)
|
||||
elif line.startswith("["):
|
||||
cur_section = line[1:-1]
|
||||
if cur_section.startswith("target"):
|
||||
cur_section = "target"
|
||||
@@ -605,8 +621,9 @@ def parse_example_config(known_args, config):
|
||||
sections[cur_section] = [line]
|
||||
section_order.append(cur_section)
|
||||
else:
|
||||
sections[cur_section].append(line)
|
||||
comment_lines.append(line)
|
||||
|
||||
sections[cur_section] += comment_lines
|
||||
# Fill out the `targets` array by giving all configured targets a copy of the
|
||||
# `target` section we just loaded from the example config
|
||||
configured_targets = [build(known_args)]
|
||||
|
||||
Reference in New Issue
Block a user