* [bug#69476] [PATCH 1/8] doc: Add documentation for x86_64-linux-gnux32.
2024-02-29 15:19 [bug#69476] [PATCH 0/8] guix: Add xtensa-ath9k-elf platform Jean-Pierre De Jesus DIAZ via Guix-patches via
@ 2024-02-29 15:20 ` Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-02-29 15:20 ` [bug#69476] [PATCH 2/8] guix: Add xtensa-ath9k-elf platform Jean-Pierre De Jesus DIAZ via Guix-patches via
` (8 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: Jean-Pierre De Jesus DIAZ via Guix-patches via @ 2024-02-29 15:20 UTC (permalink / raw)
To: 69476; +Cc: Jean-Pierre De Jesus DIAZ
* doc/guix.texi: Add documentation for x86_64-linux-gnux32.
Change-Id: I408d57ae5ae3e9b1449633b82c41aba0d40ded06
---
doc/guix.texi | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/doc/guix.texi b/doc/guix.texi
index f6476e0d81..7153c9e7a4 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -16963,6 +16963,7 @@ Cross-Compilation
- powerpc64le-linux-gnu
- riscv64-linux-gnu
- x86_64-linux-gnu
+ - x86_64-linux-gnux32
- x86_64-w64-mingw32
@end example
@@ -46732,6 +46733,11 @@ Supported Platforms
Platform targeting x86 64-bit CPU running GNU/Linux.
@end defvar
+@defvar x86_64-linux-x32
+Platform targeting x86 64-bit CPU running GNU/Linux with the run-time using
+the X32 ABI.
+@end defvar
+
@defvar i686-mingw
Platform targeting x86 CPU running Windows, with run-time support from
MinGW.
--
2.41.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [bug#69476] [PATCH 2/8] guix: Add xtensa-ath9k-elf platform.
2024-02-29 15:19 [bug#69476] [PATCH 0/8] guix: Add xtensa-ath9k-elf platform Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-02-29 15:20 ` [bug#69476] [PATCH 1/8] doc: Add documentation for x86_64-linux-gnux32 Jean-Pierre De Jesus DIAZ via Guix-patches via
@ 2024-02-29 15:20 ` Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-02-29 15:20 ` [bug#69476] [PATCH 3/8] gnu: ath9k-htc-firmware: Remove binary blobs Jean-Pierre De Jesus DIAZ via Guix-patches via
` (7 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: Jean-Pierre De Jesus DIAZ via Guix-patches via @ 2024-02-29 15:20 UTC (permalink / raw)
To: 69476
Cc: Jean-Pierre De Jesus DIAZ, Christopher Baines, Josselin Poiret,
Ludovic Courtès, Mathieu Othacehe, Ricardo Wurmus,
Simon Tournier, Tobias Geerinckx-Rice
* Makefile.am (MODULES): Add guix/platforms/xtensa.scm.
* guix/platforms/xtensa.scm (xtensa-ath9k-elf): New variable.
* doc/guix.texi: Add xtensa-ath9k-elf documentation.
Change-Id: I51eef245142ed58613340c16d4bf7266e6bf6adb
---
Makefile.am | 1 +
doc/guix.texi | 6 ++++++
guix/platforms/xtensa.scm | 28 ++++++++++++++++++++++++++++
3 files changed, 35 insertions(+)
create mode 100644 guix/platforms/xtensa.scm
diff --git a/Makefile.am b/Makefile.am
index cef972880c..df62c4e255 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -144,6 +144,7 @@ MODULES = \
guix/platforms/powerpc.scm \
guix/platforms/riscv.scm \
guix/platforms/x86.scm \
+ guix/platforms/xtensa.scm \
guix/build-system.scm \
guix/build-system/agda.scm \
guix/build-system/android-ndk.scm \
diff --git a/doc/guix.texi b/doc/guix.texi
index 7153c9e7a4..d3db1ee03d 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -16965,6 +16965,7 @@ Cross-Compilation
- x86_64-linux-gnu
- x86_64-linux-gnux32
- x86_64-w64-mingw32
+ - xtensa-ath9k-elf
@end example
Targets are specified as GNU triplets (@pxref{Specifying Target
@@ -46763,6 +46764,11 @@ Supported Platforms
C standard library.
@end defvar
+@defvar xtensa-ath9k-elf
+Platform targeting Xtensa CPU used in the Qualcomm Atheros AR7010 and AR9271
+USB 802.11n @acronym{NICs, Network Interface Controllers}.
+@end defvar
+
@node System Images
@chapter Creating System Images
diff --git a/guix/platforms/xtensa.scm b/guix/platforms/xtensa.scm
new file mode 100644
index 0000000000..304e23ab1a
--- /dev/null
+++ b/guix/platforms/xtensa.scm
@@ -0,0 +1,28 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2024 Foundation Devices, Inc. <hello@foundationdevices.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix platforms xtensa)
+ #:use-module (guix platform)
+ #:use-module (guix records)
+ #:export (xtensa-ath9k-elf))
+
+(define xtensa-ath9k-elf
+ (platform
+ (target "xtensa-ath9k-elf")
+ (system #f)
+ (glibc-dynamic-linker #f)))
--
2.41.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [bug#69476] [PATCH 3/8] gnu: ath9k-htc-firmware: Remove binary blobs.
2024-02-29 15:19 [bug#69476] [PATCH 0/8] guix: Add xtensa-ath9k-elf platform Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-02-29 15:20 ` [bug#69476] [PATCH 1/8] doc: Add documentation for x86_64-linux-gnux32 Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-02-29 15:20 ` [bug#69476] [PATCH 2/8] guix: Add xtensa-ath9k-elf platform Jean-Pierre De Jesus DIAZ via Guix-patches via
@ 2024-02-29 15:20 ` Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-02-29 15:20 ` [bug#69476] [PATCH 4/8] gnu: ath9k-htc-firmware: Allow using other targets Jean-Pierre De Jesus DIAZ via Guix-patches via
` (6 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: Jean-Pierre De Jesus DIAZ via Guix-patches via @ 2024-02-29 15:20 UTC (permalink / raw)
To: 69476; +Cc: Jean-Pierre De Jesus DIAZ, Efraim Flashner, Vagrant Cascadian
* gnu/packages/firmware.scm (ath9k-htc-firmware) <source>: Add snippet
to remove bundled binary files.
Change-Id: I2f0592d03039ff9d5a5f3a79b0c62566164f3762
---
gnu/packages/firmware.scm | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index 828bc7402a..a9f218eb9f 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -99,6 +99,10 @@ (define-public ath9k-htc-firmware
(uri (git-reference
(url "https://github.com/qca/open-ath9k-htc-firmware")
(commit version)))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Delete binary blobs.
+ #~(for-each delete-file (find-files "." "\\.(a|o)$")))
(sha256
(base32
"16jbj8avg5jkgvq5lxm0hdxxn4c3zn7fx8b4nxllvr024apk9w23"))
--
2.41.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [bug#69476] [PATCH 4/8] gnu: ath9k-htc-firmware: Allow using other targets.
2024-02-29 15:19 [bug#69476] [PATCH 0/8] guix: Add xtensa-ath9k-elf platform Jean-Pierre De Jesus DIAZ via Guix-patches via
` (2 preceding siblings ...)
2024-02-29 15:20 ` [bug#69476] [PATCH 3/8] gnu: ath9k-htc-firmware: Remove binary blobs Jean-Pierre De Jesus DIAZ via Guix-patches via
@ 2024-02-29 15:20 ` Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-02-29 15:20 ` [bug#69476] [PATCH 5/8] gnu: ath9k-htc-firmware: Use xtensa-ath9k-elf Jean-Pierre De Jesus DIAZ via Guix-patches via
` (5 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: Jean-Pierre De Jesus DIAZ via Guix-patches via @ 2024-02-29 15:20 UTC (permalink / raw)
To: 69476; +Cc: Jean-Pierre De Jesus DIAZ, Efraim Flashner, Vagrant Cascadian
* gnu/packages/firmware.scm (ath9k-htc-firmware): Override the TARGET
environment variable in the configure script to use xtensa-elf.
* gnu/packages/patches/ath9k-htc-firmware-objcopy.patch: Adapt to use
TARGET environment variable for objcopy.
Change-Id: Ia44f0f25dde532b90168f2f2456412a43ac9af24
---
gnu/packages/firmware.scm | 1 +
gnu/packages/patches/ath9k-htc-firmware-objcopy.patch | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index a9f218eb9f..da7835a95d 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -121,6 +121,7 @@ (define-public ath9k-htc-firmware
;; 'configure' is a simple script that runs 'cmake' with
;; the right flags.
(substitute* "configure"
+ (("^TARGET.*$") "TARGET=xtensa-elf\n")
(("^TOOLCHAIN=.*$")
(string-append "TOOLCHAIN="
(assoc-ref (or native-inputs inputs) "cross-gcc")
diff --git a/gnu/packages/patches/ath9k-htc-firmware-objcopy.patch b/gnu/packages/patches/ath9k-htc-firmware-objcopy.patch
index 2172f8353f..13c3ca1413 100644
--- a/gnu/packages/patches/ath9k-htc-firmware-objcopy.patch
+++ b/gnu/packages/patches/ath9k-htc-firmware-objcopy.patch
@@ -1,5 +1,5 @@
The firmware is cross-compiled, but the build system ends up using
-'objcopy' instead of 'xtensa-elf-objcopy' by default. Force it to
+'objcopy' instead of '$TARGET-objcopy' by default. Force it to
use the right one.
--- source/target_firmware/configure 2014-10-28 20:57:26.834436561 +0100
@@ -8,7 +8,7 @@ use the right one.
cat > "$TOOLCHAIN_FILE" <<EOF
INCLUDE(CMakeForceCompiler)
-+SET(CMAKE_OBJCOPY xtensa-elf-objcopy)
++SET(CMAKE_OBJCOPY ${TARGET}-objcopy)
SET(CMAKE_SYSTEM_PROCESSOR xtensa)
SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN}/$TARGET)
SET(CMAKE_STRIP :)
--
2.41.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [bug#69476] [PATCH 5/8] gnu: ath9k-htc-firmware: Use xtensa-ath9k-elf.
2024-02-29 15:19 [bug#69476] [PATCH 0/8] guix: Add xtensa-ath9k-elf platform Jean-Pierre De Jesus DIAZ via Guix-patches via
` (3 preceding siblings ...)
2024-02-29 15:20 ` [bug#69476] [PATCH 4/8] gnu: ath9k-htc-firmware: Allow using other targets Jean-Pierre De Jesus DIAZ via Guix-patches via
@ 2024-02-29 15:20 ` Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-02-29 15:20 ` [bug#69476] [PATCH 6/8] gnu: cross-binutils: Use binutils-2.33 for ath9k Jean-Pierre De Jesus DIAZ via Guix-patches via
` (4 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: Jean-Pierre De Jesus DIAZ via Guix-patches via @ 2024-02-29 15:20 UTC (permalink / raw)
To: 69476
Cc: Jean-Pierre De Jesus DIAZ, Efraim Flashner, Ludovic Courtès,
Vagrant Cascadian
* gnu/packages/firmware.scm (ath9k-htc-firmware): Use the
xtensa-ath9k-elf target for the cross toolchain.
Change-Id: Ic1a7c4088312290a86a508f371f4f0e784e301a5
---
gnu/packages/cross-base.scm | 4 ++--
gnu/packages/firmware.scm | 8 ++++----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 2d79e0acf6..93383089e5 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -118,8 +118,8 @@ (define* (cross-binutils* target #:key (binutils binutils))
;; target libs, not native libs, so this is safe.
`(cons "--with-sysroot=/" ,flags)))))))
- ;; For Xtensa, apply Qualcomm's patch.
- (cross (cond ((string-prefix? "xtensa-" target)
+ ;; For xtensa-ath9k-elf, apply Qualcomm's patch.
+ (cross (cond ((string=? target "xtensa-ath9k-elf")
(package-with-patches binutils
(search-patches
"ath9k-htc-firmware-binutils.patch")))
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index da7835a95d..6993925387 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -121,7 +121,7 @@ (define-public ath9k-htc-firmware
;; 'configure' is a simple script that runs 'cmake' with
;; the right flags.
(substitute* "configure"
- (("^TARGET.*$") "TARGET=xtensa-elf\n")
+ (("^TARGET.*$") "TARGET=xtensa-ath9k-elf\n")
(("^TOOLCHAIN=.*$")
(string-append "TOOLCHAIN="
(assoc-ref (or native-inputs inputs) "cross-gcc")
@@ -140,12 +140,12 @@ (define-public ath9k-htc-firmware
;; The firmware is cross-compiled using a "bare bones" compiler (no libc.)
;; Use our own tool chain for that.
(native-inputs `(("cross-gcc" ,(cross-gcc
- "xtensa-elf"
+ "xtensa-ath9k-elf"
#:xbinutils (cross-binutils
- "xtensa-elf"
+ "xtensa-ath9k-elf"
#:binutils binutils-2.33)))
("cross-binutils" ,(cross-binutils
- "xtensa-elf"
+ "xtensa-ath9k-elf"
#:binutils binutils-2.33))
("cmake" ,cmake-minimal)
("perl" ,perl)))
--
2.41.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [bug#69476] [PATCH 6/8] gnu: cross-binutils: Use binutils-2.33 for ath9k.
2024-02-29 15:19 [bug#69476] [PATCH 0/8] guix: Add xtensa-ath9k-elf platform Jean-Pierre De Jesus DIAZ via Guix-patches via
` (4 preceding siblings ...)
2024-02-29 15:20 ` [bug#69476] [PATCH 5/8] gnu: ath9k-htc-firmware: Use xtensa-ath9k-elf Jean-Pierre De Jesus DIAZ via Guix-patches via
@ 2024-02-29 15:20 ` Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-02-29 15:20 ` [bug#69476] [PATCH 7/8] guix: cmake-build-system: Handle unknown systems Jean-Pierre De Jesus DIAZ via Guix-patches via
` (3 subsequent siblings)
9 siblings, 0 replies; 13+ messages in thread
From: Jean-Pierre De Jesus DIAZ via Guix-patches via @ 2024-02-29 15:20 UTC (permalink / raw)
To: 69476
Cc: Jean-Pierre De Jesus DIAZ, Efraim Flashner, Ludovic Courtès,
Vagrant Cascadian
* gnu/packages/cross-base.scm (cross-binutils-package): New procedure.
* gnu/packages/cross-base.scm (cross-binutils): Select binutils default
value with cross-binutils-package.
* gnu/packages/firmware.scm (ath9k-htc-firmware) <native-inputs>: Do not
explicitly set the #:xbinutils keyword argument.
Change-Id: I0eb25eb2b494241c205286837bfa79a61de8e0b7
---
gnu/packages/cross-base.scm | 13 ++++++++++++-
gnu/packages/firmware.scm | 10 ++--------
2 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 93383089e5..d275ae894d 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -97,7 +97,18 @@ (define* (cross-binutils/deprecated target #:optional (binutils binutils))
(warning (G_ "'cross-binutils' must be used with keyword arguments~%"))
(cross-binutils* target #:binutils binutils))
-(define* (cross-binutils* target #:key (binutils binutils))
+(define (cross-binutils-package target)
+ "Returns the default package to use for a cross-Binutils for TARGET."
+ (cond
+ ;; The xtensa-ath9k-elf target is used solely to build the firmware for
+ ;; ath9k devices, the patches to binutils have not been updated and
+ ;; only apply to binutils@2.33.
+ ((string=? target "xtensa-ath9k-elf") binutils-2.33)
+ (else binutils)))
+
+(define* (cross-binutils* target
+ #:key
+ (binutils (cross-binutils-package target)))
"Return a cross-Binutils for TARGET using BINUTILS."
(let ((binutils (package
(inherit binutils)
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index 6993925387..ad687d1de6 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -139,14 +139,8 @@ (define-public ath9k-htc-firmware
;; The firmware is cross-compiled using a "bare bones" compiler (no libc.)
;; Use our own tool chain for that.
- (native-inputs `(("cross-gcc" ,(cross-gcc
- "xtensa-ath9k-elf"
- #:xbinutils (cross-binutils
- "xtensa-ath9k-elf"
- #:binutils binutils-2.33)))
- ("cross-binutils" ,(cross-binutils
- "xtensa-ath9k-elf"
- #:binutils binutils-2.33))
+ (native-inputs `(("cross-gcc" ,(cross-gcc "xtensa-ath9k-elf"))
+ ("cross-binutils" ,(cross-binutils "xtensa-ath9k-elf"))
("cmake" ,cmake-minimal)
("perl" ,perl)))
(home-page "https://wireless.wiki.kernel.org/en/users/Drivers/ath9k_htc")
--
2.41.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [bug#69476] [PATCH 7/8] guix: cmake-build-system: Handle unknown systems.
2024-02-29 15:19 [bug#69476] [PATCH 0/8] guix: Add xtensa-ath9k-elf platform Jean-Pierre De Jesus DIAZ via Guix-patches via
` (5 preceding siblings ...)
2024-02-29 15:20 ` [bug#69476] [PATCH 6/8] gnu: cross-binutils: Use binutils-2.33 for ath9k Jean-Pierre De Jesus DIAZ via Guix-patches via
@ 2024-02-29 15:20 ` Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-04-17 9:54 ` Ludovic Courtès
2024-02-29 15:20 ` [bug#69476] [PATCH 8/8] gnu: ath9k-htc-firmware: Split package Jean-Pierre De Jesus DIAZ via Guix-patches via
` (2 subsequent siblings)
9 siblings, 1 reply; 13+ messages in thread
From: Jean-Pierre De Jesus DIAZ via Guix-patches via @ 2024-02-29 15:20 UTC (permalink / raw)
To: 69476; +Cc: Jean-Pierre De Jesus DIAZ
* guix/build/cmake-build-system.scm (configure): Use Generic as the
system name if the system is unknown.
Change-Id: Ifd4a618ef67eb420b02d48f05291571aea44e46e
---
guix/build/cmake-build-system.scm | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/guix/build/cmake-build-system.scm b/guix/build/cmake-build-system.scm
index d1ff5071be..0774124c95 100644
--- a/guix/build/cmake-build-system.scm
+++ b/guix/build/cmake-build-system.scm
@@ -69,9 +69,13 @@ (define* (configure #:key outputs (configure-flags '()) (out-of-source? #t)
target "-gcc")
(string-append "-DCMAKE_CXX_COMPILER="
target "-g++")
- (if (string-contains target "mingw")
- "-DCMAKE_SYSTEM_NAME=Windows"
- "-DCMAKE_SYSTEM_NAME=Linux"))
+ (cond
+ ((string-contains target "mingw")
+ "-DCMAKE_SYSTEM_NAME=Windows")
+ ((string-contains target "linux")
+ "-DCMAKE_SYSTEM_NAME=Linux")
+ (else
+ "-DCMAKE_SYSTEM_NAME=Generic")))
'())
,@configure-flags)))
(format #t "running 'cmake' with arguments ~s~%" args)
--
2.41.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [bug#69476] [PATCH 7/8] guix: cmake-build-system: Handle unknown systems.
2024-02-29 15:20 ` [bug#69476] [PATCH 7/8] guix: cmake-build-system: Handle unknown systems Jean-Pierre De Jesus DIAZ via Guix-patches via
@ 2024-04-17 9:54 ` Ludovic Courtès
2024-04-17 14:00 ` Jean-Pierre De Jesus Diaz
0 siblings, 1 reply; 13+ messages in thread
From: Ludovic Courtès @ 2024-04-17 9:54 UTC (permalink / raw)
To: Jean-Pierre De Jesus DIAZ; +Cc: 69476
[-- Attachment #1: Type: text/plain, Size: 1645 bytes --]
Jean-Pierre De Jesus DIAZ <jean@foundationdevices.com> skribis:
> * guix/build/cmake-build-system.scm (configure): Use Generic as the
> system name if the system is unknown.
>
> Change-Id: Ifd4a618ef67eb420b02d48f05291571aea44e46e
> ---
> guix/build/cmake-build-system.scm | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/guix/build/cmake-build-system.scm b/guix/build/cmake-build-system.scm
> index d1ff5071be..0774124c95 100644
> --- a/guix/build/cmake-build-system.scm
> +++ b/guix/build/cmake-build-system.scm
> @@ -69,9 +69,13 @@ (define* (configure #:key outputs (configure-flags '()) (out-of-source? #t)
> target "-gcc")
> (string-append "-DCMAKE_CXX_COMPILER="
> target "-g++")
> - (if (string-contains target "mingw")
> - "-DCMAKE_SYSTEM_NAME=Windows"
> - "-DCMAKE_SYSTEM_NAME=Linux"))
> + (cond
> + ((string-contains target "mingw")
> + "-DCMAKE_SYSTEM_NAME=Windows")
> + ((string-contains target "linux")
> + "-DCMAKE_SYSTEM_NAME=Linux")
> + (else
> + "-DCMAKE_SYSTEM_NAME=Generic")))
I spoke too fast.
This patch is good but it triggers a rebuild of everything that depends
on CMake.
So for now, I instead amended the last patch of the series like this:
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 1164 bytes --]
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index 373ed0e81f..6f0c2da806 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -113,7 +113,9 @@ (define-public ath9k-htc-ar7010-firmware
(arguments
(list #:target "xtensa-ath9k-elf"
#:tests? #f
- #:configure-flags #~'("-DTARGET_MAGPIE=ON")
+ #:configure-flags
+ #~'("-DCMAKE_SYSTEM_NAME=Generic" ;override default value
+ "-DTARGET_MAGPIE=ON")
#:phases
#~(modify-phases %standard-phases
(add-before 'configure 'change-directory
@@ -140,7 +142,9 @@ (define-public ath9k-htc-ar9271-firmware
(arguments
(substitute-keyword-arguments
(package-arguments ath9k-htc-ar7010-firmware)
- ((#:configure-flags flags) #~'("-DTARGET_K2=ON"))))
+ ((#:configure-flags flags)
+ #~'("-DCMAKE_SYSTEM_NAME=Generic" ;override default value
+ "-DTARGET_K2=ON"))))
(synopsis "Firmware for the Atheros AR9271 USB 802.11n NICs")
(description
"This is the firmware for the Qualcomm Atheros AR9271 802.11n USB NICs
[-- Attachment #3: Type: text/plain, Size: 245 bytes --]
I confirmed that this builds and that I get the same hashes.
That said, we should arrange to land the ‘cmake-build-system.scm’ patch
either on the next ‘core-updates’ branch or on a topic branch.
Thoughts?
Thanks,
Ludo’.
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [bug#69476] [PATCH 7/8] guix: cmake-build-system: Handle unknown systems.
2024-04-17 9:54 ` Ludovic Courtès
@ 2024-04-17 14:00 ` Jean-Pierre De Jesus Diaz
0 siblings, 0 replies; 13+ messages in thread
From: Jean-Pierre De Jesus Diaz @ 2024-04-17 14:00 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 69476, Jean-Pierre De Jesus DIAZ
>That said, we should arrange to land the ‘cmake-build-system.scm’ patch
>either on the next ‘core-updates’ branch or on a topic branch.
>
>Thoughts?
I think it'd appropiate for it to be on core-updates or a topic branch, the most
convenient for you and then the rest of the patches can be applied IMO. Thanks
for applying some of the patches.
P.S.: The patch for CMake was also sent to <https://issues.guix.gnu.org/68366>
before working on this issue as I discovered it while working on other targets.
On Wed, Apr 17, 2024 at 9:54 AM Ludovic Courtès <ludo@gnu.org> wrote:
>
> Jean-Pierre De Jesus DIAZ <jean@foundationdevices.com> skribis:
>
> > * guix/build/cmake-build-system.scm (configure): Use Generic as the
> > system name if the system is unknown.
> >
> > Change-Id: Ifd4a618ef67eb420b02d48f05291571aea44e46e
> > ---
> > guix/build/cmake-build-system.scm | 10 +++++++---
> > 1 file changed, 7 insertions(+), 3 deletions(-)
> >
> > diff --git a/guix/build/cmake-build-system.scm b/guix/build/cmake-build-system.scm
> > index d1ff5071be..0774124c95 100644
> > --- a/guix/build/cmake-build-system.scm
> > +++ b/guix/build/cmake-build-system.scm
> > @@ -69,9 +69,13 @@ (define* (configure #:key outputs (configure-flags '()) (out-of-source? #t)
> > target "-gcc")
> > (string-append "-DCMAKE_CXX_COMPILER="
> > target "-g++")
> > - (if (string-contains target "mingw")
> > - "-DCMAKE_SYSTEM_NAME=Windows"
> > - "-DCMAKE_SYSTEM_NAME=Linux"))
> > + (cond
> > + ((string-contains target "mingw")
> > + "-DCMAKE_SYSTEM_NAME=Windows")
> > + ((string-contains target "linux")
> > + "-DCMAKE_SYSTEM_NAME=Linux")
> > + (else
> > + "-DCMAKE_SYSTEM_NAME=Generic")))
>
> I spoke too fast.
>
> This patch is good but it triggers a rebuild of everything that depends
> on CMake.
>
> So for now, I instead amended the last patch of the series like this:
>
>
> I confirmed that this builds and that I get the same hashes.
>
> That said, we should arrange to land the ‘cmake-build-system.scm’ patch
> either on the next ‘core-updates’ branch or on a topic branch.
>
> Thoughts?
>
> Thanks,
> Ludo’.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [bug#69476] [PATCH 8/8] gnu: ath9k-htc-firmware: Split package.
2024-02-29 15:19 [bug#69476] [PATCH 0/8] guix: Add xtensa-ath9k-elf platform Jean-Pierre De Jesus DIAZ via Guix-patches via
` (6 preceding siblings ...)
2024-02-29 15:20 ` [bug#69476] [PATCH 7/8] guix: cmake-build-system: Handle unknown systems Jean-Pierre De Jesus DIAZ via Guix-patches via
@ 2024-02-29 15:20 ` Jean-Pierre De Jesus DIAZ via Guix-patches via
2024-03-26 6:17 ` [bug#69476] [PATCH 0/8] guix: Add xtensa-ath9k-elf platform Vagrant Cascadian
2024-04-17 9:22 ` bug#69476: " Ludovic Courtès
9 siblings, 0 replies; 13+ messages in thread
From: Jean-Pierre De Jesus DIAZ via Guix-patches via @ 2024-02-29 15:20 UTC (permalink / raw)
To: 69476; +Cc: Jean-Pierre De Jesus DIAZ, Efraim Flashner, Vagrant Cascadian
* gnu/local.mk (dist_patch_DATA): Remove ath9k-htc-firmware-objcopy.patch.
* gnu/packages/firmware.scm (ath9k-htc-firmware): Remove variable.
* gnu/packages/firmware.scm (ath9k-htc-ar7010-firmware): New variable.
* gnu/packages/firmware.scm (ath9k-htc-ar9271-firmware): New variable.
* gnu/packages/patches/ath9k-htc-firmware-objcopy.patch: Delete file.
* gnu/system.scm (%base-firmware): Use new ath9k packages.
Change-Id: I86259e398427abd139c1f310a95bb15e2c03cee3
---
gnu/local.mk | 1 -
gnu/packages/firmware.scm | 79 +++++++++----------
.../patches/ath9k-htc-firmware-objcopy.patch | 14 ----
gnu/system.scm | 3 +-
4 files changed, 39 insertions(+), 58 deletions(-)
delete mode 100644 gnu/packages/patches/ath9k-htc-firmware-objcopy.patch
diff --git a/gnu/local.mk b/gnu/local.mk
index 725093fb09..70d2e99481 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -941,7 +941,6 @@ dist_patch_DATA = \
%D%/packages/patches/ath9k-htc-firmware-binutils.patch \
%D%/packages/patches/ath9k-htc-firmware-gcc.patch \
%D%/packages/patches/ath9k-htc-firmware-gcc-compat.patch \
- %D%/packages/patches/ath9k-htc-firmware-objcopy.patch \
%D%/packages/patches/atlas-gfortran-compat.patch \
%D%/packages/patches/audacity-ffmpeg-fallback.patch \
%D%/packages/patches/audiofile-fix-datatypes-in-tests.patch \
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index ad687d1de6..47d4c08b0d 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -37,6 +37,7 @@ (define-module (gnu packages firmware)
#:use-module (guix utils)
#:use-module (guix git-download)
#:use-module (guix build-system copy)
+ #:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix build-system meson)
#:use-module (guix build-system python)
@@ -90,9 +91,9 @@ (define-module (gnu packages firmware)
#:export (make-ergodox-firmware
make-qmk-firmware))
-(define-public ath9k-htc-firmware
+(define-public ath9k-htc-ar7010-firmware
(package
- (name "ath9k-htc-firmware")
+ (name "ath9k-htc-ar7010-firmware")
(version "1.4.0")
(source (origin
(method git-fetch)
@@ -106,51 +107,45 @@ (define-public ath9k-htc-firmware
(sha256
(base32
"16jbj8avg5jkgvq5lxm0hdxxn4c3zn7fx8b4nxllvr024apk9w23"))
- (file-name (git-file-name name version))
- (patches (search-patches "ath9k-htc-firmware-objcopy.patch"
- "ath9k-htc-firmware-gcc-compat.patch"))))
- (build-system gnu-build-system)
+ (file-name (git-file-name "open-ath9k-htc-firmware" version))
+ (patches (search-patches "ath9k-htc-firmware-gcc-compat.patch"))))
+ (build-system cmake-build-system)
(arguments
- '(#:target #f ; Package produces firmware.
- #:phases
- (modify-phases %standard-phases
- (add-before 'configure 'pre-configure
- (lambda* (#:key inputs native-inputs #:allow-other-keys)
- (chdir "target_firmware")
-
- ;; 'configure' is a simple script that runs 'cmake' with
- ;; the right flags.
- (substitute* "configure"
- (("^TARGET.*$") "TARGET=xtensa-ath9k-elf\n")
- (("^TOOLCHAIN=.*$")
- (string-append "TOOLCHAIN="
- (assoc-ref (or native-inputs inputs) "cross-gcc")
- "\n")))
- #t))
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (fw-dir (string-append out "/lib/firmware")))
- (for-each (lambda (file)
- (install-file file fw-dir))
- (find-files "." "\\.fw$"))
- #t))))
- #:tests? #f))
-
- ;; The firmware is cross-compiled using a "bare bones" compiler (no libc.)
- ;; Use our own tool chain for that.
- (native-inputs `(("cross-gcc" ,(cross-gcc "xtensa-ath9k-elf"))
- ("cross-binutils" ,(cross-binutils "xtensa-ath9k-elf"))
- ("cmake" ,cmake-minimal)
- ("perl" ,perl)))
+ (list #:target "xtensa-ath9k-elf"
+ #:tests? #f
+ #:configure-flags #~'("-DTARGET_MAGPIE=ON")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'configure 'change-directory
+ (lambda _
+ (chdir "target_firmware")))
+ (replace 'install
+ (lambda _
+ (let ((fw-dir (string-append #$output "/lib/firmware")))
+ (for-each (lambda (file)
+ (install-file file fw-dir))
+ (find-files "." "\\.fw$"))))))))
+ (native-inputs (list perl))
(home-page "https://wireless.wiki.kernel.org/en/users/Drivers/ath9k_htc")
- (synopsis "Firmware for the Atheros AR7010 and AR9271 USB 802.11n NICs")
+ (synopsis "Firmware for the Atheros AR7010 USB 802.11n NICs")
(description
- "This is the firmware for the Qualcomm Atheros AR7010 and AR9271 USB
-802.11n NICs (aka Wi-Fi USB dongles). It is used by the ath9k driver of
-Linux-libre.")
+ "This is the firmware for the Qualcomm Atheros AR7010 802.11n USB NICs
+(aka Wi-Fi USB dongle). It is used by the ath9k driver of Linux-libre.")
(license (license:non-copyleft "http://directory.fsf.org/wiki/License:ClearBSD"))))
+(define-public ath9k-htc-ar9271-firmware
+ (package
+ (inherit ath9k-htc-ar7010-firmware)
+ (name "ath9k-htc-ar9271-firmware")
+ (arguments
+ (substitute-keyword-arguments
+ (package-arguments ath9k-htc-ar7010-firmware)
+ ((#:configure-flags flags) #~'("-DTARGET_K2=ON"))))
+ (synopsis "Firmware for the Atheros AR9271 USB 802.11n NICs")
+ (description
+ "This is the firmware for the Qualcomm Atheros AR9271 802.11n USB NICs
+(aka Wi-Fi USB dongle). It is used by the ath9k driver of Linux-libre.")))
+
(define-public b43-tools
(let ((commit "27892ef741e7f1d08cb939744f8b8f5dac7b04ae")
(revision "1"))
diff --git a/gnu/packages/patches/ath9k-htc-firmware-objcopy.patch b/gnu/packages/patches/ath9k-htc-firmware-objcopy.patch
deleted file mode 100644
index 13c3ca1413..0000000000
--- a/gnu/packages/patches/ath9k-htc-firmware-objcopy.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-The firmware is cross-compiled, but the build system ends up using
-'objcopy' instead of '$TARGET-objcopy' by default. Force it to
-use the right one.
-
---- source/target_firmware/configure 2014-10-28 20:57:26.834436561 +0100
-+++ source/target_firmware/configure 2014-10-28 20:57:29.666436530 +0100
-@@ -11,6 +11,7 @@ mkdir -p build
- cat > "$TOOLCHAIN_FILE" <<EOF
- INCLUDE(CMakeForceCompiler)
-
-+SET(CMAKE_OBJCOPY ${TARGET}-objcopy)
- SET(CMAKE_SYSTEM_PROCESSOR xtensa)
- SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN}/$TARGET)
- SET(CMAKE_STRIP :)
diff --git a/gnu/system.scm b/gnu/system.scm
index aede35775e..927abc642c 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -876,7 +876,8 @@ (define* (operating-system-with-provenance os
(define %base-firmware
;; Firmware usable by default.
- (list ath9k-htc-firmware
+ (list ath9k-htc-ar7010-firmware
+ ath9k-htc-ar9271-firmware
openfwwf-firmware))
(define %base-packages-artwork
--
2.41.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [bug#69476] [PATCH 0/8] guix: Add xtensa-ath9k-elf platform.
2024-02-29 15:19 [bug#69476] [PATCH 0/8] guix: Add xtensa-ath9k-elf platform Jean-Pierre De Jesus DIAZ via Guix-patches via
` (7 preceding siblings ...)
2024-02-29 15:20 ` [bug#69476] [PATCH 8/8] gnu: ath9k-htc-firmware: Split package Jean-Pierre De Jesus DIAZ via Guix-patches via
@ 2024-03-26 6:17 ` Vagrant Cascadian
2024-04-17 9:22 ` bug#69476: " Ludovic Courtès
9 siblings, 0 replies; 13+ messages in thread
From: Vagrant Cascadian @ 2024-03-26 6:17 UTC (permalink / raw)
To: Jean-Pierre De Jesus DIAZ, 69476; +Cc: Efraim Flashner
[-- Attachment #1: Type: text/plain, Size: 2421 bytes --]
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
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#69476: [PATCH 0/8] guix: Add xtensa-ath9k-elf platform.
2024-02-29 15:19 [bug#69476] [PATCH 0/8] guix: Add xtensa-ath9k-elf platform Jean-Pierre De Jesus DIAZ via Guix-patches via
` (8 preceding siblings ...)
2024-03-26 6:17 ` [bug#69476] [PATCH 0/8] guix: Add xtensa-ath9k-elf platform Vagrant Cascadian
@ 2024-04-17 9:22 ` Ludovic Courtès
9 siblings, 0 replies; 13+ messages in thread
From: Ludovic Courtès @ 2024-04-17 9:22 UTC (permalink / raw)
To: Jean-Pierre De Jesus DIAZ; +Cc: Vagrant Cascadian, 69476-done, Efraim Flashner
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’.
^ permalink raw reply [flat|nested] 13+ messages in thread