GNU bug report logs - #60166
[PATCH] gnu: flashrom: Fix build on AArch64.

Previous Next

Package: guix-patches;

Reported by: Simon South <simon <at> simonsouth.net>

Date: Sat, 17 Dec 2022 18:13:02 UTC

Severity: normal

Tags: patch

Done: Tobias Geerinckx-Rice <me <at> tobias.gr>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 60166 in the body.
You can then email your comments to 60166 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#60166; Package guix-patches. (Sat, 17 Dec 2022 18:13:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Simon South <simon <at> simonsouth.net>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Sat, 17 Dec 2022 18:13:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Simon South <simon <at> simonsouth.net>
To: guix-patches <at> gnu.org
Subject: [PATCH] gnu: flashrom: Fix build on AArch64.
Date: Sat, 17 Dec 2022 13:12:05 -0500
* gnu/packages/patches/flashrom-fix-building-on-aarch64.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/flashing-tools.scm (flashrom)[source]: Apply it.
---

This patch allows the flashrom ROM-flashing utility to build on AArch64 by
backporting a patch[0] that fixes the project's build system so it identifies
the target architecture correctly.  (Currently, trying to build the package on
aarch64-linux fails immediately with "Target arch is unknown. Aborting.")

I've tested this on x86-64 and AArch64 and everything appears fine.  On x86-64
an identical binary is produced with or without this patch applied.

[0] https://review.coreboot.org/plugins/gitiles/flashrom/+/da6b3b70cb852dd8e9f9e21aef95fa83e7f7ab0d

--
Simon South
simon <at> simonsouth.net


 gnu/local.mk                                  |  1 +
 gnu/packages/flashing-tools.scm               |  4 +-
 .../flashrom-fix-building-on-aarch64.patch    | 89 +++++++++++++++++++
 3 files changed, 93 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/flashrom-fix-building-on-aarch64.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 5b8944f568..56634e090c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1112,6 +1112,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/firebird-riscv64-support-pt1.patch	\
   %D%/packages/patches/firebird-riscv64-support-pt2.patch	\
   %D%/packages/patches/flann-cmake-3.11.patch			\
+  %D%/packages/patches/flashrom-fix-building-on-aarch64.patch	\
   %D%/packages/patches/flatpak-fix-path.patch			\
   %D%/packages/patches/flatpak-unset-gdk-pixbuf-for-sandbox.patch	\
   %D%/packages/patches/fontconfig-cache-ignore-mtime.patch	\
diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index 08300cb860..e7165efe79 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -66,7 +66,9 @@ (define-public flashrom
                     version ".tar.bz2"))
               (sha256
                (base32
-                "0ax4kqnh7kd3z120ypgp73qy1knz47l6qxsqzrfkd97mh5cdky71"))))
+                "0ax4kqnh7kd3z120ypgp73qy1knz47l6qxsqzrfkd97mh5cdky71"))
+              (patches
+               (search-patches "flashrom-fix-building-on-aarch64.patch"))))
     (build-system gnu-build-system)
     (inputs (list dmidecode pciutils libusb libftdi))
     (native-inputs (list pkg-config))
diff --git a/gnu/packages/patches/flashrom-fix-building-on-aarch64.patch b/gnu/packages/patches/flashrom-fix-building-on-aarch64.patch
new file mode 100644
index 0000000000..f5fbb0a111
--- /dev/null
+++ b/gnu/packages/patches/flashrom-fix-building-on-aarch64.patch
@@ -0,0 +1,89 @@
+commit da6b3b70cb852dd8e9f9e21aef95fa83e7f7ab0d
+Author: Pyry Kontio <pyry.kontio <at> drasa.eu>
+Date:   Mon Jul 6 12:57:35 2020 +0900
+
+    Makefile: Fix building on AArch64 NixOS
+    
+    The parsing of the output of archtest.c produced an unexpected
+    value on AArch64 NixOS. For example, the make variable ARCH was set to:
+    
+    ```
+    bit outside of fd_set selected
+    arm
+    ```
+    
+    This made the arch and OS checks fail.
+    
+    This commit simplifies the parsing, making it more robust.
+    
+    The C files archtest.c, endiantest.c and os.h used to set the
+    TARGET_OS, ARCH and ENDIAN variables, respectively, output
+    the result of the test as the final line, so just extracting
+    the final line and removing double quoting is enough.
+    
+    This commit also fixes a bug with debug_shell lacking escaping
+    single quotes, which prevented using the single quote in the
+    debug_shell calls. It used to work by accident before this fix;
+    the line in the call happened to contain a balanced pair of double
+    quotes and lacked other characters that needed escaping, which
+    didn't break the debug_shell, but this was accidental and very
+    brittle.
+    
+    Signed-off-by: Pyry Kontio <pyry.kontio <at> drasa.eu>
+    Change-Id: Iaa4477a71e758cf9ecad2c22f3b77bc6508a3510
+    Reviewed-on: https://review.coreboot.org/c/flashrom/+/43140
+    Tested-by: build bot (Jenkins) <no-reply <at> coreboot.org>
+    Reviewed-by: Angel Pons <th3fanbus <at> gmail.com>
+
+diff --git a/Makefile b/Makefile
+index f3f7717e..e475cbdb 100644
+--- a/Makefile
++++ b/Makefile
+@@ -83,7 +83,8 @@ dummy_for_make_3_80:=$(shell printf "Build started on %s\n\n" "$$(date)" >$(BUIL
+ 
+ # Provide an easy way to execute a command, print its output to stdout and capture any error message on stderr
+ # in the build details file together with the original stdout output.
+-debug_shell = $(shell export LC_ALL=C ; { echo 'exec: export LC_ALL=C ; { $(1) ; }' >&2;  { $(1) ; } | tee -a $(BUILD_DETAILS_FILE) ; echo >&2 ; } 2>>$(BUILD_DETAILS_FILE))
++debug_shell = $(shell export LC_ALL=C ; { echo 'exec: export LC_ALL=C ; { $(subst ','\'',$(1)) ; }' >&2; \
++    { $(1) ; } | tee -a $(BUILD_DETAILS_FILE) ; echo >&2 ; } 2>>$(BUILD_DETAILS_FILE))
+ 
+ ###############################################################################
+ # General OS-specific settings.
+@@ -106,7 +107,8 @@ endif
+ # IMPORTANT: The following line must be placed before TARGET_OS is ever used
+ # (of course), but should come after any lines setting CC because the line
+ # below uses CC itself.
+-override TARGET_OS := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E os.h 2>/dev/null | grep -v '^\#' | grep '"' | cut -f 2 -d'"'))
++override TARGET_OS := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E os.h 2>/dev/null \
++    | tail -1 | cut -f 2 -d'"'))
+ 
+ ifeq ($(TARGET_OS), Darwin)
+ override CPPFLAGS += -I/opt/local/include -I/usr/local/include
+@@ -490,8 +492,10 @@ endif
+ # IMPORTANT: The following line must be placed before ARCH is ever used
+ # (of course), but should come after any lines setting CC because the line
+ # below uses CC itself.
+-override ARCH := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E archtest.c 2>/dev/null | grep -v '^\#' | grep '"' | cut -f 2 -d'"'))
+-override ENDIAN := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E endiantest.c 2>/dev/null | grep -v '^\#'))
++override ARCH := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E archtest.c 2>/dev/null \
++    | tail -1 | cut -f 2 -d'"'))
++override ENDIAN := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E endiantest.c 2>/dev/null \
++    | tail -1))
+ 
+ # Disable the internal programmer on unsupported architectures (everything but x86 and mipsel)
+ ifneq ($(ARCH)-little, $(filter $(ARCH),x86 mips)-$(ENDIAN))
+@@ -1299,12 +1303,12 @@ compiler: featuresavailable
+ 	@printf "Target arch is "
+ 	@# FreeBSD wc will output extraneous whitespace.
+ 	@echo $(ARCH)|wc -w|grep -q '^[[:blank:]]*1[[:blank:]]*$$' ||	\
+-		( echo "unknown. Aborting."; exit 1)
++		( echo "unknown (\"$(ARCH)\"). Aborting."; exit 1)
+ 	@printf "%s\n" '$(ARCH)'
+ 	@printf "Target OS is "
+ 	@# FreeBSD wc will output extraneous whitespace.
+ 	@echo $(TARGET_OS)|wc -w|grep -q '^[[:blank:]]*1[[:blank:]]*$$' ||	\
+-		( echo "unknown. Aborting."; exit 1)
++		( echo "unknown (\"$(TARGET_OS)\"). Aborting."; exit 1)
+ 	@printf "%s\n" '$(TARGET_OS)'
+ ifeq ($(TARGET_OS), libpayload)
+ 	@$(CC) --version 2>&1 | grep -q coreboot || \

base-commit: 810b455013037f44801cf1048c81796e77577962
-- 
2.38.1





Information forwarded to guix-patches <at> gnu.org:
bug#60166; Package guix-patches. (Sat, 17 Dec 2022 18:25:01 GMT) Full text and rfc822 format available.

Message #8 received at 60166 <at> debbugs.gnu.org (full text, mbox):

From: Simon South <simon <at> simonsouth.net>
To: 60166 <at> debbugs.gnu.org
Subject: Re: [bug#60166] [PATCH] gnu: flashrom: Fix build on AArch64.
Date: Sat, 17 Dec 2022 13:23:55 -0500
Simon South <simon <at> simonsouth.net> writes:
> This patch allows the flashrom ROM-flashing utility to build on AArch64 by
> backporting a patch

To be clear, what's being backported here is an upstream commit, not a
patch from elsewhere.

-- 
Simon South
simon <at> simonsouth.net




Information forwarded to guix-patches <at> gnu.org:
bug#60166; Package guix-patches. (Sat, 17 Dec 2022 19:00:02 GMT) Full text and rfc822 format available.

Message #11 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Tobias Geerinckx-Rice <me <at> tobias.gr>
To: Simon South <simon <at> simonsouth.net>
Cc: 60166-done <at> debbugs.gnu.org, guix-patches <at> gnu.org
Subject: Re: [bug#60166] [PATCH] gnu: flashrom: Fix build on AArch64.
Date: Sat, 17 Dec 2022 20:00:33 +0100
[Message part 1 (text/plain, inline)]
Hi Simon,

Simon South 写道:
> This patch allows the flashrom ROM-flashing utility to build on 
> AArch64 by
> backporting a patch[0] that fixes the project's build system so 
> it identifies
> the target architecture correctly.

Thanks!  Pushed as f28ca2447c5e2eef1ba6a3a11587380a665b0e26.

Kind regards,

T G-R
[signature.asc (application/pgp-signature, inline)]

Reply sent to Tobias Geerinckx-Rice <me <at> tobias.gr>:
You have taken responsibility. (Sat, 17 Dec 2022 19:00:03 GMT) Full text and rfc822 format available.

Notification sent to Simon South <simon <at> simonsouth.net>:
bug acknowledged by developer. (Sat, 17 Dec 2022 19:00:03 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sun, 15 Jan 2023 12:24:08 GMT) Full text and rfc822 format available.

This bug report was last modified 2 years and 213 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.