[PATCH 0/2] Add u-boot-ts7970-q-2g-1000mhz-c.

  • Done
  • quality assurance status badge
Details
2 participants
  • Maxim Cournoyer
  • Ricardo Wurmus
Owner
unassigned
Submitted by
Maxim Cournoyer
Severity
normal
Blocked by
M
M
Maxim Cournoyer wrote on 2 Dec 2022 06:29
(address . guix-patches@gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20221202052903.10475-1-maxim.cournoyer@gmail.com
Hello!

This makes our make-u-boot-package procedure more flexible, and builds on it
to add a new U-Boot bootloader package for an i.MX6 embedded board.

Thanks,

Maxim Cournoyer (2):
gnu: make-u-boot-package: Add a u-boot argument.
gnu: Add u-boot-ts7970-q-2g-1000mhz-c.

gnu/packages/bootloaders.scm | 238 +++++++++++++++++++++++------------
1 file changed, 155 insertions(+), 83 deletions(-)


base-commit: 4781f0458de7419606b71bdf0fe56bca83ace910
--
2.38.1
M
M
Maxim Cournoyer wrote on 2 Dec 2022 06:30
[PATCH 1/2] gnu: make-u-boot-package: Add a u-boot argument.
(address . 59761@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20221202053052.10563-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.
---
gnu/packages/bootloaders.scm | 180 +++++++++++++++++++----------------
1 file changed, 97 insertions(+), 83 deletions(-)

Toggle diff (213 lines)
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 8888c51736..7ec9bbb543 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -17,6 +17,7 @@
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
;;; Copyright © 2021 Stefan <stefan-guix@vodafonemail.de>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -782,11 +783,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)))))
@@ -801,90 +804,101 @@ (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"
- ,@(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"
+ #$@(if (not (same-arch?))
+ (list (string-append "CROSS_COMPILE=" triplet "-"))
+ '())
+ #$@make-flags))
+ ((#:phases phases '%standard-phases)
+ #~(modify-phases #$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 ((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"))
--
2.38.1
M
M
Maxim Cournoyer wrote on 2 Dec 2022 06:30
[PATCH 2/2] gnu: Add u-boot-ts7970-q-2g-1000mhz-c.
(address . 59761@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20221202053052.10563-2-maxim.cournoyer@gmail.com
* gnu/packages/bootloaders.scm (u-boot-ts-mx6): New variable.
(u-boot-ts7970-q-2g-1000mhz-c): Likewise.
---
gnu/packages/bootloaders.scm | 58 ++++++++++++++++++++++++++++++++++++
1 file changed, 58 insertions(+)

Toggle diff (71 lines)
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 7ec9bbb543..ed3dace87d 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -1271,6 +1271,64 @@ (define-public u-boot-rpi-4-32b-efi-bin
(define-public u-boot-rpi-arm64-efi-bin
(make-u-boot-bin-package u-boot-rpi-arm64-efi))
+(define u-boot-ts-mx6
+ ;; There is no release; use the latest commit of the
+ ;; 'imx_v2015.04_3.14.52_1.1.0_ga' branch.
+ (let ((revision "0")
+ (commit "344403c64d93813fce8c6d94ed4c3ffb1fe2a181"))
+ (package
+ (inherit u-boot)
+ (name "u-boot-ts-mx6")
+ (version (git-version "2015.04_3" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/embeddedTS/u-boot-imx")
+ (commit commit)))
+ (file-name (git-file-name "u-boot-imx-ts" version))
+ (sha256
+ (base32
+ "081swfz204dsy0nss4r55b8453w766yp2wgrh5y10l3gjc0fkrs1"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments u-boot)
+ ((#:phases phases '%standard-phases)
+ #~(modify-phases #$phases
+ (add-after 'unpack 'patch-for-reproducibility
+ (lambda _
+ ;; Substitute dynamically computed timestamps with static
+ ;; ones.
+ (substitute* "Makefile"
+ (("U_BOOT_DATE \"%b %d %C%y\"")
+ "U_BOOT_DATE \"Jan 01 1969\"")
+ (("U_BOOT_TIME \"%T\"")
+ "U_BOOT_TIME \"00:00:00\""))))
+ (add-before 'build 'adjust-for-gcc10
+ (lambda _
+ (invoke "gcc" "--version")
+ (copy-file "include/linux/compiler-gcc6.h"
+ "include/linux/compiler-gcc10.h")
+ (substitute* "arch/arm/Makefile"
+ (("march=armv5")
+ "march=armv5te"))))
+ (add-after 'install 'build+install-tools
+ (lambda* (#:key make-flags #:allow-other-keys)
+ (apply invoke "make" "tools-all" make-flags)
+ (invoke "find")
+ (install-file "tools/env/fw_printenv"
+ (string-append #$output "/bin"))
+ (symlink (string-append #$output "/bin/fw_printenv")
+ (string-append #$output "/bin/fw_setenv"))))))))
+ (native-inputs
+ (modify-inputs (package-native-inputs u-boot)
+ (delete "dtc")))))) ;otherwise the build fails
+
+(define-public u-boot-ts7970-q-2g-1000mhz-c
+ (make-u-boot-package "ts7970-q-2g-1000mhz-c" "arm-linux-gnueabihf"
+ #:u-boot u-boot-ts-mx6
+ #:append-description "This U-Boot variant is for the
+Technologic System TS-7970 revision C board, which includes a quad core
+Freescale i.MX6 CPU and 2 GiB of RAM clocked at 1000MHz."))
+
(define-public vboot-utils
(package
(name "vboot-utils")
--
2.38.1
M
M
Maxim Cournoyer wrote on 7 Dec 2022 16:01
[PATCH v2 1/3] gnu: make-u-boot-package: Add a u-boot argument.
(address . 59761@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20221207150201.9383-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.
---
gnu/packages/bootloaders.scm | 180 +++++++++++++++++++----------------
1 file changed, 97 insertions(+), 83 deletions(-)

Toggle diff (215 lines)
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 8888c51736..7ec9bbb543 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -17,6 +17,7 @@
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
;;; Copyright © 2021 Stefan <stefan-guix@vodafonemail.de>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -782,11 +783,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)))))
@@ -801,90 +804,101 @@ (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"
- ,@(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"
+ #$@(if (not (same-arch?))
+ (list (string-append "CROSS_COMPILE=" triplet "-"))
+ '())
+ #$@make-flags))
+ ((#:phases phases '%standard-phases)
+ #~(modify-phases #$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 ((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: d4c2ea9226c229e56022ba641100ee7f5db8f53f
--
2.38.1
M
M
Maxim Cournoyer wrote on 7 Dec 2022 16:02
[PATCH v2 2/3] gnu: make-u-boot-package: Install .imx files.
(address . 59761@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20221207150201.9383-2-maxim.cournoyer@gmail.com
* gnu/packages/bootloaders.scm
(make-u-boot-package) [phases] <install>: Add imx to the regexp of files
considered for installation.
---
gnu/packages/bootloaders.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (15 lines)
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 7ec9bbb543..ab2cf06fd5 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -887,7 +887,7 @@ (define*-public (make-u-boot-package board triplet
"sunxi-spl-with-ecc.bin"
name))
(find-files "."
- ".*\\.(bin|efi|img|spl|itb|dtb|rksd)$"))
+ ".*\\.(bin|efi|img|imx|spl|itb|dtb|rksd)$"))
(find-files "." "^(MLO|SPL)$"))))
(mkdir-p libexec)
(install-file ".config" libexec)
--
2.38.1
M
M
Maxim Cournoyer wrote on 7 Dec 2022 16:02
[PATCH v2 3/3] gnu: Add u-boot-ts7970-q-2g-1000mhz-c.
(address . 59761@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20221207150201.9383-3-maxim.cournoyer@gmail.com
* gnu/packages/bootloaders.scm (u-boot-ts-mx6): New variable.
(u-boot-ts7970-q-2g-1000mhz-c): Likewise.
---
gnu/packages/bootloaders.scm | 59 ++++++++++++++++++++++++++++++++++++
1 file changed, 59 insertions(+)

Toggle diff (72 lines)
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index ab2cf06fd5..28a85eeca5 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -1271,6 +1271,65 @@ (define-public u-boot-rpi-4-32b-efi-bin
(define-public u-boot-rpi-arm64-efi-bin
(make-u-boot-bin-package u-boot-rpi-arm64-efi))
+(define u-boot-ts-mx6
+ ;; There is no release; use the latest commit of the
+ ;; 'imx_v2015.04_3.14.52_1.1.0_ga' branch.
+ (let ((revision "0")
+ (commit "344403c64d93813fce8c6d94ed4c3ffb1fe2a181"))
+ (package
+ (inherit u-boot)
+ (name "u-boot-ts-mx6")
+ (version (git-version "2015.04_3" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/embeddedTS/u-boot-imx")
+ (commit commit)))
+ (file-name (git-file-name "u-boot-imx-ts" version))
+ (sha256
+ (base32
+ "081swfz204dsy0nss4r55b8453w766yp2wgrh5y10l3gjc0fkrs1"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments u-boot)
+ ((#:phases phases '%standard-phases)
+ #~(modify-phases #$phases
+ (add-after 'unpack 'patch-for-reproducibility
+ (lambda _
+ ;; Substitute dynamically computed timestamps with static
+ ;; ones.
+ (substitute* "Makefile"
+ (("U_BOOT_DATE \"%b %d %C%y\"")
+ "U_BOOT_DATE \"Jan 01 1969\"")
+ (("U_BOOT_TIME \"%T\"")
+ "U_BOOT_TIME \"00:00:00\""))))
+ (add-before 'build 'adjust-for-gcc10
+ (lambda _
+ (invoke "gcc" "--version")
+ (copy-file "include/linux/compiler-gcc6.h"
+ "include/linux/compiler-gcc10.h")
+ (substitute* "arch/arm/Makefile"
+ (("march=armv5")
+ "march=armv5te"))))
+ (add-after 'install 'build+install-tools
+ (lambda* (#:key make-flags #:allow-other-keys)
+ (apply invoke "make" "tools-all" make-flags)
+ (install-file "tools/env/fw_printenv"
+ (string-append #$output "/bin"))
+ (symlink (string-append #$output "/bin/fw_printenv")
+ (string-append #$output "/bin/fw_setenv"))))))))
+ (native-inputs
+ (modify-inputs (package-native-inputs u-boot)
+ (delete "dtc")))))) ;otherwise the build fails
+
+(define-public u-boot-ts7970-q-2g-1000mhz-c
+ (make-u-boot-package "ts7970-q-2g-1000mhz-c" "arm-linux-gnueabihf"
+ #:u-boot u-boot-ts-mx6
+ #:append-description
+ "This U-Boot variant is for the Technologic Systems
+TS-7970 revision C board, which includes a quad core Freescale i.MX6 CPU and 2
+GiB of RAM clocked at 1000MHz. The binary U-Boot image to flash is the
+@file{libexec/u-boot.imx} file."))
+
(define-public vboot-utils
(package
(name "vboot-utils")
--
2.38.1
M
M
Maxim Cournoyer wrote on 14 Dec 2022 03:32
[PATCH v3 1/4] gnu: make-u-boot-package: Add a u-boot argument.
(address . 59761@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20221214023236.25345-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.
---
gnu/packages/bootloaders.scm | 180 +++++++++++++++++++----------------
1 file changed, 97 insertions(+), 83 deletions(-)

Toggle diff (215 lines)
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 8888c51736..7ec9bbb543 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -17,6 +17,7 @@
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
;;; Copyright © 2021 Stefan <stefan-guix@vodafonemail.de>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -782,11 +783,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)))))
@@ -801,90 +804,101 @@ (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"
- ,@(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"
+ #$@(if (not (same-arch?))
+ (list (string-append "CROSS_COMPILE=" triplet "-"))
+ '())
+ #$@make-flags))
+ ((#:phases phases '%standard-phases)
+ #~(modify-phases #$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 ((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: 0ffa501f2b3e83ae56e9c2bd31418439090e869a
--
2.38.1
M
M
Maxim Cournoyer wrote on 14 Dec 2022 03:32
[PATCH v3 4/4] gnu: Add u-boot-ts7970-q-2g-1000mhz-c-bootloader.
(address . 59761@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20221214023236.25345-4-maxim.cournoyer@gmail.com
* gnu/bootloader/u-boot.scm (u-boot-ts7970-q-2g-1000mhz-c-bootloader): New
variable.
---
gnu/bootloader/u-boot.scm | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)

Toggle diff (49 lines)
diff --git a/gnu/bootloader/u-boot.scm b/gnu/bootloader/u-boot.scm
index 6cad33b741..65d7923465 100644
--- a/gnu/bootloader/u-boot.scm
+++ b/gnu/bootloader/u-boot.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2017, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -42,6 +43,7 @@ (define-module (gnu bootloader u-boot)
u-boot-puma-rk3399-bootloader
u-boot-rock64-rk3328-bootloader
u-boot-rockpro64-rk3399-bootloader
+ u-boot-ts7970-q-2g-1000mhz-c-bootloader
u-boot-wandboard-bootloader))
(define install-u-boot
@@ -127,6 +129,12 @@ (define install-rockpro64-rk3399-u-boot
(define install-pinebook-pro-rk3399-u-boot install-rockpro64-rk3399-u-boot)
+(define install-u-boot-ts7970-q-2g-1000mhz-c-u-boot
+ #~(lambda (bootloader device mount-point)
+ (let ((u-boot.imx (string-append bootloader "/libexec/u-boot.imx"))
+ (install-dir (string-append mount-point "/boot")))
+ (install-file u-boot.imx install-dir))))
+
;;;
@@ -255,3 +263,13 @@ (define u-boot-pinebook-pro-rk3399-bootloader
(inherit u-boot-bootloader)
(package u-boot-pinebook-pro-rk3399)
(disk-image-installer install-pinebook-pro-rk3399-u-boot)))
+
+(define u-boot-ts7970-q-2g-1000mhz-c-bootloader
+ ;; This bootloader doesn't really need to be installed, as it is read from
+ ;; an SPI memory chip, not the SD card. It is copied to /boot/u-boot.imx
+ ;; for convenience and should be manually flashed at the U-Boot prompt.
+ (bootloader
+ (inherit u-boot-bootloader)
+ (package u-boot-ts7970-q-2g-1000mhz-c)
+ (installer install-u-boot-ts7970-q-2g-1000mhz-c-u-boot)
+ (disk-image-installer #f)))
--
2.38.1
M
M
Maxim Cournoyer wrote on 14 Dec 2022 03:32
[PATCH v3 2/4] gnu: make-u-boot-package: Install .imx files.
(address . 59761@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20221214023236.25345-2-maxim.cournoyer@gmail.com
* gnu/packages/bootloaders.scm
(make-u-boot-package) [phases] <install>: Add imx to the regexp of files
considered for installation.
---
gnu/packages/bootloaders.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (15 lines)
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 7ec9bbb543..ab2cf06fd5 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -887,7 +887,7 @@ (define*-public (make-u-boot-package board triplet
"sunxi-spl-with-ecc.bin"
name))
(find-files "."
- ".*\\.(bin|efi|img|spl|itb|dtb|rksd)$"))
+ ".*\\.(bin|efi|img|imx|spl|itb|dtb|rksd)$"))
(find-files "." "^(MLO|SPL)$"))))
(mkdir-p libexec)
(install-file ".config" libexec)
--
2.38.1
M
M
Maxim Cournoyer wrote on 14 Dec 2022 03:32
[PATCH v3 3/4] gnu: Add u-boot-ts7970-q-2g-1000mhz-c.
(address . 59761@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20221214023236.25345-3-maxim.cournoyer@gmail.com
* gnu/packages/bootloaders.scm (u-boot-ts-mx6): New variable.
(u-boot-ts7970-q-2g-1000mhz-c): Likewise.
---
gnu/packages/bootloaders.scm | 150 +++++++++++++++++++++++++++++++++++
1 file changed, 150 insertions(+)

Toggle diff (163 lines)
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index ab2cf06fd5..02c1c1a17a 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -1271,6 +1271,156 @@ (define-public u-boot-rpi-4-32b-efi-bin
(define-public u-boot-rpi-arm64-efi-bin
(make-u-boot-bin-package u-boot-rpi-arm64-efi))
+(define u-boot-ts-mx6
+ ;; There is no release; use the latest commit of the
+ ;; 'imx_v2015.04_3.14.52_1.1.0_ga' branch.
+ (let ((revision "0")
+ (commit "344403c64d93813fce8c6d94ed4c3ffb1fe2a181"))
+ (package
+ (inherit u-boot)
+ (name "u-boot-ts-mx6")
+ (version (git-version "2015.04_3" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/embeddedTS/u-boot-imx")
+ (commit commit)))
+ (file-name (git-file-name "u-boot-imx-ts" version))
+ (sha256
+ (base32
+ "081swfz204dsy0nss4r55b8453w766yp2wgrh5y10l3gjc0fkrs1"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments u-boot)
+ ((#:phases phases '%standard-phases)
+ #~(modify-phases #$phases
+ (add-after 'unpack 'patch-u-boot
+ (lambda _
+ (substitute* (find-files "include/configs" "^ts[0-9]{4}\\.h$")
+ ;; Default to boot a standard zImage instead of a uImage.
+ (("/boot/uImage")
+ "/boot/zImage")
+ (("uimage")
+ "zimage")
+ (("bootm \\$\\{loadaddr}")
+ "bootz ${loadaddr}")
+ ;; This reference DTB is not available in mainline.
+ (("ts7970-revf.dtb")
+ "ts7970.dtb")
+ ;; Enable support for DISTRO_DEFAULTS, which enables to
+ ;; use 'sysboot' to boot Guix System. Also enable
+ ;; "standard" boot commands for dealing with discovery and
+ ;; booting of syslinux configurations (extlinux.conf).
+
+ ;; Disable the stock CONFIG_BOOTCOMMAND to avoid a
+ ;; redefinition error.
+ (("CONFIG_BOOTCOMMAND")
+ "CONFIG_BOOTCOMMAND_DISABLED")
+ (("CONFIG_BOOTDELAY")
+ "CONFIG_BOOTDELAY_DISABLED")
+ ;; Inspired by include/configs/embestmx6boards.h
+ (("#define CONFIG_EXTRA_ENV_SETTINGS.*" anchor)
+ (string-append
+ "#include <config_distro_defaults.h>\n\n"
+ "#define MEM_LAYOUT_ENV_SETTINGS \\\n"
+ " \"bootm_size=0x10000000\\0\" \\\n"
+ " \"kernel_addr_r=0x10800000\\0\" \\\n"
+ " \"fdt_addr_r=0x18000000\\0\" \\\n"
+ " \"scriptaddr=0x18100000\\0\" \\\n"
+ " \"pxefile_addr_r=0x18200000\\0\" \\\n"
+ " \"ramdisk_addr_r=0x18300000\\0\"\n\n"
+ "#define BOOT_TARGET_DEVICES(func) \\\n"
+ " func(MMC, mmc, 0) \\\n"
+ " func(MMC, mmc, 1) \\\n"
+ " func(SATA, sata, 0) \\\n"
+ " func(USB, usb, 0) \\\n"
+ " func(PXE, pxe, na) \\\n"
+ " func(DHCP, dhcp, na)\n\n"
+ "#include <config_distro_bootcmd.h>\n\n"
+ anchor
+ ;; Sadly, the user config CONFIG_DEFAULT_FDT_FILE did
+ ;; not exist in that older U-Boot, a placeholder is
+ ;; added here, to be substituted in each TS U-Boot board
+ ;; package.
+ " \"fdtfile=DEFAULT_FDT_FILE\\0\" \\\n"
+ " MEM_LAYOUT_ENV_SETTINGS \\\n"
+ " BOOTENV \\\n")))))
+ (add-after 'unpack 'patch-for-reproducibility
+ (lambda _
+ ;; Substitute dynamically computed timestamps with static
+ ;; ones.
+ (substitute* "Makefile"
+ (("U_BOOT_DATE \"%b %d %C%y\"")
+ "U_BOOT_DATE \"Jan 01 1969\"")
+ (("U_BOOT_TIME \"%T\"")
+ "U_BOOT_TIME \"00:00:00\""))))
+ (add-before 'build 'adjust-for-gcc10
+ (lambda _
+ (copy-file "include/linux/compiler-gcc6.h"
+ "include/linux/compiler-gcc10.h")
+ (substitute* "arch/arm/Makefile"
+ (("march=armv5")
+ "march=armv5te"))))
+ (add-after 'install 'build+install-tools
+ (lambda* (#:key make-flags #:allow-other-keys)
+ ;; Apply a trivial patch not backported from mainline to fix
+ ;; cross-compilation of tools (see:
+ ;; https://source.denx.de/u-boot/u-boot/-/commit/
+ ;; 3b0825296aeba69c2cbfd3e179db2e9cbe5e70d7).
+ (substitute* '("tools/Makefile" "tools/env/Makefile")
+ (("^HOSTCC = \\$\\(CC)" all)
+ (string-append "override " all)))
+ (apply invoke "make" "tools-all" make-flags)
+ (install-file "tools/env/fw_printenv"
+ (string-append #$output "/bin"))
+ (symlink (string-append #$output "/bin/fw_printenv")
+ (string-append #$output "/bin/fw_setenv"))))))))
+ (native-inputs
+ (modify-inputs (package-native-inputs u-boot)
+ (delete "dtc")))))) ;otherwise the build fails
+
+(define-public u-boot-ts7970-q-2g-1000mhz-c
+ (let ((base
+ (make-u-boot-package "ts7970-q-2g-1000mhz-c" "arm-linux-gnueabihf"
+ #:u-boot u-boot-ts-mx6
+ #:append-description
+ "This U-Boot variant is for the Technologic
+Systems TS-7970 revision C board, which includes a quad core Freescale i.MX6
+CPU and 2 GiB of RAM clocked at 1000MHz. The binary U-Boot image to flash is
+the @file{libexec/u-boot.imx} file. It can be used with the @file{zImage} and
+the @file{imx6q-ts7970.dtb} files provided by the
+@code{linux-libre-arm-generic} image.
+
+To flash this bootloader, write it to an SD card, then using the U-Boot serial
+console:
+@example
+mmc dev 0
+load mmc 0:1 ${loadaddr} /u-boot.imx
+sf probe
+sf erase 0 0x80000
+sf write ${loadaddr} 0x400 $filesize
+@end example
+
+The factory values of U-Boot must also be reset so that it boots using a
+zImage instead of the default uImage:
+@example
+run clearenv
+reset
+@end example
+
+For more information, refer to
+@url{https://docs.embeddedts.com/TS-7970#Update_U-Boot}.")))
+ (package
+ (inherit base)
+ (arguments
+ (substitute-keyword-arguments (package-arguments base)
+ ((#:phases phases '%standard-phases)
+ #~(modify-phases #$phases
+ (add-after 'patch-u-boot 'set-default-fdt-file
+ (lambda _
+ (substitute* "include/configs/ts7970.h"
+ (("DEFAULT_FDT_FILE")
+ "imx6q-ts7970.dtb")))))))))))
+
(define-public vboot-utils
(package
(name "vboot-utils")
--
2.38.1
M
M
Maxim Cournoyer wrote on 20 Dec 2022 19:22
[PATCH v4 1/2] gnu: Add u-boot-ts7970-q-2g-1000mhz-c.
(address . 59761@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20221220182236.30360-1-maxim.cournoyer@gmail.com
* gnu/packages/bootloaders.scm (u-boot-ts-mx6): New variable.
(u-boot-ts7970-q-2g-1000mhz-c): Likewise.
---

(no changes since v1)

gnu/packages/bootloaders.scm | 150 +++++++++++++++++++++++++++++++++++
1 file changed, 150 insertions(+)

Toggle diff (165 lines)
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 738f3975f5..545803ece1 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -1251,6 +1251,156 @@ (define-public u-boot-rpi-4-32b-efi-bin
(define-public u-boot-rpi-arm64-efi-bin
(make-u-boot-bin-package u-boot-rpi-arm64-efi))
+(define u-boot-ts-mx6
+ ;; There is no release; use the latest commit of the
+ ;; 'imx_v2015.04_3.14.52_1.1.0_ga' branch.
+ (let ((revision "0")
+ (commit "344403c64d93813fce8c6d94ed4c3ffb1fe2a181"))
+ (package
+ (inherit u-boot)
+ (name "u-boot-ts-mx6")
+ (version (git-version "2015.04_3" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/embeddedTS/u-boot-imx")
+ (commit commit)))
+ (file-name (git-file-name "u-boot-imx-ts" version))
+ (sha256
+ (base32
+ "081swfz204dsy0nss4r55b8453w766yp2wgrh5y10l3gjc0fkrs1"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments u-boot)
+ ((#:phases phases '%standard-phases)
+ #~(modify-phases #$phases
+ (add-after 'unpack 'patch-u-boot
+ (lambda _
+ (substitute* (find-files "include/configs" "^ts[0-9]{4}\\.h$")
+ ;; Default to boot a standard zImage instead of a uImage.
+ (("/boot/uImage")
+ "/boot/zImage")
+ (("uimage")
+ "zimage")
+ (("bootm \\$\\{loadaddr}")
+ "bootz ${loadaddr}")
+ ;; This reference DTB is not available in mainline.
+ (("ts7970-revf.dtb")
+ "ts7970.dtb")
+ ;; Enable support for DISTRO_DEFAULTS, which enables to
+ ;; use 'sysboot' to boot Guix System. Also enable
+ ;; "standard" boot commands for dealing with discovery and
+ ;; booting of syslinux configurations (extlinux.conf).
+
+ ;; Disable the stock CONFIG_BOOTCOMMAND to avoid a
+ ;; redefinition error.
+ (("CONFIG_BOOTCOMMAND")
+ "CONFIG_BOOTCOMMAND_DISABLED")
+ (("CONFIG_BOOTDELAY")
+ "CONFIG_BOOTDELAY_DISABLED")
+ ;; Inspired by include/configs/embestmx6boards.h
+ (("#define CONFIG_EXTRA_ENV_SETTINGS.*" anchor)
+ (string-append
+ "#include <config_distro_defaults.h>\n\n"
+ "#define MEM_LAYOUT_ENV_SETTINGS \\\n"
+ " \"bootm_size=0x10000000\\0\" \\\n"
+ " \"kernel_addr_r=0x10800000\\0\" \\\n"
+ " \"fdt_addr_r=0x18000000\\0\" \\\n"
+ " \"scriptaddr=0x18100000\\0\" \\\n"
+ " \"pxefile_addr_r=0x18200000\\0\" \\\n"
+ " \"ramdisk_addr_r=0x18300000\\0\"\n\n"
+ "#define BOOT_TARGET_DEVICES(func) \\\n"
+ " func(MMC, mmc, 0) \\\n"
+ " func(MMC, mmc, 1) \\\n"
+ " func(SATA, sata, 0) \\\n"
+ " func(USB, usb, 0) \\\n"
+ " func(PXE, pxe, na) \\\n"
+ " func(DHCP, dhcp, na)\n\n"
+ "#include <config_distro_bootcmd.h>\n\n"
+ anchor
+ ;; Sadly, the user config CONFIG_DEFAULT_FDT_FILE did
+ ;; not exist in that older U-Boot, a placeholder is
+ ;; added here, to be substituted in each TS U-Boot board
+ ;; package.
+ " \"fdtfile=DEFAULT_FDT_FILE\\0\" \\\n"
+ " MEM_LAYOUT_ENV_SETTINGS \\\n"
+ " BOOTENV \\\n")))))
+ (add-after 'unpack 'patch-for-reproducibility
+ (lambda _
+ ;; Substitute dynamically computed timestamps with static
+ ;; ones.
+ (substitute* "Makefile"
+ (("U_BOOT_DATE \"%b %d %C%y\"")
+ "U_BOOT_DATE \"Jan 01 1969\"")
+ (("U_BOOT_TIME \"%T\"")
+ "U_BOOT_TIME \"00:00:00\""))))
+ (add-before 'build 'adjust-for-gcc10
+ (lambda _
+ (copy-file "include/linux/compiler-gcc6.h"
+ "include/linux/compiler-gcc10.h")
+ (substitute* "arch/arm/Makefile"
+ (("march=armv5")
+ "march=armv5te"))))
+ (add-after 'install 'build+install-tools
+ (lambda* (#:key make-flags #:allow-other-keys)
+ ;; Apply a trivial patch not backported from mainline to fix
+ ;; cross-compilation of tools (see:
+ ;; https://source.denx.de/u-boot/u-boot/-/commit/
+ ;; 3b0825296aeba69c2cbfd3e179db2e9cbe5e70d7).
+ (substitute* '("tools/Makefile" "tools/env/Makefile")
+ (("^HOSTCC = \\$\\(CC)" all)
+ (string-append "override " all)))
+ (apply invoke "make" "tools-all" make-flags)
+ (install-file "tools/env/fw_printenv"
+ (string-append #$output "/bin"))
+ (symlink (string-append #$output "/bin/fw_printenv")
+ (string-append #$output "/bin/fw_setenv"))))))))
+ (native-inputs
+ (modify-inputs (package-native-inputs u-boot)
+ (delete "dtc")))))) ;otherwise the build fails
+
+(define-public u-boot-ts7970-q-2g-1000mhz-c
+ (let ((base
+ (make-u-boot-package "ts7970-q-2g-1000mhz-c" "arm-linux-gnueabihf"
+ #:u-boot u-boot-ts-mx6
+ #:append-description
+ "This U-Boot variant is for the Technologic
+Systems TS-7970 revision C board, which includes a quad core Freescale i.MX6
+CPU and 2 GiB of RAM clocked at 1000MHz. The binary U-Boot image to flash is
+the @file{libexec/u-boot.imx} file. It can be used with the @file{zImage} and
+the @file{imx6q-ts7970.dtb} files provided by the
+@code{linux-libre-arm-generic} image.
+
+To flash this bootloader, write it to an SD card, then using the U-Boot serial
+console:
+@example
+mmc dev 0
+load mmc 0:1 ${loadaddr} /u-boot.imx
+sf probe
+sf erase 0 0x80000
+sf write ${loadaddr} 0x400 $filesize
+@end example
+
+The factory values of U-Boot must also be reset so that it boots using a
+zImage instead of the default uImage:
+@example
+run clearenv
+reset
+@end example
+
+For more information, refer to
+@url{https://docs.embeddedts.com/TS-7970#Update_U-Boot}.")))
+ (package
+ (inherit base)
+ (arguments
+ (substitute-keyword-arguments (package-arguments base)
+ ((#:phases phases '%standard-phases)
+ #~(modify-phases #$phases
+ (add-after 'patch-u-boot 'set-default-fdt-file
+ (lambda _
+ (substitute* "include/configs/ts7970.h"
+ (("DEFAULT_FDT_FILE")
+ "imx6q-ts7970.dtb")))))))))))
+
(define-public vboot-utils
(package
(name "vboot-utils")

base-commit: daaef7858ffe2d0eb0378670a6447400410d1ff9
--
2.38.1
M
M
Maxim Cournoyer wrote on 20 Dec 2022 19:22
[PATCH v4 2/2] gnu: Add u-boot-ts7970-q-2g-1000mhz-c-bootloader.
(address . 59761@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20221220182236.30360-2-maxim.cournoyer@gmail.com
* gnu/bootloader/u-boot.scm (u-boot-ts7970-q-2g-1000mhz-c-bootloader): New
variable.

---

Changes in v4:
- Rebase on top of #60224 and master

gnu/bootloader/u-boot.scm | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)

Toggle diff (49 lines)
diff --git a/gnu/bootloader/u-boot.scm b/gnu/bootloader/u-boot.scm
index 6cad33b741..65d7923465 100644
--- a/gnu/bootloader/u-boot.scm
+++ b/gnu/bootloader/u-boot.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2017, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -42,6 +43,7 @@ (define-module (gnu bootloader u-boot)
u-boot-puma-rk3399-bootloader
u-boot-rock64-rk3328-bootloader
u-boot-rockpro64-rk3399-bootloader
+ u-boot-ts7970-q-2g-1000mhz-c-bootloader
u-boot-wandboard-bootloader))
(define install-u-boot
@@ -127,6 +129,12 @@ (define install-rockpro64-rk3399-u-boot
(define install-pinebook-pro-rk3399-u-boot install-rockpro64-rk3399-u-boot)
+(define install-u-boot-ts7970-q-2g-1000mhz-c-u-boot
+ #~(lambda (bootloader device mount-point)
+ (let ((u-boot.imx (string-append bootloader "/libexec/u-boot.imx"))
+ (install-dir (string-append mount-point "/boot")))
+ (install-file u-boot.imx install-dir))))
+
;;;
@@ -255,3 +263,13 @@ (define u-boot-pinebook-pro-rk3399-bootloader
(inherit u-boot-bootloader)
(package u-boot-pinebook-pro-rk3399)
(disk-image-installer install-pinebook-pro-rk3399-u-boot)))
+
+(define u-boot-ts7970-q-2g-1000mhz-c-bootloader
+ ;; This bootloader doesn't really need to be installed, as it is read from
+ ;; an SPI memory chip, not the SD card. It is copied to /boot/u-boot.imx
+ ;; for convenience and should be manually flashed at the U-Boot prompt.
+ (bootloader
+ (inherit u-boot-bootloader)
+ (package u-boot-ts7970-q-2g-1000mhz-c)
+ (installer install-u-boot-ts7970-q-2g-1000mhz-c-u-boot)
+ (disk-image-installer #f)))
--
2.38.1
M
M
Maxim Cournoyer wrote on 20 Dec 2022 19:35
control message for bug #59761
(address . control@debbugs.gnu.org)
87ili553fr.fsf@gmail.com
block 59761 by 60224
quit
R
R
Ricardo Wurmus wrote on 29 Dec 2022 20:33
[PATCH 0/2] Add u-boot-ts7970-q-2g-1000mhz-c.
(address . 59761@debbugs.gnu.org)
871qoi9f0b.fsf@elephly.net
Hi Maxim,

there seems to be some overlap between this and
https://issues.guix.gnu.org/60224. Looking just at v4 I only have one
comment.

In your substitute* replacements it’s better not to use string-append.
You can include real line breaks in a string and escape line breaks with
\. This is preferable to gluing strings together. For something as
long as the replacements in this package consider using a patch file
instead. This has the added advantage of failing the build when the
patch cannot be applied cleanly.

The rest looks good to me.

--
Ricardo
M
M
Maxim Cournoyer wrote on 4 Jan 2023 05:17
(name . Ricardo Wurmus)(address . rekado@elephly.net)(address . 59761@debbugs.gnu.org)
87ilhnvsqr.fsf_-_@gmail.com
Hi Ricardo,

Ricardo Wurmus <rekado@elephly.net> writes:

Toggle quote (5 lines)
> Hi Maxim,
>
> there seems to be some overlap between this and
> https://issues.guix.gnu.org/60224.

Yes, I ended up splitting my changes focusing on u-boot in #60224, which
should be reviewed before and blocking this change here, which is based
on it.

Toggle quote (5 lines)
> Looking just at v4 I only have one
> comment.
>
> In your substitute* replacements it’s better not to use string-append.

Oh? Why is this so? There must be hundreds of string-append occurences
used in such place, so I'm curious.

Toggle quote (3 lines)
> You can include real line breaks in a string and escape line breaks with
> \. This is preferable to gluing strings together.

OK, I guess this is your rationale for the above comment (cleaner).

Toggle quote (5 lines)
> For something as
> long as the replacements in this package consider using a patch file
> instead. This has the added advantage of failing the build when the
> patch cannot be applied cleanly.

I agree that a patch would be most suitable here, especially that if
something breaks, if would likely be silent (unlikely to be caught at
build time). I'll extract this as a patch.

Toggle quote (2 lines)
> The rest looks good to me.

OK. I'll await your comments on #60224, which is awaiting feedback
post-rework based on your earlier feedback.

PS: I had also missed that email; please keep me in CC in all your
replies :-).

--
Thanks,
Maxim
M
M
Maxim Cournoyer wrote on 4 Jan 2023 06:32
[PATCH v5 1/2] gnu: Add u-boot-ts7970-q-2g-1000mhz-c.
(address . 59761@debbugs.gnu.org)
20230104053234.4540-1-maxim.cournoyer@gmail.com
* gnu/packages/bootloaders.scm (u-boot-ts-mx6): New variable.
(u-boot-ts7970-q-2g-1000mhz-c): Likewise.

---

Changes in v5:
- Update package revision to 08809160fbc60d6e949fa9d37d9a41aab8fef742
- Refactor patch-u-boot phase to use single string blocks
- Drop upstreamed patch in build+install-tools phase

gnu/packages/bootloaders.scm | 148 +++++++++++++++++++++++++++++++++++
1 file changed, 148 insertions(+)

Toggle diff (163 lines)
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 7016b33f4f..22c15d13f1 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -1339,6 +1339,154 @@ (define-public u-boot-rpi-4-32b-efi-bin
(define-public u-boot-rpi-arm64-efi-bin
(make-u-boot-bin-package u-boot-rpi-arm64-efi))
+(define u-boot-ts-mx6
+ ;; There is no release; use the latest commit of the
+ ;; 'imx_v2015.04_3.14.52_1.1.0_ga' branch.
+ (let ((revision "0")
+ (commit "08809160fbc60d6e949fa9d37d9a41aab8fef742"))
+ (package
+ (inherit u-boot)
+ (name "u-boot-ts-mx6")
+ (version (git-version "2015.04_3" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/embeddedTS/u-boot-imx")
+ (commit commit)))
+ (file-name (git-file-name "u-boot-imx-ts" version))
+ (sha256
+ (base32
+ "01mja33351hkcs59rmfvppqlxqw4rh9gng7a7hx2cfspqwh2y6kr"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments u-boot)
+ ((#:phases phases '%standard-phases)
+ #~(modify-phases #$phases
+ (add-after 'unpack 'patch-u-boot
+ (lambda _
+ (substitute* (find-files "include/configs" "^ts[0-9]{4}\\.h$")
+ ;; Default to boot a standard zImage instead of a uImage.
+ (("/boot/uImage")
+ "/boot/zImage")
+ (("uimage")
+ "zimage")
+ (("bootm \\$\\{loadaddr}")
+ "bootz ${loadaddr}")
+ ;; This reference DTB is not available in mainline.
+ (("ts7970-revf.dtb")
+ "ts7970.dtb")
+ ;; Enable support for DISTRO_DEFAULTS, which enables to
+ ;; use 'sysboot' to boot Guix System. Also enable
+ ;; "standard" boot commands for dealing with discovery and
+ ;; booting of syslinux configurations (extlinux.conf).
+
+ ;; Disable the stock CONFIG_BOOTCOMMAND to avoid a
+ ;; redefinition error.
+ (("CONFIG_BOOTCOMMAND")
+ "CONFIG_BOOTCOMMAND_DISABLED")
+ (("CONFIG_BOOTDELAY")
+ "CONFIG_BOOTDELAY_DISABLED")
+ ;; Inspired by include/configs/embestmx6boards.h
+ (("#define CONFIG_EXTRA_ENV_SETTINGS.*" anchor)
+ (string-append "\
+#include <config_distro_defaults.h>
+
+#define MEM_LAYOUT_ENV_SETTINGS \\
+\t\"bootm_size=0x10000000\\0\" \\
+\t\"kernel_addr_r=0x10800000\\0\" \\
+\t\"fdt_addr_r=0x18000000\\0\" \\
+\t\"scriptaddr=0x18100000\\0\" \\
+\t\"pxefile_addr_r=0x18200000\\0\" \\
+\t\"ramdisk_addr_r=0x18300000\\0\"
+
+#define BOOT_TARGET_DEVICES(func) \\
+\tfunc(MMC, mmc, 0) \\
+\tfunc(MMC, mmc, 1) \\
+\tfunc(SATA, sata, 0) \\
+\tfunc(USB, usb, 0) \\
+\tfunc(PXE, pxe, na) \\
+\tfunc(DHCP, dhcp, na)
+
+#include <config_distro_bootcmd.h>
+
+" anchor
+
+;; Sadly, the user config CONFIG_DEFAULT_FDT_FILE did not exist in that older
+;; U-Boot. A placeholder is added here, to be substituted in each TS U-Boot
+;; board package.
+"\
+\t\"fdtfile=DEFAULT_FDT_FILE\\0\" \\
+\tMEM_LAYOUT_ENV_SETTINGS \\
+\tBOOTENV \\\n")))))
+ (add-after 'unpack 'patch-for-reproducibility
+ (lambda _
+ ;; Substitute dynamically computed timestamps with static
+ ;; ones.
+ (substitute* "Makefile"
+ (("U_BOOT_DATE \"%b %d %C%y\"")
+ "U_BOOT_DATE \"Jan 01 1969\"")
+ (("U_BOOT_TIME \"%T\"")
+ "U_BOOT_TIME \"00:00:00\""))))
+ (add-before 'build 'adjust-for-gcc10
+ (lambda _
+ (copy-file "include/linux/compiler-gcc6.h"
+ "include/linux/compiler-gcc10.h")
+ (substitute* "arch/arm/Makefile"
+ (("march=armv5")
+ "march=armv5te"))))
+ (add-after 'install 'build+install-tools
+ (lambda* (#:key make-flags #:allow-other-keys)
+ (apply invoke "make" "tools-all" make-flags)
+ (install-file "tools/env/fw_printenv"
+ (string-append #$output "/bin"))
+ (symlink (string-append #$output "/bin/fw_printenv")
+ (string-append #$output "/bin/fw_setenv"))))))))
+ (native-inputs
+ (modify-inputs (package-native-inputs u-boot)
+ (delete "dtc")))))) ;otherwise the build fails
+
+(define-public u-boot-ts7970-q-2g-1000mhz-c
+ (let ((base
+ (make-u-boot-package "ts7970-q-2g-1000mhz-c" "arm-linux-gnueabihf"
+ #:u-boot u-boot-ts-mx6
+ #:append-description
+ "This U-Boot variant is for the Technologic
+Systems TS-7970 revision C board, which includes a quad core Freescale i.MX6
+CPU and 2 GiB of RAM clocked at 1000MHz. The binary U-Boot image to flash is
+the @file{libexec/u-boot.imx} file. It can be used with the @file{zImage} and
+the @file{imx6q-ts7970.dtb} files provided by the
+@code{linux-libre-arm-generic} image.
+
+To flash this bootloader, write it to an SD card, then using the U-Boot serial
+console:
+@example
+mmc dev 0
+load mmc 0:1 ${loadaddr} /u-boot.imx
+sf probe
+sf erase 0 0x80000
+sf write ${loadaddr} 0x400 $filesize
+@end example
+
+The factory values of U-Boot must also be reset so that it boots using a
+zImage instead of the default uImage:
+@example
+run clearenv
+reset
+@end example
+
+For more information, refer to
+@url{https://docs.embeddedts.com/TS-7970#Update_U-Boot}.")))
+ (package
+ (inherit base)
+ (arguments
+ (substitute-keyword-arguments (package-arguments base)
+ ((#:phases phases '%standard-phases)
+ #~(modify-phases #$phases
+ (add-after 'patch-u-boot 'set-default-fdt-file
+ (lambda _
+ (substitute* "include/configs/ts7970.h"
+ (("DEFAULT_FDT_FILE")
+ "imx6q-ts7970.dtb")))))))))))
+
(define-public vboot-utils
(package
(name "vboot-utils")

base-commit: fef10282afdb97af43d1ec1c0c955a7fdc313e3c
--
2.38.1
M
M
Maxim Cournoyer wrote on 4 Jan 2023 06:32
[PATCH v5 2/2] gnu: Add u-boot-ts7970-q-2g-1000mhz-c-bootloader.
(address . 59761@debbugs.gnu.org)
20230104053234.4540-2-maxim.cournoyer@gmail.com
* gnu/bootloader/u-boot.scm (u-boot-ts7970-q-2g-1000mhz-c-bootloader): New
variable.

---

(no changes since v4)

Changes in v4:
- Rebase on top of #60224 and master

gnu/bootloader/u-boot.scm | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)

Toggle diff (49 lines)
diff --git a/gnu/bootloader/u-boot.scm b/gnu/bootloader/u-boot.scm
index 6cad33b741..65d7923465 100644
--- a/gnu/bootloader/u-boot.scm
+++ b/gnu/bootloader/u-boot.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2017, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -42,6 +43,7 @@ (define-module (gnu bootloader u-boot)
u-boot-puma-rk3399-bootloader
u-boot-rock64-rk3328-bootloader
u-boot-rockpro64-rk3399-bootloader
+ u-boot-ts7970-q-2g-1000mhz-c-bootloader
u-boot-wandboard-bootloader))
(define install-u-boot
@@ -127,6 +129,12 @@ (define install-rockpro64-rk3399-u-boot
(define install-pinebook-pro-rk3399-u-boot install-rockpro64-rk3399-u-boot)
+(define install-u-boot-ts7970-q-2g-1000mhz-c-u-boot
+ #~(lambda (bootloader device mount-point)
+ (let ((u-boot.imx (string-append bootloader "/libexec/u-boot.imx"))
+ (install-dir (string-append mount-point "/boot")))
+ (install-file u-boot.imx install-dir))))
+
;;;
@@ -255,3 +263,13 @@ (define u-boot-pinebook-pro-rk3399-bootloader
(inherit u-boot-bootloader)
(package u-boot-pinebook-pro-rk3399)
(disk-image-installer install-pinebook-pro-rk3399-u-boot)))
+
+(define u-boot-ts7970-q-2g-1000mhz-c-bootloader
+ ;; This bootloader doesn't really need to be installed, as it is read from
+ ;; an SPI memory chip, not the SD card. It is copied to /boot/u-boot.imx
+ ;; for convenience and should be manually flashed at the U-Boot prompt.
+ (bootloader
+ (inherit u-boot-bootloader)
+ (package u-boot-ts7970-q-2g-1000mhz-c)
+ (installer install-u-boot-ts7970-q-2g-1000mhz-c-u-boot)
+ (disk-image-installer #f)))
--
2.38.1
M
M
Maxim Cournoyer wrote on 4 Jan 2023 06:34
Re: bug#59761: [PATCH 0/2] Add u-boot-ts7970-q-2g-1000mhz-c.
(name . Ricardo Wurmus)(address . rekado@elephly.net)(address . 59761@debbugs.gnu.org)
87a62yx3pt.fsf_-_@gmail.com
Hi,

Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:

Toggle quote (9 lines)
>> For something as
>> long as the replacements in this package consider using a patch file
>> instead. This has the added advantage of failing the build when the
>> patch cannot be applied cleanly.
>
> I agree that a patch would be most suitable here, especially that if
> something breaks, if would likely be silent (unlikely to be caught at
> build time). I'll extract this as a patch.

After re-diving into the code, I opted to kept it as a substitution
given it affects multiple config files in the same way, and would make a
large, redundant patch. I cleaned it up per your suggestions (see v5).

--
Thanks,
Maxim
R
R
Ricardo Wurmus wrote on 4 Jan 2023 08:35
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)(address . 59761@debbugs.gnu.org)
87fscq4uod.fsf@elephly.net
Toggle quote (3 lines)
> PS: I had also missed that email; please keep me in CC in all your
> replies :-).

Oh, that’s odd. I’m replying “from scratch” going just by the bug
number in issues.guix.gnu.org; it doesn’t expose your email address in a
convenient way, so I usually just grab the issue number and write an
email.

Shouldn’t debbugs Cc you when receiving comments on your patch
submission?

--
Ricardo
M
M
Maxim Cournoyer wrote on 4 Jan 2023 15:46
(name . Ricardo Wurmus)(address . rekado@elephly.net)(address . 59761@debbugs.gnu.org)
875ydmwe6r.fsf@gmail.com
Hi Ricardo,

Ricardo Wurmus <rekado@elephly.net> writes:

Toggle quote (11 lines)
>> PS: I had also missed that email; please keep me in CC in all your
>> replies :-).
>
> Oh, that’s odd. I’m replying “from scratch” going just by the bug
> number in issues.guix.gnu.org; it doesn’t expose your email address in a
> convenient way, so I usually just grab the issue number and write an
> email.
>
> Shouldn’t debbugs Cc you when receiving comments on your patch
> submission?

It would be nice if it did, but I don't think it does. Also, the
'X-Debbugs-Cc' header used in teams.scm doesn't seem to cause an actual
CC; I think it'd just cause someone not already subscribed to the
guix-patches mailing list to be sent an email. I think it'd be better
to simply use git-send-email's '--cc', or both.

My Gnus email filter is based on the Return-Path:

Toggle snippet (8 lines)
(nnimap-split-methods
;; Filter guix mailing lists based on Return
(("list.\\1" "^Return-Path: <\\(.*\\)-bounces.*@\\(non\\)?gnu.org>")
("list.\\1" "^Return-Path: <\\(.*\\)-bounces.*@lists.denx.de>")
("list.\\1" "^Return-Path: <\\(.*\\)-owner@vger.kernel.org>")
("INBOX" "")))

I think when Cc: is used in an email, it causes the Return-Path to be
that of the person sending the email rather than mailman's email, which
is what the above filter expects.

--
Thanks,
Maxim
M
M
Maxim Cournoyer wrote on 19 Jan 2023 03:30
(address . 59761-done@debbugs.gnu.org)(address . rekado@elephly.net)
874jsndzmu.fsf_-_@gmail.com
Hi,

Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:

Toggle quote (13 lines)
> * gnu/bootloader/u-boot.scm (u-boot-ts7970-q-2g-1000mhz-c-bootloader): New
> variable.
>
> ---
>
> (no changes since v4)
>
> Changes in v4:
> - Rebase on top of #60224 and master
>
> gnu/bootloader/u-boot.scm | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)

Now applied!

--
Thanks,
Maxim
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 59761@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 59761
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch