From: Jean-Pierre De Jesus DIAZ via Guix-patches via <guix-patches@gnu.org>
To: 68355@debbugs.gnu.org
Cc: Jean-Pierre De Jesus DIAZ <jean@foundationdevices.com>,
Efraim Flashner <efraim@flashner.co.il>,
Vagrant Cascadian <vagrant@debian.org>
Subject: [bug#68355] [PATCH 4/8] gnu: make-crust-package: Memoize.
Date: Wed, 10 Jan 2024 00:14:38 +0100 [thread overview]
Message-ID: <03b0bc119e7bf279aef49b05078faa08a2534945.1704841447.git.jean@foundationdevices.com> (raw)
In-Reply-To: <cover.1704841447.git.jean@foundationdevices.com>
* gnu/packages/firmware.scm (make-crust-package): Use mlambda.
Change-Id: I2d916b96bc650f3731a69505e086cf8f8f470809
---
gnu/packages/firmware.scm | 153 +++++++++++++++++++-------------------
1 file changed, 77 insertions(+), 76 deletions(-)
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index e691bf33da..5567bcfe45 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -1190,81 +1190,82 @@ (define-public arm-trusted-firmware-imx8mq
;; 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 "System control processor firmware for Allwinner sunxi boards")
- (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 "System control processor firmware for Allwinner sunxi boards")
+ (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
@@ -1274,7 +1275,7 @@ (define (make-crust-package platform)
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))))
+ (license (list license:bsd-3 license:gpl2)))))
(define-public crust-pinebook
(make-crust-package "pinebook"))
--
2.41.0
next prev parent reply other threads:[~2024-01-09 23:16 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-09 23:12 [bug#68355] [PATCH 0/8] guix: Add or1k-elf platform Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-01-09 23:14 ` [bug#68355] [PATCH 1/8] guix: Add ork1-elf platform Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-01-12 20:22 ` Mathieu Othacehe
2024-01-09 23:14 ` [bug#68355] [PATCH 2/8] gnu: cross-gcc-toolchain: Use fixed name Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-01-12 20:25 ` Mathieu Othacehe
2024-01-09 23:14 ` [bug#68355] [PATCH 3/8] gnu: Add gcc-cross-or1k-elf-toolchain Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-01-09 23:14 ` Jean-Pierre De Jesus DIAZ via Guix-patches via [this message]
2024-01-09 23:14 ` [bug#68355] [PATCH 5/8] gnu: make-crust-package: Update to 0.6 Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-01-12 20:26 ` Mathieu Othacehe
2024-01-09 23:14 ` [bug#68355] [PATCH 6/8] gnu: make-crust-package: Use or1k-elf as target Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-01-09 23:14 ` [bug#68355] [PATCH 7/8] gnu: Add make-crust-tools Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-01-12 20:30 ` Mathieu Othacehe
2024-01-09 23:14 ` [bug#68355] [PATCH 8/8] gnu: make-crust-package: Unite firmware and tools Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-01-19 13:54 ` [bug#68355] [PATCH v2 1/9] guix: Add ork1-elf platform Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-01-19 13:54 ` [bug#68355] [PATCH v2 2/9] gnu: cross-gcc-toolchain: Use fixed name Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-01-19 13:54 ` [bug#68355] [PATCH v2 3/9] gnu: Add gcc-cross-or1k-elf-toolchain Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-01-19 13:54 ` [bug#68355] [PATCH v2 4/9] gnu: make-crust-package: Use shorter synopsis Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-01-19 13:54 ` [bug#68355] [PATCH v2 5/9] gnu: make-crust-package: Memoize Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-01-19 13:54 ` [bug#68355] [PATCH v2 6/9] gnu: make-crust-package: Update to 0.6 Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-01-19 13:54 ` [bug#68355] [PATCH v2 7/9] gnu: make-crust-package: Use or1k-elf as target Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-01-19 13:54 ` [bug#68355] [PATCH v2 8/9] gnu: Add make-crust-tools Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-01-19 13:54 ` [bug#68355] [PATCH v2 9/9] gnu: make-crust-package: Unite firmware and tools Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-01-22 10:32 ` bug#68355: [PATCH v2 1/9] guix: Add ork1-elf platform Mathieu Othacehe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=03b0bc119e7bf279aef49b05078faa08a2534945.1704841447.git.jean@foundationdevices.com \
--to=guix-patches@gnu.org \
--cc=68355@debbugs.gnu.org \
--cc=efraim@flashner.co.il \
--cc=jean@foundationdevices.com \
--cc=vagrant@debian.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).