From 27c558eb663e30c60d0b70e5067d43b925fb18da Mon Sep 17 00:00:00 2001 From: Charalampos Stratakis Date: Tue, 9 May 2017 16:57:18 +0200 Subject: [PATCH] Added patch for fixing recompilation of Python when using common build commands and the --enable-optimizations flag. Enable profile guided optimizations for x86_64 and i686 architectures --- ...e-compilations-issue-with-pgo-builds.patch | 67 +++++++++++++++++++ python3.spec | 34 +++++++--- 2 files changed, 92 insertions(+), 9 deletions(-) create mode 100644 00269-fix-multiple-compilations-issue-with-pgo-builds.patch diff --git a/00269-fix-multiple-compilations-issue-with-pgo-builds.patch b/00269-fix-multiple-compilations-issue-with-pgo-builds.patch new file mode 100644 index 0000000..a911feb --- /dev/null +++ b/00269-fix-multiple-compilations-issue-with-pgo-builds.patch @@ -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 diff --git a/python3.spec b/python3.spec index 9a29f09..ff229f8 100644 --- a/python3.spec +++ b/python3.spec @@ -123,7 +123,7 @@ Summary: Version 3 of the Python programming language aka Python 3000 Name: python3 Version: %{pybasever}.1 -Release: 5%{?dist} +Release: 6%{?dist} License: Python Group: Development/Languages @@ -443,6 +443,19 @@ Patch261: 00261-use-proper-command-line-parsing-in-_testembed.patch # Original proposal: https://bugzilla.redhat.com/show_bug.cgi?id=1404918 Patch262: 00262-pep538_coerce_legacy_c_locale.patch +# 00264 # +# test_pass_by_value was added in Python 3.6.1 and on aarch64 +# it is catching an error that was there, but wasn't tested before. +# Therefore skipping the test on aarch64 until fixed upstream. +# Reported upstream: http://bugs.python.org/issue29804 +Patch264: 00264-skip-test-failing-on-aarch64.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., @@ -452,14 +465,6 @@ Patch262: 00262-pep538_coerce_legacy_c_locale.patch # # https://fedoraproject.org/wiki/SIGs/Python/PythonPatches -# 00264 # -# test_pass_by_value was added in Python 3.6.1 and on aarch64 -# it is catching an error that was there, but wasn't tested before. -# Therefore skipping the test on aarch64 until fixed upstream. -# Reported upstream: http://bugs.python.org/issue29804 -Patch264: 00264-skip-test-failing-on-aarch64.patch - - # add correct arch for ppc64/ppc64le # it should be ppc64le-linux-gnu/ppc64-linux-gnu instead powerpc64le-linux-gnu/powerpc64-linux-gnu Patch5001: python3-powerppc-arch.patch @@ -725,6 +730,8 @@ sed -r -i s/'_PIP_VERSION = "[0-9.]+"'/'_PIP_VERSION = "%{pip_version}"'/ Lib/en %patch264 -p1 %endif +%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. # @@ -824,7 +831,11 @@ BuildPython debug \ BuildPython optimized \ python \ python%{pybasever} \ +%ifarch %{ix86} x86_64 + "--without-ensurepip --enable-optimizations" \ +%else "--without-ensurepip" \ +%end true # ====================================================== @@ -1680,6 +1691,11 @@ fi # ====================================================== %changelog +* Tue May 09 2017 Charalampos Stratakis - 3.6.1-6 +- Enable profile guided optimizations for x86_64 and i686 architectures +- Update to a newer implementation of PEP 538 +- Update description to reflect that Python 3 is now the default Python + * Fri May 05 2017 Charalampos Stratakis - 3.6.1-5 - Update PEP 538 to the latest upstream implementation