Message ID | 7256f0ce334fc064a904e6d9748e9ccc7e67dfda.1708926797.git.hako@ultrarare.space |
---|---|
State | New |
Headers | show |
Series | [bug#69400] linux-initrd: Avoid looking up builtin modules. | expand |
Hi, Hilton Chain <hako@ultrarare.space> skribis: > * gnu/system/linux-initrd.scm (flat-linux-module-directory) > [build-exp]<builtin-modules,modules-to-lookup>: New variables. > <modules>: Use ‘modules-to-lookup’ to avoid looking up builtin modules. > > Change-Id: I60fdae0211bb6632508b1c63582e013e78186cd1 Good catch! Did you experience build failures because of that? (Namely, the machinery looking for modules that didn’t exist.) LGTM, thanks! Ludo’.
Hi, On Thu, 07 Mar 2024 06:21:45 +0800, Ludovic Courtès wrote: > > Hi, > > Hilton Chain <hako@ultrarare.space> skribis: > > > * gnu/system/linux-initrd.scm (flat-linux-module-directory) > > [build-exp]<builtin-modules,modules-to-lookup>: New variables. > > <modules>: Use ‘modules-to-lookup’ to avoid looking up builtin modules. > > > > Change-Id: I60fdae0211bb6632508b1c63582e013e78186cd1 > > Good catch! Did you experience build failures because of that? > (Namely, the machinery looking for modules that didn’t exist.) > > LGTM, thanks! Yes, I actually encountered the issue back to the first time customizing a kernel with Guix System! Recently I tried to write a script to enable all possible modules for (gnu system linux-initrd) and realized "CONFIG_CRYPTO_ECB" (required for CIFS support) in defconfig for part of our kernels are set to built-in. As a result, I think it's now necessary to make a change within Guix instead. :) Applied as 8f8ec56052766aa5105d672b77ad9eaca5c1ab3c. Thanks
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm index 5847f52a37..25563b703f 100644 --- a/gnu/system/linux-initrd.scm +++ b/gnu/system/linux-initrd.scm @@ -132,15 +132,27 @@ (define (flat-linux-module-directory linux modules) #~(begin (use-modules (gnu build linux-modules) (guix build utils) + (rnrs io ports) (srfi srfi-1) (srfi srfi-26)) (define module-dir (string-append #$linux "/lib/modules")) + (define builtin-modules + (call-with-input-file + (first (find-files module-dir "modules.builtin$")) + (lambda (port) + (map file-name->module-name + (string-tokenize + (get-string-all port)))))) + + (define modules-to-lookup + (lset-difference string=? '#$modules builtin-modules)) + (define modules (let* ((lookup (cut find-module-file module-dir <>)) - (modules (map lookup '#$modules))) + (modules (map lookup modules-to-lookup))) (append modules (recursive-module-dependencies modules