From: Daan De Meyer Date: Sun, 19 Jan 2025 19:02:42 +0000 (+0100) Subject: Remove empty directories from extension images X-Git-Tag: v25~35 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ff387dd926c3566602fb6cb059bd846e7c348611;p=thirdparty%2Fmkosi.git Remove empty directories from extension images --- diff --git a/mkosi/__init__.py b/mkosi/__init__.py index 18fd92053..8dd22865c 100644 --- a/mkosi/__init__.py +++ b/mkosi/__init__.py @@ -183,12 +183,18 @@ def mount_base_trees(context: Context) -> Iterator[None]: def remove_files(context: Context) -> None: """Remove files based on user-specified patterns""" - if not context.config.remove_files and not (context.root / "work").exists(): - return + if context.config.remove_files or (context.root / "work").exists(): + with complete_step("Removing files…"): + remove = flatten( + context.root.glob(pattern.lstrip("/")) for pattern in context.config.remove_files + ) + rmtree(*remove, context.root / "work", sandbox=context.sandbox) - with complete_step("Removing files…"): - remove = flatten(context.root.glob(pattern.lstrip("/")) for pattern in context.config.remove_files) - rmtree(*remove, context.root / "work", sandbox=context.sandbox) + if context.config.output_format.is_extension_image(): + with complete_step("Removing empty directories…"): + for d in reversed(sorted(context.root.glob("**/"))): + if not any(d.iterdir()): + d.rmdir() def install_distribution(context: Context) -> None: