summaryrefslogtreecommitdiff
path: root/morphlib/stagingarea.py
diff options
context:
space:
mode:
authorLars Wirzenius <lars.wirzenius@codethink.co.uk>2012-04-18 13:19:45 +0100
committerLars Wirzenius <lars.wirzenius@codethink.co.uk>2012-04-18 18:29:25 +0100
commit0050c28846e9b40332b073c1a41dbb594fb3d26b (patch)
tree788629635283cb3e8d4b45d71092581f532b0e8d /morphlib/stagingarea.py
parent097dd0c085a0aa13af929db04b7ef10e7564698f (diff)
downloadmorph-0050c28846e9b40332b073c1a41dbb594fb3d26b.tar.gz
Make StagingArea get temporary directory separately from root directory
When we are not using --staging-chroot (e.g., bootstrap), we need to specify the temporary directory separately, because it needs to obey things like $TMPDIR.
Diffstat (limited to 'morphlib/stagingarea.py')
-rw-r--r--morphlib/stagingarea.py10
1 files changed, 4 insertions, 6 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)