aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/linux.scm
diff options
context:
space:
mode:
authorDanny Milosavljevic <dannym@scratchpost.org>2020-02-18 10:42:07 +0100
committerDanny Milosavljevic <dannym@scratchpost.org>2020-03-22 12:51:50 +0100
commit5c79f238634c5adb6657f1b4b1bb4ddb8bb73ef1 (patch)
tree9aa461be2cf3ede11048d3e7c4280b89de4ac73b /gnu/packages/linux.scm
parent66a198c8075f02d7075a555b48dd3adde88ebbbf (diff)
downloadguix-5c79f238634c5adb6657f1b4b1bb4ddb8bb73ef1.tar
guix-5c79f238634c5adb6657f1b4b1bb4ddb8bb73ef1.tar.gz
system: Add kernel-loadable-modules to operating-system.
* gnu/system.scm (<operating-system>): Add kernel-loadable-modules. (operating-system-directory-base-entries): Use it. * doc/guix.texi (operating-system Reference): Document KERNEL-LOADABLE-MODULES. * gnu/build/linux-modules.scm (depmod): New procedure. (make-linux-module-directory): New procedure. Export it. * guix/profiles.scm (linux-module-database): New procedure. Export it. * gnu/tests/linux-modules.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. * gnu/packages/linux.scm (make-linux-libre*)[arguments]<#:phases>[install]: Disable depmod. Remove "build" and "source" symlinks. [native-inputs]: Remove kmod.
Diffstat (limited to 'gnu/packages/linux.scm')
-rw-r--r--gnu/packages/linux.scm26
1 files changed, 21 insertions, 5 deletions
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index ffc4776f94..c39c411e3d 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -654,7 +654,6 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
`(("perl" ,perl)
("bc" ,bc)
("openssl" ,openssl)
- ("kmod" ,kmod)
("elfutils" ,elfutils) ; Needed to enable CONFIG_STACK_VALIDATION
("flex" ,flex)
("bison" ,bison)
@@ -678,6 +677,7 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
(guix build utils)
(srfi srfi-1)
(srfi srfi-26)
+ (ice-9 ftw)
(ice-9 match))
#:phases
(modify-phases %standard-phases
@@ -750,8 +750,7 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
(lambda* (#:key inputs native-inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(moddir (string-append out "/lib/modules"))
- (dtbdir (string-append out "/lib/dtbs"))
- (kmod (assoc-ref (or native-inputs inputs) "kmod")))
+ (dtbdir (string-append out "/lib/dtbs")))
;; Install kernel image, kernel configuration and link map.
(for-each (lambda (file) (install-file file out))
(find-files "." "^(\\.config|bzImage|zImage|Image|vmlinuz|System\\.map|Module\\.symvers)$"))
@@ -763,12 +762,29 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
;; Install kernel modules
(mkdir-p moddir)
(invoke "make"
- (string-append "DEPMOD=" kmod "/bin/depmod")
+ ;; Disable depmod because the Guix system's module directory
+ ;; is an union of potentially multiple packages. It is not
+ ;; possible to use depmod to usefully calculate a dependency
+ ;; graph while building only one of those packages.
+ "DEPMOD=true"
(string-append "MODULE_DIR=" moddir)
(string-append "INSTALL_PATH=" out)
(string-append "INSTALL_MOD_PATH=" out)
"INSTALL_MOD_STRIP=1"
- "modules_install")))))
+ "modules_install")
+ (let* ((versions (filter (lambda (name)
+ (not (string-prefix? "." name)))
+ (scandir moddir)))
+ (version (match versions
+ ((x) x))))
+ ;; There are symlinks to the build and source directory,
+ ;; both of which will point to target /tmp/guix-build*
+ ;; and thus not be useful in a profile. Delete the symlinks.
+ (false-if-file-not-found
+ (delete-file (string-append moddir "/" version "/build")))
+ (false-if-file-not-found
+ (delete-file (string-append moddir "/" version "/source"))))
+ #t))))
#:tests? #f))
(home-page "https://www.gnu.org/software/linux-libre/")
(synopsis "100% free redistribution of a cleaned Linux kernel")