]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
kmod: Don't assume all modules are in kernel/ subdirectory 2532/head
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 19 Mar 2024 09:31:31 +0000 (10:31 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 19 Mar 2024 11:15:34 +0000 (12:15 +0100)
When dkms is used or depending on the distribution, there might be modules
in other directories than kernel/.

mkosi/kmod.py

index 72b1516a4aca3bb145a991df2c787f2a8fe8f62c..4477b3b91ada2e156418e3d11cb076036777f195 100644 (file)
@@ -26,7 +26,7 @@ def filter_kernel_modules(
     host: bool,
 ) -> list[Path]:
     modulesd = root / "usr/lib/modules" / kver
-    modules = set((modulesd / "kernel").rglob("*.ko*"))
+    modules = set(modulesd.rglob("*.ko*"))
 
     if host:
         include = [*include, *loaded_modules()]
@@ -35,7 +35,7 @@ def filter_kernel_modules(
     if include:
         regex = re.compile("|".join(include))
         for m in modules:
-            rel = os.fspath(m.relative_to(modulesd / "kernel"))
+            rel = os.fspath(Path(*m.relative_to(modulesd).parts[1:]))
             if regex.search(rel):
                 logging.debug(f"Including module {rel}")
                 keep.add(rel)
@@ -44,7 +44,7 @@ def filter_kernel_modules(
         remove = set()
         regex = re.compile("|".join(exclude))
         for m in modules:
-            rel = os.fspath(m.relative_to(modulesd / "kernel"))
+            rel = os.fspath(Path(*m.relative_to(modulesd).parts[1:]))
             if rel not in keep and regex.search(rel):
                 logging.debug(f"Excluding module {rel}")
                 remove.add(m)
@@ -76,7 +76,7 @@ def resolve_module_dependencies(
     """
     modulesd = root / "usr/lib/modules" / kver
     builtin = set(module_path_to_name(Path(m)) for m in (modulesd / "modules.builtin").read_text().splitlines())
-    allmodules = set((modulesd / "kernel").rglob("*.ko*"))
+    allmodules = set(modulesd.rglob("*.ko*"))
     nametofile = {module_path_to_name(m): m for m in allmodules}
 
     log_step("Running modinfo to fetch kernel module dependencies")
@@ -175,7 +175,7 @@ def gen_required_kernel_modules(
         mods, firmware = resolve_module_dependencies(root, kver, names, sandbox=sandbox)
     else:
         logging.debug("No modules excluded and no firmware installed, using kernel modules generation fast path")
-        mods = set((modulesd / "kernel").rglob("*.ko*"))
+        mods = set(modulesd.rglob("*.ko*"))
         firmware = set()
 
     yield from sorted(
@@ -212,7 +212,7 @@ def process_kernel_modules(
             gen_required_kernel_modules(root, kver, include=include, exclude=exclude, host=host, sandbox=sandbox)
         )
 
-        for m in sorted((root / "usr/lib/modules" / kver / "kernel").rglob("*"), reverse=True):
+        for m in sorted((root / "usr/lib/modules" / kver).rglob("*.ko*"), reverse=True):
             if m in required:
                 continue