unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: Jean-Pierre De Jesus DIAZ via Guix-patches via <guix-patches@gnu.org>
To: 68355@debbugs.gnu.org
Cc: othacehe@gnu.org,
	Jean-Pierre De Jesus DIAZ <jean@foundationdevices.com>,
	Efraim Flashner <efraim@flashner.co.il>,
	Vagrant Cascadian <vagrant@debian.org>
Subject: [bug#68355] [PATCH v2 5/9] gnu: make-crust-package: Memoize.
Date: Fri, 19 Jan 2024 14:54:44 +0100	[thread overview]
Message-ID: <43f09e1afdcc3cb1dbaf44fb7e6cdea24c41bd1d.1705672190.git.jean@foundationdevices.com> (raw)
In-Reply-To: <4e6b129a26d38305073c392c04707498a2ddfe69.1705672190.git.jean@foundationdevices.com>

* 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 @@ (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 "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 @@ (define (make-crust-package platform)
 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"))
-- 
2.41.0





  parent reply	other threads:[~2024-01-19 13:56 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 ` [bug#68355] [PATCH 4/8] gnu: make-crust-package: Memoize Jean-Pierre De Jesus DIAZ via Guix-patches via
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   ` Jean-Pierre De Jesus DIAZ via Guix-patches via [this message]
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=43f09e1afdcc3cb1dbaf44fb7e6cdea24c41bd1d.1705672190.git.jean@foundationdevices.com \
    --to=guix-patches@gnu.org \
    --cc=68355@debbugs.gnu.org \
    --cc=efraim@flashner.co.il \
    --cc=jean@foundationdevices.com \
    --cc=othacehe@gnu.org \
    --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).