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 15:04:27 +02:00
parent 80aab0f05e
commit 3ce08cb6e0
2 changed files with 82 additions and 1 deletions

View File

@ -0,0 +1,67 @@
diff --git a/Makefile.pre.in b/Makefile.pre.in
index 0e1d0af..42ab191 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -989,7 +989,7 @@ TESTTIMEOUT= 1200
# Run a basic set of regression tests.
# This excludes some tests that are particularly resource-intensive.
-test: all platform
+test: @DEF_MAKE_RULE@ platform
$(TESTRUNNER) $(TESTOPTS)
# Run the full test suite twice - once without .pyc files, and once with.
@@ -999,7 +999,7 @@ test: all platform
# the bytecode read from a .pyc file had the bug, sometimes the directly
# generated bytecode. This is sometimes a very shy bug needing a lot of
# sample data.
-testall: all platform
+testall: @DEF_MAKE_RULE@ platform
-find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f
$(TESTPYTHON) -E $(srcdir)/Lib/compileall.py
-find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f
@@ -1008,7 +1008,7 @@ testall: all platform
# Run the test suite 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 ;\
@@ -1031,7 +1031,7 @@ QUICKTESTOPTS= $(TESTOPTS) -x test_subprocess test_io test_lib2to3 \
test_multiprocessing_forkserver \
test_mailbox test_socket test_poll \
test_select test_zipfile test_concurrent_futures
-quicktest: all platform
+quicktest: @DEF_MAKE_RULE@ platform
$(TESTRUNNER) $(QUICKTESTOPTS)
@@ -1368,7 +1368,7 @@ LIBPL= $(LIBDEST)/config-$(LDVERSION)-$(MULTIARCH)
# pkgconfig directory
LIBPC= $(LIBDIR)/pkgconfig
-libainstall: all python-config
+libainstall: @DEF_MAKE_RULE@ python-config
@for i in $(LIBDIR) $(LIBPL) $(LIBPC); \
do \
if test ! -d $(DESTDIR)$$i; then \
@@ -1616,7 +1616,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; \
@@ -1653,7 +1653,7 @@ funny:
-o -print
# Perform some verification checks on any modified files.
-patchcheck: all
+patchcheck: @DEF_MAKE_RULE@
$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/patchcheck.py
# Dependencies

View File

@ -112,7 +112,7 @@
Summary: Version 3 of the Python programming language aka Python 3000
Name: python3
Version: %{pybasever}.3
Release: 5%{?dist}
Release: 6%{?dist}
License: Python
Group: Development/Languages
@ -404,6 +404,12 @@ Patch259: 00259-tolerate-legacy-invalid-bytecode.patch
# FIXED UPSTREAM: https://bugs.python.org/issue24875
Patch267: 00267-install-pip-in-a-venv-with-system-site-packages.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 ^^^)
#
# When adding new patches to "python" and "python3" in Fedora, EL, etc.,
@ -646,6 +652,7 @@ sed -r -i s/'_PIP_VERSION = "[0-9.]+"'/'_PIP_VERSION = "%{pip_version}"'/ Lib/en
%patch243 -p1
%patch259 -p1
%patch267 -p1
%patch269 -p1
# Currently (2010-01-15), http://docs.python.org/library is for 2.6, and there
# are many differences between 2.6 and the Python 3 library.
@ -744,7 +751,11 @@ BuildPython debug \
BuildPython optimized \
python \
python%{pybasever} \
%ifarch %{ix86} x86_64
"--without-ensurepip --enable-optimizations" \
%else
"--without-ensurepip" \
%endif
true
# ======================================================
@ -1545,6 +1556,9 @@ rm -fr %{buildroot}
# ======================================================
%changelog
* Wed May 10 2017 Charalampos Stratakis <cstratak@redhat.com> - 3.5.3-6
- Enable profile guided optimizations for x86_64 and i686 architectures
* Mon Apr 24 2017 Charalampos Stratakis <cstratak@redhat.com> - 3.5.3-5
- Make pip installable in a new venv when using the --system-site-packages flag