linux-modules: Add "modules.alias" writer.

* gnu/build/linux-modules.scm (write-module-alias-database): New
procedure.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
master
Danny Milosavljevic 2018-03-04 02:09:08 +01:00 committed by Ludovic Courtès
parent 268896444b
commit 4f8b9d1a6f
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 22 additions and 1 deletions

View File

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -48,7 +49,9 @@
device-module-aliases
known-module-aliases
matching-modules
missing-modules))
missing-modules
write-module-alias-database))
;;; Commentary:
;;;
@ -486,4 +489,22 @@ are required to access DEVICE."
(remove (cut member <> provided) modules))
'()))
(define (write-module-alias-database directory)
"Traverse the '.ko' files in DIRECTORY and create the corresponding
'modules.alias' file."
(define aliases
(map (lambda (file)
(cons (file-name->module-name file) (module-aliases file)))
(find-files directory "\\.ko$")))
(call-with-output-file (string-append directory "/modules.alias")
(lambda (port)
(display "# Aliases extracted from modules themselves.\n" port)
(for-each (match-lambda
((module . aliases)
(for-each (lambda (alias)
(format port "alias ~a ~a\n" alias module))
aliases)))
aliases))))
;;; linux-modules.scm ends here