mirror of
https://github.com/BigfootACA/arch-image-builder.git
synced 2024-09-21 13:20:53 +08:00
builder: main.py: add --clean for cleanup workspace
Signed-off-by: BigfootACA <bigfoot@classfun.cn>
This commit is contained in:
parent
245a0ab00f
commit
8baedd5358
@ -30,6 +30,7 @@ python build.py -c target/ayn-odin2-sdcard,locale/zh-cn,desktop/gnome
|
||||
|
||||
| Option | Description |
|
||||
|-------------------------------------|----------------------------------|
|
||||
| -C, --clean | Clean workspace before build |
|
||||
| -p PRESET, --preset PRESET | Select preset to create package |
|
||||
| -c CONFIG, --config CONFIG | Select configs to build |
|
||||
| -o WORKSPACE, --workspace WORKSPACE | Set workspace for builder |
|
||||
|
@ -7,6 +7,7 @@ from builder.build import locale, systemd, mkinitcpio, names
|
||||
from builder.build import pacman as pacman_build
|
||||
from builder.component import pacman as pacman_comp
|
||||
from builder.lib.context import ArchBuilderContext
|
||||
from builder.lib.mount import MountTab
|
||||
log = getLogger(__name__)
|
||||
|
||||
|
||||
@ -51,12 +52,27 @@ def do_copy(ctx: ArchBuilderContext, src: str, dst: str):
|
||||
if ret != 0: raise OSError("rsync failed")
|
||||
|
||||
|
||||
def remove_workspace(ctx: ArchBuilderContext):
|
||||
# ensure mount point is clean
|
||||
mnts = MountTab.parse_mounts()
|
||||
if any(mnts.find_folder(ctx.work)):
|
||||
raise RuntimeError("mount points not cleanup")
|
||||
|
||||
# DANGEROUS: fully remove workspace
|
||||
log.info(f"cleaning workspace {ctx.work}")
|
||||
shutil.rmtree(ctx.work)
|
||||
|
||||
|
||||
def build_rootfs(ctx: ArchBuilderContext):
|
||||
"""
|
||||
Build whole rootfs and generate image
|
||||
"""
|
||||
log.info("building rootfs")
|
||||
|
||||
# clean workspace
|
||||
if ctx.clean and os.path.exists(ctx.work):
|
||||
remove_workspace(ctx)
|
||||
|
||||
# create folders
|
||||
os.makedirs(ctx.work, mode=0o755, exist_ok=True)
|
||||
os.makedirs(ctx.get_rootfs(), mode=0o0755, exist_ok=True)
|
||||
|
@ -43,6 +43,11 @@ class ArchBuilderContext:
|
||||
"""
|
||||
repack: bool = False
|
||||
|
||||
"""
|
||||
Clean workspace before rebuild
|
||||
"""
|
||||
clean: bool = False
|
||||
|
||||
"""
|
||||
Top tree folder
|
||||
"""
|
||||
|
@ -15,6 +15,7 @@ def parse_arguments(ctx: ArchBuilderContext):
|
||||
prog="arch-image-builder",
|
||||
description="Build flashable image for Arch Linux",
|
||||
)
|
||||
parser.add_argument("-C", "--clean", help="Clean workspace before build", default=False, action='store_true')
|
||||
parser.add_argument("-p", "--preset", help="Select preset to create package")
|
||||
parser.add_argument("-c", "--config", help="Select config to build", action='append')
|
||||
parser.add_argument("-o", "--workspace", help="Set workspace for builder", default=ctx.work)
|
||||
@ -30,6 +31,7 @@ def parse_arguments(ctx: ArchBuilderContext):
|
||||
|
||||
if args.no_gpgcheck: ctx.gpgcheck = False
|
||||
if args.repack: ctx.repack = True
|
||||
if args.clean: ctx.clean = True
|
||||
|
||||
# collect configs path
|
||||
configs = []
|
||||
|
Loading…
Reference in New Issue
Block a user