From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
To: 60224@debbugs.gnu.org
Cc: rekado@elephly.net, Maxim Cournoyer <maxim.cournoyer@gmail.com>,
vagrant@reproducible-builds.org
Subject: [bug#60224] [PATCH v4 01/12] gnu: make-u-boot-package: Add a u-boot argument and use gexps.
Date: Wed, 11 Jan 2023 15:44:22 -0500 [thread overview]
Message-ID: <20230111204433.15305-1-maxim.cournoyer@gmail.com> (raw)
In-Reply-To: <20221220165038.25114-1-maxim.cournoyer@gmail.com>
And have that u-boot argument used as the complete base of the template, so
that a user can override it.
* gnu/packages/bootloaders.scm (make-u-boot-package): New U-BOOT argument.
Document it.
[native-inputs]: Move the native-inputs of U-BOOT first, so that the
cross compilation tools can be overridden via U-BOOT.
[arguments]: Rewrite using substitute-keyword-arguments, extending rather than
overriding most arguments. Use gexps. Do not bind OUTPUTS.
---
(no changes since v3)
Changes in v3:
- No longer bind 'outputs' extraneously in build phases
gnu/packages/bootloaders.scm | 181 +++++++++++++++++++----------------
1 file changed, 97 insertions(+), 84 deletions(-)
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 6e6bdb4c08..52427ca9d6 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -860,11 +860,13 @@ (define*-public (make-u-boot-package board triplet
defconfig
configs
name-suffix
- append-description)
+ append-description
+ (u-boot u-boot))
"Return a U-Boot package for BOARD cross-compiled for TRIPLET with the
optional DEFCONFIG file and optional configuration changes from CONFIGS.
NAME-SUFFIX is appended to the package name, while APPEND-DESCRIPTION is
-appended to the package description."
+appended to the package description. U-BOOT can be used when a fork or a
+different version of U-Boot must be used."
(let ((same-arch? (lambda ()
(string=? (%current-system)
(gnu-triplet->nix-system triplet)))))
@@ -879,91 +881,102 @@ (define*-public (make-u-boot-package board triplet
"\n\n" append-description)
(package-description u-boot)))
(native-inputs
- `(,@(if (not (same-arch?))
+ ;; Note: leave the native u-boot inputs first, so that a user can
+ ;; override the cross-gcc and cross-binutils packages.
+ `(,@(package-native-inputs u-boot)
+ ,@(if (not (same-arch?))
`(("cross-gcc" ,(cross-gcc triplet))
("cross-binutils" ,(cross-binutils triplet)))
- `())
- ,@(package-native-inputs u-boot)))
+ `())))
(arguments
- `(#:modules ((ice-9 ftw)
- (srfi srfi-1)
- (guix build gnu-build-system)
- (guix build kconfig)
- (guix build utils))
- #:imported-modules (,@%gnu-build-system-modules
- (guix build kconfig))
- #:test-target "test"
- #:make-flags
- (list "HOSTCC=gcc"
- "KBUILD_VERBOSE=1"
- ,@(if (not (same-arch?))
- `((string-append "CROSS_COMPILE=" ,triplet "-"))
- '()))
- #:phases
- (modify-phases %standard-phases
- (replace 'configure
- (lambda* (#:key outputs make-flags #:allow-other-keys)
- (let* ((config-name (string-append ,board "_defconfig"))
- (config-file (string-append "configs/" config-name))
- (defconfig ,defconfig)
- (configs ',configs))
- (when defconfig
- ;; Replace the board-specific defconfig with the given one.
- (copy-file defconfig config-file))
- (if (file-exists? config-file)
- (begin
- (when configs
- (modify-defconfig config-file configs))
- (apply invoke "make" `(,@make-flags ,config-name))
- (verify-config ".config" config-file))
- (begin
- (display "invalid board name; valid board names are:"
- (current-error-port))
- (let ((suffix-len (string-length "_defconfig"))
- (entries (scandir "configs")))
- (for-each (lambda (file-name)
- (when (string-suffix? "_defconfig" file-name)
- (format (current-error-port)
- "- ~A\n"
- (string-drop-right file-name
- suffix-len))))
- (sort entries string-ci<)))
- (error "invalid boardname ~s" ,board))))))
- (add-after 'configure 'disable-tools-libcrypto
- ;; Disable libcrypto due to GPL and OpenSSL license
- ;; incompatibilities
- (lambda _
- (substitute* ".config"
- (("CONFIG_TOOLS_LIBCRYPTO=.*$") "CONFIG_TOOLS_LIBCRYPTO=n"))))
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (libexec (string-append out "/libexec"))
- (uboot-files (append
- (remove
- ;; Those would not be reproducible
- ;; because of the randomness used
- ;; to produce them.
- ;; It's expected that the user will
- ;; use u-boot-tools to generate them
- ;; instead.
- (lambda (name)
- (string-suffix?
- "sunxi-spl-with-ecc.bin"
- name))
- (find-files "." ".*\\.(bin|efi|img|spl|itb|dtb|rksd)$"))
- (find-files "." "^(MLO|SPL)$"))))
- (mkdir-p libexec)
- (install-file ".config" libexec)
- ;; Useful for "qemu -kernel".
- (install-file "u-boot" libexec)
- (for-each
- (lambda (file)
- (let ((target-file (string-append libexec "/" file)))
- (mkdir-p (dirname target-file))
- (copy-file file target-file)))
- uboot-files)
- #t)))))))))
+ (substitute-keyword-arguments (package-arguments u-boot)
+ ((#:modules modules '())
+ `((ice-9 ftw)
+ (srfi srfi-1)
+ (guix build gnu-build-system)
+ (guix build kconfig)
+ (guix build utils)
+ ,@modules))
+ ((#:imported-modules imported-modules '())
+ `((guix build kconfig)
+ ,@%gnu-build-system-modules
+ ,@imported-modules))
+ ((#:test-target _ "test")
+ "test")
+ ((#:make-flags make-flags '())
+ #~(list "HOSTCC=gcc"
+ "KBUILD_VERBOSE=1"
+ #$@(if (not (same-arch?))
+ (list (string-append "CROSS_COMPILE=" triplet "-"))
+ '())
+ #$@make-flags))
+ ((#:phases phases '%standard-phases)
+ #~(modify-phases #$phases
+ (replace 'configure
+ (lambda* (#:key make-flags #:allow-other-keys)
+ (let* ((config-name (string-append #$board "_defconfig"))
+ (config-file (string-append "configs/" config-name))
+ (defconfig #$defconfig)
+ (configs '#$configs))
+ (when defconfig
+ ;; Replace the board-specific defconfig with the given
+ ;; one.
+ (copy-file defconfig config-file))
+ (if (file-exists? config-file)
+ (begin
+ (when configs
+ (modify-defconfig config-file configs))
+ (apply invoke "make" `(,@make-flags ,config-name))
+ (verify-config ".config" config-file))
+ (begin
+ (display "invalid board name; valid board names are:"
+ (current-error-port))
+ (let ((suffix-len (string-length "_defconfig"))
+ (entries (scandir "configs")))
+ (for-each (lambda (file-name)
+ (when (string-suffix? "_defconfig"
+ file-name)
+ (format (current-error-port)
+ "- ~A\n"
+ (string-drop-right
+ file-name suffix-len))))
+ (sort entries string-ci<)))
+ (error "invalid boardname ~s" #$board))))))
+ (add-after 'configure 'disable-tools-libcrypto
+ ;; Disable libcrypto due to GPL and OpenSSL license
+ ;; incompatibilities
+ (lambda _
+ (substitute* ".config"
+ (("CONFIG_TOOLS_LIBCRYPTO=.*$")
+ "CONFIG_TOOLS_LIBCRYPTO=n"))))
+ (replace 'install
+ (lambda _
+ (let ((libexec (string-append #$output "/libexec"))
+ (uboot-files
+ (append
+ (remove
+ ;; Those would not be reproducible
+ ;; because of the randomness used to
+ ;; produce them. It's expected that the
+ ;; user will use u-boot-tools to generate
+ ;; them instead.
+ (lambda (name)
+ (string-suffix?
+ "sunxi-spl-with-ecc.bin"
+ name))
+ (find-files "."
+ ".*\\.(bin|efi|img|spl|itb|dtb|rksd)$"))
+ (find-files "." "^(MLO|SPL)$"))))
+ (mkdir-p libexec)
+ (install-file ".config" libexec)
+ ;; Useful for "qemu -kernel".
+ (install-file "u-boot" libexec)
+ (for-each
+ (lambda (file)
+ (let ((target-file (string-append libexec "/" file)))
+ (mkdir-p (dirname target-file))
+ (copy-file file target-file)))
+ uboot-files)))))))))))
(define-public u-boot-malta
(make-u-boot-package "malta" "mips64el-linux-gnuabi64"))
base-commit: 5e4ec8218142eee8e6e148e787381a5ef891c5b1
--
2.38.1
next prev parent reply other threads:[~2023-01-11 20:45 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-20 16:50 [bug#60224] [PATCH 0/9] Improvements to our u-boot tooling Maxim Cournoyer
2022-12-20 18:34 ` [bug#60224] [PATCH 1/9] gnu: make-u-boot-package: Add a u-boot argument and use gexps Maxim Cournoyer
2022-12-20 18:34 ` [bug#60224] [PATCH 2/9] gnu: make-u-boot-package: Install .imx files Maxim Cournoyer
2022-12-20 18:34 ` [bug#60224] [PATCH 3/9] gnu: make-uboot-package: Simplify build Maxim Cournoyer
2022-12-20 18:34 ` [bug#60224] [PATCH 4/9] gnu: u-boot-pinebook-pro-rk3399: Remove input labels and use gexps Maxim Cournoyer
2022-12-20 18:34 ` [bug#60224] [PATCH 5/9] gnu: u-boot-firefly-rk3399: Use gexps and fix cross-build Maxim Cournoyer
2022-12-20 18:34 ` [bug#60224] [PATCH 6/9] gnu: make-u-boot-sunxi64-package: Use gexps and adjust file name Maxim Cournoyer
2022-12-20 18:34 ` [bug#60224] [PATCH 7/9] gnu: u-boot-rock64-rk3328: Fix build Maxim Cournoyer
2022-12-20 18:34 ` [bug#60224] [PATCH 8/9] gnu: u-boot-sifive-unmatched: Use gexps and remove inputs Maxim Cournoyer
2022-12-20 18:34 ` [bug#60224] [PATCH 9/9] gnu: u-boot-puma-rk3399: Use make-u-boot-sunxi64-package Maxim Cournoyer
2022-12-29 19:18 ` [bug#60224] [PATCH 0/9] Improvements to our u-boot tooling Ricardo Wurmus
2023-01-02 0:27 ` Maxim Cournoyer
2023-01-02 0:46 ` [bug#60224] [PATCH v3 01/11] gnu: make-u-boot-package: Add a u-boot argument and use gexps Maxim Cournoyer
2023-01-02 0:46 ` [bug#60224] [PATCH v3 02/11] gnu: make-u-boot-package: Install .imx files Maxim Cournoyer
2023-01-02 0:46 ` [bug#60224] [PATCH v3 03/11] gnu: make-uboot-package: Simplify build Maxim Cournoyer
2023-01-02 0:46 ` [bug#60224] [PATCH v3 04/11] gnu: make-u-boot-package: Allow disabling cross-compilation Maxim Cournoyer
2023-01-02 0:46 ` [bug#60224] [PATCH v3 05/11] gnu: u-boot-pinebook-pro-rk3399: Remove input labels and use gexps Maxim Cournoyer
2023-01-02 0:46 ` [bug#60224] [PATCH v3 06/11] gnu: u-boot-firefly-rk3399: Use gexps and fix cross-build Maxim Cournoyer
2023-01-02 0:46 ` [bug#60224] [PATCH v3 07/11] gnu: make-u-boot-sunxi64-package: Use gexps and adjust file name Maxim Cournoyer
2023-01-06 17:17 ` Vagrant Cascadian
2023-01-11 19:55 ` Maxim Cournoyer
2023-01-02 0:46 ` [bug#60224] [PATCH v3 08/11] gnu: u-boot-rock64-rk3328: Fix build Maxim Cournoyer
2023-01-02 0:46 ` [bug#60224] [PATCH v3 09/11] gnu: u-boot-sifive-unmatched: Use gexps and remove inputs Maxim Cournoyer
2023-01-02 0:46 ` [bug#60224] [PATCH v3 10/11] gnu: u-boot-puma-rk3399: Use make-u-boot-sunxi64-package Maxim Cournoyer
2023-01-06 17:09 ` Vagrant Cascadian
2023-01-02 0:46 ` [bug#60224] [PATCH v3 11/11] gnu: u-boot-rockpro64-rk3399: Fix build Maxim Cournoyer
2023-01-11 20:44 ` Maxim Cournoyer [this message]
2023-01-11 20:44 ` [bug#60224] [PATCH v4 02/12] gnu: make-u-boot-package: Install .imx files Maxim Cournoyer
2023-01-11 20:44 ` [bug#60224] [PATCH v4 03/12] gnu: make-uboot-package: Simplify build Maxim Cournoyer
2023-01-11 20:44 ` [bug#60224] [PATCH v4 04/12] gnu: make-u-boot-package: Allow disabling cross-compilation Maxim Cournoyer
2023-01-11 20:44 ` [bug#60224] [PATCH v4 05/12] gnu: u-boot-pinebook-pro-rk3399: Remove input labels and use gexps Maxim Cournoyer
2023-01-11 20:44 ` [bug#60224] [PATCH v4 06/12] gnu: u-boot-firefly-rk3399: Use gexps and fix cross-build Maxim Cournoyer
2023-01-11 20:44 ` [bug#60224] [PATCH v4 07/12] gnu: make-u-boot-sunxi64-package: Use gexps and adjust file name Maxim Cournoyer
2023-01-12 22:12 ` Vagrant Cascadian
2023-01-11 20:44 ` [bug#60224] [PATCH v4 08/12] gnu: u-boot-rock64-rk3328: Fix build Maxim Cournoyer
2023-01-11 20:44 ` [bug#60224] [PATCH v4 09/12] gnu: u-boot-sifive-unmatched: Use gexps and remove inputs Maxim Cournoyer
2023-01-11 20:44 ` [bug#60224] [PATCH v4 10/12] gnu: u-boot-rockpro64-rk3399: Fix build Maxim Cournoyer
2023-01-11 20:44 ` [bug#60224] [PATCH v4 11/12] gnu: make-arm-trusted-firmware: Simplify build Maxim Cournoyer
2023-01-11 20:44 ` [bug#60224] [PATCH v4 12/12] gnu: u-boot-puma-rk3399: Fix build Maxim Cournoyer
2023-01-16 3:25 ` [bug#60224] [PATCH v5 01/13] gnu: make-u-boot-package: Add a u-boot argument and use gexps Maxim Cournoyer
2023-01-16 3:25 ` [bug#60224] [PATCH v5 02/13] gnu: make-u-boot-package: Install .imx files Maxim Cournoyer
2023-01-16 3:25 ` [bug#60224] [PATCH v5 03/13] gnu: u-boot: Reduce the number of native inputs Maxim Cournoyer
2023-01-16 3:25 ` [bug#60224] [PATCH v5 04/13] gnu: make-uboot-package: Simplify build Maxim Cournoyer
2023-01-16 3:25 ` [bug#60224] [PATCH v5 05/13] gnu: make-u-boot-package: Allow disabling cross-compilation Maxim Cournoyer
2023-01-16 3:25 ` [bug#60224] [PATCH v5 06/13] gnu: u-boot-pinebook-pro-rk3399: Remove input labels and use gexps Maxim Cournoyer
2023-01-16 3:25 ` [bug#60224] [PATCH v5 07/13] gnu: u-boot-firefly-rk3399: Use gexps and fix build Maxim Cournoyer
2023-01-16 3:25 ` [bug#60224] [PATCH v5 08/13] gnu: make-u-boot-sunxi64-package: " Maxim Cournoyer
2023-01-16 3:25 ` [bug#60224] [PATCH v5 09/13] gnu: u-boot-rock64-rk3328: " Maxim Cournoyer
2023-01-16 3:25 ` [bug#60224] [PATCH v5 10/13] gnu: u-boot-sifive-unmatched: Use gexps and remove inputs labels Maxim Cournoyer
2023-01-16 3:25 ` [bug#60224] [PATCH v5 11/13] gnu: u-boot-rockpro64-rk3399: Use gexps and fix build Maxim Cournoyer
2023-01-16 3:25 ` [bug#60224] [PATCH v5 12/13] gnu: make-arm-trusted-firmware: Simplify build Maxim Cournoyer
2023-01-16 3:25 ` [bug#60224] [PATCH v5 13/13] gnu: u-boot-puma-rk3399: Use gexps and fix build Maxim Cournoyer
2023-01-19 2:10 ` bug#60224: [PATCH 0/9] Improvements to our u-boot tooling Maxim Cournoyer
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230111204433.15305-1-maxim.cournoyer@gmail.com \
--to=maxim.cournoyer@gmail.com \
--cc=60224@debbugs.gnu.org \
--cc=rekado@elephly.net \
--cc=vagrant@reproducible-builds.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 external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.