diff options
Diffstat (limited to 'buildstream/scriptelement.py')
-rw-r--r-- | buildstream/scriptelement.py | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/buildstream/scriptelement.py b/buildstream/scriptelement.py index 95e6928ee..645381a40 100644 --- a/buildstream/scriptelement.py +++ b/buildstream/scriptelement.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python3 # # Copyright (C) 2017 Codethink Limited # @@ -19,9 +18,8 @@ # Jonathan Maw <jonathan.maw@codethink.co.uk> """ -ScriptElement -============= - +ScriptElement - Abstract class for scripting elements +===================================================== The ScriptElement class is a convenience class one can derive for implementing elements that stage elements and run command-lines on them. @@ -245,9 +243,8 @@ class ScriptElement(Element): with self.timed_activity("Staging {} at {}" .format(element.name, item['destination']), silent_nested=True): - real_dstdir = os.path.join(sandbox.get_directory(), - item['destination'].lstrip(os.sep)) - os.makedirs(os.path.dirname(real_dstdir), exist_ok=True) + virtual_dstdir = sandbox.get_virtual_directory() + virtual_dstdir.descend(item['destination'].lstrip(os.sep).split(os.sep), create=True) element.stage_dependency_artifacts(sandbox, Scope.RUN, path=item['destination']) for item in self.__layout: @@ -265,8 +262,8 @@ class ScriptElement(Element): for dep in element.dependencies(Scope.RUN): dep.integrate(sandbox) - os.makedirs(os.path.join(sandbox.get_directory(), self.__install_root.lstrip(os.sep)), - exist_ok=True) + install_root_path_components = self.__install_root.lstrip(os.sep).split(os.sep) + sandbox.get_virtual_directory().descend(install_root_path_components, create=True) def assemble(self, sandbox): |