From 89566d5a9b7c71ff528bf7e6e7c60f536f467a5d Mon Sep 17 00:00:00 2001 From: yukang Date: Wed, 29 Mar 2023 00:00:15 +0800 Subject: [PATCH 1/4] configure --set support list as arguments --- src/bootstrap/configure.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py index dd1851e29a930..fc105b1fdedc8 100755 --- a/src/bootstrap/configure.py +++ b/src/bootstrap/configure.py @@ -182,6 +182,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]') @@ -295,6 +300,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): + value = value.split(',') arr[part] = value else: if part not in arr: From d8faf3eb3f4a4b3d1c2908fb3868a7108bebe88a Mon Sep 17 00:00:00 2001 From: yukang Date: Wed, 29 Mar 2023 00:36:10 +0800 Subject: [PATCH 2/4] add test --- src/bootstrap/bootstrap_test.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/bootstrap/bootstrap_test.py b/src/bootstrap/bootstrap_test.py index 26bd80a008fb3..1e46348577d77 100644 --- a/src/bootstrap/bootstrap_test.py +++ b/src/bootstrap/bootstrap_test.py @@ -112,6 +112,12 @@ 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) + if __name__ == '__main__': SUITE = unittest.TestSuite() TEST_LOADER = unittest.TestLoader() From 589877cef1f859dd1a10d6e0cf84d5dc7659c79d Mon Sep 17 00:00:00 2001 From: yukang Date: Thu, 20 Apr 2023 00:48:36 +0800 Subject: [PATCH 3/4] Fix help message of option for checking List --- src/bootstrap/configure.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py index fc105b1fdedc8..c1ea9dd0ce338 100755 --- a/src/bootstrap/configure.py +++ b/src/bootstrap/configure.py @@ -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") @@ -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") From 787f3fea15978b15738d9047b240841aa2d7b5ce Mon Sep 17 00:00:00 2001 From: yukang Date: Thu, 27 Apr 2023 00:32:01 +0800 Subject: [PATCH 4/4] fix bug in set args --- src/bootstrap/bootstrap_test.py | 2 ++ src/bootstrap/configure.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bootstrap/bootstrap_test.py b/src/bootstrap/bootstrap_test.py index 1e46348577d77..5ecda83ee66b1 100644 --- a/src/bootstrap/bootstrap_test.py +++ b/src/bootstrap/bootstrap_test.py @@ -117,6 +117,8 @@ def test_set_codegen_backends(self): 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() diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py index c1ea9dd0ce338..571062a3a6fd0 100755 --- a/src/bootstrap/configure.py +++ b/src/bootstrap/configure.py @@ -299,7 +299,7 @@ def set(key, value, config): parts = key.split('.') for i, part in enumerate(parts): if i == len(parts) - 1: - if is_value_list(part): + if is_value_list(part) and isinstance(value, str): value = value.split(',') arr[part] = value else: