diff --git a/00202-fix-undefined-behaviour-in-faulthandler.patch b/00202-fix-undefined-behaviour-in-faulthandler.patch new file mode 100644 index 0000000..b333e15 --- /dev/null +++ b/00202-fix-undefined-behaviour-in-faulthandler.patch @@ -0,0 +1,41 @@ + +# HG changeset patch +# User Victor Stinner +# Date 1423661015 -3600 +# Node ID 689092296ad31951f8f919fc06b49450e648e93d +# Parent 645f3d750be139ce0198e15e221da07b22289a92 +Issue #23433: Fix faulthandler._stack_overflow() + +Fix undefined behaviour: don't compare pointers. Use Py_uintptr_t type instead +of void*. It fixes test_faulthandler on Fedora 22 which now uses GCC 5. + +diff --git a/Modules/faulthandler.c b/Modules/faulthandler.c +--- a/Modules/faulthandler.c ++++ b/Modules/faulthandler.c +@@ -911,12 +911,12 @@ faulthandler_fatal_error_py(PyObject *se + } + + #if defined(HAVE_SIGALTSTACK) && defined(HAVE_SIGACTION) +-static void* +-stack_overflow(void *min_sp, void *max_sp, size_t *depth) ++static Py_uintptr_t ++stack_overflow(Py_uintptr_t min_sp, Py_uintptr_t max_sp, size_t *depth) + { + /* allocate 4096 bytes on the stack at each call */ + unsigned char buffer[4096]; +- void *sp = &buffer; ++ Py_uintptr_t sp = (Py_uintptr_t)&buffer; + *depth += 1; + if (sp < min_sp || max_sp < sp) + return sp; +@@ -929,7 +929,8 @@ static PyObject * + faulthandler_stack_overflow(PyObject *self) + { + size_t depth, size; +- char *sp = (char *)&depth, *stop; ++ Py_uintptr_t sp = (Py_uintptr_t)&depth; ++ Py_uintptr_t stop; + + depth = 0; + stop = stack_overflow(sp - STACK_OVERFLOW_MAX_SIZE, + diff --git a/00203-disable-threading-test-koji.patch b/00203-disable-threading-test-koji.patch new file mode 100644 index 0000000..70010fb --- /dev/null +++ b/00203-disable-threading-test-koji.patch @@ -0,0 +1,11 @@ +diff -up Python-3.4.3/Lib/test/test_threading.py.mstuchli Python-3.4.3/Lib/test/test_threading.py +--- Python-3.4.3/Lib/test/test_threading.py.mstuchli 2015-03-10 10:00:42.917355215 +0100 ++++ Python-3.4.3/Lib/test/test_threading.py 2015-03-10 10:00:47.735373842 +0100 +@@ -988,6 +988,7 @@ class ThreadingExceptionTests(BaseTestCa + self.assertIn("ZeroDivisionError", err) + self.assertNotIn("Unhandled exception", err) + ++ @unittest.skip('Fails in Koji due to mishandled signals') + def test_print_exception_stderr_is_none_1(self): + script = r"""if True: + import sys diff --git a/00204-increase-dh-keys-size.patch b/00204-increase-dh-keys-size.patch new file mode 100644 index 0000000..e75d992 --- /dev/null +++ b/00204-increase-dh-keys-size.patch @@ -0,0 +1,49 @@ + +# HG changeset patch +# User Benjamin Peterson +# Date 1427947446 14400 +# Node ID 1ad7c0253abe1252128d61c3d0127d22144cb354 +# Parent 47451f6e7e7528a6647dbdc435e9a9f5c13c0080 +replace 512 bit dh key with a 2014 bit one (closes #23844) + +Patch by Cédric Krier. + +diff --git a/Lib/test/dh1024.pem b/Lib/test/dh1024.pem +new file mode 100644 +--- /dev/null ++++ b/Lib/test/dh1024.pem +@@ -0,0 +1,7 @@ ++-----BEGIN DH PARAMETERS----- ++MIGHAoGBAIbzw1s9CT8SV5yv6L7esdAdZYZjPi3qWFs61CYTFFQnf2s/d09NYaJt ++rrvJhIzWavqnue71qXCf83/J3nz3FEwUU/L0mGyheVbsSHiI64wUo3u50wK5Igo0 ++RNs/LD0irs7m0icZ//hijafTU+JOBiuA8zMI+oZfU7BGuc9XrUprAgEC ++-----END DH PARAMETERS----- ++ ++Generated with: openssl dhparam -out dh1024.pem 1024 +diff --git a/Lib/test/dh512.pem b/Lib/test/dh512.pem +deleted file mode 100644 +--- a/Lib/test/dh512.pem ++++ /dev/null +@@ -1,9 +0,0 @@ +------BEGIN DH PARAMETERS----- +-MEYCQQD1Kv884bEpQBgRjXyEpwpy1obEAxnIByl6ypUM2Zafq9AKUJsCRtMIPWak +-XUGfnHy9iUsiGSa6q6Jew1XpKgVfAgEC +------END DH PARAMETERS----- +- +-These are the 512 bit DH parameters from "Assigned Number for SKIP Protocols" +-(http://www.skip-vpn.org/spec/numbers.html). +-See there for how they were generated. +-Note that g is not a generator, but this is not a problem since p is a safe prime. +diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py +--- a/Lib/test/test_ssl.py ++++ b/Lib/test/test_ssl.py +@@ -64,7 +64,7 @@ BADKEY = data_file("badkey.pem") + NOKIACERT = data_file("nokia.pem") + NULLBYTECERT = data_file("nullbytecert.pem") + +-DHFILE = data_file("dh512.pem") ++DHFILE = data_file("dh1024.pem") + BYTES_DHFILE = os.fsencode(DHFILE) + + + diff --git a/python3.spec b/python3.spec index 91ac962..6c138ea 100644 --- a/python3.spec +++ b/python3.spec @@ -140,7 +140,7 @@ Summary: Version 3 of the Python programming language aka Python 3000 Name: python3 Version: %{pybasever}.1 -Release: 17%{?dist} +Release: 18%{?dist} License: Python Group: Development/Languages @@ -697,6 +697,16 @@ Patch196: 00196-test-gdb-match-addr-before-builtin.patch # document root. Patch197: 00197-fix-CVE-2014-4650.patch +# 00202 # +# Fixes undefined behaviour in faulthandler which caused test to hang on x86_64 +# http://bugs.python.org/issue23433 +Patch202: 00202-fix-undefined-behaviour-in-faulthandler.patch + +# test_threading fails in koji dues to it's handling of signals +Patch203: 00203-disable-threading-test-koji.patch + +# openssl requires DH keys to be > 768bits +Patch204: 00204-increase-dh-keys-size.patch # (New patches go here ^^^) # @@ -877,6 +887,11 @@ for f in md5module.c sha1module.c sha256module.c sha512module.c; do rm Modules/$f done +%if 0%{with_rewheel} +%global pip_version 7.0.3 +sed -r -i s/'_PIP_VERSION = "[0-9.]+"'/'_PIP_VERSION = "%{pip_version}"'/ Lib/ensurepip/__init__.py +%endif + # # Apply patches: # @@ -978,6 +993,10 @@ done %patch195 -p1 %patch196 -p1 %patch197 -p1 +%patch199 -p1 +%patch202 -p1 +%patch203 -p1 +%patch204 -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. @@ -1095,7 +1114,8 @@ BuildPython debug \ %else "--with-pydebug --with-count-allocs --with-call-profile --without-ensurepip" \ %endif - false + false \ + -O0 %endif # with_debug_build BuildPython optimized \ @@ -1168,7 +1188,8 @@ make install DESTDIR=%{buildroot} INSTALL="install -p" # Install the "debug" build first, so that we can move some files aside %if 0%{?with_debug_build} InstallPython debug \ - %{py_INSTSONAME_debug} + %{py_INSTSONAME_debug} \ + -O0 %endif # with_debug_build # Now the optimized build: @@ -1867,6 +1888,14 @@ rm -fr %{buildroot} # ====================================================== %changelog +* Thu Jul 09 2015 Thomas Spura - 3.4.1-18 +- sync with master branch to backport some fixes +- Use 1024bit DH key in test_ssl (Matej Stuchlik) +- Use -O0 when compiling -debug build (Matej Stuchlik) +- Update pip version variable to the version we actually ship (Matej Stuchlik) +- Fixed undefined behaviour in faulthandler which caused test to hang on x86_64 + (http://bugs.python.org/issue23433) (Matej Stuchlik) + * Mon Jun 29 2015 Thomas Spura - 3.4.1-17 - python3-devel: Require python-macros for version independant macros such as python_provide. See fpc#281 and fpc#534.