[Top][All Lists]
[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.
- coreutils' parallel make distcheck now fails,
Jim Meyering <=