buildroot: create var inside a generic temp dir

Instead of having a temporary directory on the host for `/var` inside 
the container, create a generic temporary directory that can be used
for other things and create the `var` inside that.
This commit is contained in:
Christian Kellner 2021-11-18 13:48:09 +01:00 committed by Achilleas Koutsou
parent 9d7d952ddf
commit 7846fa592b

View file

@ -69,6 +69,7 @@ class BuildRoot(contextlib.AbstractContextManager):
self._apis = []
self.dev = None
self.var = None
self.tmp = None
self.mount_boot = True
@staticmethod
@ -101,8 +102,11 @@ class BuildRoot(contextlib.AbstractContextManager):
self.dev = self._exitstack.enter_context(dev)
os.makedirs(self._vardir, exist_ok=True)
var = tempfile.TemporaryDirectory(prefix="osbuild-var-", dir=self._vardir)
self.var = self._exitstack.enter_context(var)
tmp = tempfile.TemporaryDirectory(prefix="osbuild-tmp-", dir=self._vardir)
self.tmp = self._exitstack.enter_context(tmp)
self.var = os.path.join(self.tmp, "var")
os.makedirs(self.var, exist_ok=True)
subprocess.run(["mount", "-t", "tmpfs", "-o", "nosuid", "none", self.dev], check=True)
self._exitstack.callback(lambda: subprocess.run(["umount", "--lazy", self.dev], check=True))