From 6042dd28cfba1dc948b5d601052c8ecd1584cd91 Mon Sep 17 00:00:00 2001 From: Jamie McClymont Date: Tue, 27 Jul 2021 20:07:06 +1200 Subject: [PATCH] libgpgerror: fix cross-compilation Backporting a fix (merged upstream but no release cut) for shell quoting issues --- .../libraries/libgpg-error/default.nix | 4 + .../fix-1.42-cross-compilation.patch | 142 ++++++++++++++++++ 2 files changed, 146 insertions(+) create mode 100644 pkgs/development/libraries/libgpg-error/fix-1.42-cross-compilation.patch diff --git a/pkgs/development/libraries/libgpg-error/default.nix b/pkgs/development/libraries/libgpg-error/default.nix index 7490995e6611..e46e25593365 100644 --- a/pkgs/development/libraries/libgpg-error/default.nix +++ b/pkgs/development/libraries/libgpg-error/default.nix @@ -24,6 +24,10 @@ in stdenv.mkDerivation (rec { sha256 = "sha256-/AfnD2xhX4xPWQqON6m43S4soelAj45gRZxnRSuSXiM="; }; + # 1.42 breaks (some?) cross-compilation (e.g. x86_64 -> aarch64). + # Backporting this fix (merged in upstream master but no release cut) by David Michael https://dev.gnupg.org/rE33593864cd54143db594c4237bba41e14179061c + patches = [ ./fix-1.42-cross-compilation.patch ]; + postPatch = '' sed '/BUILD_TIMESTAMP=/s/=.*/=1970-01-01T00:01+0000/' -i ./configure '' + lib.optionalString (stdenv.hostPlatform.isAarch32 && stdenv.buildPlatform != stdenv.hostPlatform) '' diff --git a/pkgs/development/libraries/libgpg-error/fix-1.42-cross-compilation.patch b/pkgs/development/libraries/libgpg-error/fix-1.42-cross-compilation.patch new file mode 100644 index 000000000000..6c3099f72144 --- /dev/null +++ b/pkgs/development/libraries/libgpg-error/fix-1.42-cross-compilation.patch @@ -0,0 +1,142 @@ +diff --git a/src/gen-lock-obj.sh b/src/gen-lock-obj.sh +index a710f0c..258eec6 100755 +--- a/src/gen-lock-obj.sh ++++ b/src/gen-lock-obj.sh +@@ -1,136 +1,136 @@ + #! /bin/sh + # + # gen-lock-obj.sh - Build tool to construct the lock object. + # + # Copyright (C) 2020, 2021 g10 Code GmbH + # + # This file is part of libgpg-error. + # + # libgpg-error is free software; you can redistribute it and/or + # modify it under the terms of the GNU Lesser General Public License + # as published by the Free Software Foundation; either version 2.1 of + # the License, or (at your option) any later version. + # + # libgpg-error 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 + # Lesser General Public License for more details. + # + # You should have received a copy of the GNU Lesser General Public + # License along with this program; if not, see . + # + + # + # Following variables should be defined to invoke this script + # + # CC + # OBJDUMP + # AWK + # ac_ext + # ac_object + # host + # LOCK_ABI_VERSION + # + # An example: + # + # LOCK_ABI_VERSION=1 host=x86_64-pc-linux-gnu host_alias=x86_64-linux-gnu \ + # CC=$host_alias-gcc OBJDUMP=$host_alias-objdump ac_ext=c ac_objext=o \ + # AWK=gawk ./gen-lock-obj.sh + # + +-if test -n `echo -n`; then ++if test -n "`echo -n`"; then + ECHO_C='\c' + ECHO_N='' + else + ECHO_C='' + ECHO_N='-n' + fi + + if test "$1" = --disable-threads; then + cat <conftest.$ac_ext + #include + pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER; + EOF + + if $CC -c conftest.$ac_ext; then : + ac_mtx_size=$($OBJDUMP -j .bss -t conftest.$ac_objext \ + | $AWK $AWK_OPTION ' + /mtx$/ { mtx_size = int("0x" $5) } + END { print mtx_size }') + else + echo "Can't determine mutex size" + exit 1 + fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + cat <