From be751d1603eb0aa7c1fc03fcc65b5e9cd9a2491a Mon Sep 17 00:00:00 2001 From: Tom Pollard Date: Tue, 3 Nov 2020 12:39:35 +0000 Subject: WIP: Make default platform properties optional --- src/buildstream/sandbox/_config.py | 19 +++++++++++++++---- src/buildstream/sandbox/_sandboxbuildboxrun.py | 4 ++-- src/buildstream/sandbox/_sandboxreapi.py | 6 ++++-- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/buildstream/sandbox/_config.py b/src/buildstream/sandbox/_config.py index 114274190..8c1360834 100644 --- a/src/buildstream/sandbox/_config.py +++ b/src/buildstream/sandbox/_config.py @@ -29,19 +29,25 @@ class SandboxConfig: host_arch = platform.get_host_arch() host_os = platform.get_host_os() - sandbox_config.validate_keys(["build-uid", "build-gid", "build-os", "build-arch"]) + sandbox_config.validate_keys(["build-uid", "build-gid", "build-os", "build-arch", "disable-defaults"]) + + self.disable_defaults = sandbox_config.get_str("disable-defaults", default=None) build_os = sandbox_config.get_str("build-os", default=None) if build_os: self.build_os = build_os.lower() - else: + elif not self.disable_defaults: self.build_os = host_os + else: + self.build_os = None build_arch = sandbox_config.get_str("build-arch", default=None) if build_arch: self.build_arch = Platform.canonicalize_arch(build_arch) - else: + elif not self.disable_defaults: self.build_arch = host_arch + else: + self.build_arch = None self.build_uid = sandbox_config.get_int("build-uid", None) self.build_gid = sandbox_config.get_int("build-gid", None) @@ -56,7 +62,12 @@ class SandboxConfig: # def get_unique_key(self): - unique_key = {"os": self.build_os, "arch": self.build_arch} + unique_key = {} + if self.build_os is not None: + unique_key["os"] = self.build_os + + if self.build_arch is not None: + unique_key["arch"] = self.build_arch if self.build_uid is not None: unique_key["build-uid"] = self.build_uid diff --git a/src/buildstream/sandbox/_sandboxbuildboxrun.py b/src/buildstream/sandbox/_sandboxbuildboxrun.py index 3d71b7440..9eccde96d 100644 --- a/src/buildstream/sandbox/_sandboxbuildboxrun.py +++ b/src/buildstream/sandbox/_sandboxbuildboxrun.py @@ -72,9 +72,9 @@ class SandboxBuildBoxRun(SandboxREAPI): @classmethod def check_sandbox_config(cls, platform, config): - if config.build_os not in cls._osfamilies: + if config.build_os is not None and config.build_os not in cls._osfamilies: raise SandboxError("OS '{}' is not supported by buildbox-run.".format(config.build_os)) - if config.build_arch not in cls._isas: + if config.build_arch is not None and config.build_arch not in cls._isas: raise SandboxError("ISA '{}' is not supported by buildbox-run.".format(config.build_arch)) if config.build_uid is not None and "platform:unixUID" not in cls._capabilities: diff --git a/src/buildstream/sandbox/_sandboxreapi.py b/src/buildstream/sandbox/_sandboxreapi.py index 5c2851580..72a4ded9e 100644 --- a/src/buildstream/sandbox/_sandboxreapi.py +++ b/src/buildstream/sandbox/_sandboxreapi.py @@ -123,8 +123,10 @@ class SandboxREAPI(Sandbox): platform_dict = {} - platform_dict["OSFamily"] = config.build_os - platform_dict["ISA"] = config.build_arch + if config.build_os: + platform_dict["OSFamily"] = config.build_os + if config.build_arch: + platform_dict["ISA"] = config.build_arch if flags & SandboxFlags.INHERIT_UID: uid = os.geteuid() -- cgit v1.2.1