system: Automatically adjust linux-module packages to use the

operating-system's kernel.

* gnu/system.scm (package-for-kernel): New procedure.
(operating-system-directory-base-entries): Use it.
* gnu/tests/linux-module.scm: Test it.
This commit is contained in:
Danny Milosavljevic 2020-04-22 22:58:11 +02:00
parent 2213d00fac
commit f91ad0b13d
No known key found for this signature in database
GPG Key ID: E71A35542C30BAA5
2 changed files with 27 additions and 2 deletions

View File

@ -33,6 +33,7 @@
#:use-module (guix derivations)
#:use-module (guix profiles)
#:use-module (guix ui)
#:use-module (guix utils)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages guile)
@ -477,6 +478,16 @@ OS."
(file-append (operating-system-kernel os)
"/" (system-linux-image-file-name)))
(define (package-for-kernel target-kernel module-package)
"Return a package like MODULE-PACKAGE, adapted for TARGET-KERNEL, if
possible (that is if there's a LINUX keyword argument in the build system)."
(package
(inherit module-package)
(arguments
(substitute-keyword-arguments (package-arguments module-package)
((#:linux kernel #f)
target-kernel)))))
(define* (operating-system-directory-base-entries os)
"Return the basic entries of the 'system' directory of OS for use as the
value of the SYSTEM-SERVICE-TYPE service."
@ -487,7 +498,12 @@ value of the SYSTEM-SERVICE-TYPE service."
(kernel
(profile-derivation
(packages->manifest
(cons kernel modules))
(cons kernel
(map (lambda (module)
(if (package? module)
(package-for-kernel kernel module)
module))
modules)))
#:hooks (list linux-module-database)))
(initrd -> (operating-system-initrd-file os))
(params -> (operating-system-boot-parameters-file os)))

View File

@ -28,8 +28,10 @@
#:use-module (guix derivations)
#:use-module (guix gexp)
#:use-module (guix modules)
#:use-module (guix packages)
#:use-module (guix monads)
#:use-module (guix store)
#:use-module (guix utils)
#:export (%test-loadable-kernel-modules-0
%test-loadable-kernel-modules-1
%test-loadable-kernel-modules-2))
@ -118,5 +120,12 @@ with one extra module.")
(description "Tests loadable kernel modules facility of <operating-system>
with two extra modules.")
(value (run-loadable-kernel-modules-test
(list acpi-call-linux-module ddcci-driver-linux)
(list acpi-call-linux-module
(package
(inherit ddcci-driver-linux)
(arguments
`(#:linux #f
,@(strip-keyword-arguments '(#:linux)
(package-arguments
ddcci-driver-linux))))))
'("acpi_call" "ddcci")))))