diff options
Diffstat (limited to 'gnu/packages/linux.scm')
-rw-r--r-- | gnu/packages/linux.scm | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index ca4ca563a3..91f7125e8a 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -31,18 +31,25 @@ #:use-module (guix download) #:use-module (guix build-system gnu)) +(define-public (system->linux-architecture arch) + "Return the Linux architecture name for ARCH, a Guix system name such as +\"x86_64-linux\"." + (let ((arch (car (string-split arch #\-)))) + (cond ((string=? arch "i686") "i386") + ((string-prefix? "mips" arch) "mips") + ((string-prefix? "arm" arch) "arm") + (else arch)))) + (define-public linux-libre-headers (let* ((version* "3.3.8") (build-phase - '(lambda* (#:key system #:allow-other-keys) - (let ((arch (car (string-split system #\-)))) - (setenv "ARCH" - (cond ((string=? arch "i686") "i386") - (else arch))) - (format #t "`ARCH' set to `~a'~%" (getenv "ARCH"))) + (lambda (arch) + `(lambda _ + (setenv "ARCH" ,(system->linux-architecture arch)) + (format #t "`ARCH' set to `~a'~%" (getenv "ARCH")) - (and (zero? (system* "make" "defconfig")) - (zero? (system* "make" "mrproper" "headers_check"))))) + (and (zero? (system* "make" "defconfig")) + (zero? (system* "make" "mrproper" "headers_check")))))) (install-phase `(lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) @@ -73,7 +80,7 @@ (guix build utils) (srfi srfi-1)) #:phases (alist-replace - 'build ,build-phase + 'build ,(build-phase (%current-system)) (alist-replace 'install ,install-phase (alist-delete 'configure %standard-phases))) |