Control: tags 926984 + moreinfo Hi Helmut--
On Sat 2019-04-13 09:25:50 +0200, Helmut Grohne wrote: > gnupg2 fails to build from source with gcc-9, here is the relevant part > of a cross build log: > > | aarch64-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I../../dirmngr -I.. > -DLOCALEDIR=\"/usr/share/locale\" -DGNUPG_BINDIR="\"/usr/bin\"" > -DGNUPG_LIBEXECDIR="\"/usr/lib/gnupg\"" -DGNUPG_LIBDIR=" > | \"/usr/lib/aarch64-linux-gnu/gnupg\"" > -DGNUPG_DATADIR="\"/usr/share/gnupg\"" -DGNUPG_SYSCONFDIR="\"/etc/gnupg\"" > -DGNUPG_LOCALSTATEDIR="\"/var\"" -Wdate-time -D_FORTIFY_SOURCE=2 > | -std=gnu99 -I/usr/include/p11-kit-1 -Wall -Wno-pointer-sign > -Wpointer-arith -g -O2 -fdebug-prefix-map=/tmp/buildd/gnupg2/gnupg2-2.2.13=. > -fstack-protector-strong -Wformat -Werror > | =format-security -c -o dns-stuff.o ../../dirmngr/dns-stuff.c > | In file included from ../../dirmngr/dns-stuff.c:57: > | ../../dirmngr/dns-stuff.c: In function 'libdns_res_open': > | ../../dirmngr/dns.h:1058:24: error: lvalue required as unary '&' operand > | 1058 | #define dns_opts(...) (&dns_quietinit((struct > dns_options)DNS_OPTS_INIT(__VA_ARGS__))) > | | ^ > | ../../dirmngr/dns-stuff.c:719:23: note: in expansion of macro 'dns_opts' > | 719 | dns_opts (.socks_host = > &libdns.socks_host, > | | ^~~~~~~~ > | make[4]: Leaving directory '/tmp/buildd/gnupg2/gnupg2-2.2.13/build/dirmngr' > | make[4]: *** [Makefile:995: dns-stuff.o] Error 1 > | make[3]: Leaving directory '/tmp/buildd/gnupg2/gnupg2-2.2.13/build' > | make[3]: *** [Makefile:616: all-recursive] Error 1 > | make[2]: Leaving directory '/tmp/buildd/gnupg2/gnupg2-2.2.13/build' > | make[2]: *** [Makefile:536: all] Error 2 > | dh_auto_build: cd build && make -j1 returned exit code 2 > | make[1]: Leaving directory '/tmp/buildd/gnupg2/gnupg2-2.2.13' > | make[1]: *** [debian/rules:55: override_dh_auto_build-arch] Error 2 > | make: *** [debian/rules:35: binary-arch] Error 2 > | dpkg-buildpackage: error: debian/rules binary-arch subprocess returned exit > status 2 > > This problem also affects OE and Khem Raj has created a fix already: > > https://patchwork.openembedded.org/patch/157377/ > > Can you cherry-pick that patch? I'd prefer to have specific patches included in the bug report if possible, i don't know whether those other servers will go down. As i understand it, the patch is just this one change below: -------- From 0df5800cc2e720aad883a517f7d24a9722fe5845 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.k...@gmail.com> Date: Thu, 20 Dec 2018 17:37:48 -0800 Subject: [PATCH] Woverride-init is not needed with gcc 9 Fixes ../../gnupg-2.2.12/dirmngr/dns.h:525:16: error: lvalue required as unary '&' operand dns_rr_i_init(&dns_quietinit((struct dns_rr_i){ 0, __VA_ARGS__ }), (P)) Upstream-Status: Pending Signed-off-by: Khem Raj <raj.k...@gmail.com> --- dirmngr/dns.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dirmngr/dns.h b/dirmngr/dns.h index 30d0b45..98fe412 100644 --- a/dirmngr/dns.h +++ b/dirmngr/dns.h @@ -154,7 +154,7 @@ DNS_PUBLIC int *dns_debug_p(void); #define dns_quietinit(...) \ DNS_PRAGMA_PUSH DNS_PRAGMA_QUIET __VA_ARGS__ DNS_PRAGMA_POP -#elif (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) || __GNUC__ > 4 +#elif (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) || (__GNUC__ > 4 && __GNUC__ < 9) #define DNS_PRAGMA_PUSH _Pragma("GCC diagnostic push") #define DNS_PRAGMA_QUIET _Pragma("GCC diagnostic ignored \"-Woverride-init\"") #define DNS_PRAGMA_POP _Pragma("GCC diagnostic pop") -------- but i don't understand how the change works, or how it affects the build process that it says is failing. The change just seems to be saying "don't bother ignoring the -Woverride-init warning" on gcc 9 or later. How does that effect the lvalue of a unary & command? Also, the chnage from Khem Raj (in cc here) says "Upstream-Status: pending", but i don't see it in the upstream bug tracker or revision control here: https://dev.gnupg.org/ and i haven't seen any messages from Khem on the upstream GnuPG mailing lists. I'd be happy to advocate for this change upstream, and/or to put it in debian if i understood it, but at the moment, i'm at a loss. Could we get more explanation? --dkg
signature.asc
Description: PGP signature