]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
Cache depmod again
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 16 Jan 2024 15:39:05 +0000 (16:39 +0100)
committerJörg Behrmann <behrmann@physik.fu-berlin.de>
Tue, 16 Jan 2024 17:36:54 +0000 (18:36 +0100)
Let's run depmod before we cache our images so that we can skip it
when doing incremental builds for kernels installed with the package
manager. depmod is noticeably slow so this speeds up kernel builds a
bit.

mkosi/__init__.py

index 331cffcd6cdafbcd3282116b7325d7b1781765b4..49854a66a9a7bc8c98d2f3c0df001c5f019f6a58 100644 (file)
@@ -2277,11 +2277,25 @@ def configure_clock(context: Context) -> None:
         (context.root / "usr/lib/clock-epoch").touch()
 
 
-def run_depmod(context: Context) -> None:
+def run_depmod(context: Context, *, force: bool = False) -> None:
     if context.config.overlay or context.config.output_format.is_extension_image():
         return
 
+    outputs = (
+        "modules.dep",
+        "modules.dep.bin",
+        "modules.symbols",
+        "modules.symbols.bin",
+    )
+
     for kver, _ in gen_kernel_images(context):
+        if (
+            not force and
+            not context.config.kernel_modules_exclude and
+            all((context.root / "usr/lib/modules" / kver / o).exists() for o in outputs)
+        ):
+            continue
+
         process_kernel_modules(
             context.root, kver,
             include=context.config.kernel_modules_include,
@@ -2863,6 +2877,7 @@ def build_image(args: Args, config: Config) -> None:
                     run_prepare_scripts(context, build=False)
                     install_build_packages(context)
                     run_prepare_scripts(context, build=True)
+                    run_depmod(context, force=True)
 
                 save_cache(context)
                 reuse_cache(context)