summaryrefslogtreecommitdiff
path: root/morphlib/stagingarea.py
diff options
context:
space:
mode:
authorLars Wirzenius <lars.wirzenius@codethink.co.uk>2012-11-29 15:15:39 +0000
committerLars Wirzenius <lars.wirzenius@codethink.co.uk>2012-11-29 15:15:39 +0000
commitbc6a88ae5b139f908cfcc0d33da140ffd9095d49 (patch)
tree7cc7c32cf327df1a2816ed851eadbad563e54f44 /morphlib/stagingarea.py
parent92e3d9d415bf180982046f647230493bdf2b86b5 (diff)
downloadmorph-bc6a88ae5b139f908cfcc0d33da140ffd9095d49.tar.gz
Reformat code, plus adapt for non-staging-area builds
Diffstat (limited to 'morphlib/stagingarea.py')
-rw-r--r--morphlib/stagingarea.py35
1 files changed, 20 insertions, 15 deletions
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)