summaryrefslogtreecommitdiff
path: root/gnu/tests
diff options
context:
space:
mode:
authorraid5atemyhomework <raid5atemyhomework@protonmail.com>2021-03-22 11:23:32 +0800
committerDanny Milosavljevic <dannym@scratchpost.org>2021-05-11 16:13:48 +0200
commita3df382525ac515d1aa083f7f5bd3bd31eb1df40 (patch)
treeceaa4eaf3a5c2d2a85e64ca83b7d23a9e9d306ed /gnu/tests
parentbddad00bffc5837e89942756fa5b7234f63f1f47 (diff)
gnu: Allow services to install kernel-loadable modules.
* gnu/system.scm (operating-system-directory-base-entries): Remove code to handle generation of "kernel" for linux-libre kernels. (operating-system-default-essential-services): Instantiate linux-builder-service-type. (package-for-kernel): Move ... * gnu/services.scm: ... to here. (linux-builder-service-type): New variable. (linux-builder-configuration): New type. (linux-loadable-module-service-type): New variable. * gnu/tests/linux-modules.scm (run-loadable-kernel-modules-test): Move code to ... (run-loadable-kernel-modules-test-base): ... new procedure here. (run-loadable-kernel-modules-service-test): New procedure. (%test-loadable-kernel-modules-service-0): New variable. (%test-loadable-kernel-modules-service-1): New variable. (%test-loadable-kernel-modules-service-2): New variable. * doc/guix.texi: Document linux-loadable-module-service-type. Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
Diffstat (limited to 'gnu/tests')
-rw-r--r--gnu/tests/linux-modules.scm80
1 files changed, 70 insertions, 10 deletions
diff --git a/gnu/tests/linux-modules.scm b/gnu/tests/linux-modules.scm
index 953b132ef7b..30d8eae03b8 100644
--- a/gnu/tests/linux-modules.scm
+++ b/gnu/tests/linux-modules.scm
@@ -2,6 +2,7 @@
2;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org> 2;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org>
3;;; Copyright © 2020 Danny Milosavljevic <dannym@scratchpost.org> 3;;; Copyright © 2020 Danny Milosavljevic <dannym@scratchpost.org>
4;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> 4;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
5;;; Copyright © 2021 raid5atemyhomework <raid5atemyhomework@protonmail.com>
5;;; 6;;;
6;;; This file is part of GNU Guix. 7;;; This file is part of GNU Guix.
7;;; 8;;;
@@ -34,7 +35,10 @@
34 #:use-module (guix utils) 35 #:use-module (guix utils)
35 #:export (%test-loadable-kernel-modules-0 36 #:export (%test-loadable-kernel-modules-0
36 %test-loadable-kernel-modules-1 37 %test-loadable-kernel-modules-1
37 %test-loadable-kernel-modules-2)) 38 %test-loadable-kernel-modules-2
39 %test-loadable-kernel-modules-service-0
40 %test-loadable-kernel-modules-service-1
41 %test-loadable-kernel-modules-service-2))
38 42
39;;; Commentary: 43;;; Commentary:
40;;; 44;;;
@@ -66,17 +70,11 @@ that MODULES are actually loaded."
66 (member module modules string=?)) 70 (member module modules string=?))
67 '#$modules)))))) 71 '#$modules))))))
68 72
69(define* (run-loadable-kernel-modules-test module-packages module-names) 73(define* (run-loadable-kernel-modules-test-base base-os module-names)
70 "Run a test of an OS having MODULE-PACKAGES, and verify that MODULE-NAMES 74 "Run a test of BASE-OS, verifying that MODULE-NAMES are loaded in memory."
71are loaded in memory."
72 (define os 75 (define os
73 (marionette-operating-system 76 (marionette-operating-system
74 (operating-system 77 base-os
75 (inherit (simple-operating-system))
76 (services (cons (service kernel-module-loader-service-type module-names)
77 (operating-system-user-services
78 (simple-operating-system))))
79 (kernel-loadable-modules module-packages))
80 #:imported-modules '((guix combinators)))) 78 #:imported-modules '((guix combinators))))
81 (define vm (virtual-machine os)) 79 (define vm (virtual-machine os))
82 (define (test script) 80 (define (test script)
@@ -98,6 +96,36 @@ are loaded in memory."
98 (gexp->derivation "loadable-kernel-modules" 96 (gexp->derivation "loadable-kernel-modules"
99 (test (modules-loaded?-program os module-names)))) 97 (test (modules-loaded?-program os module-names))))
100 98
99(define* (run-loadable-kernel-modules-test module-packages module-names)
100 "Run a test of an OS having MODULE-PACKAGES, and verify that MODULE-NAMES
101are loaded in memory."
102 (run-loadable-kernel-modules-test-base
103 (operating-system
104 (inherit (simple-operating-system))
105 (services (cons (service kernel-module-loader-service-type module-names)
106 (operating-system-user-services
107 (simple-operating-system))))
108 (kernel-loadable-modules module-packages))
109 module-names))
110
111(define* (run-loadable-kernel-modules-service-test module-packages module-names)
112 "Run a test of an OS having MODULE-PACKAGES, which are loaded by creating a
113service that extends LINUXL-LOADABLE-MODULE-SERVICE-TYPE. Then verify that
114MODULE-NAMES are loaded in memory."
115 (define module-installing-service-type
116 (service-type
117 (name 'module-installing-service)
118 (extensions (list (service-extension linux-loadable-module-service-type
119 (const module-packages))))
120 (default-value #f)))
121 (run-loadable-kernel-modules-test-base
122 (operating-system
123 (inherit (simple-operating-system))
124 (services (cons* (service module-installing-service-type)
125 (operating-system-user-services
126 (simple-operating-system)))))
127 module-names))
128
101(define %test-loadable-kernel-modules-0 129(define %test-loadable-kernel-modules-0
102 (system-test 130 (system-test
103 (name "loadable-kernel-modules-0") 131 (name "loadable-kernel-modules-0")
@@ -129,3 +157,35 @@ with two extra modules.")
129 (package-arguments 157 (package-arguments
130 ddcci-driver-linux)))))) 158 ddcci-driver-linux))))))
131 '("acpi_call" "ddcci"))))) 159 '("acpi_call" "ddcci")))))
160
161(define %test-loadable-kernel-modules-service-0
162 (system-test
163 (name "loadable-kernel-modules-service-0")
164 (description "Tests loadable kernel modules extensible service with no
165extra modules.")
166 (value (run-loadable-kernel-modules-service-test '() '()))))
167
168(define %test-loadable-kernel-modules-service-1
169 (system-test
170 (name "loadable-kernel-modules-service-1")
171 (description "Tests loadable kernel modules extensible service with one
172extra module.")
173 (value (run-loadable-kernel-modules-service-test
174 (list ddcci-driver-linux)
175 '("ddcci")))))
176
177(define %test-loadable-kernel-modules-service-2
178 (system-test
179 (name "loadable-kernel-modules-service-2")
180 (description "Tests loadable kernel modules extensible service with two
181extra modules.")
182 (value (run-loadable-kernel-modules-service-test
183 (list acpi-call-linux-module
184 (package
185 (inherit ddcci-driver-linux)
186 (arguments
187 `(#:linux #f
188 ,@(strip-keyword-arguments '(#:linux)
189 (package-arguments
190 ddcci-driver-linux))))))
191 '("acpi_call" "ddcci")))))