Skip to content
Snippets Groups Projects
Commit d9627c5b authored by knownexus's avatar knownexus
Browse files

Adding Dummy sandbox and nolocal platform

parent deef9bd5
No related branches found
No related tags found
No related merge requests found
Pipeline #30190186 passed
......@@ -19,7 +19,7 @@ import os
import resource
from .._exceptions import PlatformError
from ..sandbox import SandboxChroot
from ..sandbox import SandboxChroot, DummySandbox
from . import Platform
......@@ -38,7 +38,7 @@ class Darwin(Platform):
return self._artifact_cache
def create_sandbox(self, *args, **kwargs):
return SandboxChroot(*args, **kwargs)
return DummySandbox(*args, **kwargs)
def get_cpu_count(self, cap=None):
if cap < os.cpu_count():
......
......@@ -24,7 +24,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, DummySandbox
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 DummySandbox(*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)
################################################
# Private Methods #
......
......@@ -54,6 +54,8 @@ class Platform():
backend = 'linux'
elif sys.platform.startswith('darwin'):
backend = 'darwin'
elif not (os.path.exists(utils.get_host_tool('bwrap')) and os.path.exists('/dev/fuse')):
backend = 'no_local'
else:
backend = 'unix'
......
......@@ -21,3 +21,4 @@ from .sandbox import Sandbox, SandboxFlags
from ._sandboxchroot import SandboxChroot
from ._sandboxbwrap import SandboxBwrap
from ._sandboxremote import SandboxRemote
from ._dummysandbox import DummySandbox
#
# 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 DummySandbox(Sandbox):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
uid = self._get_config().build_uid
gid = self._get_config().build_gid
if uid != 0 or gid != 0:
raise SandboxError("Chroot sandboxes cannot specify a non-root uid/gid "
"({},{} were supplied via config)".format(uid, gid))
self.mount_map = None
def run(self, command, flags, *, cwd=None, env=None):
# Default settings
if cwd is None:
cwd = self._get_work_directory()
if cwd is None:
cwd = '/'
if env is None:
env = self._get_environment()
# Naive getcwd implementations can break when bind-mounts to different
# paths on the same filesystem are present. Letting the command know
# what directory it is in makes it unnecessary to call the faulty
# getcwd.
env['PWD'] = cwd
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