Subject: [bug#64149] [PATCH v3 2/6] gnu: u-boot: Update to 2023.07.02.

From: Maxim Cournoyer <[email-masked]>
Date: Fri, 14 Jul 2023 22:42:23 -0400

Hello,

[email-masked] writes:

> From: Vagrant Cascadian <[email-masked]>
>
> * gnu/packages/patches/u-boot-infodocs-target.patch: Delete file.
> * gnu/packages/patches/u-boot-patman-guix-integration.patch: Delete file.
> * gnu/local.mk: De-register patches.
> * gnu/packages/patches/u-boot-allow-disabling-openssl.patch: Refresh.
> * gnu/packages/patches/u-boot-sifive-prevent-reloc-initrd-fdt.patch: Refresh.
> * gnu/packages/bootloaders.scm (u-boot): Update to 2023.07.02.
> [native-inputs]: Add python-pyelftools.
> [source]: Remove patches.
> (u-boot-tools)[phases]: Update substitution for python3-coverage.
> Adjust 'patch to catch more openssl incompatibilities.
> Split lines in 'patch phase.
> [native-inputs]: Add python-filelock and python-pytest-xdist.
> (make-u-boot-sunxi64-package): Set SCP environment variable.
> (u-boot-sifive-unleashed): Update to use opensbi.
> (u-boot-puma-rk3399)[inputs]: Add arm-trusted-firmware-rk3399 to
> package-inputs instead of native-inputs.
> (u-boot-rockpro64-rk3399)[phases]: Add 'disable-spl-fit-signature.
> ---
>  gnu/local.mk                                  |    2 -
>  gnu/packages/bootloaders.scm                  |   57 +-
>  .../u-boot-allow-disabling-openssl.patch      |   13 +-
>  .../patches/u-boot-infodocs-target.patch      |   84 --
>  .../u-boot-patman-guix-integration.patch      | 1244 -----------------
>  ...boot-sifive-prevent-reloc-initrd-fdt.patch |    8 +-
>  6 files changed, 56 insertions(+), 1352 deletions(-)
>  delete mode 100644 gnu/packages/patches/u-boot-infodocs-target.patch
>  delete mode 100644 gnu/packages/patches/u-boot-patman-guix-integration.patch
>
> diff --git a/gnu/local.mk b/gnu/local.mk
> index c817c9c926..0e0087b6aa 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -1999,8 +1999,6 @@ dist_patch_DATA =						\
>    %D%/packages/patches/twinkle-bcg729.patch			\
>    %D%/packages/patches/u-boot-allow-disabling-openssl.patch	\
>    %D%/packages/patches/u-boot-fix-build-python-3.10.patch	\
> -  %D%/packages/patches/u-boot-infodocs-target.patch		\
> -  %D%/packages/patches/u-boot-patman-guix-integration.patch	\
>    %D%/packages/patches/u-boot-nintendo-nes-serial.patch		\
>    %D%/packages/patches/u-boot-rockchip-inno-usb.patch		\
>    %D%/packages/patches/u-boot-sifive-prevent-reloc-initrd-fdt.patch	\
> diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
> index 01fd1093ff..d1633b2b70 100644
> --- a/gnu/packages/bootloaders.scm
> +++ b/gnu/packages/bootloaders.scm
> @@ -648,23 +648,21 @@ (define %u-boot-rk3399-enable-emmc-phy-patch
>  (define u-boot
>    (package
>      (name "u-boot")
> -    (version "2022.10")
> +    (version "2023.07.02")
>      (source (origin
>                (patches
>                 (list %u-boot-rockchip-inno-usb-patch
>                       %u-boot-allow-disabling-openssl-patch
>                       %u-boot-sifive-prevent-relocating-initrd-fdt
>                       %u-boot-rk3399-enable-emmc-phy-patch
> -                     (search-patch "u-boot-fix-build-python-3.10.patch")
> -                     (search-patch "u-boot-infodocs-target.patch")
> -                     (search-patch "u-boot-patman-guix-integration.patch")))
> +                     (search-patch "u-boot-fix-build-python-3.10.patch")))
>                (method url-fetch)
>                (uri (string-append
>                      "https://ftp.denx.de/pub/u-boot/"
>                      "u-boot-" version ".tar.bz2"))
>                (sha256
>                 (base32
> -                "1y5x8vxdgsqdqlsvq01mn8lmw53fqairkhvhhjx83hjva0m4id2h"))))
> +                "1m91w3fpywllkwm000dqsw3294j0szs1lz6qbgwv1aql3ic4hskb"))))
>      (build-system gnu-build-system)
>      (native-inputs
>       (list bison
> @@ -676,6 +674,7 @@ (define u-boot
>             perl
>             pkg-config                   ;for 'make menuconfig'
>             python
> +           python-pyelftools
>             swig
>             (list util-linux "lib")))
>      (home-page "https://www.denx.de/wiki/U-Boot/")
> @@ -726,7 +725,12 @@ (define-public u-boot-tools
>      (name "u-boot-tools")
>      (native-inputs
>       (modify-inputs (package-native-inputs u-boot)
> -       (prepend python-coverage python-pycryptodomex python-pytest sdl2)))
> +       (prepend python-coverage
> +                python-filelock
> +                python-pycryptodomex
> +                python-pytest
> +                python-pytest-xdist

Maybe worth checking: Is pytest invoked with the '-n' (number->string
(parallel-job-count)); otherwise xdist doesn't provide any benefit.

> +                sdl2)))
>      (arguments
>       `(#:make-flags '("HOSTCC=gcc")
>         #:test-target "tcheck"
> @@ -739,7 +743,7 @@ (define-public u-boot-tools
>                 (("/bin/false") (which "false")))
>               (substitute* "tools/dtoc/fdt_util.py"
>                 (("'cc'") "'gcc'"))
> -             (substitute* "tools/patman/test_util.py"
> +             (substitute* "tools/u_boot_pylib/test_util.py"
>                 ;; python3-coverage is simply called coverage in guix.
>                 (("python3-coverage") "coverage")
>  
> @@ -777,7 +781,15 @@ (define-public u-boot-tools
>                             ;; See https://bugs.gnu.org/34717 for
>                             ;; details.
>                             (("CONFIG_FIT_SIGNATURE=y")
> -                            "CONFIG_FIT_SIGNATURE=n\nCONFIG_UT_LIB_ASN1=n\nCONFIG_TOOLS_LIBCRYPTO=n")
> +                            "CONFIG_FIT_SIGNATURE=n
> +CONFIG_UT_LIB_ASN1=n
> +CONFIG_TOOLS_LIBCRYPTO=n")
> +                           ;; Catch instances of implied CONFIG_FIG_SIGNATURE with VPL targets
> +                           (("CONFIG_SANDBOX_VPL=y")
> +                            "CONFIG_SANDBOX_VPL=y
> +CONFIG_FIT_SIGNATURE=n
> +CONFIG_VPL_FIT_SIGNATURE=n
> +CONFIG_TOOLS_LIBCRYPTO=n")

Thanks, this reads better.

>                             ;; This test requires a sound system, which is un-used
>                             ;; in u-boot-tools.
>                             (("CONFIG_SOUND=y") "CONFIG_SOUND=n")))
> @@ -1009,6 +1021,8 @@ (define*-public (make-u-boot-sunxi64-package board triplet
>            #~(modify-phases #$phases
>                (add-after 'unpack 'set-environment
>                  (lambda* (#:key native-inputs inputs #:allow-other-keys)
> +                  ;; Avoid dependency on crust-firmware https://issues.guix.gnu.org/48371
> +                  (setenv "SCP" "/dev/null")

I think I've seen this gets added in a later commit.  Any reason why it
can't be added here?

>                    (setenv "BL31" (search-input-file inputs "bl31.bin"))))))))
>        (inputs
>         (modify-inputs (package-inputs base)
> @@ -1104,7 +1118,7 @@ (define-public u-boot-puma-rk3399
>                (delete 'strip)
>                (delete 'validate-runpath)))))
>        (inputs
> -       (modify-inputs (package-native-inputs base)
> +       (modify-inputs (package-inputs base)
>           (append arm-trusted-firmware-rk3399))))))
>  
>  (define-public u-boot-qemu-arm
> @@ -1170,7 +1184,20 @@ (define-public u-boot-sandbox
>                  (append sdl2))))))
>  
>  (define-public u-boot-sifive-unleashed
> -  (make-u-boot-package "sifive_unleashed" "riscv64-linux-gnu"))
> +  (let ((base (make-u-boot-package "sifive_unleashed" "riscv64-linux-gnu")))
> +    (package
> +      (inherit base)
> +      (arguments
> +       (substitute-keyword-arguments (package-arguments base)
> +         ((#:phases phases)
> +          #~(modify-phases #$phases
> +              (add-after 'unpack 'set-environment
> +                (lambda* (#:key inputs #:allow-other-keys)
> +                  (setenv "OPENSBI" (search-input-file inputs
> +                                                       "fw_dynamic.bin"))))))))
> +      (inputs
> +       (modify-inputs (package-inputs base)
> +         (append opensbi-generic))))))
>  
>  (define-public u-boot-sifive-unmatched
>    (let ((base (make-u-boot-package "sifive_unmatched" "riscv64-linux-gnu")))
> @@ -1230,7 +1257,8 @@ (define-public u-boot-rockpro64-rk3399
>                                                 "CONFIG_SATA_SIL=y"
>                                                 "CONFIG_SCSI=y"
>                                                 "CONFIG_SCSI_AHCI=y"
> -                                               "CONFIG_DM_SCSI=y"))))
> +                                               "CONFIG_DM_SCSI=y"
> +                                               "# CONFIG_SPL_FIT_SIGNATURE is not set"))))
>      (package
>        (inherit base)
>        (arguments
> @@ -1240,6 +1268,13 @@ (define-public u-boot-rockpro64-rk3399
>                (add-after 'unpack 'set-environment
>                  (lambda* (#:key inputs #:allow-other-keys)
>                    (setenv "BL31" (search-input-file inputs "/bl31.elf"))))
> +              ;; Disable SPL FIT signatures, due to GPLv2 and Openssl license
> +              ;; incompatibilities
> +              (add-after 'unpack 'disable-spl-fit-signature
> +                (lambda _
> +                  (substitute* "configs/rockpro64-rk3399_defconfig"
> +                    (("CONFIG_SPL_FIT_SIGNATURE=y")
> +                     "# CONFIG_SPL_FIT_SIGNATURE is not set"))))

Are you sure this really disables SPL_FIT_SIGNATURE?  The #:configs
arguments goes through 'verify-config', which ensures an unset value
doesn't get pulled as a dependency of other options, if I recall
correctly.

The rest LGTM.

-- 
Thanks,
Maxim