diff options
author | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2012-04-18 13:19:45 +0100 |
---|---|---|
committer | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2012-04-18 18:29:25 +0100 |
commit | 0050c28846e9b40332b073c1a41dbb594fb3d26b (patch) | |
tree | 788629635283cb3e8d4b45d71092581f532b0e8d /morphlib | |
parent | 097dd0c085a0aa13af929db04b7ef10e7564698f (diff) | |
download | morph-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')
-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): |