autoconf-patches
[Top][All Lists]
Advanced

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

FYI parallel make improvement


From: Eric Blake
Subject: FYI parallel make improvement
Date: Thu, 13 Sep 2007 19:58:34 +0000 (UTC)
User-agent: Loom/3.14 (http://gmane.org/)

I'm not claiming that make -j2 is perfect yet, but here's one more step towards 
it.  During 'make -j2 check', after touching lib/autoconf/*.m4 files, the 
mktests.sh rule was spawned twice to rebuild multiple files at once, and died 
when one instance deleted a file in use by the other.  Automake gives some nice 
instructions on how to make this parallel-make safe[1]; I went with the next-to-
last idea that assumes the user is not deleting targets without also deleting 
the stamp file, because it was simpler.

[1] http://sourceware.org/automake/automake.html#Multiple-Outputs

Committing this:

2007-09-13  Eric Blake  <address@hidden>

        Avoid parallel 'make check' issue.
        * tests/Makefile.am (mktests.stamp): New witness.
        (TESTSUITE_GENERATED_AT): Use it.
        (CLEANFILES): Clean the witness.
        * tests/.cvsignore (mktests.stamp): Ignore the witness.
        * tests/Makefile.in: Regenerate.

Index: tests/Makefile.am
===================================================================
RCS file: /sources/autoconf/autoconf/tests/Makefile.am,v
retrieving revision 1.105
diff -u -p -r1.105 Makefile.am
--- tests/Makefile.am   20 Jul 2007 23:11:54 -0000      1.105
+++ tests/Makefile.am   13 Sep 2007 19:49:57 -0000
@@ -1,6 +1,6 @@
 ## Make Autoconf tests.
 
-# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006
+# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
 # Free Software Foundation, Inc.
 
 # This program is free software: you can redistribute it and/or modify
@@ -158,10 +158,21 @@ AUTOCONF_FILES = $(autoconfdir)/general.
                 $(autoconfdir)/types.m4 \
                 $(autoconfdir)/programs.m4
 
-$(TESTSUITE_GENERATED_AT): mktests.sh $(AUTOCONF_FILES)
+$(TESTSUITE_GENERATED_AT): mktests.stamp
+## Recover from the removal of $@
+       @if test -f $@; then :; else \
+         rm -f mktests.stamp; \
+         $(MAKE) $(AM_MAKEFLAGS) mktests.stamp; \
+       fi
+
+mktests.stamp : mktests.sh $(AUTOCONF_FILES)
+       @rm -f mktests.tmp
+       @touch mktests.tmp
        cd $(srcdir) && ./mktests.sh \
          `echo " "$(AUTOCONF_FILES) | sed 's, [^ ]*/, ../lib/autoconf/,g'`
+       @mv -f mktests.tmp $@
 
+CLEANFILES += mktests.stamp mktests.tmp
 
 ## maintainer-check ##
 






reply via email to

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