summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--morphlib/stagingarea.py10
-rw-r--r--morphlib/stagingarea_tests.py4
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):