Archived
1
0
Fork 0

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 derivations)
#:use-module (guix profiles) #:use-module (guix profiles)
#:use-module (guix ui) #:use-module (guix ui)
#:use-module (guix utils)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages bash) #:use-module (gnu packages bash)
#:use-module (gnu packages guile) #:use-module (gnu packages guile)
@ -477,6 +478,16 @@ OS."
(file-append (operating-system-kernel os) (file-append (operating-system-kernel os)
"/" (system-linux-image-file-name))) "/" (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) (define* (operating-system-directory-base-entries os)
"Return the basic entries of the 'system' directory of OS for use as the "Return the basic entries of the 'system' directory of OS for use as the
value of the SYSTEM-SERVICE-TYPE service." value of the SYSTEM-SERVICE-TYPE service."
@ -487,7 +498,12 @@ value of the SYSTEM-SERVICE-TYPE service."
(kernel (kernel
(profile-derivation (profile-derivation
(packages->manifest (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))) #:hooks (list linux-module-database)))
(initrd -> (operating-system-initrd-file os)) (initrd -> (operating-system-initrd-file os))
(params -> (operating-system-boot-parameters-file os))) (params -> (operating-system-boot-parameters-file os)))

View file

@ -28,8 +28,10 @@
#:use-module (guix derivations) #:use-module (guix derivations)
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (guix modules) #:use-module (guix modules)
#:use-module (guix packages)
#:use-module (guix monads) #:use-module (guix monads)
#:use-module (guix store) #:use-module (guix store)
#:use-module (guix utils)
#:export (%test-loadable-kernel-modules-0 #:export (%test-loadable-kernel-modules-0
%test-loadable-kernel-modules-1 %test-loadable-kernel-modules-1
%test-loadable-kernel-modules-2)) %test-loadable-kernel-modules-2))
@ -118,5 +120,12 @@ with one extra module.")
(description "Tests loadable kernel modules facility of <operating-system> (description "Tests loadable kernel modules facility of <operating-system>
with two extra modules.") with two extra modules.")
(value (run-loadable-kernel-modules-test (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"))))) '("acpi_call" "ddcci")))))