* 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. Signed-off-by: Tobias Geerinckx-Rice <me@tobias.gr>
		
			
				
	
	
		
			89 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| commit da6b3b70cb852dd8e9f9e21aef95fa83e7f7ab0d
 | |
| Author: Pyry Kontio <pyry.kontio@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@drasa.eu>
 | |
|     Change-Id: Iaa4477a71e758cf9ecad2c22f3b77bc6508a3510
 | |
|     Reviewed-on: https://review.coreboot.org/c/flashrom/+/43140
 | |
|     Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
 | |
|     Reviewed-by: Angel Pons <th3fanbus@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 || \
 |