linux-initrd: Copy modules and their dependencies to the initrd.
* gnu/system/linux-initrd.scm (flat-linux-module-directory)[build-exp]: Add 'lookup' procedure. Use 'recursive-module-dependencies' to compute the list of modules to copy. Adjust #:modules parameter.
This commit is contained in:
parent
fcaa5f44a1
commit
600c285b63
|
@ -92,7 +92,9 @@ MODULES and taken from LINUX."
|
|||
(define build-exp
|
||||
#~(begin
|
||||
(use-modules (ice-9 match) (ice-9 regex)
|
||||
(guix build utils))
|
||||
(srfi srfi-1)
|
||||
(guix build utils)
|
||||
(gnu build linux-modules))
|
||||
|
||||
(define (string->regexp str)
|
||||
;; Return a regexp that matches STR exactly.
|
||||
|
@ -101,21 +103,35 @@ MODULES and taken from LINUX."
|
|||
(define module-dir
|
||||
(string-append #$linux "/lib/modules"))
|
||||
|
||||
(define (lookup module)
|
||||
(let ((name (ensure-dot-ko module)))
|
||||
(match (find-files module-dir (string->regexp name))
|
||||
((file)
|
||||
file)
|
||||
(()
|
||||
(error "module not found" name module-dir))
|
||||
((_ ...)
|
||||
(error "several modules by that name"
|
||||
name module-dir)))))
|
||||
|
||||
(define modules
|
||||
(let ((modules (map lookup '#$modules)))
|
||||
(append modules
|
||||
(recursive-module-dependencies modules
|
||||
#:lookup-module lookup))))
|
||||
|
||||
(mkdir #$output)
|
||||
(for-each (lambda (module)
|
||||
(match (find-files module-dir (string->regexp module))
|
||||
((file)
|
||||
(format #t "copying '~a'...~%" file)
|
||||
(copy-file file (string-append #$output "/" module)))
|
||||
(()
|
||||
(error "module not found" module module-dir))
|
||||
((_ ...)
|
||||
(error "several modules by that name"
|
||||
module module-dir))))
|
||||
'#$modules)))
|
||||
(format #t "copying '~a'...~%" module)
|
||||
(copy-file module
|
||||
(string-append #$output "/"
|
||||
(basename module))))
|
||||
(delete-duplicates modules))))
|
||||
|
||||
(gexp->derivation "linux-modules" build-exp
|
||||
#:modules '((guix build utils))))
|
||||
#:modules '((guix build utils)
|
||||
(guix elf)
|
||||
(gnu build linux-modules))))
|
||||
|
||||
(define (file-system->spec fs)
|
||||
"Return a list corresponding to file-system FS that can be passed to the
|
||||
|
|
Loading…
Reference in New Issue