Skip to content
Snippets Groups Projects
Commit 82fad9b4 authored by knownexus's avatar knownexus Committed by Phillip Smyth
Browse files

Adding Dummy sandbox

This is to allow platforms that do not support sandboxing
To error is a controlled/known way
parent a88b155f
No related branches found
No related tags found
No related merge requests found
......@@ -23,7 +23,7 @@ from .. import _site
from .. import utils
from .._artifactcache.cascache import CASCache
from .._message import Message, MessageType
from ..sandbox import SandboxBwrap
from ..sandbox import SandboxBwrap, SandboxDummy
from . import Platform
......@@ -48,10 +48,13 @@ class Linux(Platform):
return self._artifact_cache
def create_sandbox(self, *args, **kwargs):
# Inform the bubblewrap sandbox as to whether it can use user namespaces or not
kwargs['user_ns_available'] = self._user_ns_available
kwargs['die_with_parent_available'] = self._die_with_parent_available
return SandboxBwrap(*args, **kwargs)
if not self._local_sandbox_available():
return SandboxDummy(*args, **kwargs)
else:
# Inform the bubblewrap sandbox as to whether it can use user namespaces or not
kwargs['user_ns_available'] = self._user_ns_available
kwargs['die_with_parent_available'] = self._die_with_parent_available
return SandboxBwrap(*args, **kwargs)
def create_artifact_cache(self, context, *, enable_push):
return super().create_artifact_cache(context=context, enable_push=self._user_ns_available)
......
......@@ -21,3 +21,4 @@ from .sandbox import Sandbox, SandboxFlags
from ._sandboxchroot import SandboxChroot
from ._sandboxbwrap import SandboxBwrap
from ._sandboxremote import SandboxRemote
from ._sandboxdummy import SandboxDummy
#
# Copyright (C) 2017 Codethink Limited
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
#
# Authors:
from .._exceptions import SandboxError
from . import Sandbox
class SandboxDummy(Sandbox):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def run(self, command, flags, *, cwd=None, env=None):
# Fallback to the sandbox default settings for
# the cwd and env.
#
cwd = self._get_work_directory(cwd=cwd)
env = self._get_environment(cwd=cwd, env=env)
if not self._has_command(command[0], env):
raise SandboxError("Staged artifacts do not provide command "
"'{}'".format(command[0]),
reason='missing-command')
raise SandboxError("This platform does not support local builds")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment