- disable systemtap for now (dtrace is failing on startup due to the bug

mentioned in 2.7-4)
- provide relative path to python binary when running pathfix.py
- fix parallel make (patch 122)
This commit is contained in:
dmalcolm 2010-07-22 20:04:43 +00:00
parent a8ca61b1fb
commit b95f6cc2ca
2 changed files with 53 additions and 3 deletions

View File

@ -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)

View File

@ -37,7 +37,7 @@
%global with_gdb_hooks 1
%global with_systemtap 1
%global with_systemtap 0
# some arches dont have valgrind so we need to disable its support on them
%ifarch %{sparc} s390 s390x
@ -91,7 +91,7 @@ Summary: An interpreted, interactive, object-oriented programming language
Name: %{python}
# Remember to also rebase python-docs when changing this:
Version: 2.7
Release: 4%{?dist}
Release: 5%{?dist}
License: Python
Group: Development/Languages
Provides: python-abi = %{pybasever}
@ -405,6 +405,12 @@ Patch119: python-2.6.5-fix-expat-issue9054.patch
# For now, revert this patch:
Patch121: python-2.7rc2-r79310.patch
# Fix race condition in parallel make that could lead to graminit.c failing
# to compile, or linker errors with "undefined reference to
# `_PyParser_Grammar'":
# Not yet sent upstream:
Patch122: python-2.7-fix-parallel-make.patch
# This is the generated patch to "configure"; see the description of
# %{regenerate_autotooling_patch}
# above:
@ -645,6 +651,7 @@ rm -r Modules/zlib || exit 1
%patch119 -p0 -b .fix-expat-issue9054
%patch121 -p0 -R
%patch122 -p1 -b .fix-parallel-make
# This shouldn't be necesarry, but is right now (2.2a3)
find -name "*~" |xargs rm -f
@ -739,7 +746,7 @@ make OPT="$CFLAGS" %{?_smp_mflags}
# optimized python binary:
if $PathFixWithThisBinary
then
LD_LIBRARY_PATH="$topdir/$ConfDir" $BinaryName \
LD_LIBRARY_PATH="$topdir/$ConfDir" ./$BinaryName \
$topdir/Tools/scripts/pathfix.py \
-i "%{_bindir}/env $BinaryName" \
$topdir
@ -1390,6 +1397,12 @@ rm -fr %{buildroot}
# payload file would be unpackaged)
%changelog
* Thu Jul 22 2010 David Malcolm <dmalcolm@redhat.com> - 2.7-5
- disable systemtap for now (dtrace is failing on startup due to the bug
mentioned in 2.7-4)
- provide relative path to python binary when running pathfix.py
- fix parallel make (patch 122)
* Thu Jul 22 2010 David Malcolm <dmalcolm@redhat.com> - 2.7-4
- fix reference to pyconfig.h in sysconfig that led to failure on startup if
python-devel was not installed