diff options
author | Jürg Billeter <j@bitron.ch> | 2020-03-05 11:20:19 +0100 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2020-03-09 17:07:04 +0100 |
commit | f15d58d015ec90502568a0ca680cc170d0c44d5e (patch) | |
tree | 8a2dd898cd27d1a17b0eacc40acccb9296f1a5a2 /src/buildstream/sandbox/_sandboxreapi.py | |
parent | 71179f88b93ff06543ae2b3b40c09801bca46552 (diff) | |
download | buildstream-f15d58d015ec90502568a0ca680cc170d0c44d5e.tar.gz |
_sandboxreapi.py: Sort platform properties by name
This is required by the REAPI specification.
Diffstat (limited to 'src/buildstream/sandbox/_sandboxreapi.py')
-rw-r--r-- | src/buildstream/sandbox/_sandboxreapi.py | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/src/buildstream/sandbox/_sandboxreapi.py b/src/buildstream/sandbox/_sandboxreapi.py index c8d2be70b..c2b6cac48 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, value in sorted(platform_dict.items()): + platform.properties.add(name=key, value=value) 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() |