bug-automake
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: maintainer mode parallel make issue


From: Ralf Wildenhues
Subject: Re: maintainer mode parallel make issue
Date: Wed, 22 Apr 2009 22:09:39 +0200
User-agent: Mutt/1.5.18 (2008-05-17)

Hi Eric,

* Ralf Wildenhues wrote on Mon, Apr 20, 2009 at 10:11:12PM CEST:
> * Eric Blake wrote on Mon, Apr 20, 2009 at 06:44:17PM CEST:
> > But the point remains that we DO want perl's flock to work for
> > cross-process locking (automake and autoconf both need a lock on
> > autom4te.cache/requests, to block whichever task starts late).
> 
> Yes, definitely.  And a testsuite addition to Autoconf or Automake to
> ensure this would be good, I guess.

Proposed patch against Autoconf.  Tested on GNU/Linux and Cygwin: as it
is, the patch hasn't caused a failure in several runs.  When I comment
out the
  $icache_file->lock (LOCK_EX);

line in bin/autom4te.in or go for a shared lock with LOCK_SH, rebuild,
then the test has a fairly high chance of failing.  Results I've
observed so far are rare false passes, otherwise one of these two
failures:

../../autoconf/tests/tools.at:333: grep 'cannot rename' errlog
++ grep 'cannot rename' errlog
--- /dev/null   2008-01-01 20:00:00.000000000 +0200
+++ /home/ralf/ac/build/tests/testsuite.dir/at-groups/8/stdout 2009-04-22 
20:04:13.000000000 +0200
@@ -0,0 +1 @@
+autom4te: cannot rename autom4te.cache/traces.0t as autom4te.cache/traces.0: 
No such file or directory
../../autoconf/tests/tools.at:333: exit code was 0, expected 1


++ autom4te --language=autoconf -o configure
--- /dev/null   2008-01-01 20:00:00.000000000 +0200
+++ /home/ralf/ac/build/tests/testsuite.dir/at-groups/8/stderr 2009-04-22 
20:04:08.000000000 +0200
@@ -0,0 +1,3 @@
+Use of uninitialized value in concatenation (.) or string at 
/home/ralf/ac/build/bin/autom4te line 1026.
+unknown channel m4trace:stdin:1: -1- AC_SUBST_T at 
/home/ralf/ac/build/../autoconf/lib/Autom4te/Channels.pm line 634
+       Autom4te::Channels::msg('m4trace:stdin:1: -1- AC_SUBST_T', 'undef', 
'warning: ') called at /home/ralf/ac/build/bin/autom4te line 1026
../../autoconf/tests/tools.at:329: exit code was 1, expected 0
++ echo
8. tools.at:323:  FAILED (tools.at:329)


OK to apply?

Thanks,
Ralf

    New test to ensure autom4te cache file locking works.
    
    * tests/tools.at (autom4te cache locking): New test.
    Report by Eric Blake.

diff --git a/tests/tools.at b/tests/tools.at
index 871d267..c4016cc 100644
--- a/tests/tools.at
+++ b/tests/tools.at
@@ -1011,6 +1011,26 @@ AT_CHECK([test "`find configure -newer newer`" = "" ||
 AT_CLEANUP
 
 
+# autom4te cache locking
+# ----------------------
+
+AT_SETUP([autom4te cache locking])
+
+# Cannot use AT_CHECK here, autotest internals could be messed up.
+
+(echo AC_INIT; sleep 2; echo) \
+  | (autom4te --language=autoconf -o configure; echo $? >&2 ) 2>errlog &
+AT_CHECK([echo AC_INIT | autom4te --language=autoconf -o configure])
+wait
+
+# Ignore additional output from shell verbose or xtrace mode.
+AT_CHECK([grep 'cannot rename' errlog], [1])
+AT_CHECK([grep '^0$' errlog], [], [ignore])
+AT_CHECK_CONFIGURE
+
+AT_CLEANUP
+
+
 # autotools and file names containing whitespace
 # ---------------------------------------------
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]