From 562983076d3cb05de24afff918764ad84986c1a3 Mon Sep 17 00:00:00 2001 From: Simon McVittie <smcv@collabora.com> Date: Tue, 16 Jun 2020 14:42:12 +0100 Subject: [PATCH] sysroot: Add a way to mount more directories rw This will make it easier to install a new pressure-vessel build into a relocatable directory hierarchy for testing. Signed-off-by: Simon McVittie <smcv@collabora.com> --- sysroot/run-in-sysroot.py | 62 ++++++++++++++++++++++++++------------- 1 file changed, 42 insertions(+), 20 deletions(-) diff --git a/sysroot/run-in-sysroot.py b/sysroot/run-in-sysroot.py index eb875f427..64a712de7 100755 --- a/sysroot/run-in-sysroot.py +++ b/sysroot/run-in-sysroot.py @@ -46,6 +46,7 @@ def main(): parser = argparse.ArgumentParser() parser.add_argument('--srcdir', default='.') parser.add_argument('--builddir', default='_build') + parser.add_argument('--rw', action='append', default=[]) parser.add_argument('--sysroot', default=None) parser.add_argument('--tarball', default=None) parser.add_argument('command') @@ -94,27 +95,48 @@ def main(): os.makedirs( os.path.join(abs_sysroot, './' + abs_builddir), exist_ok=True) - os.execvp( + argv = [ 'bwrap', - [ - 'bwrap', - '--ro-bind', abs_sysroot, '/', - '--bind', - os.path.join(abs_sysroot, 'var', 'lib', 'apt'), - '/var/lib/apt', - '--dev-bind', '/dev', '/dev', - '--ro-bind', '/etc/resolv.conf', '/etc/resolv.conf', - '--proc', '/proc', - '--tmpfs', '/tmp', - '--tmpfs', '/var/tmp', - '--tmpfs', '/home', - '--bind', abs_srcdir, abs_srcdir, - '--bind', abs_builddir, abs_builddir, - '--chdir', os.getcwd(), - '--setenv', 'LC_ALL', 'C.UTF-8', - args.command, - ] + args.args, - ) + '--ro-bind', abs_sysroot, '/', + '--bind', + os.path.join(abs_sysroot, 'var', 'lib', 'apt'), + '/var/lib/apt', + '--dev-bind', '/dev', '/dev', + '--ro-bind', '/etc/resolv.conf', '/etc/resolv.conf', + '--proc', '/proc', + '--tmpfs', '/tmp', + '--tmpfs', '/var/tmp', + '--tmpfs', '/home', + '--bind', abs_srcdir, abs_srcdir, + '--bind', abs_builddir, abs_builddir, + ] + + for var in ( + 'AUTOPKGTEST_ARTIFACTS', + 'DESTDIR', + 'G_TEST_BUILDDIR', + 'G_TEST_SRCDIR', + 'PRESSURE_VESSEL_TEST_CONTAINERS', + ): + if var in os.environ: + val = os.environ[var] + argv.extend([ + '--bind', val, val, + ]) + + for rw in args.rw: + argv.extend([ + '--bind', rw, rw, + ]) + + argv.extend([ + '--chdir', os.getcwd(), + '--setenv', 'LC_ALL', 'C.UTF-8', + args.command, + ]) + argv.extend(args.args) + + os.execvp('bwrap', argv) if __name__ == '__main__': -- GitLab