diff options
author | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2012-11-29 15:15:39 +0000 |
---|---|---|
committer | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2012-11-29 15:15:39 +0000 |
commit | bc6a88ae5b139f908cfcc0d33da140ffd9095d49 (patch) | |
tree | 7cc7c32cf327df1a2816ed851eadbad563e54f44 | |
parent | 92e3d9d415bf180982046f647230493bdf2b86b5 (diff) | |
download | morph-bc6a88ae5b139f908cfcc0d33da140ffd9095d49.tar.gz |
Reformat code, plus adapt for non-staging-area builds
-rw-r--r-- | morphlib/builder2.py | 3 | ||||
-rw-r--r-- | morphlib/stagingarea.py | 35 |
2 files changed, 22 insertions, 16 deletions
diff --git a/morphlib/builder2.py b/morphlib/builder2.py index 402c17f4..88717bb9 100644 --- a/morphlib/builder2.py +++ b/morphlib/builder2.py @@ -260,7 +260,8 @@ class ChunkBuilder(BuilderBase): def build_and_cache(self): # pragma: no cover with self.build_watch('overall-build'): - builddir, destdir = self.staging_area.chroot_open(self.artifact.source) + builddir, destdir = \ + self.staging_area.chroot_open(self.artifact.source) log_name = None try: self.get_sources(builddir) diff --git a/morphlib/stagingarea.py b/morphlib/stagingarea.py index c8b53bd3..f6d221ab 100644 --- a/morphlib/stagingarea.py +++ b/morphlib/stagingarea.py @@ -141,7 +141,8 @@ class StagingArea(object): pass def runcmd(self, argv, **kwargs): # pragma: no cover - '''Run a command in a chroot in the staging area.''' + '''Run a command in the staging area.''' + cwd = kwargs.get('cwd') or '/' if 'cwd' in kwargs: cwd = kwargs['cwd'] @@ -149,23 +150,27 @@ class StagingArea(object): else: cwd = '/' - entries = os.listdir(self.dirname) - - for friend in [self.builddirname,self.destdirname,'dev','proc','tmp']: - try: - entries.remove(friend) - except: - pass + if self._app.settings['staging-chroot']: + entries = os.listdir(self.dirname) + + friends = [self.builddirname, self.destdirname, + 'dev', 'proc', 'tmp'] + for friend in friends: + if friend in friends: + entries.remove(friend) - real_argv = ['linux-user-chroot'] + real_argv = ['linux-user-chroot'] - for entry in entries: - real_argv += ['--mount-readonly',"/"+entry] + for entry in entries: + real_argv += ['--mount-readonly',"/"+entry] - real_argv += ['--mount-proc','/proc'] - real_argv += ['--mount-bind','/dev/shm','/dev/shm'] - real_argv += [self.dirname, 'sh', '-c', - 'cd "$1" && shift && exec "$@"', '--', cwd] + real_argv += ['--mount-proc','/proc'] + real_argv += ['--mount-bind','/dev/shm','/dev/shm'] + real_argv += [self.dirname] + else: + real_argv = ['chroot', '/'] + + real_argv += ['sh', '-c', 'cd "$1" && shift && exec "$@"', '--', cwd] real_argv += argv return self._app.runcmd(real_argv, **kwargs) |