You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by no...@apache.org on 2020/12/29 12:40:49 UTC

[buildstream] 01/01: WIP: Make default platform properties optional

This is an automated email from the ASF dual-hosted git repository.

not-in-ldap pushed a commit to branch tpollard/optional-sandbox-properties
in repository https://gitbox.apache.org/repos/asf/buildstream.git

commit be751d1603eb0aa7c1fc03fcc65b5e9cd9a2491a
Author: Tom Pollard <to...@codethink.co.uk>
AuthorDate: Tue Nov 3 12:39:35 2020 +0000

    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 1142741..8c13608 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 3d71b74..9eccde9 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 5c28515..72a4ded 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()