diff options
-rw-r--r-- | src/buildstream/sandbox/_mounter.py | 7 | ||||
-rw-r--r-- | src/buildstream/sandbox/_sandboxchroot.py | 4 |
2 files changed, 6 insertions, 5 deletions
diff --git a/src/buildstream/sandbox/_mounter.py b/src/buildstream/sandbox/_mounter.py index e6054c20d..803325307 100644 --- a/src/buildstream/sandbox/_mounter.py +++ b/src/buildstream/sandbox/_mounter.py @@ -90,7 +90,7 @@ class Mounter(): @classmethod @contextmanager def mount(cls, dest, src=None, stdout=sys.stdout, - stderr=sys.stderr, mount_type=None, **kwargs): + stderr=sys.stderr, mount_type=None, unmount=True, **kwargs): def kill_proc(): cls._umount(dest, stdout, stderr) @@ -100,9 +100,10 @@ class Mounter(): path = cls._mount(dest, src, mount_type, stdout=stdout, stderr=stderr, options=options) try: with _signals.terminator(kill_proc): - yield path + yield path finally: - cls._umount(dest, stdout, stderr) + if unmount: + cls._umount(dest, stdout, stderr) # bind_mount() # diff --git a/src/buildstream/sandbox/_sandboxchroot.py b/src/buildstream/sandbox/_sandboxchroot.py index 95e247e83..49f493140 100644 --- a/src/buildstream/sandbox/_sandboxchroot.py +++ b/src/buildstream/sandbox/_sandboxchroot.py @@ -288,11 +288,11 @@ class SandboxChroot(Sandbox): # Remount root RO if necessary if flags & flags & SandboxFlags.ROOT_READ_ONLY: - root_mount = Mounter.mount(rootfs, stdout=stdout, stderr=stderr, remount=True, ro=True, bind=True) # Since the exit stack has already registered a mount # for this path, we do not need to register another # umount call. - root_mount.__enter__() + stack.enter_context(Mounter.mount(rootfs, stdout=stdout, stderr=stderr, unmount=False, + remount=True, ro=True, bind=True)) yield |