From d9274f0106ac53a38ee29ae1084291f637cc811d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrg=20Billeter?= Date: Thu, 5 Dec 2019 17:17:24 +0100 Subject: _platform: Support experimental buildbox-run sandbox on all platforms The buildbox-run sandbox is used only if BST_FORCE_SANDBOX is set to buildbox-run. --- src/buildstream/_platform/linux.py | 1 + src/buildstream/_platform/platform.py | 27 ++++++++++++++++++++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/buildstream/_platform/linux.py b/src/buildstream/_platform/linux.py index bdc2e0df1..a6215c90f 100644 --- a/src/buildstream/_platform/linux.py +++ b/src/buildstream/_platform/linux.py @@ -32,6 +32,7 @@ class Linux(Platform): sandbox_setups = { "bwrap": self._setup_bwrap_sandbox, "buildbox": self._setup_buildbox_sandbox, + "buildbox-run": self.setup_buildboxrun_sandbox, "chroot": self._setup_chroot_sandbox, "dummy": self._setup_dummy_sandbox, } diff --git a/src/buildstream/_platform/platform.py b/src/buildstream/_platform/platform.py index 1fddbe82c..e4fa1b9f2 100644 --- a/src/buildstream/_platform/platform.py +++ b/src/buildstream/_platform/platform.py @@ -45,7 +45,8 @@ class Platform: self._setup_sandbox(force_sandbox) def _setup_sandbox(self, force_sandbox): - sandbox_setups = {"dummy": self._setup_dummy_sandbox} + # The buildbox-run interface is not platform-specific + sandbox_setups = {"buildbox-run": self.setup_buildboxrun_sandbox, "dummy": self._setup_dummy_sandbox} preferred_sandboxes = [] self._try_sandboxes(force_sandbox, sandbox_setups, preferred_sandboxes) @@ -209,10 +210,10 @@ class Platform: # Returns: # (Sandbox) A sandbox # - def create_sandbox(self, *args, **kwargs): + def create_sandbox(self, *args, **kwargs): # pylint: disable=method-hidden raise ImplError("Platform {platform} does not implement create_sandbox()".format(platform=type(self).__name__)) - def check_sandbox_config(self, config): + def check_sandbox_config(self, config): # pylint: disable=method-hidden raise ImplError( "Platform {platform} does not implement check_sandbox_config()".format(platform=type(self).__name__) ) @@ -237,3 +238,23 @@ class Platform: raise ImplError( "Platform {platform} does not implement _setup_dummy_sandbox()".format(platform=type(self).__name__) ) + + # Buildbox run sandbox methods + def _check_sandbox_config_buildboxrun(self, config): + from ..sandbox._sandboxbuildboxrun import SandboxBuildBoxRun + + return SandboxBuildBoxRun.check_sandbox_config(self, config) + + @staticmethod + def _create_buildboxrun_sandbox(*args, **kwargs): + from ..sandbox._sandboxbuildboxrun import SandboxBuildBoxRun + + return SandboxBuildBoxRun(*args, **kwargs) + + def setup_buildboxrun_sandbox(self): + from ..sandbox._sandboxbuildboxrun import SandboxBuildBoxRun + + self._check_sandbox(SandboxBuildBoxRun) + self.check_sandbox_config = self._check_sandbox_config_buildboxrun + self.create_sandbox = self._create_buildboxrun_sandbox + return True -- cgit v1.2.1