summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2020-03-05 11:20:19 +0100
committerJürg Billeter <j@bitron.ch>2020-03-05 12:13:05 +0100
commit62ff53291ede4b0f8a5fb913b2989787b79709ca (patch)
treeaad4a72dd841d1397207017b06bb695679ddcac6
parent71179f88b93ff06543ae2b3b40c09801bca46552 (diff)
downloadbuildstream-juerg/reapi-platform.tar.gz
_sandboxreapi.py: Sort platform properties by namejuerg/reapi-platform
This is required by the REAPI specification.
-rw-r--r--src/buildstream/sandbox/_sandboxbuildboxrun.py2
-rw-r--r--src/buildstream/sandbox/_sandboxreapi.py30
2 files changed, 20 insertions, 12 deletions
diff --git a/src/buildstream/sandbox/_sandboxbuildboxrun.py b/src/buildstream/sandbox/_sandboxbuildboxrun.py
index b7fc7a6d5..d0907a713 100644
--- a/src/buildstream/sandbox/_sandboxbuildboxrun.py
+++ b/src/buildstream/sandbox/_sandboxbuildboxrun.py
@@ -188,7 +188,7 @@ class SandboxBuildBoxRun(SandboxREAPI):
raise SandboxError("buildbox-run failed with returncode {}".format(returncode))
def _supported_platform_properties(self):
- return {"unixUID", "unixGID", "network"}
+ return {"OSFamily", "ISA", "unixUID", "unixGID", "network"}
def _warn(self, msg):
self._get_context().messenger.message(Message(MessageType.WARN, msg))
diff --git a/src/buildstream/sandbox/_sandboxreapi.py b/src/buildstream/sandbox/_sandboxreapi.py
index c8d2be70b..97df6a9e6 100644
--- a/src/buildstream/sandbox/_sandboxreapi.py
+++ b/src/buildstream/sandbox/_sandboxreapi.py
@@ -126,10 +126,11 @@ class SandboxREAPI(Sandbox):
output_directories = [os.path.relpath(dir, start=working_directory) for dir in read_write_directories]
config = self._get_config()
- supported_properties = self._supported_platform_properties()
- platform = remote_execution_pb2.Platform()
- platform.properties.add(name="OSFamily", value=config.build_os)
- platform.properties.add(name="ISA", value=config.build_arch)
+
+ platform_dict = {}
+
+ platform_dict["OSFamily"] = config.build_os
+ platform_dict["ISA"] = config.build_arch
if flags & SandboxFlags.INHERIT_UID:
uid = os.geteuid()
@@ -137,13 +138,20 @@ class SandboxREAPI(Sandbox):
else:
uid = config.build_uid
gid = config.build_gid
- if "unixUID" in supported_properties:
- platform.properties.add(name="unixUID", value=str(uid))
- if "unixGID" in supported_properties:
- platform.properties.add(name="unixGID", value=str(gid))
+ platform_dict["unixUID"] = str(uid)
+ platform_dict["unixGID"] = str(gid)
- if flags & SandboxFlags.NETWORK_ENABLED and "network" in supported_properties:
- platform.properties.add(name="network", value="on")
+ if flags & SandboxFlags.NETWORK_ENABLED:
+ platform_dict["network"] = "on"
+
+ # Remove unsupported platform properties from the dict
+ supported_properties = self._supported_platform_properties()
+ platform_dict = {key: value for (key, value) in platform_dict.items() if key in supported_properties}
+
+ # Create Platform message with properties sorted by name in code point order
+ platform = remote_execution_pb2.Platform()
+ for key in sorted(platform_dict.keys()):
+ platform.properties.add(name=key, value=platform_dict[key])
return remote_execution_pb2.Command(
arguments=command,
@@ -195,7 +203,7 @@ class SandboxREAPI(Sandbox):
raise ImplError("Sandbox of type '{}' does not implement _execute_action()".format(type(self).__name__))
def _supported_platform_properties(self):
- return set()
+ return {"OSFamily", "ISA"}
# _SandboxREAPIBatch()