Enable profile guided optimizations for x86_64 and i686 architectures.

Added patch for fixing recompilation of Python when using common
build commands and the --enable-optimizations flag.
This commit is contained in:
Charalampos Stratakis 2017-05-10 16:41:09 +02:00
parent 890215f627
commit 1554ebbaa5
2 changed files with 82 additions and 3 deletions

View File

@ -0,0 +1,63 @@
diff --git a/Makefile.pre.in b/Makefile.pre.in
index 9e4be0a..a58b59c 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -863,12 +863,12 @@ $(LIBRARY_OBJS) $(MODOBJS) Modules/python.o: $(PYTHON_HEADERS)
TESTOPTS= -l $(EXTRATESTOPTS)
TESTPROG= $(srcdir)/Lib/test/regrtest.py
TESTPYTHON= $(RUNSHARED) ./$(BUILDPYTHON) -Wd -3 -E -tt $(TESTPYTHONOPTS)
-test: all platform
+test: @DEF_MAKE_RULE@ platform
-find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f
-$(TESTPYTHON) $(TESTPROG) $(TESTOPTS)
$(TESTPYTHON) $(TESTPROG) $(TESTOPTS)
-testall: all platform
+testall: @DEF_MAKE_RULE@ platform
-find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f
$(TESTPYTHON) $(srcdir)/Lib/compileall.py
-find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f
@@ -877,7 +877,7 @@ testall: all platform
# Run the unitests for both architectures in a Universal build on OSX
# Must be run on an Intel box.
-testuniversal: all platform
+testuniversal: @DEF_MAKE_RULE@ platform
if [ `arch` != 'i386' ];then \
echo "This can only be used on OSX/i386" ;\
exit 1 ;\
@@ -900,14 +900,14 @@ QUICKTESTOPTS= $(TESTOPTS) -x test_subprocess test_io test_lib2to3 \
test_multibytecodec test_urllib2_localnet test_itertools \
test_multiprocessing test_mailbox test_socket test_poll \
test_select test_zipfile
-quicktest: all platform
+quicktest: @DEF_MAKE_RULE@ platform
-find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f
-$(TESTPYTHON) $(TESTPROG) $(QUICKTESTOPTS)
$(TESTPYTHON) $(TESTPROG) $(QUICKTESTOPTS)
MEMTESTOPTS= $(QUICKTESTOPTS) -x test_dl test___all__ test_fork1 \
test_longexp
-memtest: all platform
+memtest: @DEF_MAKE_RULE@ platform
-rm -f $(srcdir)/Lib/test/*.py[co]
-$(TESTPYTHON) $(TESTPROG) $(MEMTESTOPTS)
$(TESTPYTHON) $(TESTPROG) $(MEMTESTOPTS)
@@ -1198,7 +1198,7 @@ LIBPL= $(LIBP)/config$(DEBUG_SUFFIX)
# pkgconfig directory
LIBPC= $(LIBDIR)/pkgconfig
-libainstall: all python$(DEBUG_SUFFIX)-config
+libainstall: @DEF_MAKE_RULE@ python$(DEBUG_SUFFIX)-config
@for i in $(LIBDIR) $(LIBP) $(LIBPL) $(LIBPC); \
do \
if test ! -d $(DESTDIR)$$i; then \
@@ -1425,7 +1425,7 @@ distclean: clobber
-exec rm -f {} ';'
# Check for smelly exported symbols (not starting with Py/_Py)
-smelly: all
+smelly: @DEF_MAKE_RULE@
nm -p $(LIBRARY) | \
sed -n "/ [TDB] /s/.* //p" | grep -v "^_*Py" | sort -u; \

View File

@ -110,7 +110,7 @@ Summary: An interpreted, interactive, object-oriented programming language
Name: %{python}
# Remember to also rebase python-docs when changing this:
Version: 2.7.13
Release: 7%{?dist}
Release: 8%{?dist}
License: Python
Group: Development/Languages
Requires: %{python}-libs%{?_isa} = %{version}-%{release}
@ -762,8 +762,11 @@ Patch250: 00250-getentropy.patch
# scripts specified as an entry_points
Patch252: 00252-add-executable-option.patch
# Disable tk for modularity builds to break up build dependencies
Patch04000: 04000-modularity-disable-tk.patch
# 00269 #
# Fix python's recompilation with common build commands when using
# profile guided optimizations.
# Fixed upstream: http://bugs.python.org/issue29243
Patch269: 00269-fix-multiple-compilations-issue-with-pgo-builds.patch
# (New patches go here ^^^)
#
@ -777,6 +780,10 @@ Patch04000: 04000-modularity-disable-tk.patch
# This is the generated patch to "configure"; see the description of
# %{regenerate_autotooling_patch}
# above:
# Disable tk for modularity builds to break up build dependencies
Patch04000: 04000-modularity-disable-tk.patch
Patch5000: 05000-autotool-intermediates.patch
# ======================================================
@ -1070,6 +1077,7 @@ mv Modules/cryptmodule.c Modules/_cryptmodule.c
%patch250 -p1
%patch252 -p1
%patch269 -p1
%if ! 0%{?_module_build}
%patch4000 -p1
@ -1207,7 +1215,11 @@ BuildPython debug \
BuildPython optimized \
python \
python%{pybasever} \
%ifarch %{ix86} x86_64
"--enable-optimizations" \
%else
"" \
%endif
true
@ -1940,6 +1952,10 @@ rm -fr %{buildroot}
# ======================================================
%changelog
* Wed May 10 2017 Charalampos Stratakis <cstratak@redhat.com> - 2.7.13-8
- Enable profile guided optimizations for x86_64 and i686 architectures
- Update description to reflect that Python 2 is not the default Python
* Tue Apr 25 2017 Karsten Hopp <karsten@redhat.com> - 2.7.13-7
- apply modularity patch only during module builds