From: Jörg Behrmann Date: Thu, 15 May 2025 15:23:42 +0000 (+0200) Subject: kmod: factor out comparison and also count empty directories as invalid X-Git-Tag: v26~211 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9e5b4f8932129fe7d584779428d13cba554dd51a;p=thirdparty%2Fmkosi.git kmod: factor out comparison and also count empty directories as invalid --- diff --git a/mkosi/__init__.py b/mkosi/__init__.py index 9c8451072..664432e88 100644 --- a/mkosi/__init__.py +++ b/mkosi/__init__.py @@ -87,7 +87,7 @@ from mkosi.context import Context from mkosi.distributions import Distribution, detect_distribution from mkosi.documentation import show_docs from mkosi.installer import clean_package_manager_metadata -from mkosi.kmod import gen_required_kernel_modules, loaded_modules, process_kernel_modules +from mkosi.kmod import gen_required_kernel_modules, is_valid_kdir, loaded_modules, process_kernel_modules from mkosi.log import ARG_DEBUG, complete_step, die, log_notice, log_step from mkosi.manifest import Manifest from mkosi.mounts import ( @@ -2983,9 +2983,7 @@ def run_depmod(context: Context, *, cache: bool = False) -> None: if not cache: for modulesd in (context.root / "usr/lib/modules").glob("*"): - if not modulesd.is_dir() or ( - (modulesd / "updates").exists() and len(list(modulesd.glob("*"))) == 1 - ): + if not is_valid_kdir(modulesd): continue process_kernel_modules( @@ -3012,7 +3010,7 @@ def run_depmod(context: Context, *, cache: bool = False) -> None: ) for modulesd in (context.root / "usr/lib/modules").glob("*"): - if not modulesd.is_dir() or ((modulesd / "updates").exists() and len(list(modulesd.glob("*"))) == 1): + if not is_valid_kdir(modulesd): continue if ( diff --git a/mkosi/kmod.py b/mkosi/kmod.py index 1d75b3f3c..df199c82c 100644 --- a/mkosi/kmod.py +++ b/mkosi/kmod.py @@ -441,3 +441,14 @@ def process_kernel_modules( p.parent.rmdir() elif p.exists(): p.rmdir() + + +def is_valid_kdir(kdir: Path) -> bool: + dircontent = list(kdir.glob("*")) + + # kdir does not exist or is empty + if not dircontent: + return False + + # check that kdir contains more than just updates + return dircontent != [kdir / "updates"]