diff options
-rw-r--r-- | morphlib/stagingarea.py | 10 | ||||
-rw-r--r-- | morphlib/stagingarea_tests.py | 4 |
2 files changed, 6 insertions, 8 deletions
diff --git a/morphlib/stagingarea.py b/morphlib/stagingarea.py index 848dbc3a..b9d205df 100644 --- a/morphlib/stagingarea.py +++ b/morphlib/stagingarea.py @@ -37,16 +37,16 @@ class StagingArea(object): ''' - def __init__(self, dirname): + def __init__(self, dirname, tempdir): self.dirname = dirname - self._chroot = 'chroot' if os.getuid() == 0 else 'echo' + self.tempdir = tempdir # Wrapper to be overridden by unit tests. def _mkdir(self, dirname): # pragma: no cover os.mkdir(dirname) def _dir_for_source(self, source, suffix): - dirname = os.path.join(self.dirname, + dirname = os.path.join(self.tempdir, '%s.%s' % (source.morphology['name'], suffix)) self._mkdir(dirname) return dirname @@ -111,8 +111,6 @@ class StagingArea(object): del kwargs['cwd'] else: cwd = '/' - real_argv = [self._chroot, self.dirname, - 'sh', '-c', 'cd "$1" && shift && eval "$@"', '--', - cwd] + argv + real_argv = ['linux-user-chroot', '--chdir', cwd, self.dirname] + argv return ex.runv(real_argv, **kwargs) diff --git a/morphlib/stagingarea_tests.py b/morphlib/stagingarea_tests.py index 96d00890..ea2de291 100644 --- a/morphlib/stagingarea_tests.py +++ b/morphlib/stagingarea_tests.py @@ -37,7 +37,7 @@ class StagingAreaTests(unittest.TestCase): self.tempdir = tempfile.mkdtemp() self.staging = os.path.join(self.tempdir, 'staging') self.created_dirs = [] - self.sa = morphlib.stagingarea.StagingArea(self.staging) + self.sa = morphlib.stagingarea.StagingArea(self.staging, self.staging) def tearDown(self): shutil.rmtree(self.tempdir) @@ -69,7 +69,7 @@ class StagingAreaTests(unittest.TestCase): self.assertEqual(self.sa.dirname, self.staging) def test_accepts_root_directory(self): - sa = morphlib.stagingarea.StagingArea('/') + sa = morphlib.stagingarea.StagingArea('/', '/tmp') self.assertEqual(sa.dirname, '/') def test_creates_build_directory(self): |