summaryrefslogtreecommitdiff
path: root/src/buildstream
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2020-06-03 11:37:14 +0200
committerJürg Billeter <j@bitron.ch>2020-06-03 13:49:39 +0200
commit07275d01416b204bd578c1c3617fcbed8b6e30ed (patch)
treec7538d077b5bfd35c774c5c8d2041e79cdea274f /src/buildstream
parent0b79b37a14cfa4db0d991ad2fbcb0891f49ef0b9 (diff)
downloadbuildstream-07275d01416b204bd578c1c3617fcbed8b6e30ed.tar.gz
Drop sandbox selection and BST_FORCE_SANDBOX
buildbox-run is the only local sandbox and there are no plans to add other sandboxing backends in the future. New platforms can be supported by new buildbox-run implementations without requiring any changes in BuildStream.
Diffstat (limited to 'src/buildstream')
-rw-r--r--src/buildstream/_platform/linux.py11
-rw-r--r--src/buildstream/_platform/platform.py63
-rw-r--r--src/buildstream/testing/_utils/site.py19
3 files changed, 19 insertions, 74 deletions
diff --git a/src/buildstream/_platform/linux.py b/src/buildstream/_platform/linux.py
index 13fe0b64c..c6065b416 100644
--- a/src/buildstream/_platform/linux.py
+++ b/src/buildstream/_platform/linux.py
@@ -24,17 +24,6 @@ from .platform import Platform
class Linux(Platform):
- def _setup_sandbox(self, force_sandbox):
- sandbox_setups = {
- "buildbox-run": self.setup_buildboxrun_sandbox,
- "dummy": self._setup_dummy_sandbox,
- }
-
- preferred_sandboxes = [
- "buildbox-run",
- ]
-
- self._try_sandboxes(force_sandbox, sandbox_setups, preferred_sandboxes)
################################################
# Private Methods #
diff --git a/src/buildstream/_platform/platform.py b/src/buildstream/_platform/platform.py
index 84d1fb231..8a1794cbf 100644
--- a/src/buildstream/_platform/platform.py
+++ b/src/buildstream/_platform/platform.py
@@ -35,53 +35,18 @@ class Platform:
# A class to manage platform-specific details. Currently holds the
# sandbox factory as well as platform helpers.
#
- # Args:
- # force_sandbox (bool): Force bst to use a particular sandbox
- #
- def __init__(self, force_sandbox=None):
+ def __init__(self):
self._local_sandbox = None
self.dummy_reasons = []
- self._setup_sandbox(force_sandbox)
-
- def _setup_sandbox(self, force_sandbox):
- # The buildbox-run interface is not platform-specific
- sandbox_setups = {"buildbox-run": self.setup_buildboxrun_sandbox, "dummy": self._setup_dummy_sandbox}
-
- preferred_sandboxes = [
- "buildbox-run",
- ]
-
- self._try_sandboxes(force_sandbox, sandbox_setups, preferred_sandboxes)
+ self._setup_sandbox()
- def _try_sandboxes(self, force_sandbox, sandbox_setups, preferred_sandboxes):
- # Any sandbox from sandbox_setups can be forced by BST_FORCE_SANDBOX
- # But if a specific sandbox is not forced then only `first class` sandbox are tried before
- # falling back to the dummy sandbox.
+ def _setup_sandbox(self):
+ # Try to setup buildbox-run sandbox, otherwise fallback to the dummy sandbox.
# Where `first_class` sandboxes are those in preferred_sandboxes
- if force_sandbox:
- try:
- sandbox_setups[force_sandbox]()
- except KeyError:
- raise PlatformError(
- "Forced Sandbox is unavailable on this platform: BST_FORCE_SANDBOX"
- " is set to {} but it is not available".format(force_sandbox)
- )
- except SandboxError as Error:
- raise PlatformError(
- "Forced Sandbox Error: BST_FORCE_SANDBOX"
- " is set to {} but cannot be setup".format(force_sandbox),
- detail=" and ".join(self.dummy_reasons),
- ) from Error
- else:
- for good_sandbox in preferred_sandboxes:
- try:
- sandbox_setups[good_sandbox]()
- return
- except SandboxError:
- continue
- except utils.ProgramNotFoundError:
- continue
- sandbox_setups["dummy"]()
+ try:
+ self._setup_buildboxrun_sandbox()
+ except (SandboxError, utils.ProgramNotFoundError):
+ self._setup_dummy_sandbox()
def _check_sandbox(self, Sandbox):
Sandbox._dummy_reasons = []
@@ -93,14 +58,6 @@ class Platform:
@classmethod
def create_instance(cls):
- # Meant for testing purposes and therefore hidden in the
- # deepest corners of the source code. Try not to abuse this,
- # please?
- if os.getenv("BST_FORCE_SANDBOX"):
- force_sandbox = os.getenv("BST_FORCE_SANDBOX")
- else:
- force_sandbox = None
-
if os.getenv("BST_FORCE_BACKEND"):
backend = os.getenv("BST_FORCE_BACKEND")
elif sys.platform.startswith("darwin"):
@@ -123,7 +80,7 @@ class Platform:
else:
raise PlatformError("No such platform: '{}'".format(backend))
- return PlatformImpl(force_sandbox=force_sandbox)
+ return PlatformImpl()
def get_cpu_count(self, cap=None):
# `psutil.Process.cpu_affinity()` is not available on all platforms.
@@ -264,7 +221,7 @@ class Platform:
return SandboxBuildBoxRun(*args, **kwargs)
- def setup_buildboxrun_sandbox(self):
+ def _setup_buildboxrun_sandbox(self):
from ..sandbox._sandboxbuildboxrun import SandboxBuildBoxRun # pylint: disable=cyclic-import
self._check_sandbox(SandboxBuildBoxRun)
diff --git a/src/buildstream/testing/_utils/site.py b/src/buildstream/testing/_utils/site.py
index 70d23a5cc..577896fe5 100644
--- a/src/buildstream/testing/_utils/site.py
+++ b/src/buildstream/testing/_utils/site.py
@@ -59,14 +59,13 @@ IS_WINDOWS = os.name == "nt"
MACHINE_ARCH = Platform.get_host_arch()
-HAVE_SANDBOX = os.getenv("BST_FORCE_SANDBOX")
-
+HAVE_SANDBOX = None
BUILDBOX_RUN = None
-if HAVE_SANDBOX is None:
- try:
- path = utils.get_host_tool("buildbox-run")
- subprocess.run([path, "--capabilities"], check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
- BUILDBOX_RUN = os.path.basename(os.readlink(path))
- HAVE_SANDBOX = "buildbox-run"
- except (ProgramNotFoundError, OSError, subprocess.CalledProcessError):
- pass
+
+try:
+ path = utils.get_host_tool("buildbox-run")
+ subprocess.run([path, "--capabilities"], check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
+ BUILDBOX_RUN = os.path.basename(os.readlink(path))
+ HAVE_SANDBOX = "buildbox-run"
+except (ProgramNotFoundError, OSError, subprocess.CalledProcessError):
+ pass