(define-public (system->linux-architecture arch)
"Return the Linux architecture name for ARCH, a Guix system name such as
-\"x86_64-linux\"."
+\"x86_64-linux\" or a target triplet such as \"arm-linux-gnueabihf\"."
(let ((arch (car (string-split arch #\-))))
(cond ((string=? arch "i686") "i386")
((string-prefix? "mips" arch) "mips")
(source (origin
(method url-fetch)
(uri (string-append
- "mirror://kernel.org/linux/utils/kernel/module-init-tools/module-init-tools-"
- version ".tar.bz2"))
+ "mirror://kernel.org/linux/utils/kernel/module-init-tools/"
+ "module-init-tools-" version ".tar.bz2"))
(sha256
(base32
"0jxnz9ahfic79rp93l5wxcbgh4pkv85mwnjlbv1gz3jawv5cvwp1"))
(search-path %load-path file)))
(define-public linux-libre
- (let* ((version "4.7.2")
- (build-phase
- '(lambda* (#:key system inputs #:allow-other-keys #:rest args)
+ (package
+ (name "linux-libre")
+ (version "4.7.3")
+ (source (origin
+ (method url-fetch)
+ (uri (linux-libre-urls version))
+ (sha256
+ (base32
+ "18sy1vh4x66hsk0qbq8g5299my082d530zm8c7xnbakq7350igi6"))
+ (patches (origin-patches %boot-logo-patch))))
+ (build-system gnu-build-system)
+ (supported-systems '("x86_64-linux" "i686-linux"))
+ (native-inputs
+ `(("perl" ,perl)
+ ("bc" ,bc)
+ ("openssl" ,openssl)
+ ("module-init-tools" ,module-init-tools)
+
+ ,@(let ((conf (kernel-config
+ (or (%current-target-system)
+ (%current-system))
+ #:variant (version-major+minor version))))
+ (if conf
+ `(("kconfig" ,conf))
+ '()))))
+ (arguments
+ `(#:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (srfi srfi-1)
+ (ice-9 match))
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key inputs native-inputs target #:allow-other-keys)
;; Avoid introducing timestamps
(setenv "KCONFIG_NOTIMESTAMP" "1")
(setenv "KBUILD_BUILD_TIMESTAMP" (getenv "SOURCE_DATE_EPOCH"))
- ;; Apply the neat patch.
- (system* "patch" "-p1" "--force"
- "-i" (assoc-ref inputs "patch/freedo+gnu"))
+ ;; Set ARCH and CROSS_COMPILE
+ (let ((arch ,(system->linux-architecture
+ (or (%current-target-system)
+ (%current-system)))))
+ (setenv "ARCH" arch)
+ (format #t "`ARCH' set to `~a'~%" (getenv "ARCH"))
- (let ((arch (car (string-split system #\-))))
- (setenv "ARCH"
- (cond ((string=? arch "i686") "i386")
- ((string=? arch "mips64el") "mips")
- (else arch)))
- (format #t "`ARCH' set to `~a'~%" (getenv "ARCH")))
+ (when target
+ (setenv "CROSS_COMPILE" (string-append target "-"))
+ (format #t "`CROSS_COMPILE' set to `~a'~%"
+ (getenv "CROSS_COMPILE"))))
(let ((build (assoc-ref %standard-phases 'build))
(config (assoc-ref inputs "kconfig")))
port)
(close-port port))
- (zero? (system* "make" "oldconfig"))
-
- ;; Call the default `build' phase so `-j' is correctly
- ;; passed.
- (apply build #:make-flags "all" args))))
- (install-phase
- `(lambda* (#:key inputs outputs #:allow-other-keys)
+ (zero? (system* "make" "oldconfig")))))
+ (replace 'install
+ (lambda* (#:key inputs native-inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(moddir (string-append out "/lib/modules"))
- (mit (assoc-ref inputs "module-init-tools")))
+ (mit (assoc-ref (or native-inputs inputs) "module-init-tools")))
(mkdir-p moddir)
(for-each (lambda (file)
(copy-file file
(string-append "INSTALL_MOD_PATH=" out)
"INSTALL_MOD_STRIP=1"
"modules_install"))))))
- (package
- (name "linux-libre")
- (version version)
- (source (origin
- (method url-fetch)
- (uri (linux-libre-urls version))
- (sha256
- (base32
- "1rp09y2hv0hvdybm2n2im9717kzxmklpgzs8k1bmdfzqxyg8cb85"))))
- (build-system gnu-build-system)
- (supported-systems '("x86_64-linux" "i686-linux"))
- (native-inputs `(("perl" ,perl)
- ("bc" ,bc)
- ("openssl" ,openssl)
- ("module-init-tools" ,module-init-tools)
- ("patch/freedo+gnu" ,%boot-logo-patch)
-
- ,@(let ((conf (kernel-config
- (or (%current-target-system)
- (%current-system))
- #:variant (version-major+minor version))))
- (if conf
- `(("kconfig" ,conf))
- '()))))
- (arguments
- `(#:modules ((guix build gnu-build-system)
- (guix build utils)
- (srfi srfi-1)
- (ice-9 match))
- #:phases (alist-replace
- 'build ,build-phase
- (alist-replace
- 'install ,install-phase
- (alist-delete 'configure %standard-phases)))
#:tests? #f))
+ (home-page "http://www.gnu.org/software/linux-libre/")
(synopsis "100% free redistribution of a cleaned Linux kernel")
(description
"GNU Linux-Libre is a free (as in freedom) variant of the Linux kernel.
It has been modified to remove all non-free binary blobs.")
- (license license:gpl2)
- (home-page "http://www.gnu.org/software/linux-libre/"))))
+ (license license:gpl2)))
(define-public linux-libre-4.4
(package
(inherit linux-libre)
- (version "4.4.19")
+ (version "4.4.20")
(source (origin
(method url-fetch)
(uri (linux-libre-urls version))
(sha256
(base32
- "0nddjs7prmb0g7g3w2k4qfyq02a9szm5nvsgflxcaarbq1slibb5"))))
+ "1fi0pyyzcf643vdsss0d9ld6jqyxw0k76r0a5vpd4mv3dcl37yyq"))))
(native-inputs
(let ((conf (kernel-config (or (%current-target-system)
(%current-system))