chroot: detect existing root mounts better

This commit is contained in:
InsanePrawn 2023-01-06 05:50:56 +01:00
parent 4d03f238bb
commit 9c77e2ffe3
2 changed files with 4 additions and 5 deletions

View file

@ -2,12 +2,11 @@ import logging
import os
from glob import glob
from shutil import rmtree
from typing import ClassVar
from constants import Arch
from exec.cmd import run_root_cmd
from exec.file import makedir, root_makedir
from exec.file import makedir, remove_file, root_makedir
from config.state import config
from .abstract import Chroot, get_chroot
@ -19,10 +18,10 @@ class BaseChroot(Chroot):
_copy_base: ClassVar[bool] = False
def create_rootfs(self, reset, pacman_conf_target, active_previously):
if reset:
if reset and os.path.exists(self.path):
logging.info(f'Resetting {self.name}')
for dir in glob(os.path.join(self.path, '*')):
rmtree(dir)
remove_file(dir, recursive=True)
makedir(config.get_path('chroots'))
root_makedir(self.get_path())

View file

@ -42,7 +42,7 @@ class DeviceChroot(BuildChroot):
really_active.append(mnt)
if really_active:
raise Exception(f'{self.name}: Chroot has submounts active: {really_active}')
if os.path.ismount(self.path):
if os.path.ismount(self.path) or check_findmnt(self.path):
raise Exception(f'{self.name}: There is already something mounted at {self.path}, not mounting over it.')
if os.path.exists(os.path.join(self.path, 'usr/bin')):
raise Exception(f'{self.name}: {self.path}/usr/bin exists, not mounting over existing rootfs.')