Skip to content

Commit

Permalink
Rollup merge of rust-lang#109702 - chenyukang:yukang/fix-109316-confi…
Browse files Browse the repository at this point in the history
…gure, r=albertlarsan68

configure --set support list as arguments

Fixes rust-lang#109316

r? `@jyn514`
  • Loading branch information
JohnTitor authored Apr 28, 2023
2 parents 1a6ae3d + 787f3fe commit 6b0da57
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 4 deletions.
8 changes: 8 additions & 0 deletions src/bootstrap/bootstrap_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,14 @@ def test_set_top_level(self):
build = self.serialize_and_parse(["--set", "profile=compiler"])
self.assertEqual(build.get_toml("profile"), 'compiler')

def test_set_codegen_backends(self):
build = self.serialize_and_parse(["--set", "rust.codegen-backends=cranelift"])
self.assertNotEqual(build.config_toml.find("codegen-backends = ['cranelift']"), -1)
build = self.serialize_and_parse(["--set", "rust.codegen-backends=cranelift,llvm"])
self.assertNotEqual(build.config_toml.find("codegen-backends = ['cranelift', 'llvm']"), -1)
build = self.serialize_and_parse(["--enable-full-tools"])
self.assertNotEqual(build.config_toml.find("codegen-backends = ['llvm']"), -1)

if __name__ == '__main__':
SUITE = unittest.TestSuite()
TEST_LOADER = unittest.TestLoader()
Expand Down
14 changes: 10 additions & 4 deletions src/bootstrap/configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,8 +153,7 @@ def v(*args):
"experimental LLVM targets to build")
v("release-channel", "rust.channel", "the name of the release channel to build")
v("release-description", "rust.description", "optional descriptive string for version output")
v("dist-compression-formats", None,
"comma-separated list of compression formats to use")
v("dist-compression-formats", None, "List of compression formats to use")

# Used on systems where "cc" is unavailable
v("default-linker", "rust.default-linker", "the default linker")
Expand All @@ -168,8 +167,8 @@ def v(*args):
v("tools", None, "List of extended tools will be installed")
v("codegen-backends", None, "List of codegen backends to build")
v("build", "build.build", "GNUs ./configure syntax LLVM build triple")
v("host", None, "GNUs ./configure syntax LLVM host triples")
v("target", None, "GNUs ./configure syntax LLVM target triples")
v("host", None, "List of GNUs ./configure syntax LLVM host triples")
v("target", None, "List of GNUs ./configure syntax LLVM target triples")

v("set", None, "set arbitrary key/value pairs in TOML configuration")

Expand All @@ -182,6 +181,11 @@ def err(msg):
print("configure: error: " + msg)
sys.exit(1)

def is_value_list(key):
for option in options:
if option.name == key and option.desc.startswith('List of'):
return True
return False

if '--help' in sys.argv or '-h' in sys.argv:
print('Usage: ./configure [options]')
Expand Down Expand Up @@ -295,6 +299,8 @@ def set(key, value, config):
parts = key.split('.')
for i, part in enumerate(parts):
if i == len(parts) - 1:
if is_value_list(part) and isinstance(value, str):
value = value.split(',')
arr[part] = value
else:
if part not in arr:
Expand Down

0 comments on commit 6b0da57

Please sign in to comment.