Subject: [bug#60224] [PATCH v3 07/11] gnu: make-u-boot-sunxi64-package: Use gexps and adjust file name.

From: Vagrant Cascadian <[email-masked]>
Date: Fri, 06 Jan 2023 09:17:12 -0800

On 2023-01-01, Maxim Cournoyer wrote:
> * gnu/packages/bootloaders.scm (make-u-boot-sunxi64-package)
> [phases] {set-environment}: Replace bl31.bin with bl31.elf; bl31.elf doesn't
> exist anymore for some reason.

Seems like the description is the inverse of what it is actually
doing. But what it is doing is ... not right either. :/

This appears to repurpose a function targeted at sunxi64 platforms for
rockchip platforms.

Seems like you might want to make a make-u-boot-rockchip-package
function instead?

More details below...

>  gnu/packages/bootloaders.scm | 17 +++++++----------
>  1 file changed, 7 insertions(+), 10 deletions(-)
>
> diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
> index 8a56ee9cec..a19d1ebf17 100644
> --- a/gnu/packages/bootloaders.scm
> +++ b/gnu/packages/bootloaders.scm
> @@ -1005,17 +1005,14 @@ (define*-public (make-u-boot-sunxi64-package board triplet
>        (arguments
>         (substitute-keyword-arguments (package-arguments base)
>           ((#:phases phases)
> -          `(modify-phases ,phases
> -             (add-after 'unpack 'set-environment
> -               (lambda* (#:key native-inputs inputs #:allow-other-keys)
> -                 (let ((bl31
> -                        (string-append
> -                         (assoc-ref (or native-inputs inputs) "firmware")
> -                         "/bl31.bin")))
> -                   (setenv "BL31" bl31))))))))
> +          #~(modify-phases #$phases
> +              (add-after 'unpack 'set-environment
> +                (lambda* (#:key native-inputs inputs #:allow-other-keys)
> +                  (setenv "BL31" (search-input-file (or native-inputs inputs)
> +                                                    "bl31.elf"))))))))

bl31.elf is built on rockchip platforms, but not sunxi/allwinner
platforms. The sunxi/allwinner platforms need bl31.bin.

>        (native-inputs
> -       `(("firmware" ,arm-trusted-firmware-sun50i-a64)
> -         ,@(package-native-inputs base))))))
> +       (modify-inputs (package-native-inputs base)
> +         (append arm-trusted-firmware-rk3399))))))

This is absolutely incorrect, as this forces it to be rk3399, which is
not even a sunxi platform, and will break all the sun50i-a64 platforms
(e.g. pine64, pinebook).  That said, there are technically sunxi64
platforms that would use a different arm-trusted-firmware build, so this
could use improving.

live well,
  vagrant