summaryrefslogtreecommitdiff
path: root/buildstream/sandbox/sandbox.py
diff options
context:
space:
mode:
Diffstat (limited to 'buildstream/sandbox/sandbox.py')
-rw-r--r--buildstream/sandbox/sandbox.py23
1 files changed, 20 insertions, 3 deletions
diff --git a/buildstream/sandbox/sandbox.py b/buildstream/sandbox/sandbox.py
index 87a2fb9c9..9d34f0195 100644
--- a/buildstream/sandbox/sandbox.py
+++ b/buildstream/sandbox/sandbox.py
@@ -99,9 +99,11 @@ class Sandbox():
self.__stdout = kwargs['stdout']
self.__stderr = kwargs['stderr']
- # Setup the directories. Root should be available to subclasses, hence
- # being single-underscore. The others are private to this class.
+ # Setup the directories. Root and output_directory should be
+ # available to subclasses, hence being single-underscore. The
+ # others are private to this class.
self._root = os.path.join(directory, 'root')
+ self._output_directory = None
self.__directory = directory
self.__scratch = os.path.join(self.__directory, 'scratch')
for directory_ in [self._root, self.__scratch]:
@@ -144,11 +146,17 @@ class Sandbox():
self._vdir = FileBasedDirectory(self._root)
return self._vdir
+ def _set_virtual_directory(self, virtual_directory):
+ """ Sets virtual directory. Useful after remote execution
+ has rewritten the working directory.
+ """
+ self._vdir = virtual_directory
+
def set_environment(self, environment):
"""Sets the environment variables for the sandbox
Args:
- directory (dict): The environment variables to use in the sandbox
+ environment (dict): The environment variables to use in the sandbox
"""
self.__env = environment
@@ -160,6 +168,15 @@ class Sandbox():
"""
self.__cwd = directory
+ def set_output_directory(self, directory):
+ """Sets the output directory - the directory which is preserved
+ as an artifact after assembly.
+
+ Args:
+ directory (str): An absolute path within the sandbox
+ """
+ self._output_directory = directory
+
def mark_directory(self, directory, *, artifact=False):
"""Marks a sandbox directory and ensures it will exist