forked from Mirror/pmbootstrap
chroot: split deleting chroot into new function (MR 2252)
To allow for deleting just one chroot. Signed-off-by: Caleb Connolly <caleb@postmarketos.org>
This commit is contained in:
parent
4ed813cf0e
commit
fe34442bd1
2 changed files with 24 additions and 3 deletions
|
@ -4,4 +4,4 @@ from pmb.chroot.init import init, init_keys, UsrMerge
|
||||||
from pmb.chroot.mount import mount, mount_native_into_foreign, remove_mnt_pmbootstrap
|
from pmb.chroot.mount import mount, mount_native_into_foreign, remove_mnt_pmbootstrap
|
||||||
from pmb.chroot.run import root, rootm, user, userm, exists as user_exists
|
from pmb.chroot.run import root, rootm, user, userm, exists as user_exists
|
||||||
from pmb.chroot.shutdown import shutdown
|
from pmb.chroot.shutdown import shutdown
|
||||||
from pmb.chroot.zap import zap
|
from pmb.chroot.zap import zap, del_chroot
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# Copyright 2023 Oliver Smith
|
# Copyright 2023 Oliver Smith
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
import glob
|
import glob
|
||||||
|
from pathlib import Path
|
||||||
from pmb.core.arch import Arch
|
from pmb.core.arch import Arch
|
||||||
from pmb.helpers import logging
|
from pmb.helpers import logging
|
||||||
import os
|
import os
|
||||||
|
@ -10,14 +11,31 @@ import pmb.config.workdir
|
||||||
import pmb.chroot
|
import pmb.chroot
|
||||||
import pmb.config.pmaports
|
import pmb.config.pmaports
|
||||||
import pmb.config.workdir
|
import pmb.config.workdir
|
||||||
|
import pmb.helpers.cli
|
||||||
import pmb.helpers.pmaports
|
import pmb.helpers.pmaports
|
||||||
import pmb.helpers.run
|
import pmb.helpers.run
|
||||||
from pmb.meta import Cache
|
import pmb.helpers.mount
|
||||||
import pmb.parse.apkindex
|
import pmb.parse.apkindex
|
||||||
from pmb.core import Chroot
|
from pmb.core import Chroot
|
||||||
from pmb.core.context import get_context
|
from pmb.core.context import get_context
|
||||||
|
|
||||||
|
|
||||||
|
def del_chroot(path: Path, confirm=True, dry=False):
|
||||||
|
if confirm and not pmb.helpers.cli.confirm(f"Remove {path}?"):
|
||||||
|
return
|
||||||
|
if dry:
|
||||||
|
return
|
||||||
|
|
||||||
|
# Safety first!
|
||||||
|
assert path.is_absolute()
|
||||||
|
assert path.is_relative_to(get_context().config.work)
|
||||||
|
|
||||||
|
# umount_all() will throw if any mount under path fails to unmount
|
||||||
|
pmb.helpers.mount.umount_all(path)
|
||||||
|
|
||||||
|
pmb.helpers.run.root(["rm", "-rf", path])
|
||||||
|
|
||||||
|
|
||||||
def zap(confirm=True, dry=False, pkgs_local=False, http=False,
|
def zap(confirm=True, dry=False, pkgs_local=False, http=False,
|
||||||
pkgs_local_mismatch=False, pkgs_online_mismatch=False, distfiles=False,
|
pkgs_local_mismatch=False, pkgs_online_mismatch=False, distfiles=False,
|
||||||
rust=False, netboot=False):
|
rust=False, netboot=False):
|
||||||
|
@ -51,7 +69,7 @@ def zap(confirm=True, dry=False, pkgs_local=False, http=False,
|
||||||
pmb.chroot.shutdown()
|
pmb.chroot.shutdown()
|
||||||
|
|
||||||
# Deletion patterns for folders inside get_context().config.work
|
# Deletion patterns for folders inside get_context().config.work
|
||||||
patterns = list(Chroot.iter_patterns())
|
patterns = []
|
||||||
if pkgs_local:
|
if pkgs_local:
|
||||||
patterns += ["packages"]
|
patterns += ["packages"]
|
||||||
if http:
|
if http:
|
||||||
|
@ -63,6 +81,9 @@ def zap(confirm=True, dry=False, pkgs_local=False, http=False,
|
||||||
if netboot:
|
if netboot:
|
||||||
patterns += ["images_netboot"]
|
patterns += ["images_netboot"]
|
||||||
|
|
||||||
|
for chroot in Chroot.glob():
|
||||||
|
del_chroot(chroot, confirm, dry)
|
||||||
|
|
||||||
# Delete everything matching the patterns
|
# Delete everything matching the patterns
|
||||||
for pattern in patterns:
|
for pattern in patterns:
|
||||||
logging.debug(f"Deleting {pattern}")
|
logging.debug(f"Deleting {pattern}")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue