mbox series

[bug#69476,0/8] guix: Add xtensa-ath9k-elf platform.

Message ID cover.1709219325.git.jean@foundationdevices.com
Headers show
Series guix: Add xtensa-ath9k-elf platform. | expand

Message

Jean-Pierre De Jesus DIAZ Feb. 29, 2024, 3:19 p.m. UTC
Hello,

As the ath9k-htc-firmware package requires a custom toolchain to build
the firmware I thought it was best to have a target for this specific
package as it modifies the default configuration of the Xtensa target in
GCC.

To work around this a new target is added: xtensa-ath9k-elf.

It uses binutils@2.33 and the patched version of GCC to properly compile
the firmware. So, as a result it allows using #:target keyword parameter
to cross-compile the firmware and avoids explicitly adding the cross
compiler in the NATIVE-INPUTS field.

As a result the ath9k-htc-firmware package was splitted into two and
uses the cmake-build-sytem now to use Guix's cross-compilation support
properly, so it removes the need for the ath9k-htc-firmware-objcopy.patch.

The [PATCH 7/8] contains a patch that was already sent to:

https://issues.guix.gnu.org/68366

I don't have the hardware to test this firmware but the build produces
the same hashes for the firmware so it's safe to say that the firmware
should keep working.

The hashes with this patch series:

a5481cc67d962b217de1300121a6c7584e847cbe215442553d24a2173ca9202e  /gnu/store/0i3zw28pvrr8l85fx79i8lq0f9vmgyjz-ath9k-htc-ar9271-firmware-1.4.0/lib/firmware/htc_9271.fw
eef84c16e3edad3fdec19c985d190b5ed3f5bd5bae20be5579681ab35f001406  /gnu/store/iqbd77grzy4sngkxz9lgyvk52apn8vzj-ath9k-htc-ar7010-firmware-1.4.0/lib/firmware/htc_7010.fw

And the hashes in master at commit 75bad75367fcf2c289fae3b40dbcc850f92177be:

a5481cc67d962b217de1300121a6c7584e847cbe215442553d24a2173ca9202e  /gnu/store/0m45gn74b5bavxq77158i3l593lh082r-ath9k-htc-firmware-1.4.0/lib/firmware/htc_9271.fw
eef84c16e3edad3fdec19c985d190b5ed3f5bd5bae20be5579681ab35f001406  /gnu/store/0m45gn74b5bavxq77158i3l593lh082r-ath9k-htc-firmware-1.4.0/lib/firmware/htc_7010.fw

Jean-Pierre De Jesus DIAZ (8):
  doc: Add documentation for x86_64-linux-gnux32.
  guix: Add xtensa-ath9k-elf platform.
  gnu: ath9k-htc-firmware: Remove binary blobs.
  gnu: ath9k-htc-firmware: Allow using other targets.
  gnu: ath9k-htc-firmware: Use xtensa-ath9k-elf.
  gnu: cross-binutils: Use binutils-2.33 for ath9k.
  guix: cmake-build-system: Handle unknown systems.
  gnu: ath9k-htc-firmware: Split package.

 Makefile.am                                   |  1 +
 doc/guix.texi                                 | 12 +++
 gnu/local.mk                                  |  1 -
 gnu/packages/cross-base.scm                   | 17 +++-
 gnu/packages/firmware.scm                     | 88 +++++++++----------
 .../patches/ath9k-htc-firmware-objcopy.patch  | 14 ---
 gnu/system.scm                                |  3 +-
 guix/build/cmake-build-system.scm             | 10 ++-
 guix/platforms/xtensa.scm                     | 28 ++++++
 9 files changed, 105 insertions(+), 69 deletions(-)
 delete mode 100644 gnu/packages/patches/ath9k-htc-firmware-objcopy.patch
 create mode 100644 guix/platforms/xtensa.scm


base-commit: 75bad75367fcf2c289fae3b40dbcc850f92177be

Comments

Vagrant Cascadian March 26, 2024, 6:17 a.m. UTC | #1
On 2024-02-29, Jean-Pierre De Jesus DIAZ wrote:
> As the ath9k-htc-firmware package requires a custom toolchain to build
> the firmware I thought it was best to have a target for this specific
> package as it modifies the default configuration of the Xtensa target in
> GCC.
>
> To work around this a new target is added: xtensa-ath9k-elf.
>
> It uses binutils@2.33 and the patched version of GCC to properly compile
> the firmware. So, as a result it allows using #:target keyword parameter
> to cross-compile the firmware and avoids explicitly adding the cross
> compiler in the NATIVE-INPUTS field.

I am not in a position to evaluate the correctness of the proposed
toolchain changes, but conceptually it makes sense.


> As a result the ath9k-htc-firmware package was splitted into two and
> uses the cmake-build-sytem now to use Guix's cross-compilation support
> properly, so it removes the need for the ath9k-htc-firmware-objcopy.patch.

This makes sense to me too.


> The [PATCH 7/8] contains a patch that was already sent to:
>
> https://issues.guix.gnu.org/68366

Ok, one of these two patch series will need to be refactored depending
on which gets applied first.


> I don't have the hardware to test this firmware but the build produces
> the same hashes for the firmware so it's safe to say that the firmware
> should keep working.

I do have some of the hardware to test, though have not had a chance to
test the patches... will try to get on that.

Obviously producing identical hashes is quite compelling; this is an
excellent example of applying Reproducible Builds to refactoring code!


> The hashes with this patch series:
>
> a5481cc67d962b217de1300121a6c7584e847cbe215442553d24a2173ca9202e  /gnu/store/0i3zw28pvrr8l85fx79i8lq0f9vmgyjz-ath9k-htc-ar9271-firmware-1.4.0/lib/firmware/htc_9271.fw
> eef84c16e3edad3fdec19c985d190b5ed3f5bd5bae20be5579681ab35f001406  /gnu/store/iqbd77grzy4sngkxz9lgyvk52apn8vzj-ath9k-htc-ar7010-firmware-1.4.0/lib/firmware/htc_7010.fw
>
> And the hashes in master at commit 75bad75367fcf2c289fae3b40dbcc850f92177be:
>
> a5481cc67d962b217de1300121a6c7584e847cbe215442553d24a2173ca9202e  /gnu/store/0m45gn74b5bavxq77158i3l593lh082r-ath9k-htc-firmware-1.4.0/lib/firmware/htc_9271.fw
> eef84c16e3edad3fdec19c985d190b5ed3f5bd5bae20be5579681ab35f001406  /gnu/store/0m45gn74b5bavxq77158i3l593lh082r-ath9k-htc-firmware-1.4.0/lib/firmware/htc_7010.fw

Yay!


live well,
  vagrant
Ludovic Courtès April 17, 2024, 9:22 a.m. UTC | #2
Hi Jean-Pierre,

Looks like this patch series had fallen through the cracks.

Jean-Pierre De Jesus DIAZ <jean@foundationdevices.com> skribis:

> As the ath9k-htc-firmware package requires a custom toolchain to build
> the firmware I thought it was best to have a target for this specific
> package as it modifies the default configuration of the Xtensa target in
> GCC.
>
> To work around this a new target is added: xtensa-ath9k-elf.
>
> It uses binutils@2.33 and the patched version of GCC to properly compile
> the firmware. So, as a result it allows using #:target keyword parameter
> to cross-compile the firmware and avoids explicitly adding the cross
> compiler in the NATIVE-INPUTS field.
>
> As a result the ath9k-htc-firmware package was splitted into two and
> uses the cmake-build-sytem now to use Guix's cross-compilation support
> properly, so it removes the need for the ath9k-htc-firmware-objcopy.patch.
>
> The [PATCH 7/8] contains a patch that was already sent to:
>
> https://issues.guix.gnu.org/68366

Neat.

> I don't have the hardware to test this firmware but the build produces
> the same hashes for the firmware so it's safe to say that the firmware
> should keep working.
>
> The hashes with this patch series:
>
> a5481cc67d962b217de1300121a6c7584e847cbe215442553d24a2173ca9202e  /gnu/store/0i3zw28pvrr8l85fx79i8lq0f9vmgyjz-ath9k-htc-ar9271-firmware-1.4.0/lib/firmware/htc_9271.fw
> eef84c16e3edad3fdec19c985d190b5ed3f5bd5bae20be5579681ab35f001406  /gnu/store/iqbd77grzy4sngkxz9lgyvk52apn8vzj-ath9k-htc-ar7010-firmware-1.4.0/lib/firmware/htc_7010.fw
>
> And the hashes in master at commit 75bad75367fcf2c289fae3b40dbcc850f92177be:
>
> a5481cc67d962b217de1300121a6c7584e847cbe215442553d24a2173ca9202e  /gnu/store/0m45gn74b5bavxq77158i3l593lh082r-ath9k-htc-firmware-1.4.0/lib/firmware/htc_9271.fw
> eef84c16e3edad3fdec19c985d190b5ed3f5bd5bae20be5579681ab35f001406  /gnu/store/0m45gn74b5bavxq77158i3l593lh082r-ath9k-htc-firmware-1.4.0/lib/firmware/htc_7010.fw

Excellent; thanks for taking the time to check this!

(FWIW I use a WiFi dongle that relies on this firmware so you’ll soon
hear from me if something goes wrong.  ;-))

>   doc: Add documentation for x86_64-linux-gnux32.
>   guix: Add xtensa-ath9k-elf platform.
>   gnu: ath9k-htc-firmware: Remove binary blobs.
>   gnu: ath9k-htc-firmware: Allow using other targets.
>   gnu: ath9k-htc-firmware: Use xtensa-ath9k-elf.
>   gnu: cross-binutils: Use binutils-2.33 for ath9k.
>   guix: cmake-build-system: Handle unknown systems.
>   gnu: ath9k-htc-firmware: Split package.

Applied, thanks!

Ludo’.