From mboxrd@z Thu Jan 1 00:00:00 1970 From: Leo Famulari Subject: bug#22558: gnupg-2.1.11 on x86_64 failed its tests many times on Hydra Date: Fri, 12 Feb 2016 19:12:40 -0500 Message-ID: <20160213001240.GA10583@jasmine> References: <20160204152848.GA4379@debian> <87r3gs9zvf.fsf@gnu.org> <20160204193649.GA8785@debian> <87d1scxkd6.fsf@netris.org> <878u2ws0se.fsf@gnu.org> <87bn7ltsxl.fsf@netris.org> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:55143) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aUNph-0003Ts-LA for bug-guix@gnu.org; Fri, 12 Feb 2016 19:13:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aUNpe-00031C-Ag for bug-guix@gnu.org; Fri, 12 Feb 2016 19:13:05 -0500 Received: from debbugs.gnu.org ([208.118.235.43]:57435) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aUNpe-000312-6M for bug-guix@gnu.org; Fri, 12 Feb 2016 19:13:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84) (envelope-from ) id 1aUNpd-0004aa-QC for bug-guix@gnu.org; Fri, 12 Feb 2016 19:13:01 -0500 Sender: "Debbugs-submit" Resent-Message-ID: Content-Disposition: inline In-Reply-To: <87bn7ltsxl.fsf@netris.org> List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org To: Mark H Weaver Cc: Eric Bavier , 22558@debbugs.gnu.org On Fri, Feb 12, 2016 at 06:22:46PM -0500, Mark H Weaver wrote: > ludo@gnu.org (Ludovic Courtès) writes: > > > Eric Bavier skribis: > > > >>> > * With 14 test failures. This happened at least twice, on > >>> > hydra.gnunet.org. > >>> > >>> Eric Bavier reported on #guix that it failed to build on his machine > >>> twice in a row, with 14 test failures. > >> > >> I used 'git bisect' on the gnupg repository to narrow the failures > >> down. Commit ee87c653bf is the commit that introduces the failures. > > > > Thanks for digging! Could you report it upstream? > > I reported it upstream, and now they have a fix in their repo. > I've attached a patch to Guix which adds this upstream patch. > > Eric, would you be willing to test it and see if it fixes the problem > for you? I'm not Eric, but with this patch, I can successfully build on the machine that was previously exhibiting the failures. > > Mark > > From bd025179efca777678f39a782f851e07719db05f Mon Sep 17 00:00:00 2001 > From: Mark H Weaver > Date: Fri, 12 Feb 2016 18:19:05 -0500 > Subject: [PATCH] gnu: gnupg: Add upstream fix for test failures on x86_64. > > Fixes . > > * gnu/packages/patches/gnupg-simple-query-ignore-status-messages.patch: New > file. > * gnu-system.am (dist_patch_DATA): Add it. > * gnu/packages/gnupg.scm (gnupg)[source]: Add patch. > --- > gnu-system.am | 1 + > gnu/packages/gnupg.scm | 7 +- > ...gnupg-simple-query-ignore-status-messages.patch | 142 +++++++++++++++++++++ > 3 files changed, 148 insertions(+), 2 deletions(-) > create mode 100644 gnu/packages/patches/gnupg-simple-query-ignore-status-messages.patch > > diff --git a/gnu-system.am b/gnu-system.am > index 9a2988c..3a47e00 100644 > --- a/gnu-system.am > +++ b/gnu-system.am > @@ -506,6 +506,7 @@ dist_patch_DATA = \ > gnu/packages/patches/gmp-arm-asm-nothumb.patch \ > gnu/packages/patches/gmp-faulty-test.patch \ > gnu/packages/patches/gnucash-price-quotes-perl.patch \ > + gnu/packages/patches/gnupg-simple-query-ignore-status-messages.patch \ > gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch \ > gnu/packages/patches/gobject-introspection-cc.patch \ > gnu/packages/patches/gobject-introspection-girepository.patch \ > diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm > index a35e8fc..6cd37bc 100644 > --- a/gnu/packages/gnupg.scm > +++ b/gnu/packages/gnupg.scm > @@ -2,7 +2,7 @@ > ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès > ;;; Copyright © 2013, 2015 Andreas Enge > ;;; Copyright © 2014 Eric Bavier > -;;; Copyright © 2014, 2015 Mark H Weaver > +;;; Copyright © 2014, 2015, 2016 Mark H Weaver > ;;; Copyright © 2015 Paul van der Walt > ;;; Copyright © 2015, 2016 Efraim Flashner > ;;; Copyright © 2016 Christopher Allan Webber > @@ -206,7 +206,10 @@ compatible to GNU Pth.") > ".tar.bz2")) > (sha256 > (base32 > - "06mn2viiwsyq991arh5i5fhr9jyxq2bi0jkdj7ndfisxihngpc5p")))) > + "06mn2viiwsyq991arh5i5fhr9jyxq2bi0jkdj7ndfisxihngpc5p")) > + (patches > + (list (search-patch > + "gnupg-simple-query-ignore-status-messages.patch"))))) > (build-system gnu-build-system) > (native-inputs > `(("pkg-config" ,pkg-config))) > diff --git a/gnu/packages/patches/gnupg-simple-query-ignore-status-messages.patch b/gnu/packages/patches/gnupg-simple-query-ignore-status-messages.patch > new file mode 100644 > index 0000000..153f71c > --- /dev/null > +++ b/gnu/packages/patches/gnupg-simple-query-ignore-status-messages.patch > @@ -0,0 +1,142 @@ > +Copied from upstream: > +http://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=commitdiff;h=acac103ba5772ae738ce5409d17feab80596cde6 > + > +Fixes: https://debbugs.gnu.org/22558 > +Upstream bug: https://bugs.gnupg.org/gnupg/issue2229 > + > +From acac103ba5772ae738ce5409d17feab80596cde6 Mon Sep 17 00:00:00 2001 > +From: "Neal H. Walfield" > +Date: Fri, 12 Feb 2016 22:12:21 +0100 > +Subject: [PATCH] common: Change simple_query to ignore status messages. > + > +* common/simple-pwquery.c (simple_query): Ignore status messages. > + > +-- > +Signed-off-by: Neal H. Walfield > +GnuPG-bug-id: 2229 > +--- > + common/simple-pwquery.c | 95 ++++++++++++++++++++++++++++++++++--------------- > + 1 file changed, 67 insertions(+), 28 deletions(-) > + > +diff --git a/common/simple-pwquery.c b/common/simple-pwquery.c > +index 90d04c0..b2d666c 100644 > +--- a/common/simple-pwquery.c > ++++ b/common/simple-pwquery.c > +@@ -618,6 +618,7 @@ simple_query (const char *query) > + int fd = -1; > + int nread; > + char response[500]; > ++ int have = 0; > + int rc; > + > + rc = agent_open (&fd); > +@@ -628,40 +629,78 @@ simple_query (const char *query) > + if (rc) > + goto leave; > + > +- /* get response */ > +- nread = readline (fd, response, 499); > +- if (nread < 0) > +- { > +- rc = -nread; > +- goto leave; > +- } > +- if (nread < 3) > ++ while (1) > + { > +- rc = SPWQ_PROTOCOL_ERROR; > +- goto leave; > +- } > ++ if (! have || ! strchr (response, '\n')) > ++ /* get response */ > ++ { > ++ nread = readline (fd, &response[have], > ++ sizeof (response) - 1 /* NUL */ - have); > ++ if (nread < 0) > ++ { > ++ rc = -nread; > ++ goto leave; > ++ } > ++ have += nread; > ++ if (have < 3) > ++ { > ++ rc = SPWQ_PROTOCOL_ERROR; > ++ goto leave; > ++ } > ++ response[have] = 0; > ++ } > + > +- if (response[0] == 'O' && response[1] == 'K') > +- /* OK, do nothing. */; > +- else if ((nread > 7 && !memcmp (response, "ERR 111", 7) > +- && (response[7] == ' ' || response[7] == '\n') ) > +- || ((nread > 4 && !memcmp (response, "ERR ", 4) > +- && (strtoul (response+4, NULL, 0) & 0xffff) == 99)) ) > +- { > +- /* 111 is the old Assuan code for canceled which might still > +- be in use by old installations. 99 is GPG_ERR_CANCELED as > +- used by modern gpg-agents; 0xffff is used to mask out the > +- error source. */ > ++ if (response[0] == 'O' && response[1] == 'K') > ++ /* OK, do nothing. */; > ++ else if ((nread > 7 && !memcmp (response, "ERR 111", 7) > ++ && (response[7] == ' ' || response[7] == '\n') ) > ++ || ((nread > 4 && !memcmp (response, "ERR ", 4) > ++ && (strtoul (response+4, NULL, 0) & 0xffff) == 99)) ) > ++ { > ++ /* 111 is the old Assuan code for canceled which might still > ++ be in use by old installations. 99 is GPG_ERR_CANCELED as > ++ used by modern gpg-agents; 0xffff is used to mask out the > ++ error source. */ > + #ifdef SPWQ_USE_LOGGING > +- log_info (_("canceled by user\n") ); > ++ log_info (_("canceled by user\n") ); > + #endif > +- } > +- else > +- { > ++ } > ++ else if (response[0] == 'S' && response[1] == ' ') > ++ { > ++ char *nextline; > ++ int consumed; > ++ > ++ nextline = strchr (response, '\n'); > ++ if (! nextline) > ++ /* Point to the NUL. */ > ++ nextline = &response[have]; > ++ else > ++ /* Move past the \n. */ > ++ nextline ++; > ++ > ++ consumed = (size_t) nextline - (size_t) response; > ++ > ++ /* Skip any additional newlines. */ > ++ while (consumed < have && response[consumed] == '\n') > ++ consumed ++; > ++ > ++ have -= consumed; > ++ > ++ if (have) > ++ memmove (response, &response[consumed], have + 1); > ++ > ++ continue; > ++ } > ++ else > ++ { > + #ifdef SPWQ_USE_LOGGING > +- log_error (_("problem with the agent\n")); > ++ log_error (_("problem with the agent (unexpected response \"%s\"\n"), > ++ response); > + #endif > +- rc = SPWQ_ERR_RESPONSE; > ++ rc = SPWQ_ERR_RESPONSE; > ++ } > ++ > ++ break; > + } > + > + leave: > +-- > +2.6.3 > + > -- > 2.6.3 >