summaryrefslogtreecommitdiff
path: root/morphlib/stagingarea.py
diff options
context:
space:
mode:
authorJonathan Maw <jonathan.maw@codethink.co.uk>2013-02-25 17:06:08 +0000
committerJonathan Maw <jonathan.maw@codethink.co.uk>2013-02-28 11:38:31 +0000
commit4440e2ec57bc82ab767b2bca55d6d8d4bfaf897f (patch)
tree95f92453c69a27c58e85421b923efc3db54733fd /morphlib/stagingarea.py
parent5498cd4c3a503562530ea56529c952680d7d79c3 (diff)
downloadmorph-4440e2ec57bc82ab767b2bca55d6d8d4bfaf897f.tar.gz
Perform *-commands in linux-user-chroot
Diffstat (limited to 'morphlib/stagingarea.py')
-rw-r--r--morphlib/stagingarea.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/morphlib/stagingarea.py b/morphlib/stagingarea.py
index ebfbb0b5..f930f9d7 100644
--- a/morphlib/stagingarea.py
+++ b/morphlib/stagingarea.py
@@ -258,8 +258,23 @@ class StagingArea(object):
del kwargs['cwd']
else:
cwd = '/'
+ if self._app.settings['staging-chroot']:
+ not_readonly_dirs = [self.builddirname, self.destdirname,
+ 'dev', 'proc', 'tmp']
+ dirs = os.listdir(self.dirname)
+ for excluded_dir in not_readonly_dirs:
+ dirs.remove(excluded_dir)
- real_argv = ['chroot', self.dirname, 'sh', '-c',
- 'cd "$1" && shift && exec "$@"', '--', cwd] + argv
+ real_argv = ['linux-user-chroot']
+
+ for entry in dirs:
+ real_argv += ['--mount-readonly', '/'+entry]
+
+ 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)