diff options
author | Domen Kožar <domen@dev.si> | 2015-01-18 16:25:43 +0100 |
---|---|---|
committer | Domen Kožar <domen@dev.si> | 2015-01-18 19:20:07 +0100 |
commit | 652cfc36e92bca5cb99345f314a8de073b5d49bc (patch) | |
tree | ccdf61294ca7a0517f31fc171ac415bebc0f6a7a /pkgs/development/interpreters/python | |
parent | e4294c27e0de3c5524045abb0eb4928c1099f9a9 (diff) |
python2.6: add a patch to fix parallel make failure
(cherry picked from commit 23a202519cb1d8704a0b4294d8d13a224efb1a74) Signed-off-by: Domen Kožar <domen@dev.si>
Diffstat (limited to 'pkgs/development/interpreters/python')
-rw-r--r-- | pkgs/development/interpreters/python/2.6/default.nix | 3 | ||||
-rw-r--r-- | pkgs/development/interpreters/python/2.6/python2.6-fix-parallel-make.patch | 37 |
2 files changed, 40 insertions, 0 deletions
diff --git a/pkgs/development/interpreters/python/2.6/default.nix b/pkgs/development/interpreters/python/2.6/default.nix index d13fe9178bd2c..87e4dceee4d76 100644 --- a/pkgs/development/interpreters/python/2.6/default.nix +++ b/pkgs/development/interpreters/python/2.6/default.nix @@ -24,6 +24,9 @@ let # doesn't work in Nix because Nix changes the mtime of files in # the Nix store to 1. So treat that as a special case. ./nix-store-mtime.patch + + # http://bugs.python.org/issue10013 + ./python2.6-fix-parallel-make.patch ]; preConfigure = '' diff --git a/pkgs/development/interpreters/python/2.6/python2.6-fix-parallel-make.patch b/pkgs/development/interpreters/python/2.6/python2.6-fix-parallel-make.patch new file mode 100644 index 0000000000000..c43e141f9afba --- /dev/null +++ b/pkgs/development/interpreters/python/2.6/python2.6-fix-parallel-make.patch @@ -0,0 +1,37 @@ +diff -up Python-2.7/Makefile.pre.in.fix-parallel-make Python-2.7/Makefile.pre.in +--- Python-2.7/Makefile.pre.in.fix-parallel-make 2010-07-22 15:01:39.567996932 -0400 ++++ Python-2.7/Makefile.pre.in 2010-07-22 15:47:02.437998509 -0400 +@@ -207,6 +207,7 @@ SIGNAL_OBJS= @SIGNAL_OBJS@ + + ########################################################################## + # Grammar ++GRAMMAR_STAMP= $(srcdir)/grammar-stamp + GRAMMAR_H= $(srcdir)/Include/graminit.h + GRAMMAR_C= $(srcdir)/Python/graminit.c + GRAMMAR_INPUT= $(srcdir)/Grammar/Grammar +@@ -530,10 +531,24 @@ Modules/getpath.o: $(srcdir)/Modules/get + Modules/python.o: $(srcdir)/Modules/python.c + $(MAINCC) -c $(PY_CFLAGS) -o $@ $(srcdir)/Modules/python.c + ++# 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_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT) ++$(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) |