[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
05/09: gnu: make-crust-package: Memoize.
From: |
guix-commits |
Subject: |
05/09: gnu: make-crust-package: Memoize. |
Date: |
Mon, 22 Jan 2024 05:33:07 -0500 (EST) |
mothacehe pushed a commit to branch master
in repository guix.
commit e5a00639aa6490f3f2047174be719d2defda9c4a
Author: Jean-Pierre De Jesus DIAZ <jean@foundationdevices.com>
AuthorDate: Fri Jan 19 14:54:44 2024 +0100
gnu: make-crust-package: Memoize.
* gnu/packages/firmware.scm (make-crust-package): Use mlambda.
Change-Id: I2d916b96bc650f3731a69505e086cf8f8f470809
---
gnu/packages/firmware.scm | 155 +++++++++++++++++++++++-----------------------
1 file changed, 78 insertions(+), 77 deletions(-)
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index 533cbca550..eb5251de5e 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -1197,81 +1197,82 @@ such as:
;; Adding debug symbols causes the size to exceed limits.
#~(delete "DEBUG=1" #$flags)))))))
-(define (make-crust-package platform)
- (package
- (name (string-append "crust-"
- (string-replace-substring platform "_" "-")))
- (version "0.5")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- ;; There are only GitHub generated release snapshots.
- (url "https://github.com/crust-firmware/crust")
- (commit (string-append "v" version))))
- (file-name (git-file-name "crust" version))
- (sha256
- (base32
- "0xgbbhifg3miwd3yp6jq9kp7nqgz5gzy00w95vba45j8jk5vjvvz"))))
- (build-system gnu-build-system)
- (arguments
- (list
- #:tests? #f ;no test suite
- #:make-flags
- (let ((triplet-without-vendor
- (and (%current-target-system)
- ;; TODO: Is there a use case for allowing this?
- (not (target-avr?))
- (match (string-split (nix-system->gnu-triplet
- (%current-target-system)) #\-)
- ((arch vendor os ..1)
- (string-join `(,arch ,@os) "-"))))))
- #~(list "CROSS_COMPILE=or1k-elf-"
- "V=1"
- #$@(if triplet-without-vendor
- ;; We are cross-compiling the tools, intended to be
- ;; executable for the target system.
- (list (string-append "HOSTAR=" triplet-without-vendor
- "-ar")
- (string-append "HOSTCC=" triplet-without-vendor
- "-gcc"))
- ;; Not cross-compiling.
- (list "HOSTAR=ar"
- "HOSTCC=gcc"))
- "LEX=flex"))
- #:phases
- #~(modify-phases %standard-phases
- (add-after 'unpack 'do-not-build-tests
- (lambda _
- ;; Attempting to build the tools test binary on a non-aarch64
- ;; architecture fails with: "No cache cleaning implementation
- ;; available for this architecture". Avoid building it (see:
- ;; https://github.com/crust-firmware/crust/issues/182).
- (substitute* "tools/Makefile"
- (("tools-y \\+= test") ""))))
- (delete 'configure)
- (add-before 'build 'defconfig
- (lambda* (#:key make-flags #:allow-other-keys)
- (let ((config-name (string-append #$platform "_defconfig")))
- (apply invoke "make" (cons config-name make-flags)))))
- (replace 'install
- (lambda _
- (for-each (lambda (file)
- (install-file file (string-append #$output
- "/libexec")))
- (find-files "." "(scp\\.bin|\\.config)$"))
- (install-file "build/tools/load"
- (string-append #$output "/bin")))))))
- ;; The firmware is cross-compiled using a "bare bones" compiler (no libc).
- ;; Use our own tool chain for that.
- (native-inputs
- (list bison
- (cross-gcc "or1k-elf")
- (cross-binutils "or1k-elf")
- flex))
- (home-page "https://github.com/crust-firmware/crust")
- (synopsis "Firmware for Allwinner sunxi SoCs")
- (description "Crust improves battery life and thermal performance by
+(define make-crust-package
+ (mlambda (platform)
+ (package
+ (name (string-append "crust-"
+ (string-replace-substring platform "_" "-")))
+ (version "0.5")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ ;; There are only GitHub generated release snapshots.
+ (url "https://github.com/crust-firmware/crust")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name "crust" version))
+ (sha256
+ (base32
+ "0xgbbhifg3miwd3yp6jq9kp7nqgz5gzy00w95vba45j8jk5vjvvz"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list
+ #:tests? #f ;no test suite
+ #:make-flags
+ (let ((triplet-without-vendor
+ (and (%current-target-system)
+ ;; TODO: Is there a use case for allowing this?
+ (not (target-avr?))
+ (match (string-split (nix-system->gnu-triplet
+ (%current-target-system)) #\-)
+ ((arch vendor os ..1)
+ (string-join `(,arch ,@os) "-"))))))
+ #~(list "CROSS_COMPILE=or1k-elf-"
+ "V=1"
+ #$@(if triplet-without-vendor
+ ;; We are cross-compiling the tools, intended to be
+ ;; executable for the target system.
+ (list (string-append "HOSTAR=" triplet-without-vendor
+ "-ar")
+ (string-append "HOSTCC=" triplet-without-vendor
+ "-gcc"))
+ ;; Not cross-compiling.
+ (list "HOSTAR=ar"
+ "HOSTCC=gcc"))
+ "LEX=flex"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'do-not-build-tests
+ (lambda _
+ ;; Attempting to build the tools test binary on a non-aarch64
+ ;; architecture fails with: "No cache cleaning implementation
+ ;; available for this architecture". Avoid building it (see:
+ ;; https://github.com/crust-firmware/crust/issues/182).
+ (substitute* "tools/Makefile"
+ (("tools-y \\+= test") ""))))
+ (delete 'configure)
+ (add-before 'build 'defconfig
+ (lambda* (#:key make-flags #:allow-other-keys)
+ (let ((config-name (string-append #$platform "_defconfig")))
+ (apply invoke "make" (cons config-name make-flags)))))
+ (replace 'install
+ (lambda _
+ (for-each (lambda (file)
+ (install-file file (string-append #$output
+ "/libexec")))
+ (find-files "." "(scp\\.bin|\\.config)$"))
+ (install-file "build/tools/load"
+ (string-append #$output "/bin")))))))
+ ;; The firmware is cross-compiled using a "bare bones" compiler (no
libc).
+ ;; Use our own tool chain for that.
+ (native-inputs
+ (list bison
+ (cross-gcc "or1k-elf")
+ (cross-binutils "or1k-elf")
+ flex))
+ (home-page "https://github.com/crust-firmware/crust")
+ (synopsis "Firmware for Allwinner sunxi SoCs")
+ (description "Crust improves battery life and thermal performance by
implementing a deep sleep state. During deep sleep, the CPU cores, the DRAM
controller, and most onboard peripherals are powered down, reducing power
consumption by 80% or more compared to an idle device. On boards without a
@@ -1280,8 +1281,8 @@ device. For this to work, Crust runs outside the main
CPU and DRAM, on a
dedicated always-on microprocessor called a System Control Processor (SCP).
Crust is designed to run on a specific SCP implementation, Allwinner's
AR100.")
- ;; Most files are dual-licensed "BSD-3 OR GPL2", a few are GPL2 only.
- (license (list license:bsd-3 license:gpl2))))
+ ;; Most files are dual-licensed "BSD-3 OR GPL2", a few are GPL2 only.
+ (license (list license:bsd-3 license:gpl2)))))
(define-public crust-pinebook
(make-crust-package "pinebook"))
- branch master updated (9f6aab9591 -> d264237d55), guix-commits, 2024/01/22
- 01/09: guix: Add ork1-elf platform., guix-commits, 2024/01/22
- 04/09: gnu: make-crust-package: Use shorter synopsis., guix-commits, 2024/01/22
- 03/09: gnu: Add gcc-cross-or1k-elf-toolchain., guix-commits, 2024/01/22
- 08/09: gnu: Add make-crust-tools., guix-commits, 2024/01/22
- 02/09: gnu: cross-gcc-toolchain: Use fixed name., guix-commits, 2024/01/22
- 05/09: gnu: make-crust-package: Memoize.,
guix-commits <=
- 07/09: gnu: make-crust-package: Use or1k-elf as target., guix-commits, 2024/01/22
- 09/09: gnu: make-crust-package: Unite firmware and tools., guix-commits, 2024/01/22
- 06/09: gnu: make-crust-package: Update to 0.6., guix-commits, 2024/01/22