summary refs log tree commit diff
path: root/gnu/packages/linux.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-07-10 13:03:46 +0200
committerLudovic Courtès <ludo@gnu.org>2014-07-10 13:03:46 +0200
commit1650dd8a38019d539086f74981ce3f96f9679da4 (patch)
tree3b840468e654109e4745905378bace4e8e885831 /gnu/packages/linux.scm
parent9ca7eaa134088c0a3e0b4f53fca84a5b82c8f8ec (diff)
downloadguix-1650dd8a38019d539086f74981ce3f96f9679da4.tar.gz
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.
Diffstat (limited to 'gnu/packages/linux.scm')
-rw-r--r--gnu/packages/linux.scm22
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)