diff options
author | Jonathan Maw <jonathan.maw@codethink.co.uk> | 2013-02-25 17:06:08 +0000 |
---|---|---|
committer | Jonathan Maw <jonathan.maw@codethink.co.uk> | 2013-02-28 11:38:31 +0000 |
commit | 4440e2ec57bc82ab767b2bca55d6d8d4bfaf897f (patch) | |
tree | 95f92453c69a27c58e85421b923efc3db54733fd /morphlib | |
parent | 5498cd4c3a503562530ea56529c952680d7d79c3 (diff) | |
download | morph-4440e2ec57bc82ab767b2bca55d6d8d4bfaf897f.tar.gz |
Perform *-commands in linux-user-chroot
Diffstat (limited to 'morphlib')
-rw-r--r-- | morphlib/stagingarea.py | 19 |
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) |