GNU bug report logs - #11791
recheck and compilation error

Previous Next

Package: automake;

Reported by: Peter Johansson <trojkan <at> gmail.com>

Date: Tue, 26 Jun 2012 12:04:02 UTC

Severity: normal

Tags: patch

Done: Stefano Lattarini <stefano.lattarini <at> gmail.com>

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 11791 in the body.
You can then email your comments to 11791 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 bug-automake <at> gnu.org:
bug#11791; Package automake. (Tue, 26 Jun 2012 12:04:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Peter Johansson <trojkan <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-automake <at> gnu.org. (Tue, 26 Jun 2012 12:04:03 GMT) Full text and rfc822 format available.

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

From: Peter Johansson <trojkan <at> gmail.com>
To: bug-automake <at> gnu.org
Subject: recheck and compilation error
Date: Tue, 26 Jun 2012 21:56:58 +1000
[Message part 1 (text/plain, inline)]
Hello automakers,

I've noticed the following behavior from 'make recheck'.

If I run 'make check' and one test fails
$ make check
...
FAIL: foo.test

I modify the test
$ edit foo.c
and rerun the test suite with
$ make recheck -k
foo.c:1: error: parse error before '}' token
make[1]: *** [foo.o] Error 1
make[1]: Target `test-suite.log' not remade because of errors.
make: *** [recheck] Error 2

which is now interrupted as I introduced a compilation error. If I now 
try edit the test again and rerun test suite with
$ make recheck -k
I get
# TOTAL: 0
# PASS:  0
# SKIP:  0
# XFAIL: 0
# FAIL:  0
# XPASS: 0
# ERROR: 0

that is, the failed test is not rerun. I suppose the reason is that it 
was never run last time and that there exist no trs file, but this is 
IMHO suboptimal and unexpected. I would expect that make recheck also 
includes tests that failed due to compilation problems or at least tests 
that failed last time they were run.

Please find a script attached illustrating the behavior.

This is with automake 1.12.

Cheers,
Peter

-- 
Peter Johansson


[recheck.sh (application/x-sh, attachment)]

Information forwarded to bug-automake <at> gnu.org:
bug#11791; Package automake. (Wed, 27 Jun 2012 13:13:02 GMT) Full text and rfc822 format available.

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

From: Stefano Lattarini <stefano.lattarini <at> gmail.com>
To: Peter Johansson <trojkan <at> gmail.com>
Cc: 11791 <at> debbugs.gnu.org,
	"automake-patches <at> gnu.org" <automake-patches <at> gnu.org>
Subject: Re: bug#11791: recheck and compilation error
Date: Wed, 27 Jun 2012 15:08:20 +0200
[Message part 1 (text/plain, inline)]
tags 11791 + patch
thanks

Hi Peter.

On 06/26/2012 01:56 PM, Peter Johansson wrote:
> Hello automakers,
> 
> I've noticed the following behavior from 'make recheck'.
> 
> If I run 'make check' and one test fails
>
>   $ make check
>   ...
>   FAIL: foo.test
> 
> I modify the test
>
>   $ edit foo.c
>
> and rerun the test suite with
>
>   $ make recheck -k
>   foo.c:1: error: parse error before '}' token
>   make[1]: *** [foo.o] Error 1
>   make[1]: Target `test-suite.log' not remade because of errors.
>   make: *** [recheck] Error 2
> 
> which is now interrupted as I introduced a compilation error.
> If I now try edit the test again and rerun test suite with
>
>   $ make recheck -k
>
> I get
>
>   # TOTAL: 0
>   # PASS:  0
>   # SKIP:  0
>   # XFAIL: 0
>   # FAIL:  0
>   # XPASS: 0
>   # ERROR: 0
> 
> that is, the failed test is not rerun.  I suppose the reason is that it
> was never run last time and that there exist no trs file, but this is
> IMHO suboptimal and unexpected.
> I would expect that make recheck also includes tests that failed due
> to compilation problems or at least tests that failed last time they
> were run.
>
I agree.  The attached patch should solve the issue.   It's more ugly
than I'd like, but this bug is annoying enough to make such ugliness
acceptable.  I will push (to maint) in a couple of days if there are
no objections.

> Please find a script attached illustrating the behavior.
> 
> This is with automake 1.12.
> 
> Cheers,
> Peter
> 

Thanks,
  Stefano
[0001-parallel-tests-recheck-behaves-better-in-case-of-com.patch (text/x-diff, attachment)]

Added tag(s) patch. Request was from Stefano Lattarini <stefano.lattarini <at> gmail.com> to control <at> debbugs.gnu.org. (Wed, 27 Jun 2012 13:13:02 GMT) Full text and rfc822 format available.

Reply sent to Stefano Lattarini <stefano.lattarini <at> gmail.com>:
You have taken responsibility. (Sat, 30 Jun 2012 18:45:02 GMT) Full text and rfc822 format available.

Notification sent to Peter Johansson <trojkan <at> gmail.com>:
bug acknowledged by developer. (Sat, 30 Jun 2012 18:45:02 GMT) Full text and rfc822 format available.

Message #15 received at 11791-done <at> debbugs.gnu.org (full text, mbox):

From: Stefano Lattarini <stefano.lattarini <at> gmail.com>
To: Peter Johansson <trojkan <at> gmail.com>
Cc: 11791-done <at> debbugs.gnu.org,
	"automake-patches <at> gnu.org" <automake-patches <at> gnu.org>
Subject: Re: bug#11791: recheck and compilation error
Date: Sat, 30 Jun 2012 20:39:52 +0200
Reference: <http://debbugs.gnu.org/11791>

On 06/27/2012 03:08 PM, Stefano Lattarini wrote:
>
> I agree.  The attached patch should solve the issue.   It's more ugly
> than I'd like, but this bug is annoying enough to make such ugliness
> acceptable.  I will push (to maint) in a couple of days if there are
> no objections.
> 
Pushed now.  I'm thus closing this bug report.

Regards,
  Stefano




Information forwarded to bug-automake <at> gnu.org:
bug#11791; Package automake. (Sun, 01 Jul 2012 11:34:02 GMT) Full text and rfc822 format available.

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

From: Stefano Lattarini <stefano.lattarini <at> gmail.com>
To: automake-patches <at> gnu.org
Cc: 11791 <at> debbugs.gnu.org
Subject: [PATCH] {maint} parallel-tests: reimplement fix for bug#11791
Date: Sun,  1 Jul 2012 13:29:11 +0200
* lib/am/check.am: Here.  The new implementation is shorter, slightly
more efficient (requiring less forks), less brittle in the face of
signals or unexpected interruptions in the make process, and should
also be easier to merge in the 'ng/master' branch (as of now, due to
the difficulties in merging our previous version of the fix in the
'ng/master' codebase, Automake-NG still lacks a fix for bug#11791).

Signed-off-by: Stefano Lattarini <stefano.lattarini <at> gmail.com>
---

 I plan to push this by this evening.

 Regards,
   Stefano

 lib/am/check.am |   38 +++++++++++++++-----------------------
 1 file changed, 15 insertions(+), 23 deletions(-)

diff --git a/lib/am/check.am b/lib/am/check.am
index 19a803f..e414a90 100644
--- a/lib/am/check.am
+++ b/lib/am/check.am
@@ -240,6 +240,12 @@ am__set_TESTS_bases = \
 	rm -f $< $@
 	$(MAKE) $(AM_MAKEFLAGS) $<
 
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# exand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
 $(TEST_SUITE_LOG): $(TEST_LOGS)
 	@$(am__set_TESTS_bases); \
 ## Helper shell function, tells whether a path refers to an existing,
@@ -431,11 +437,10 @@ recheck: all %CHECK_DEPS%
 	bases=`for i in $$bases; do echo $$i; done \
 	         | $(am__list_recheck_tests)` || exit 1; \
 	log_list=`for i in $$bases; do echo $$i.log; done`; \
-	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
 ## Remove newlines and normalize whitespace.  Trailing (and possibly
 ## leading) whitespace is known to cause segmentation faults on
 ## Solaris 10 XPG4 make.
-	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	log_list=`echo $$log_list`; \
 ## Move the '.log' and '.trs' files associated with the tests to be
 ## re-run out of the way, so that those tests will be re-run by the
 ## "make test-suite.log" recursive invocation below.
@@ -445,27 +450,14 @@ recheck: all %CHECK_DEPS%
 ##     we must ensure that any '.log' and '.trs' file referring to such
 ##     test are preserved, so that future "make recheck" invocations
 ##     will still try to re-compile and re-run it (automake bug#11791).
-## The extra contortions below cater to such requirements.
-	am_backupdir=.am-recheck; \
-	if $(am__make_dryrun); then :; else \
-	  if test -n "$$trs_list$$log_list"; then \
-	    { test ! -d $$am_backupdir || rm -rf $$am_backupdir; } \
-	      && $(MKDIR_P) $$am_backupdir || exit 1; \
-	    test -z "$$log_list" \
-	      || mv -f $$log_list $$am_backupdir 2>/dev/null; \
-	    test -z "$$trs_list" \
-	      || mv -f $$trs_list $$am_backupdir 2>/dev/null; \
-	  fi; \
-	fi; \
-	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
-	st=$$?; \
-	if $(am__make_dryrun) || test ! -d $$am_backupdir; then :; else \
-	  for f in $$log_list $$trs_list; do \
-	    test -f $$f || mv $$am_backupdir/$$f . || exit 1; \
-	  done; \
-	  rm -rf $$am_backupdir || exit 1; \
-	fi; \
-	exit $$st;
+## The tricky recusrive make invocation below should cater to such
+## requirements.
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+## Be sure to exit with the proper exit status (automake bug#9245).  See
+## comments in the recipe of $(TEST_SUITE_LOG) above for more information.
+	exit $$?
 
 AM_RECURSIVE_TARGETS += check recheck
 
-- 
1.7.9.5





Information forwarded to bug-automake <at> gnu.org:
bug#11791; Package automake. (Sun, 01 Jul 2012 16:22:01 GMT) Full text and rfc822 format available.

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

From: Stefano Lattarini <stefano.lattarini <at> gmail.com>
To: automake-patches <at> gnu.org
Cc: 11791 <at> debbugs.gnu.org
Subject: Re: bug#11791: [PATCH] {maint} parallel-tests: reimplement fix for
	bug#11791
Date: Sun, 01 Jul 2012 18:17:03 +0200
On 07/01/2012 01:29 PM, Stefano Lattarini wrote:
> * lib/am/check.am: Here.  The new implementation is shorter, slightly
> more efficient (requiring less forks), less brittle in the face of
> signals or unexpected interruptions in the make process, and should
> also be easier to merge in the 'ng/master' branch (as of now, due to
> the difficulties in merging our previous version of the fix in the
> 'ng/master' codebase, Automake-NG still lacks a fix for bug#11791).
> 
> Signed-off-by: Stefano Lattarini <stefano.lattarini <at> gmail.com>
> ---
> 
>  I plan to push this by this evening.
>
Pushed.

Regards,
  Stefano





bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 30 Jul 2012 11:24:06 GMT) Full text and rfc822 format available.

This bug report was last modified 11 years and 286 days ago.

Previous Next


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