Re: Bizarro race conditions in the Git Makefile
From: Jonathan Nieder <hidden>
Date: 2016-06-15 22:49:15
Subsystem:
the rest · Maintainer:
Linus Torvalds
Ævar Arnfjörð Bjarmason wrote:
Those interested in
poking their eyes can try:
while nice -n 30 make -j 15 clean all CFLAGS=-O0 CC=gcc; do 1; doneYou are asking make to simultaneously build and unbuild everything. It does not really surprise me that it gets confused. Does while nice -n 30 make -j 15 clean CFLAGS=-O0 CC=gcc && nice -n 30 make -j 15 all CFLAGS=-O0 CC=gcc do : done behave better?
Writing perl.mak for Git
Writing perl.mak for Git
rename MakeMaker.tmp => perl.mak: No such file or directory atMaybe something like the following is needed to protect against interrupted builds (not the problem you reported, but this reminds me).
diff --git a/perl/Makefile b/perl/Makefile
index 4ab21d6..eef7ee5 100644
--- a/perl/Makefile
+++ b/perl/Makefile@@ -22,20 +22,21 @@ clean: ifdef NO_PERL_MAKEMAKER instdir_SQ = $(subst ','\'',$(prefix)/lib) $(makfile): ../GIT-CFLAGS Makefile - echo all: private-Error.pm Git.pm > $@ - echo ' mkdir -p blib/lib' >> $@ - echo ' $(RM) blib/lib/Git.pm; cp Git.pm blib/lib/' >> $@ - echo ' $(RM) blib/lib/Error.pm' >> $@ + echo all: private-Error.pm Git.pm > $@+ + echo ' mkdir -p blib/lib' >> $@+ + echo ' $(RM) blib/lib/Git.pm; cp Git.pm blib/lib/' >> $@+ + echo ' $(RM) blib/lib/Error.pm' >> $@+ '$(PERL_PATH_SQ)' -MError -e 'exit($$Error::VERSION < 0.15009)' || \ - echo ' cp private-Error.pm blib/lib/Error.pm' >> $@ - echo install: >> $@ - echo ' mkdir -p "$$(DESTDIR)$(instdir_SQ)"' >> $@ - echo ' $(RM) "$$(DESTDIR)$(instdir_SQ)/Git.pm"; cp Git.pm "$$(DESTDIR)$(instdir_SQ)"' >> $@ - echo ' $(RM) "$$(DESTDIR)$(instdir_SQ)/Error.pm"' >> $@ + echo ' cp private-Error.pm blib/lib/Error.pm' >> $@+ + echo install: >> $@+ + echo ' mkdir -p "$$(DESTDIR)$(instdir_SQ)"' >> $@+ + echo ' $(RM) "$$(DESTDIR)$(instdir_SQ)/Git.pm"; cp Git.pm "$$(DESTDIR)$(instdir_SQ)"' >> $@+ + echo ' $(RM) "$$(DESTDIR)$(instdir_SQ)/Error.pm"' >> $@+ '$(PERL_PATH_SQ)' -MError -e 'exit($$Error::VERSION < 0.15009)' || \ - echo ' cp private-Error.pm "$$(DESTDIR)$(instdir_SQ)/Error.pm"' >> $@ - echo instlibdir: >> $@ - echo ' echo $(instdir_SQ)' >> $@ + echo ' cp private-Error.pm "$$(DESTDIR)$(instdir_SQ)/Error.pm"' >> $@+ + echo instlibdir: >> $@+ + echo ' echo $(instdir_SQ)' >> $@+ + mv $@+ $@ else $(makfile): Makefile.PL ../GIT-CFLAGS $(PERL_PATH) $< PREFIX='$(prefix_SQ)'
--