From: Danny Milosavljevic <dannym@scratchpost.org>
To: 30604@debbugs.gnu.org
Subject: [bug#30604] [PATCH v9 7/7] linux-initrd: Use module-aliases->module-file-names, too.
Date: Sun, 4 Mar 2018 02:09:14 +0100 [thread overview]
Message-ID: <20180304010914.1322-8-dannym@scratchpost.org> (raw)
In-Reply-To: <20180304010914.1322-1-dannym@scratchpost.org>
* gnu/system/linux-initrd.scm (flat-linux-module-directory): Use
module-aliases->module-file-names.
* gnu/build/linux-modules.scm (file-name->module-name): Export.
---
gnu/build/linux-modules.scm | 1 +
gnu/system/linux-initrd.scm | 67 ++++++++++++++++++++++++++-------------------
2 files changed, 40 insertions(+), 28 deletions(-)
diff --git a/gnu/build/linux-modules.scm b/gnu/build/linux-modules.scm
index f6bb0512b..81a4b15b1 100644
--- a/gnu/build/linux-modules.scm
+++ b/gnu/build/linux-modules.scm
@@ -35,6 +35,7 @@
ensure-dot-ko
module-aliases
module-aliases->module-file-names
+ file-name->module-name
module-dependencies
recursive-module-dependencies
modules-loaded
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm
index 339ecf754..0b976afad 100644
--- a/gnu/system/linux-initrd.scm
+++ b/gnu/system/linux-initrd.scm
@@ -161,17 +161,17 @@ the derivations referenced by EXP are automatically copied to the initrd."
#:references-graphs `(("init-closure" ,init)
("modprobe-closure" ,modprobe))))
-(define (flat-linux-module-directory linux modules)
- "Return a flat directory containing the Linux kernel modules listed in
-MODULES and taken from LINUX."
+(define (flat-linux-module-directory linux aliases)
+ "Return a flat directory containing the Linux kernel modules resolved by
+ALIASES and taken from LINUX."
(define build-exp
(with-imported-modules (source-module-closure
'((guix build utils)
(gnu build linux-modules)))
#~(begin
- (use-modules (ice-9 match) (ice-9 regex)
+ (use-modules (ice-9 match) (ice-9 ftw)
(srfi srfi-1)
- (guix build utils)
+ (guix build utils) ; mkdir-p
(gnu build linux-modules))
(define (string->regexp str)
@@ -181,31 +181,42 @@ 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 (find-only-entry directory)
+ (match (scandir directory)
+ (("." ".." basename)
+ (string-append directory "/" basename))))
- (define modules
- (let ((modules (map lookup '#$modules)))
- (append modules
- (recursive-module-dependencies modules
- #:lookup-module lookup))))
-
- (mkdir #$output)
- (for-each (lambda (module)
- (format #t "copying '~a'...~%" module)
- (copy-file module
- (string-append #$output "/"
- (basename module))))
- (delete-duplicates modules)))))
+ (define linux-release-module-directory
+ (find-only-entry module-dir))
+ (define modules
+ (module-aliases->module-file-names #$linux '#$aliases))
+
+ (define version
+ (basename linux-release-module-directory))
+
+ (define (install-module-files module-files output)
+ "Install MODULE-FILES to OUTPUT.
+Precondition: OUTPUT is an empty directory except for \"modules.builtin\"."
+ (let ((aliases
+ (map (lambda (module-file-name)
+ (format #t "copying '~a'...~%" module-file-name)
+ (copy-file module-file-name
+ (string-append output "/"
+ (basename module-file-name)))
+ `(,(file-name->module-name module-file-name) .
+ ,(module-aliases module-file-name)))
+ (sort module-files string<))))
+ (install-file (string-append linux-release-module-directory
+ "/modules.builtin")
+ output)
+ (write-module-alias-database aliases output)
+ (write-module-device-database aliases output)))
+
+ (let ((output (string-append #$output "/lib/modules/" version)))
+ (mkdir-p output)
+ (install-module-files (delete-duplicates modules) output)
+ #t))))
(computed-file "linux-modules" build-exp))
(define* (raw-initrd file-systems
next prev parent reply other threads:[~2018-03-04 1:10 UTC|newest]
Thread overview: 132+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-25 11:45 [bug#30604] [PATCH 0/4] Load Linux module only when supported hardware is present Danny Milosavljevic
2018-02-25 11:48 ` [bug#30604] [PATCH 1/4] gnu: kmod: Split off kmod-minimal Danny Milosavljevic
2018-02-25 11:48 ` [bug#30604] [PATCH 2/4] gnu: Add kmod-minimal-static Danny Milosavljevic
2018-02-25 11:48 ` [bug#30604] [PATCH 3/4] linux-initrd: Add kmod Danny Milosavljevic
2018-02-25 14:05 ` Mathieu Othacehe
2018-02-25 15:07 ` Danny Milosavljevic
2018-02-26 11:51 ` Mathieu Othacehe
2018-02-25 11:48 ` [bug#30604] [PATCH 4/4] linux-boot: Load kernel modules only when the hardware is present Danny Milosavljevic
2018-02-26 1:10 ` [bug#30604] [PATCH 1/4] gnu: kmod: Split off kmod-minimal Marius Bakke
2018-02-26 3:50 ` [bug#30604] [PATCH v2 0/6] Load Linux module only when supported hardware is present Danny Milosavljevic
2018-02-26 3:50 ` [bug#30604] [PATCH v2 1/6] gnu: kmod: Split off kmod-minimal Danny Milosavljevic
2018-02-26 3:50 ` [bug#30604] [PATCH v2 2/6] gnu: Add kmod-minimal-static Danny Milosavljevic
2018-02-26 3:50 ` [bug#30604] [PATCH v2 3/6] linux-initrd: Add kmod Danny Milosavljevic
2018-02-26 3:50 ` [bug#30604] [PATCH v2 4/6] linux-boot: Load kernel modules only when the hardware is present Danny Milosavljevic
2018-02-26 3:50 ` [bug#30604] [PATCH v2 5/6] vm: Allow qemu-image builder to load Linux kernel modules Danny Milosavljevic
2018-02-26 3:50 ` [bug#30604] [PATCH v2 6/6] vm: Make the virtio-blk is uniquely identifyable in /sys Danny Milosavljevic
2018-02-26 4:06 ` [bug#30604] [PATCH v3 0/6] Load Linux module only when supported hardware is present Danny Milosavljevic
2018-02-26 4:06 ` [bug#30604] [PATCH v3 1/6] gnu: kmod: Split off kmod-minimal Danny Milosavljevic
2018-02-26 4:06 ` [bug#30604] [PATCH v3 2/6] gnu: Add kmod-minimal-static Danny Milosavljevic
2018-02-26 4:06 ` [bug#30604] [PATCH v3 3/6] linux-initrd: Add kmod Danny Milosavljevic
2018-02-26 4:06 ` [bug#30604] [PATCH v3 4/6] linux-boot: Load kernel modules only when the hardware is present Danny Milosavljevic
2018-02-27 14:26 ` Ludovic Courtès
2018-02-26 4:06 ` [bug#30604] [PATCH v3 5/6] vm: Allow qemu-image builder to load Linux kernel modules Danny Milosavljevic
2018-02-26 4:06 ` [bug#30604] [PATCH v3 6/6] vm: Make the virtio-blk is uniquely identifyable in /sys Danny Milosavljevic
2018-02-27 11:26 ` [bug#30604] [PATCH v4 0/7] Load Linux module only when supported hardware is present Danny Milosavljevic
2018-02-27 11:26 ` [bug#30604] [PATCH v4 1/7] gnu: kmod: Split off kmod-minimal Danny Milosavljevic
2018-02-27 11:26 ` [bug#30604] [PATCH v4 2/7] gnu: Add kmod-minimal-static Danny Milosavljevic
2018-02-27 11:26 ` [bug#30604] [PATCH v4 3/7] linux-initrd: Add kmod Danny Milosavljevic
2018-02-27 11:26 ` [bug#30604] [PATCH v4 4/7] linux-boot: Load kernel modules only when the hardware is present Danny Milosavljevic
2018-02-27 11:26 ` [bug#30604] [PATCH v4 5/7] vm: Allow qemu-image builder to load Linux kernel modules Danny Milosavljevic
2018-02-27 11:26 ` [bug#30604] [PATCH v4 6/7] vm: Make the virtio-blk uniquely identifyable in /sys Danny Milosavljevic
2018-02-27 11:26 ` [bug#30604] [PATCH v4 7/7] linux-boot: Call make-static-device-nodes much earlier Danny Milosavljevic
2018-02-27 15:50 ` [bug#30604] [PATCH v5 0/7] Load Linux module only when supported hardware is present Danny Milosavljevic
2018-02-27 15:50 ` [bug#30604] [PATCH v5 1/7] gnu: kmod: Split off kmod-minimal Danny Milosavljevic
2018-02-27 15:50 ` [bug#30604] [PATCH v5 2/7] gnu: Add kmod-minimal-static Danny Milosavljevic
2018-02-27 15:50 ` [bug#30604] [PATCH v5 3/7] linux-initrd: Add kmod Danny Milosavljevic
2018-02-27 15:50 ` [bug#30604] [PATCH v5 4/7] linux-boot: Load kernel modules only when the hardware is present Danny Milosavljevic
2018-02-27 15:50 ` [bug#30604] [PATCH v5 5/7] vm: Allow qemu-image builder to load Linux kernel modules Danny Milosavljevic
2018-02-27 15:50 ` [bug#30604] [PATCH v5 6/7] vm: Make the virtio-blk is uniquely identifyable in /sys Danny Milosavljevic
2018-02-27 15:50 ` [bug#30604] [PATCH v5 7/7] linux-boot: Call make-static-device-nodes much earlier Danny Milosavljevic
2018-03-02 14:16 ` [bug#30604] [PATCH v6 0/6] Load Linux module only when supported hardware is present Danny Milosavljevic
2018-03-02 14:17 ` [bug#30604] [PATCH v6 1/6] linux-modules: Add module-aliases Danny Milosavljevic
2018-03-02 14:17 ` [bug#30604] [PATCH v6 2/6] linux-modules: Add install-modules Danny Milosavljevic
2018-03-02 14:17 ` [bug#30604] [PATCH v6 3/6] linux-boot: Load kernel modules only when the hardware is present Danny Milosavljevic
2018-03-02 14:17 ` [bug#30604] [PATCH v6 4/6] vm: Allow qemu-image builder to load Linux kernel modules Danny Milosavljevic
2018-03-02 14:17 ` [bug#30604] [PATCH v6 5/6] vm: Make the virtio-blk uniquely identifiable in /sys Danny Milosavljevic
2018-03-02 14:17 ` [bug#30604] [PATCH v6 6/6] linux-initrd: Provide modprobe to the initrd Danny Milosavljevic
2018-03-02 15:34 ` [bug#30604] [PATCH v7 0/6] Load Linux module only when supported hardware is present Danny Milosavljevic
2018-03-02 15:34 ` [bug#30604] [PATCH v7 1/6] linux-modules: Add module-aliases Danny Milosavljevic
2018-03-02 16:47 ` Danny Milosavljevic
2018-03-02 15:34 ` [bug#30604] [PATCH v7 2/6] linux-modules: Add install-modules Danny Milosavljevic
2018-03-02 15:34 ` [bug#30604] [PATCH v7 3/6] linux-boot: Load kernel modules only when the hardware is present Danny Milosavljevic
2018-03-02 16:47 ` Danny Milosavljevic
2018-03-02 15:34 ` [bug#30604] [PATCH v7 4/6] vm: Allow qemu-image builder to load Linux kernel modules Danny Milosavljevic
2018-03-02 15:34 ` [bug#30604] [PATCH v7 5/6] vm: Make the virtio-blk uniquely identifiable in /sys Danny Milosavljevic
2018-03-02 15:34 ` [bug#30604] [PATCH v7 6/6] linux-initrd: Provide modprobe to the initrd Danny Milosavljevic
2018-03-03 13:55 ` [bug#30604] [PATCH v8 0/7] Load Linux module only when supported hardware is present Danny Milosavljevic
2018-03-03 13:55 ` [bug#30604] [PATCH v8 1/7] linux-modules: Add module-aliases Danny Milosavljevic
2018-03-03 21:58 ` Ludovic Courtès
2018-03-03 13:55 ` [bug#30604] [PATCH v8 2/7] linux-modules: Add install-modules Danny Milosavljevic
2018-03-03 15:32 ` Danny Milosavljevic
2018-03-03 22:07 ` Ludovic Courtès
2018-03-04 12:45 ` Danny Milosavljevic
2018-03-04 12:53 ` Danny Milosavljevic
2018-03-03 13:55 ` [bug#30604] [PATCH v8 3/7] linux-boot: Load kernel modules only when the hardware is present Danny Milosavljevic
2018-03-03 22:48 ` Ludovic Courtès
2018-03-04 1:06 ` Danny Milosavljevic
2018-03-04 1:54 ` Danny Milosavljevic
2018-03-04 12:34 ` Danny Milosavljevic
2018-03-09 22:06 ` Ludovic Courtès
2018-03-09 22:13 ` Danny Milosavljevic
2018-03-09 22:19 ` Danny Milosavljevic
2018-03-09 22:44 ` Danny Milosavljevic
2018-03-12 12:38 ` Ludovic Courtès
2018-03-12 12:39 ` [bug#30604] [PATCH v10 1/6] linux-modules: Add "modules.alias" writer Ludovic Courtès
2018-03-12 12:39 ` [bug#30604] [PATCH v10 2/6] linux-modules: Add 'load-linux-modules-from-directory' Ludovic Courtès
2018-03-12 19:26 ` Danny Milosavljevic
2018-03-12 12:39 ` [bug#30604] [PATCH v10 3/6] linux-modules: Add 'load-needed-linux-modules' Ludovic Courtès
2018-03-12 19:40 ` Danny Milosavljevic
2018-03-12 21:10 ` Ludovic Courtès
2018-03-12 12:39 ` [bug#30604] [PATCH v10 4/6] vm: Make the virtio-blk uniquely identifiable in /sys Ludovic Courtès
2018-03-12 12:39 ` [bug#30604] [PATCH v10 5/6] linux-initrd: Provide our own 'modprobe' program Ludovic Courtès
2018-03-12 20:09 ` Danny Milosavljevic
2018-03-12 21:12 ` Danny Milosavljevic
2018-03-13 8:54 ` Ludovic Courtès
2018-03-12 22:14 ` Ludovic Courtès
2018-03-12 22:15 ` [bug#30604] [PATCH v11 1/6] linux-modules: Add "modules.alias" writer Ludovic Courtès
2018-03-12 22:15 ` [bug#30604] [PATCH v11 2/6] linux-modules: Add 'load-linux-modules-from-directory' Ludovic Courtès
2018-03-12 22:48 ` Danny Milosavljevic
2018-03-12 22:15 ` [bug#30604] [PATCH v11 3/6] linux-modules: Add 'load-needed-linux-modules' Ludovic Courtès
2018-03-12 23:00 ` Danny Milosavljevic
2018-03-13 8:55 ` Ludovic Courtès
2018-03-12 22:15 ` [bug#30604] [PATCH v11 4/6] vm: Make the virtio-blk uniquely identifiable in /sys Ludovic Courtès
2018-03-12 22:49 ` Danny Milosavljevic
2018-03-12 22:15 ` [bug#30604] [PATCH v11 5/6] linux-initrd: Provide our own 'modprobe' program Ludovic Courtès
2018-03-13 8:50 ` Ludovic Courtès
2018-03-13 9:28 ` Ludovic Courtès
2018-03-13 12:28 ` Danny Milosavljevic
2018-03-12 22:15 ` [bug#30604] [PATCH v11 6/6] linux-modules: Add "modules.devname" writer Ludovic Courtès
2018-03-12 22:55 ` Danny Milosavljevic
2018-03-13 8:56 ` Ludovic Courtès
2018-03-12 22:48 ` [bug#30604] [PATCH v11 1/6] linux-modules: Add "modules.alias" writer Danny Milosavljevic
2018-03-13 9:27 ` [bug#30604] [PATCH v10 5/6] linux-initrd: Provide our own 'modprobe' program Danny Milosavljevic
2018-03-13 10:51 ` Ludovic Courtès
2018-03-13 12:05 ` Danny Milosavljevic
2018-03-13 19:17 ` Danny Milosavljevic
2018-03-12 12:39 ` [bug#30604] [PATCH v10 6/6] linux-modules: Add "modules.devname" writer Ludovic Courtès
2018-03-12 19:54 ` [bug#30604] [PATCH v10 1/6] linux-modules: Add "modules.alias" writer Danny Milosavljevic
2018-03-12 21:13 ` Ludovic Courtès
2018-03-09 22:36 ` [bug#30604] [PATCH v8 3/7] linux-boot: Load kernel modules only when the hardware is present Danny Milosavljevic
2018-03-03 13:55 ` [bug#30604] [PATCH v8 4/7] vm: Allow qemu-image builder to load Linux kernel modules Danny Milosavljevic
2018-03-03 13:55 ` [bug#30604] [PATCH v8 5/7] vm: Make the virtio-blk uniquely identifiable in /sys Danny Milosavljevic
2018-03-03 13:55 ` [bug#30604] [PATCH v8 6/7] linux-initrd: Provide modprobe to the initrd Danny Milosavljevic
2018-03-03 13:55 ` [bug#30604] [PATCH v8 7/7] linux-initrd: Factorize %modprobe and flat-linux-module-directory Danny Milosavljevic
2018-03-03 18:01 ` Danny Milosavljevic
2018-03-04 1:09 ` [bug#30604] [PATCH v9 0/7] Load Linux module only when supported hardware is present Danny Milosavljevic
2018-03-04 1:09 ` [bug#30604] [PATCH v9 1/7] linux-modules: Add "modules.devname" and "modules.alias" writer Danny Milosavljevic
2018-03-04 1:09 ` [bug#30604] [PATCH v9 2/7] linux-modules: Add module-aliases->module-file-names Danny Milosavljevic
2018-03-04 1:09 ` [bug#30604] [PATCH v9 3/7] linux-initrd: Provide pure-Guile modprobe Danny Milosavljevic
2018-03-11 20:24 ` Danny Milosavljevic
2018-03-12 14:45 ` Ludovic Courtès
2018-03-12 17:51 ` Danny Milosavljevic
2018-03-04 1:09 ` [bug#30604] [PATCH v9 4/7] linux-boot: Load kernel modules only when the hardware is present Danny Milosavljevic
2018-03-04 1:09 ` [bug#30604] [PATCH v9 5/7] vm: Allow qemu-image builder to load Linux kernel modules Danny Milosavljevic
2018-03-04 1:09 ` [bug#30604] [PATCH v9 6/7] vm: Make the virtio-blk uniquely identifiable in /sys Danny Milosavljevic
2018-03-04 1:09 ` Danny Milosavljevic [this message]
2018-03-09 22:26 ` [bug#30604] [PATCH v9 7/7] linux-initrd: Use module-aliases->module-file-names, too Danny Milosavljevic
2018-03-18 15:03 ` [bug#30604] Keyboard detection before ‘cryptsetup’ runs Ludovic Courtès
2018-03-23 13:02 ` Danny Milosavljevic
2018-03-23 15:07 ` Danny Milosavljevic
2018-03-24 17:07 ` Ludovic Courtès
2018-03-24 17:12 ` Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180304010914.1322-8-dannym@scratchpost.org \
--to=dannym@scratchpost.org \
--cc=30604@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.