summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Pollard <tom.pollard@codethink.co.uk>2020-11-03 12:39:35 +0000
committerTom Pollard <tom.pollard@codethink.co.uk>2020-11-03 12:39:35 +0000
commitbe751d1603eb0aa7c1fc03fcc65b5e9cd9a2491a (patch)
tree8857980a2db01b13d7579b98792b324b39c5a3ef
parent7fee0e64ffd2b5dcfd1766df8ed3a692e86a640d (diff)
downloadbuildstream-tpollard/optional-sandbox-properties.tar.gz
WIP: Make default platform properties optionaltpollard/optional-sandbox-properties
-rw-r--r--src/buildstream/sandbox/_config.py19
-rw-r--r--src/buildstream/sandbox/_sandboxbuildboxrun.py4
-rw-r--r--src/buildstream/sandbox/_sandboxreapi.py6
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()