diff options
author | Ludovic Courtès <ludo@gnu.org> | 2014-07-10 13:03:46 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2014-07-10 13:03:46 +0200 |
commit | 1650dd8a38019d539086f74981ce3f96f9679da4 (patch) | |
tree | 3b840468e654109e4745905378bace4e8e885831 | |
parent | 9ca7eaa134088c0a3e0b4f53fca84a5b82c8f8ec (diff) |
gnu: linux-libre: Fallback to 'defconfig' when there's no config file.
* gnu/packages/linux.scm (kernel-config): Return #f rather than error
out in the default case.
(linux-libre)[native-inputs]: Add "kconfig" input only when
'kernel-config' returns true.
[build-phase]: Adjust accordingly.
-rw-r--r-- | gnu/packages/linux.scm | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 0db08fc7c8..167775a700 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -172,7 +172,7 @@ (define (kernel-config system) "Return the absolute file name of the Linux-Libre build configuration file -for SYSTEM." +for SYSTEM, or #f if there is no configuration for SYSTEM." (define (lookup file) (let ((file (string-append "gnu/packages/" file))) (search-path %load-path file))) @@ -183,7 +183,7 @@ for SYSTEM." ("x86_64-linux" (lookup "linux-libre-x86_64.conf")) (_ - (error "unsupported architecture" system)))) + #f))) (define-public linux-libre (let* ((version "3.15") @@ -201,8 +201,14 @@ for SYSTEM." (let ((build (assoc-ref %standard-phases 'build)) (config (assoc-ref inputs "kconfig"))) - (copy-file config ".config") - (chmod ".config" #o666) + + ;; Use the architecture-specific config if available, and + ;; 'defconfig' otherwise. + (if config + (begin + (copy-file config ".config") + (chmod ".config" #o666)) + (system* "make" "defconfig")) ;; Appending works even when the option wasn't in the ;; file. The last one prevails if duplicated. @@ -258,8 +264,12 @@ for SYSTEM." ("bc" ,bc) ("module-init-tools" ,module-init-tools) ("patch/freedo+gnu" ,%boot-logo-patch) - ("kconfig" ,(kernel-config (or (%current-target-system) - (%current-system)))))) + + ,@(let ((conf (kernel-config (or (%current-target-system) + (%current-system))))) + (if conf + `(("kconfig" ,conf)) + '())))) (arguments `(#:modules ((guix build gnu-build-system) (guix build utils) |