From 4c1f6daa7c985007218e9a7e7fd6601153a5dcd0 Mon Sep 17 00:00:00 2001 From: Toshio Kuratomi Date: Thu, 19 Aug 2010 14:12:57 -0400 Subject: [PATCH] * Fri Aug 6 2010 Toshio Kuratomi - 3.1.2-13 - Turn on computed-gotos. - Fix for parallel make and graminit.c --- python-3.1-fix-parallel-make.patch | 38 ++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 python-3.1-fix-parallel-make.patch diff --git a/python-3.1-fix-parallel-make.patch b/python-3.1-fix-parallel-make.patch new file mode 100644 index 0000000..3c75b10 --- /dev/null +++ b/python-3.1-fix-parallel-make.patch @@ -0,0 +1,38 @@ +Index: Python-3.1.2/Makefile.pre.in +=================================================================== +--- Python-3.1.2.orig/Makefile.pre.in ++++ Python-3.1.2/Makefile.pre.in +@@ -215,6 +215,7 @@ IO_OBJS= \ + + ########################################################################## + # Grammar ++GRAMMAR_STAMP= $(srcdir)/grammar-stamp + GRAMMAR_H= $(srcdir)/Include/graminit.h + GRAMMAR_C= $(srcdir)/Python/graminit.c + GRAMMAR_INPUT= $(srcdir)/Grammar/Grammar +@@ -535,9 +536,24 @@ Modules/python.o: $(srcdir)/Modules/pyth + + $(IO_OBJS): $(IO_H) + +-$(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT) ++# GNU "make" interprets rules with two dependents as two copies of the rule. ++# ++# In a parallel build this can lead to pgen being run twice, once for each of ++# GRAMMAR_H and GRAMMAR_C, leading to race conditions in which the compiler ++# reads a partially-overwritten copy of one of these files, leading to syntax ++# errors (or linker errors if the fragment happens to be syntactically valid C) ++# ++# See http://www.gnu.org/software/hello/manual/automake/Multiple-Outputs.html ++# for more information ++# ++# Introduce ".grammar-stamp" as a contrived single output from PGEN to avoid ++# this: ++$(GRAMMAR_H) $(GRAMMAR_C): $(GRAMMAR_STAMP) ++ ++$(GRAMMAR_STAMP): $(PGEN) $(GRAMMAR_INPUT) + -@$(INSTALL) -d Include + -$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) ++ touch $(GRAMMAR_STAMP) + + $(PGEN): $(PGENOBJS) + $(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN)