]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
kmod: factor out comparison and also count empty directories as invalid
authorJörg Behrmann <behrmann@physik.fu-berlin.de>
Thu, 15 May 2025 15:23:42 +0000 (17:23 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 28 May 2025 07:39:13 +0000 (09:39 +0200)
mkosi/__init__.py
mkosi/kmod.py

index 9c84510724a58f6511fd57c2cdcf2b4b98e2a4b3..664432e88ef57a98d94fcfe3f652ad4e0b3c276d 100644 (file)
@@ -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 (
index 1d75b3f3c8f4cdfb8f54d654b1a347090a9f6ec7..df199c82ca2d6ee23d316c6625a765586eb87bec 100644 (file)
@@ -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"]