Message ID | 20230102004637.3920-7-maxim.cournoyer@gmail.com |
---|---|
State | New |
Headers | show |
Series | [bug#60224,v3,01/11] gnu: make-u-boot-package: Add a u-boot argument and use gexps. | expand |
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
Hi Vagrant! Vagrant Cascadian <vagrant@debian.org> writes: > 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. :/ [...] >> + #~(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. This ^ ... > >> (native-inputs >> - `(("firmware" ,arm-trusted-firmware-sun50i-a64) >> - ,@(package-native-inputs base)))))) >> + (modify-inputs (package-native-inputs base) >> + (append arm-trusted-firmware-rk3399)))))) > ... was the product of the above typo; thanks for catching it! > 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. I've now removed that commit; and undid the previous change to, which was based on that mistake. I'll sent a v4 shortly. I've noted something annoying though; is that cross-compiling doesn't work yet because U-Boot uses python packages, which barfs like: --8<---------------cut here---------------start------------->8--- $ ./pre-inst-env guix build u-boot-puma-rk3399 guix build: error: gnu/packages/check.scm:1997:2: python-coverage@5.2.1: build system `python' does not support cross builds --8<---------------cut here---------------end--------------->8--- So currently the only way to build it is via --system, e.g. 'guix build -s aarch64-linux u-boot-puma-rk3399'. The complications I simplified were probably papering over that issue. That said, I see no reason we couldn't convince our Python build system to "cross-compile" Python packages, so I intend to look at this. Not sure if this should be a blocker or not.
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")))))))) (native-inputs - `(("firmware" ,arm-trusted-firmware-sun50i-a64) - ,@(package-native-inputs base)))))) + (modify-inputs (package-native-inputs base) + (append arm-trusted-firmware-rk3399)))))) (define-public u-boot-pine64-plus (make-u-boot-sunxi64-package "pine64_plus" "aarch64-linux-gnu"))