Raoul Hidalgo Charman pushed to branch raoul/775-execution-environment-reqs at BuildStream / buildstream
Commits:
-
ea17a930
by Raoul Hidalgo Charman at 2018-11-26T16:15:52Z
2 changed files:
Changes:
... | ... | @@ -25,6 +25,7 @@ from .. import utils |
25 | 25 |
from ..sandbox import SandboxDummy
|
26 | 26 |
|
27 | 27 |
from . import Platform
|
28 |
+from .._exceptions import PlatformError
|
|
28 | 29 |
|
29 | 30 |
|
30 | 31 |
class Linux(Platform):
|
... | ... | @@ -71,11 +72,19 @@ class Linux(Platform): |
71 | 72 |
|
72 | 73 |
if self._user_ns_available:
|
73 | 74 |
# User namespace support allows arbitrary build UID/GID settings.
|
74 |
- return True
|
|
75 |
- else:
|
|
75 |
+ pass
|
|
76 |
+ elif (config.build_uid != self._uid or config.build_gid != self._gid):
|
|
76 | 77 |
# Without user namespace support, the UID/GID in the sandbox
|
77 | 78 |
# will match the host UID/GID.
|
78 |
- return config.build_uid == self._uid and config.build_gid == self._gid
|
|
79 |
+ return False
|
|
80 |
+ |
|
81 |
+ # We can't do builds for another host or architecture
|
|
82 |
+ if config.build_os != self.get_host_os():
|
|
83 |
+ raise PlatformError("Configured OS and host OS don't match.")
|
|
84 |
+ elif config.build_arch != self.get_host_arch():
|
|
85 |
+ raise PlatformError("Configured architecture and host architecture don't match.")
|
|
86 |
+ |
|
87 |
+ return True
|
|
79 | 88 |
|
80 | 89 |
################################################
|
81 | 90 |
# Private Methods #
|
... | ... | @@ -44,4 +44,13 @@ class Unix(Platform): |
44 | 44 |
def check_sandbox_config(self, config):
|
45 | 45 |
# With the chroot sandbox, the UID/GID in the sandbox
|
46 | 46 |
# will match the host UID/GID (typically 0/0).
|
47 |
- return config.build_uid == self._uid and config.build_gid == self._gid
|
|
47 |
+ if config.build_uid != self._uid or config.build_gid != self._gid:
|
|
48 |
+ return False
|
|
49 |
+ |
|
50 |
+ # Check host os and architecture match
|
|
51 |
+ if config.build_os != self.get_host_os():
|
|
52 |
+ raise PlatformError("Configure os and host os don't match.")
|
|
53 |
+ elif config.build_arch != self.get_host_arch():
|
|
54 |
+ raise PlatformError("Configured architecture and host architecture don't match.")
|
|
55 |
+ |
|
56 |
+ return True
|