bug-automake
[Top][All Lists]
Advanced

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

coreutils' parallel make distcheck now fails


From: Jim Meyering
Subject: coreutils' parallel make distcheck now fails
Date: Fri, 10 Apr 2009 14:07:53 +0200

On a quad-core system, building "make -j7 distcheck"
fails consistently like this: (note the parallel builds of rmdir.o)

     CC  nohup.o
     CC  readlink.o
     CC  rm.o
     CC  rmdir.o
    make[3]: Entering directory `/c/coreutils/src'
     CC  readlink.o
     CC  stat.o
     AR  libver.a
     CC  sync.o
     CC  shred.o
     CC  rmdir.o
     CC  touch.o
     CC  unlink.o
    mv: cannot stat `.deps/rmdir.Tpo': No such file or directory
    make[3]: *** [rmdir.o] Error 1
    make[3]: *** Waiting for unfinished jobs....
     CC  shred.o
     CCLD  stat
     CCLD  sync
     CC  touch.o
     CC  unlink.o
    make[3]: Leaving directory `/c/coreutils/src'
     CC  cat.o
    make[2]: *** [check-AUTHORS] Error 2
    make[2]: *** Waiting for unfinished jobs....

     ...
     CCLD  yes
     CCLD  base64
    make[3]: Leaving directory `/c/coreutils/src'
    make[2]: Leaving directory `/c/coreutils'
    make[1]: *** [distcheck-hook] Error 2
    make[1]: Leaving directory `/c/coreutils'
    make: *** [distcheck] Error 2
    [Exit 2]

That is due to this part of src/Makefile:

--- Makefile.bak        2009-04-10 13:48:26.000000000 +0200
+++ Makefile    2009-04-10 13:51:14.000000000 +0200
@@ -2151,7 +2151,7 @@ include ./$(DEPDIR)/yes.Po

 .c.o:
        $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-       $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+       -$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 #      $(AM_V_CC) \
 #      source='$<' object='$@' libtool=no \
 #      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
@@ -2159,7 +2159,7 @@ include ./$(DEPDIR)/yes.Po

 .c.obj:
        $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ 
`$(CYGPATH_W) '$<'`
-       $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+       -$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 #      $(AM_V_CC) \
 #      source='$<' object='$@' libtool=no \
 #      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \


It's a race, with the winner renaming the .Tpo file
and the loser getting the mv failure.

When I make the above change manually,
that parallel make distcheck then succeeds.
Ignoring that mv failure is a horrible kludge,
but I don't have more time to investigate right now.




reply via email to

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