bug-gnu-utils
[Top][All Lists]
Advanced

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

CVS gettext: parallel build issue


From: Ralf Wildenhues
Subject: CVS gettext: parallel build issue
Date: Tue, 12 Dec 2006 20:32:05 +0100
User-agent: Mutt/1.5.13 (2006-08-11)

Hello Bruno, all,

Building CVS gettext with 'make -j' currently fails due to the moopp
tool rules building multiple outputs from multiple inputs.  This topic
is explained well in this Automake doc chapter:
<http://sources.redhat.com/automake/automake.html#Multiple-Outputs>.

Below is a suggested patch which uses a dedicated stamp file, realizing
one of the later examples in that doc node.  It should fix most issues
for parallel make and rebuilding.  Note that it does not take into
account the eventual backup strategy of moopp.  You could add something
like this in the Makefile.am, not the gnulib snippets:

maintainer-clean-local:
        rm -f *~

or add the named backup files to the respective *_CLEAN_FILES.

Cheers,
Ralf

| make[2]: Entering directory `/tmp/build/gettext-tools/gnulib-lib'
| { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|           cat ../../../gettext/gettext-tools/gnulib-lib/alloca_.h; \
|         } > alloca.h-t
| rm -f configmake.h-t configmake.h
| { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|           echo '#define PREFIX "/usr/local"'; \
[...]
|           echo '#define PKGLIBEXECDIR "/usr/local/libexec/gettext-tools"'; \
|         } | sed '/""/d' > configmake.h-t
| mv configmake.h-t configmake.h
| ../../../gettext/gettext-tools/../build-aux/moopp 
../../../gettext/gettext-tools/gnulib-lib/file-ostream.oo.c 
../../../gettext/gettext-tools/gnulib-lib/file-ostream.oo.h 
../../../gettext/gettext-tools/gnulib-lib/ostream.oo.h
| mv -f alloca.h-t alloca.h
| ../../../gettext/gettext-tools/../build-aux/moopp 
../../../gettext/gettext-tools/gnulib-lib/file-ostream.oo.c 
../../../gettext/gettext-tools/gnulib-lib/file-ostream.oo.h 
../../../gettext/gettext-tools/gnulib-lib/ostream.oo.h
| make[2]: *** No rule to make target `file_ostream.priv.h', needed by `check'. 
 Stop.
| make[2]: *** Waiting for unfinished jobs....
| Creating file_ostream.priv.h
| Creating file_ostream.vt.h
| Creating file-ostream.h
| Updating file_ostream.priv.h (backup in file_ostream.priv.h~)
| Updating file_ostream.vt.h (backup in file_ostream.vt.h~)


gnulib-local/ChangeLog:
2006-12-12  Ralf Wildenhues  <address@hidden>

        * modules/fd-ostream: Use a dedicated stamp file to fix parallel
        make build.
        * modules/file-ostream: Likewise.
        * modules/html-ostream: Likewise.
        * modules/html-styled-ostream: Likewise.
        * modules/iconv-ostream: Likewise.
        * modules/memory-ostream: Likewise.
        * modules/ostream: Likewise.
        * modules/styled-ostream: Likewise.
        * modules/term-ostream: Likewise.
        * modules/term-styled-ostream: Likewise.

Index: gnulib-local/modules/fd-ostream
===================================================================
RCS file: /cvsroot/gettext/gettext/gnulib-local/modules/fd-ostream,v
retrieving revision 1.1
diff -u -r1.1 fd-ostream
--- gnulib-local/modules/fd-ostream     7 Nov 2006 14:46:06 -0000       1.1
+++ gnulib-local/modules/fd-ostream     12 Dec 2006 19:14:16 -0000
@@ -17,10 +17,18 @@
 
 Makefile.am:
 lib_SOURCES += fd-ostream.c
-fd-ostream.h fd-ostream.c : $(top_srcdir)/build-aux/moopp fd-ostream.oo.h 
fd-ostream.oo.c ostream.oo.h
+fd-ostream.stamp : $(top_srcdir)/build-aux/moopp fd-ostream.oo.h 
fd-ostream.oo.c ostream.oo.h
+       @rm -f fd-ostream.tmp
+       @touch fd-ostream.tmp
        $(top_srcdir)/build-aux/moopp $(srcdir)/fd-ostream.oo.c 
$(srcdir)/fd-ostream.oo.h $(srcdir)/ostream.oo.h
+       @mv -f fd-ostream.tmp $@
 BUILT_SOURCES += fd-ostream.h fd-ostream.c fd_ostream.priv.h fd_ostream.vt.h
-CLEANFILES += fd-ostream.h fd-ostream.c fd_ostream.priv.h fd_ostream.vt.h
+CLEANFILES += fd-ostream.stamp fd-ostream.h fd-ostream.c fd_ostream.priv.h 
fd_ostream.vt.h
+fd-ostream.h fd-ostream.c fd_ostream.vt.h fd_ostream.priv.h : fd-ostream.stamp
+       @if test -f $@; then :; else \
+         rm -f fd-ostream.stamp; \
+         $(MAKE) $(AM_MAKEFLAGS) fd-ostream.stamp; \
+       fi
 
 Include:
 "fd-ostream.h"
@@ -30,4 +38,3 @@
 
 Maintainer:
 Bruno Haible
-
Index: gnulib-local/modules/file-ostream
===================================================================
RCS file: /cvsroot/gettext/gettext/gnulib-local/modules/file-ostream,v
retrieving revision 1.1
diff -u -r1.1 file-ostream
--- gnulib-local/modules/file-ostream   7 Nov 2006 14:46:36 -0000       1.1
+++ gnulib-local/modules/file-ostream   12 Dec 2006 19:14:16 -0000
@@ -13,10 +13,19 @@
 
 Makefile.am:
 lib_SOURCES += file-ostream.c
-file-ostream.h file-ostream.c : $(top_srcdir)/build-aux/moopp 
file-ostream.oo.h file-ostream.oo.c ostream.oo.h
+file-ostream.stamp : $(top_srcdir)/build-aux/moopp file-ostream.oo.h 
file-ostream.oo.c ostream.oo.h
+       @rm -f file-ostream.tmp
+       @touch file-ostream.tmp
        $(top_srcdir)/build-aux/moopp $(srcdir)/file-ostream.oo.c 
$(srcdir)/file-ostream.oo.h $(srcdir)/ostream.oo.h
+       @mv -f file-ostream.tmp $@
 BUILT_SOURCES += file-ostream.h file-ostream.c file_ostream.priv.h 
file_ostream.vt.h
-CLEANFILES += file-ostream.h file-ostream.c file_ostream.priv.h 
file_ostream.vt.h
+CLEANFILES += file-ostream.stamp file-ostream.h file-ostream.c 
file_ostream.priv.h file_ostream.vt.h
+file-ostream.h file-ostream.c file_ostream.vt.h file_ostream.priv.h : 
file-ostream.stamp
+       @if test -f $@; then :; else \
+         rm -f file-ostream.stamp; \
+         $(MAKE) $(AM_MAKEFLAGS) file-ostream.stamp; \
+       fi
+
 
 Include:
 "file-ostream.h"
Index: gnulib-local/modules/html-ostream
===================================================================
RCS file: /cvsroot/gettext/gettext/gnulib-local/modules/html-ostream,v
retrieving revision 1.1
diff -u -r1.1 html-ostream
--- gnulib-local/modules/html-ostream   7 Nov 2006 14:47:35 -0000       1.1
+++ gnulib-local/modules/html-ostream   12 Dec 2006 19:14:16 -0000
@@ -16,10 +16,18 @@
 
 Makefile.am:
 lib_SOURCES += html-ostream.c
-html-ostream.h html-ostream.c : $(top_srcdir)/build-aux/moopp 
html-ostream.oo.h html-ostream.oo.c ostream.oo.h
+html-ostream.stamp : $(top_srcdir)/build-aux/moopp html-ostream.oo.h 
html-ostream.oo.c ostream.oo.h
+       @rm -f html-ostream.tmp
+       @touch html-ostream.tmp
        $(top_srcdir)/build-aux/moopp $(srcdir)/html-ostream.oo.c 
$(srcdir)/html-ostream.oo.h $(srcdir)/ostream.oo.h
+       @mv -f html-ostream.tmp $@
 BUILT_SOURCES += html-ostream.h html-ostream.c html_ostream.priv.h 
html_ostream.vt.h
-CLEANFILES += html-ostream.h html-ostream.c html_ostream.priv.h 
html_ostream.vt.h
+CLEANFILES += html-ostream.stamp html-ostream.h html-ostream.c 
html_ostream.priv.h html_ostream.vt.h
+html-ostream.h html-ostream.c html_ostream.vt.h html_ostream.priv.h : 
html-ostream.stamp
+       @if test -f $@; then :; else \
+         rm -f html-ostream.stamp; \
+         $(MAKE) $(AM_MAKEFLAGS) html-ostream.stamp; \
+       fi
 
 Include:
 "html-ostream.h"
Index: gnulib-local/modules/html-styled-ostream
===================================================================
RCS file: /cvsroot/gettext/gettext/gnulib-local/modules/html-styled-ostream,v
retrieving revision 1.1
diff -u -r1.1 html-styled-ostream
--- gnulib-local/modules/html-styled-ostream    12 Dec 2006 14:20:38 -0000      
1.1
+++ gnulib-local/modules/html-styled-ostream    12 Dec 2006 19:14:16 -0000
@@ -20,10 +20,18 @@
 
 Makefile.am:
 lib_SOURCES += html-styled-ostream.c
-html-styled-ostream.h html-styled-ostream.c : $(top_srcdir)/build-aux/moopp 
html-styled-ostream.oo.h html-styled-ostream.oo.c styled-ostream.oo.h 
ostream.oo.h
+html-styled-ostream.stamp : $(top_srcdir)/build-aux/moopp 
html-styled-ostream.oo.h html-styled-ostream.oo.c styled-ostream.oo.h 
ostream.oo.h
+       @rm -f html-styled-ostream.tmp
+       @touch html-styled-ostream.tmp
        $(top_srcdir)/build-aux/moopp $(srcdir)/html-styled-ostream.oo.c 
$(srcdir)/html-styled-ostream.oo.h $(srcdir)/styled-ostream.oo.h 
$(srcdir)/ostream.oo.h
-BUILT_SOURCES += html-styled-ostream.h html-styled-ostream.c 
html_styled_ostream.priv.h html_styled_ostream.vt.h
-CLEANFILES += html-styled-ostream.h html-styled-ostream.c 
html_styled_ostream.priv.h html_styled_ostream.vt.h
+       @mv -f html-styled-ostream.tmp $@
+BUILT_SOURCES += html-styled-ostream.h html-styled-ostream.c 
html-styled_ostream.priv.h html-styled_ostream.vt.h
+CLEANFILES += html-styled-ostream.stamp html-styled-ostream.h 
html-styled-ostream.c html-styled_ostream.priv.h html-styled_ostream.vt.h
+html-styled-ostream.h html-styled-ostream.c html-styled_ostream.vt.h 
html-styled_ostream.priv.h : html-styled-ostream.stamp
+       @if test -f $@; then :; else \
+         rm -f html-styled-ostream.stamp; \
+         $(MAKE) $(AM_MAKEFLAGS) html-styled-ostream.stamp; \
+       fi
 
 Include:
 "html-styled-ostream.h"
Index: gnulib-local/modules/iconv-ostream
===================================================================
RCS file: /cvsroot/gettext/gettext/gnulib-local/modules/iconv-ostream,v
retrieving revision 1.1
diff -u -r1.1 iconv-ostream
--- gnulib-local/modules/iconv-ostream  7 Nov 2006 14:48:46 -0000       1.1
+++ gnulib-local/modules/iconv-ostream  12 Dec 2006 19:14:16 -0000
@@ -18,10 +18,18 @@
 
 Makefile.am:
 lib_SOURCES += iconv-ostream.c
-iconv-ostream.h iconv-ostream.c : $(top_srcdir)/build-aux/moopp 
iconv-ostream.oo.h iconv-ostream.oo.c ostream.oo.h
+iconv-ostream.stamp : $(top_srcdir)/build-aux/moopp iconv-ostream.oo.h 
iconv-ostream.oo.c ostream.oo.h
+       @rm -f iconv-ostream.tmp
+       @touch iconv-ostream.tmp
        $(top_srcdir)/build-aux/moopp $(srcdir)/iconv-ostream.oo.c 
$(srcdir)/iconv-ostream.oo.h $(srcdir)/ostream.oo.h
+       @mv -f iconv-ostream.tmp $@
 BUILT_SOURCES += iconv-ostream.h iconv-ostream.c iconv_ostream.priv.h 
iconv_ostream.vt.h
-CLEANFILES += iconv-ostream.h iconv-ostream.c iconv_ostream.priv.h 
iconv_ostream.vt.h
+CLEANFILES += iconv-ostream.stamp iconv-ostream.h iconv-ostream.c 
iconv_ostream.priv.h iconv_ostream.vt.h
+iconv-ostream.h iconv-ostream.c iconv_ostream.vt.h iconv_ostream.priv.h : 
iconv-ostream.stamp
+       @if test -f $@; then :; else \
+         rm -f iconv-ostream.stamp; \
+         $(MAKE) $(AM_MAKEFLAGS) iconv-ostream.stamp; \
+       fi
 
 Include:
 "iconv-ostream.h"
Index: gnulib-local/modules/memory-ostream
===================================================================
RCS file: /cvsroot/gettext/gettext/gnulib-local/modules/memory-ostream,v
retrieving revision 1.1
diff -u -r1.1 memory-ostream
--- gnulib-local/modules/memory-ostream 7 Nov 2006 14:47:11 -0000       1.1
+++ gnulib-local/modules/memory-ostream 12 Dec 2006 19:14:16 -0000
@@ -17,10 +17,18 @@
 
 Makefile.am:
 lib_SOURCES += memory-ostream.c
-memory-ostream.h memory-ostream.c : $(top_srcdir)/build-aux/moopp 
memory-ostream.oo.h memory-ostream.oo.c ostream.oo.h
+memory-ostream.stamp : $(top_srcdir)/build-aux/moopp memory-ostream.oo.h 
memory-ostream.oo.c ostream.oo.h
+       @rm -f memory-ostream.tmp
+       @touch memory-ostream.tmp
        $(top_srcdir)/build-aux/moopp $(srcdir)/memory-ostream.oo.c 
$(srcdir)/memory-ostream.oo.h $(srcdir)/ostream.oo.h
+       @mv -f memory-ostream.tmp $@
 BUILT_SOURCES += memory-ostream.h memory-ostream.c memory_ostream.priv.h 
memory_ostream.vt.h
-CLEANFILES += memory-ostream.h memory-ostream.c memory_ostream.priv.h 
memory_ostream.vt.h
+CLEANFILES += memory-ostream.stamp memory-ostream.h memory-ostream.c 
memory_ostream.priv.h memory_ostream.vt.h
+memory-ostream.h memory-ostream.c memory_ostream.vt.h memory_ostream.priv.h : 
memory-ostream.stamp
+       @if test -f $@; then :; else \
+         rm -f memory-ostream.stamp; \
+         $(MAKE) $(AM_MAKEFLAGS) memory-ostream.stamp; \
+       fi
 
 Include:
 "memory-ostream.h"
Index: gnulib-local/modules/ostream
===================================================================
RCS file: /cvsroot/gettext/gettext/gnulib-local/modules/ostream,v
retrieving revision 1.1
diff -u -r1.1 ostream
--- gnulib-local/modules/ostream        7 Nov 2006 14:45:38 -0000       1.1
+++ gnulib-local/modules/ostream        12 Dec 2006 19:14:16 -0000
@@ -12,10 +12,18 @@
 
 Makefile.am:
 lib_SOURCES += ostream.c
-ostream.h ostream.c : $(top_srcdir)/build-aux/moopp ostream.oo.h ostream.oo.c
+ostream.stamp : $(top_srcdir)/build-aux/moopp ostream.oo.h ostream.oo.c
+       @rm -f ostream.tmp
+       @touch ostream.tmp
        $(top_srcdir)/build-aux/moopp $(srcdir)/ostream.oo.c 
$(srcdir)/ostream.oo.h
+       @mv -f ostream.tmp $@
 BUILT_SOURCES += ostream.h ostream.c ostream.priv.h ostream.vt.h
-CLEANFILES += ostream.h ostream.c ostream.priv.h ostream.vt.h
+CLEANFILES += ostream.stamp ostream.h ostream.c ostream.priv.h ostream.vt.h
+ostream.h ostream.c ostream.vt.h ostream.priv.h : ostream.stamp
+       @if test -f $@; then :; else \
+         rm -f ostream.stamp; \
+         $(MAKE) $(AM_MAKEFLAGS) ostream.stamp; \
+       fi
 
 Include:
 "ostream.h"
Index: gnulib-local/modules/styled-ostream
===================================================================
RCS file: /cvsroot/gettext/gettext/gnulib-local/modules/styled-ostream,v
retrieving revision 1.1
diff -u -r1.1 styled-ostream
--- gnulib-local/modules/styled-ostream 12 Dec 2006 14:19:21 -0000      1.1
+++ gnulib-local/modules/styled-ostream 12 Dec 2006 19:14:16 -0000
@@ -12,10 +12,18 @@
 
 Makefile.am:
 lib_SOURCES += styled-ostream.c
-styled-ostream.h styled-ostream.c : $(top_srcdir)/build-aux/moopp 
styled-ostream.oo.h styled-ostream.oo.c ostream.oo.h
+styled-ostream.stamp : $(top_srcdir)/build-aux/moopp styled-ostream.oo.h 
styled-ostream.oo.c ostream.oo.h
+       @rm -f styled-ostream.tmp
+       @touch styled-ostream.tmp
        $(top_srcdir)/build-aux/moopp $(srcdir)/styled-ostream.oo.c 
$(srcdir)/styled-ostream.oo.h $(srcdir)/ostream.oo.h
+       @mv -f styled-ostream.tmp $@
 BUILT_SOURCES += styled-ostream.h styled-ostream.c styled_ostream.priv.h 
styled_ostream.vt.h
-CLEANFILES += styled-ostream.h styled-ostream.c styled_ostream.priv.h 
styled_ostream.vt.h
+CLEANFILES += styled-ostream.stamp styled-ostream.h styled-ostream.c 
styled_ostream.priv.h styled_ostream.vt.h
+styled-ostream.h styled-ostream.c styled_ostream.vt.h styled_ostream.priv.h : 
styled-ostream.stamp
+       @if test -f $@; then :; else \
+         rm -f styled-ostream.stamp; \
+         $(MAKE) $(AM_MAKEFLAGS) styled-ostream.stamp; \
+       fi
 
 Include:
 "styled-ostream.h"
Index: gnulib-local/modules/term-ostream
===================================================================
RCS file: /cvsroot/gettext/gettext/gnulib-local/modules/term-ostream,v
retrieving revision 1.3
diff -u -r1.3 term-ostream
--- gnulib-local/modules/term-ostream   11 Dec 2006 12:38:18 -0000      1.3
+++ gnulib-local/modules/term-ostream   12 Dec 2006 19:14:16 -0000
@@ -23,10 +23,18 @@
 
 Makefile.am:
 lib_SOURCES += term-ostream.c
-term-ostream.h term-ostream.c : $(top_srcdir)/build-aux/moopp 
term-ostream.oo.h term-ostream.oo.c ostream.oo.h
+term-ostream.stamp : $(top_srcdir)/build-aux/moopp term-ostream.oo.h 
term-ostream.oo.c ostream.oo.h
+       @rm -f term-ostream.tmp
+       @touch term-ostream.tmp
        $(top_srcdir)/build-aux/moopp $(srcdir)/term-ostream.oo.c 
$(srcdir)/term-ostream.oo.h $(srcdir)/ostream.oo.h
+       @mv -f term-ostream.tmp $@
 BUILT_SOURCES += term-ostream.h term-ostream.c term_ostream.priv.h 
term_ostream.vt.h
-CLEANFILES += term-ostream.h term-ostream.c term_ostream.priv.h 
term_ostream.vt.h
+CLEANFILES += term-ostream.stamp term-ostream.h term-ostream.c 
term_ostream.priv.h term_ostream.vt.h
+term-ostream.h term-ostream.c term_ostream.vt.h term_ostream.priv.h : 
term-ostream.stamp
+       @if test -f $@; then :; else \
+         rm -f term-ostream.stamp; \
+         $(MAKE) $(AM_MAKEFLAGS) term-ostream.stamp; \
+       fi
 
 Include:
 "term-ostream.h"
Index: gnulib-local/modules/term-styled-ostream
===================================================================
RCS file: /cvsroot/gettext/gettext/gnulib-local/modules/term-styled-ostream,v
retrieving revision 1.1
diff -u -r1.1 term-styled-ostream
--- gnulib-local/modules/term-styled-ostream    12 Dec 2006 14:22:13 -0000      
1.1
+++ gnulib-local/modules/term-styled-ostream    12 Dec 2006 19:14:16 -0000
@@ -17,10 +17,18 @@
 
 Makefile.am:
 lib_SOURCES += term-styled-ostream.c
-term-styled-ostream.h term-styled-ostream.c : $(top_srcdir)/build-aux/moopp 
term-styled-ostream.oo.h term-styled-ostream.oo.c styled-ostream.oo.h 
ostream.oo.h
+term-styled-ostream.stamp : $(top_srcdir)/build-aux/moopp 
term-styled-ostream.oo.h term-styled-ostream.oo.c styled-ostream.oo.h 
ostream.oo.h
+       @rm -f term-styled-ostream.tmp
+       @touch term-styled-ostream.tmp
        $(top_srcdir)/build-aux/moopp $(srcdir)/term-styled-ostream.oo.c 
$(srcdir)/term-styled-ostream.oo.h $(srcdir)/styled-ostream.oo.h 
$(srcdir)/ostream.oo.h
-BUILT_SOURCES += term-styled-ostream.h term-styled-ostream.c 
term_styled_ostream.priv.h term_styled_ostream.vt.h
-CLEANFILES += term-styled-ostream.h term-styled-ostream.c 
term_styled_ostream.priv.h term_styled_ostream.vt.h
+       @mv -f term-styled-ostream.tmp $@
+BUILT_SOURCES += term-styled-ostream.h term-styled-ostream.c 
term-styled_ostream.priv.h term-styled_ostream.vt.h
+CLEANFILES += term-styled-ostream.stamp term-styled-ostream.h 
term-styled-ostream.c term-styled_ostream.priv.h term-styled_ostream.vt.h
+term-styled-ostream.h term-styled-ostream.c term-styled_ostream.vt.h 
term-styled_ostream.priv.h : term-styled-ostream.stamp
+       @if test -f $@; then :; else \
+         rm -f term-styled-ostream.stamp; \
+         $(MAKE) $(AM_MAKEFLAGS) term-styled-ostream.stamp; \
+       fi
 
 Include:
 "term-styled-ostream.h"





reply via email to

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