diff options
| author | Ludovic Courtès <ludo@gnu.org> | 2018-07-29 18:31:42 +0200 |
|---|---|---|
| committer | Ludovic Courtès <ludo@gnu.org> | 2018-07-29 18:50:28 +0200 |
| commit | fcd068e984078ab74c6842af2525bf88096cd262 (patch) | |
| tree | 01a18470cb88a13a6c9d2dbc33cd098dfa93c083 /gnu/system | |
| parent | d2a1cf45f74f4be67bd51068fc531a1b8ae54536 (diff) | |
linux-initrd: Try several file names when looking up modules.
Fixes <https://bugs.gnu.org/31714>.
Reported by Tonton <tonton@riseup.net>.
* gnu/build/linux-modules.scm (find-module-file): New procedure.
* gnu/system/linux-initrd.scm (flat-linux-module-directory)[build-exp]:
Remove 'lookup' procedure and use 'find-module-file' instead.
* gnu/system/mapped-devices.scm (check-device-initrd-modules): Add
comment.
Diffstat (limited to 'gnu/system')
| -rw-r--r-- | gnu/system/linux-initrd.scm | 26 | ||||
| -rw-r--r-- | gnu/system/mapped-devices.scm | 4 |
2 files changed, 9 insertions, 21 deletions
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm index d73ebfd8d35..a5a111908fd 100644 --- a/gnu/system/linux-initrd.scm +++ b/gnu/system/linux-initrd.scm | |||
| @@ -108,34 +108,18 @@ the derivations referenced by EXP are automatically copied to the initrd." | |||
| 108 | MODULES and taken from LINUX." | 108 | MODULES and taken from LINUX." |
| 109 | (define build-exp | 109 | (define build-exp |
| 110 | (with-imported-modules (source-module-closure | 110 | (with-imported-modules (source-module-closure |
| 111 | '((guix build utils) | 111 | '((gnu build linux-modules))) |
| 112 | (gnu build linux-modules))) | ||
| 113 | #~(begin | 112 | #~(begin |
| 114 | (use-modules (ice-9 match) (ice-9 regex) | 113 | (use-modules (gnu build linux-modules) |
| 115 | (srfi srfi-1) | 114 | (srfi srfi-1) |
| 116 | (guix build utils) | 115 | (srfi srfi-26)) |
| 117 | (gnu build linux-modules)) | ||
| 118 | |||
| 119 | (define (string->regexp str) | ||
| 120 | ;; Return a regexp that matches STR exactly. | ||
| 121 | (string-append "^" (regexp-quote str) "$")) | ||
| 122 | 116 | ||
| 123 | (define module-dir | 117 | (define module-dir |
| 124 | (string-append #$linux "/lib/modules")) | 118 | (string-append #$linux "/lib/modules")) |
| 125 | 119 | ||
| 126 | (define (lookup module) | ||
| 127 | (let ((name (ensure-dot-ko module))) | ||
| 128 | (match (find-files module-dir (string->regexp name)) | ||
| 129 | ((file) | ||
| 130 | file) | ||
| 131 | (() | ||
| 132 | (error "module not found" name module-dir)) | ||
| 133 | ((_ ...) | ||
| 134 | (error "several modules by that name" | ||
| 135 | name module-dir))))) | ||
| 136 | |||
| 137 | (define modules | 120 | (define modules |
| 138 | (let ((modules (map lookup '#$modules))) | 121 | (let* ((lookup (cut find-module-file module-dir <>)) |
| 122 | (modules (map lookup '#$modules))) | ||
| 139 | (append modules | 123 | (append modules |
| 140 | (recursive-module-dependencies modules | 124 | (recursive-module-dependencies modules |
| 141 | #:lookup-module lookup)))) | 125 | #:lookup-module lookup)))) |
diff --git a/gnu/system/mapped-devices.scm b/gnu/system/mapped-devices.scm index aec49322e7c..384b1aaf7df 100644 --- a/gnu/system/mapped-devices.scm +++ b/gnu/system/mapped-devices.scm | |||
| @@ -137,6 +137,10 @@ DEVICE must be a \"/dev\" file name." | |||
| 137 | ;; LINUX-MODULES is file names without '.ko', so normalize them. | 137 | ;; LINUX-MODULES is file names without '.ko', so normalize them. |
| 138 | (provided (map file-name->module-name linux-modules))) | 138 | (provided (map file-name->module-name linux-modules))) |
| 139 | (unless (every (cut member <> provided) modules) | 139 | (unless (every (cut member <> provided) modules) |
| 140 | ;; Note: What we suggest here is a list of module names (e.g., | ||
| 141 | ;; "usb_storage"), not file names (e.g., "usb-storage.ko"). This is | ||
| 142 | ;; OK because we have machinery that accepts both the hyphen and the | ||
| 143 | ;; underscore version. | ||
| 140 | (raise (condition | 144 | (raise (condition |
| 141 | (&message | 145 | (&message |
| 142 | (message (format #f (G_ "you may need these modules \ | 146 | (message (format #f (G_ "you may need these modules \ |
