diff --git a/00102-lib64.patch b/00102-lib64.patch index be67b9b..35a442e 100644 --- a/00102-lib64.patch +++ b/00102-lib64.patch @@ -1,6 +1,8 @@ ---- Python-3.4.0b1/Lib/distutils/command/install.py.lib64 2013-11-24 21:36:54.000000000 +0100 -+++ Python-3.4.0b1/Lib/distutils/command/install.py 2013-11-27 11:10:43.821150774 +0100 -@@ -45,14 +45,14 @@ else: +diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py +index 67db007..b16fe0f 100644 +--- a/Lib/distutils/command/install.py ++++ b/Lib/distutils/command/install.py +@@ -30,14 +30,14 @@ WINDOWS_SCHEME = { INSTALL_SCHEMES = { 'unix_prefix': { 'purelib': '$base/lib/python$py_version_short/site-packages', @@ -17,9 +19,11 @@ 'headers': '$base/include/python/$dist_name', 'scripts': '$base/bin', 'data' : '$base', ---- Python-3.4.0b1/Lib/distutils/sysconfig.py.lib64 2013-11-24 21:36:54.000000000 +0100 -+++ Python-3.4.0b1/Lib/distutils/sysconfig.py 2013-11-27 11:10:43.821150774 +0100 -@@ -141,8 +141,12 @@ +diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py +index e5c493d..a4846eb 100644 +--- a/Lib/distutils/sysconfig.py ++++ b/Lib/distutils/sysconfig.py +@@ -132,8 +132,12 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): prefix = plat_specific and EXEC_PREFIX or PREFIX if os.name == "posix": @@ -33,9 +37,11 @@ if standard_lib: return libpython else: ---- Python-3.4.0b1/Lib/site.py.lib64 2013-11-24 21:36:54.000000000 +0100 -+++ Python-3.4.0b1/Lib/site.py 2013-11-27 11:10:43.822150773 +0100 -@@ -304,11 +304,15 @@ +diff --git a/Lib/site.py b/Lib/site.py +index 3f78ef5..ad1033e 100644 +--- a/Lib/site.py ++++ b/Lib/site.py +@@ -303,11 +303,15 @@ def getsitepackages(prefixes=None): seen.add(prefix) if os.sep == '/': @@ -51,9 +57,11 @@ sitepackages.append(os.path.join(prefix, "lib", "site-packages")) if sys.platform == "darwin": # for framework builds *only* we add the standard Apple ---- Python-3.4.0b1/Lib/sysconfig.py.lib64 2013-11-24 21:36:54.000000000 +0100 -+++ Python-3.4.0b1/Lib/sysconfig.py 2013-11-27 11:10:43.822150773 +0100 -@@ -20,10 +20,10 @@ +diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py +index 61451b2..b021cce 100644 +--- a/Lib/sysconfig.py ++++ b/Lib/sysconfig.py +@@ -20,10 +20,10 @@ __all__ = [ _INSTALL_SCHEMES = { 'posix_prefix': { @@ -67,7 +75,7 @@ 'include': '{installed_base}/include/python{py_version_short}{abiflags}', 'platinclude': -@@ -61,10 +61,10 @@ +@@ -61,10 +61,10 @@ _INSTALL_SCHEMES = { 'data': '{userbase}', }, 'posix_user': { @@ -81,9 +89,11 @@ 'include': '{userbase}/include/python{py_version_short}', 'scripts': '{userbase}/bin', 'data': '{userbase}', ---- Python-3.4.0b1/Lib/test/test_site.py.lib64 2013-11-24 21:36:55.000000000 +0100 -+++ Python-3.4.0b1/Lib/test/test_site.py 2013-11-27 11:10:43.822150773 +0100 -@@ -244,8 +244,8 @@ +diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py +index da20a3d..f38ce06 100644 +--- a/Lib/test/test_site.py ++++ b/Lib/test/test_site.py +@@ -248,8 +248,8 @@ class HelperFunctionsTests(unittest.TestCase): self.assertEqual(dirs[1], wanted) elif os.sep == '/': # OS X non-framwework builds, Linux, FreeBSD, etc @@ -94,9 +104,11 @@ 'site-packages') self.assertEqual(dirs[0], wanted) else: ---- Python-3.4.0b1/Makefile.pre.in.lib64 2013-11-27 11:10:43.814150786 +0100 -+++ Python-3.4.0b1/Makefile.pre.in 2013-11-27 11:10:43.823150771 +0100 -@@ -115,7 +115,7 @@ +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 58d4258..e8364f0 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -125,7 +125,7 @@ LIBDIR= @libdir@ MANDIR= @mandir@ INCLUDEDIR= @includedir@ CONFINCLUDEDIR= $(exec_prefix)/include @@ -105,20 +117,11 @@ ABIFLAGS= @ABIFLAGS@ # Detailed destination directories ---- Python-3.4.0b1/Modules/getpath.c.lib64 2013-11-24 21:36:56.000000000 +0100 -+++ Python-3.4.0b1/Modules/getpath.c 2013-11-27 11:17:33.619449704 +0100 -@@ -122,8 +122,8 @@ - #endif - - #ifndef PYTHONPATH --#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \ -- EXEC_PREFIX "/lib/python" VERSION "/lib-dynload" -+#define PYTHONPATH PREFIX "/lib64/python" VERSION ":" \ -+ EXEC_PREFIX "/lib64/python" VERSION "/lib-dynload" - #endif - - #ifndef LANDMARK -@@ -498,7 +498,7 @@ +diff --git a/Modules/getpath.c b/Modules/getpath.c +index 18deb60..27ca814 100644 +--- a/Modules/getpath.c ++++ b/Modules/getpath.c +@@ -494,7 +494,7 @@ calculate_path(void) _pythonpath = Py_DecodeLocale(PYTHONPATH, NULL); _prefix = Py_DecodeLocale(PREFIX, NULL); _exec_prefix = Py_DecodeLocale(EXEC_PREFIX, NULL); @@ -127,7 +130,7 @@ if (!_pythonpath || !_prefix || !_exec_prefix || !lib_python) { Py_FatalError( -@@ -687,7 +687,7 @@ +@@ -683,7 +683,7 @@ calculate_path(void) } else wcsncpy(zip_path, _prefix, MAXPATHLEN); @@ -136,7 +139,7 @@ bufsz = wcslen(zip_path); /* Replace "00" with version */ zip_path[bufsz - 6] = VERSION[0]; zip_path[bufsz - 5] = VERSION[2]; -@@ -699,7 +699,7 @@ +@@ -695,7 +695,7 @@ calculate_path(void) fprintf(stderr, "Could not find platform dependent libraries \n"); wcsncpy(exec_prefix, _exec_prefix, MAXPATHLEN); @@ -145,9 +148,11 @@ } /* If we found EXEC_PREFIX do *not* reduce it! (Yet.) */ ---- Python-3.4.0b1/setup.py.lib64 2013-11-24 21:36:56.000000000 +0100 -+++ Python-3.4.0b1/setup.py 2013-11-27 11:10:43.824150769 +0100 -@@ -441,7 +441,7 @@ +diff --git a/setup.py b/setup.py +index be33c46..f2779cc 100644 +--- a/setup.py ++++ b/setup.py +@@ -492,7 +492,7 @@ class PyBuildExt(build_ext): # directories (i.e. '.' and 'Include') must be first. See issue # 10520. if not cross_compiling: @@ -156,7 +161,7 @@ add_dir_to_list(self.compiler.include_dirs, '/usr/local/include') # only change this for cross builds for 3.3, issues on Mageia if cross_compiling: -@@ -718,11 +718,11 @@ +@@ -780,11 +780,11 @@ class PyBuildExt(build_ext): elif curses_library: readline_libs.append(curses_library) elif self.compiler.find_library_file(lib_dirs + @@ -170,7 +175,7 @@ extra_link_args=readline_extra_link_args, libraries=readline_libs) ) else: -@@ -759,8 +759,8 @@ +@@ -821,8 +821,8 @@ class PyBuildExt(build_ext): if krb5_h: ssl_incs += krb5_h ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs, diff --git a/00131-disable-tests-in-test_io.patch b/00131-disable-tests-in-test_io.patch deleted file mode 100644 index d81a2d0..0000000 --- a/00131-disable-tests-in-test_io.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -up Python-2.7.2/Lib/test/test_io.py.disable-tests-in-test_io Python-2.7.2/Lib/test/test_io.py ---- Python-2.7.2/Lib/test/test_io.py.disable-tests-in-test_io 2011-09-01 14:18:45.963304089 -0400 -+++ Python-2.7.2/Lib/test/test_io.py 2011-09-01 15:08:53.796098413 -0400 -@@ -2669,6 +2669,7 @@ class SignalsTest(unittest.TestCase): - self.check_interrupted_read_retry(lambda x: x, - mode="r") - -+ @unittest.skip('rhbz#732998') - @unittest.skipUnless(threading, 'Threading required for this test.') - def check_interrupted_write_retry(self, item, **fdopen_kwargs): - """Check that a buffered write, when it gets interrupted (either diff --git a/00132-add-rpmbuild-hooks-to-unittest.patch b/00132-add-rpmbuild-hooks-to-unittest.patch index 041abce..77dc6ec 100644 --- a/00132-add-rpmbuild-hooks-to-unittest.patch +++ b/00132-add-rpmbuild-hooks-to-unittest.patch @@ -9,7 +9,7 @@ diff -up Python-3.2.2/Lib/unittest/case.py.add-rpmbuild-hooks-to-unittest Python import logging import pprint import re -@@ -101,5 +102,42 @@ def expectedFailure(func): +@@ -101,5 +102,21 @@ def expectedFailure(func): raise self.test_case.failureException(msg) +# Non-standard/downstream-only hooks for handling issues with specific test @@ -27,27 +27,6 @@ diff -up Python-3.2.2/Lib/unittest/case.py.add-rpmbuild-hooks-to-unittest Python + return skip(reason) + else: + return _id -+ -+def _expectedFailureInRpmBuild(func): -+ """ -+ Non-standard/downstream-only decorator for marking a specific unit test -+ as expected to fail within the %check of an rpmbuild. -+ -+ Specifically, this takes effect when WITHIN_PYTHON_RPM_BUILD is set within -+ the environment, and has no effect otherwise. -+ """ -+ @functools.wraps(func) -+ def wrapper(*args, **kwargs): -+ if 'WITHIN_PYTHON_RPM_BUILD' in os.environ: -+ try: -+ func(*args, **kwargs) -+ except Exception: -+ raise _ExpectedFailure(sys.exc_info()) -+ raise _UnexpectedSuccess -+ else: -+ # Call directly: -+ func(*args, **kwargs) -+ return wrapper + class _AssertRaisesBaseContext(_BaseTestCaseContext): @@ -61,7 +40,7 @@ diff -up Python-3.2.2/Lib/unittest/__init__.py.add-rpmbuild-hooks-to-unittest Py from .case import (TestCase, FunctionTestCase, SkipTest, skip, skipIf, - skipUnless, expectedFailure) + skipUnless, expectedFailure, -+ _skipInRpmBuild, _expectedFailureInRpmBuild) ++ _skipInRpmBuild) from .suite import BaseTestSuite, TestSuite from .loader import (TestLoader, defaultTestLoader, makeSuite, getTestCaseNames, findTestCases) diff --git a/00139-skip-test_float-known-failure-on-arm.patch b/00139-skip-test_float-known-failure-on-arm.patch deleted file mode 100644 index 9d0bfad..0000000 --- a/00139-skip-test_float-known-failure-on-arm.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -up Python-2.7.2/Lib/test/test_float.py.skip-test_float-known-failure-on-arm Python-2.7.2/Lib/test/test_float.py ---- Python-2.7.2/Lib/test/test_float.py.skip-test_float-known-failure-on-arm 2011-09-08 19:34:09.000986128 -0400 -+++ Python-2.7.2/Lib/test/test_float.py 2011-09-08 19:34:57.969982779 -0400 -@@ -1072,6 +1072,7 @@ class HexFloatTestCase(unittest.TestCase - self.identical(got, expected) - - -+ @unittest.skip('Known failure on ARM: http://bugs.python.org/issue8265') - def test_from_hex(self): - MIN = self.MIN; - MAX = self.MAX; diff --git a/00146-hashlib-fips.patch b/00146-hashlib-fips.patch index 3d92c34..e0cdce0 100644 --- a/00146-hashlib-fips.patch +++ b/00146-hashlib-fips.patch @@ -1,6 +1,8 @@ ---- Python-3.4.0b1/Lib/hashlib.py.hashlib-fips 2013-11-24 21:36:54.000000000 +0100 -+++ Python-3.4.0b1/Lib/hashlib.py 2013-11-27 11:45:17.073617547 +0100 -@@ -23,6 +23,16 @@ +diff --git a/Lib/hashlib.py b/Lib/hashlib.py +index 316cece..b7ad879 100644 +--- a/Lib/hashlib.py ++++ b/Lib/hashlib.py +@@ -23,6 +23,16 @@ the zlib module. Choose your hash function wisely. Some have known collision weaknesses. sha384 and sha512 will be slow on 32 bit platforms. @@ -17,7 +19,7 @@ Hash objects have these methods: - update(arg): Update the hash object with the bytes in arg. Repeated calls are equivalent to a single call with the concatenation of all -@@ -63,6 +73,19 @@ +@@ -62,6 +72,18 @@ algorithms_available = set(__always_supported) __all__ = __always_supported + ('new', 'algorithms_guaranteed', 'algorithms_available', 'pbkdf2_hmac') @@ -33,11 +35,10 @@ + kwargs.pop('usedforsecurity') + return func(*args, **kwargs) + return inner -+ __builtin_constructor_cache = {} -@@ -108,34 +131,41 @@ +@@ -100,31 +122,39 @@ def __get_openssl_constructor(name): f = getattr(_hashlib, 'openssl_' + name) # Allow the C module to raise ValueError. The function will be # defined but the hash not actually available thanks to OpenSSL. @@ -88,11 +89,8 @@ + # because we want to make sure that Fedora uses everything from OpenSSL return __get_builtin_constructor(name)(data) -- - try: - import _hashlib - new = __hash_new -@@ -215,7 +245,10 @@ + +@@ -207,7 +237,10 @@ for __func_name in __always_supported: # try them all, some may not work due to the OpenSSL # version not supporting that algorithm. try: @@ -104,14 +102,17 @@ except ValueError: import logging logging.exception('code for hash %s was not found.', __func_name) -@@ -223,3 +256,4 @@ +@@ -215,3 +248,4 @@ for __func_name in __always_supported: # Cleanup locals() del __always_supported, __func_name, __get_hash del __py_new, __hash_new, __get_openssl_constructor +del __ignore_usedforsecurity ---- Python-3.4.0b1/Lib/test/test_hashlib.py 2013-11-27 11:55:42.769601363 +0100 -+++ Python-3.4.0b1/Lib/test/test_hashlib.py 2013-11-28 09:33:03.929008508 +0100 -@@ -24,7 +24,22 @@ +\ No newline at end of file +diff --git a/Lib/test/test_hashlib.py b/Lib/test/test_hashlib.py +index c9b113e..60e2392 100644 +--- a/Lib/test/test_hashlib.py ++++ b/Lib/test/test_hashlib.py +@@ -24,7 +24,22 @@ from test.support import _4G, bigmemtest, import_fresh_module COMPILED_WITH_PYDEBUG = hasattr(sys, 'gettotalrefcount') c_hashlib = import_fresh_module('hashlib', fresh=['_hashlib']) @@ -135,7 +136,7 @@ def hexstr(s): assert isinstance(s, bytes), repr(s) -@@ -34,6 +49,16 @@ +@@ -34,6 +49,16 @@ def hexstr(s): r += h[(i >> 4) & 0xF] + h[i & 0xF] return r @@ -152,7 +153,7 @@ class HashLibTestCase(unittest.TestCase): supported_hash_names = ( 'md5', 'MD5', 'sha1', 'SHA1', -@@ -66,11 +91,11 @@ +@@ -63,11 +88,11 @@ class HashLibTestCase(unittest.TestCase): # For each algorithm, test the direct constructor and the use # of hashlib.new given the algorithm name. for algorithm, constructors in self.constructors_to_test.items(): @@ -167,7 +168,7 @@ constructors.add(_test_algorithm_via_hashlib_new) _hashlib = self._conditional_import_module('_hashlib') -@@ -82,26 +107,12 @@ +@@ -79,27 +104,12 @@ class HashLibTestCase(unittest.TestCase): for algorithm, constructors in self.constructors_to_test.items(): constructor = getattr(_hashlib, 'openssl_'+algorithm, None) if constructor: @@ -192,10 +193,11 @@ - if _sha512: - add_builtin_constructor('sha384') - add_builtin_constructor('sha512') - +- super(HashLibTestCase, self).__init__(*args, **kwargs) -@@ -157,9 +169,6 @@ + @property +@@ -148,9 +158,6 @@ class HashLibTestCase(unittest.TestCase): else: del sys.modules['_md5'] self.assertRaises(TypeError, get_builtin_constructor, 3) @@ -205,7 +207,7 @@ def test_hexdigest(self): for cons in self.hash_constructors: -@@ -558,6 +567,65 @@ +@@ -433,6 +440,64 @@ class HashLibTestCase(unittest.TestCase): self.assertEqual(expected_hash, hasher.hexdigest()) @@ -267,21 +269,23 @@ + + m = _hashlib.new('md5', b'abc\n', usedforsecurity=False) + self.assertEquals(m.hexdigest(), "0bee89b07a248e27c83fc3d5951213c1") -+ class KDFTests(unittest.TestCase): -@@ -639,6 +707,7 @@ - with self.assertRaisesRegex(ValueError, 'unsupported hash type'): - pbkdf2('unknown', b'pass', b'salt', 1) - +@@ -516,7 +581,7 @@ class KDFTests(unittest.TestCase): + out = pbkdf2(hash_name='sha1', password=b'password', salt=b'salt', + iterations=1, dklen=None) + self.assertEqual(out, self.pbkdf2_results['sha1'][0][0]) +- + @unittest.skip('skipped on Fedora, as we always use OpenSSL pbkdf2_hmac') def test_pbkdf2_hmac_py(self): self._test_pbkdf2_hmac(py_hashlib.pbkdf2_hmac) ---- Python-3.4.0b1/Modules/_hashopenssl.c.hashlib-fips 2013-11-24 21:36:56.000000000 +0100 -+++ Python-3.4.0b1/Modules/_hashopenssl.c 2013-11-27 12:01:57.443537463 +0100 -@@ -19,6 +19,8 @@ +diff --git a/Modules/_hashopenssl.c b/Modules/_hashopenssl.c +index 44765ac..b8cf490 100644 +--- a/Modules/_hashopenssl.c ++++ b/Modules/_hashopenssl.c +@@ -20,6 +20,8 @@ /* EVP is the preferred interface to hashing in OpenSSL */ @@ -290,7 +294,7 @@ #include #include /* We use the object interface to discover what hashes OpenSSL supports. */ -@@ -48,11 +50,19 @@ +@@ -45,11 +47,19 @@ typedef struct { static PyTypeObject EVPtype; @@ -314,7 +318,7 @@ DEFINE_CONSTS_FOR_NEW(md5) DEFINE_CONSTS_FOR_NEW(sha1) -@@ -97,6 +107,48 @@ +@@ -92,6 +102,48 @@ EVP_hash(EVPobject *self, const void *vp, Py_ssize_t len) } } @@ -363,7 +367,7 @@ /* Internal methods for a hash object */ static void -@@ -281,15 +333,16 @@ +@@ -259,15 +311,16 @@ EVP_repr(EVPobject *self) static int EVP_tp_init(EVPobject *self, PyObject *args, PyObject *kwds) { @@ -383,7 +387,7 @@ return -1; } -@@ -310,7 +363,12 @@ +@@ -288,7 +341,12 @@ EVP_tp_init(EVPobject *self, PyObject *args, PyObject *kwds) PyBuffer_Release(&view); return -1; } @@ -397,7 +401,7 @@ self->name = name_obj; Py_INCREF(self->name); -@@ -394,7 +452,8 @@ +@@ -372,7 +430,8 @@ static PyTypeObject EVPtype = { static PyObject * EVPnew(PyObject *name_obj, const EVP_MD *digest, const EVP_MD_CTX *initial_ctx, @@ -407,7 +411,7 @@ { EVPobject *self; -@@ -409,7 +468,12 @@ +@@ -387,7 +446,12 @@ EVPnew(PyObject *name_obj, if (initial_ctx) { EVP_MD_CTX_copy(&self->ctx, initial_ctx); } else { @@ -421,7 +425,7 @@ } if (cp && len) { -@@ -433,21 +497,29 @@ +@@ -411,21 +475,29 @@ PyDoc_STRVAR(EVP_new__doc__, An optional string argument may be provided and will be\n\ automatically hashed.\n\ \n\ @@ -455,17 +459,17 @@ return NULL; } -@@ -461,7 +533,8 @@ +@@ -439,7 +511,8 @@ EVP_new(PyObject *self, PyObject *args, PyObject *kwdict) digest = EVP_get_digestbyname(name); - ret_obj = EVPnew(name_obj, digest, NULL, (unsigned char*)view.buf, view.len); + ret_obj = EVPnew(name_obj, digest, NULL, (unsigned char*)view.buf, view.len, -+ usedforsecurity); ++ usedforsecurity); if (data_obj) PyBuffer_Release(&view); -@@ -742,57 +815,115 @@ +@@ -722,57 +795,114 @@ generate_hash_name_list(void) /* @@ -508,8 +512,8 @@ + return implement_specific_EVP_new(self, args, kwdict, \ + "|Oi:" #NAME, \ + &cached_info_ ## NAME ); \ -+ } -+ + } + +static PyObject * +implement_specific_EVP_new(PyObject *self, PyObject *args, PyObject *kwdict, + const char *format, @@ -554,8 +558,8 @@ + } else { + PyErr_SetString(PyExc_ValueError, "Error initializing hash"); + } - } - ++ } ++ + if (data_obj) + PyBuffer_Release(&view); + @@ -614,11 +618,10 @@ + } + } +} -+ GEN_CONSTRUCTOR(md5) GEN_CONSTRUCTOR(sha1) -@@ -843,13 +974,10 @@ +@@ -819,13 +949,10 @@ PyInit__hashlib(void) { PyObject *m, *openssl_md_meth_names; diff --git a/00150-disable-rAssertAlmostEqual-cmath-on-ppc.patch b/00150-disable-rAssertAlmostEqual-cmath-on-ppc.patch deleted file mode 100644 index 73b6356..0000000 --- a/00150-disable-rAssertAlmostEqual-cmath-on-ppc.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -up Python-3.2.2/Lib/test/test_cmath.py.ppc Python-3.2.2/Lib/test/test_cmath.py ---- Python-3.2.2/Lib/test/test_cmath.py.ppc 2011-12-07 23:43:55.000000000 +0100 -+++ Python-3.2.2/Lib/test/test_cmath.py 2011-12-07 23:49:44.000000000 +0100 -@@ -95,6 +95,7 @@ class CMathTests(unittest.TestCase): - self.assertFloatIdentical(x.real, y.real) - self.assertFloatIdentical(x.imag, y.imag) - -+ @unittest.skip('Known failure on PPC: glibc bug https://bugzilla.redhat.com/show_bug.cgi?id=750811') - def rAssertAlmostEqual(self, a, b, rel_err = 2e-15, abs_err = 5e-323, - msg=None): - """Fail if the two floating-point numbers are not almost equal. diff --git a/00164-disable-interrupted_write-tests-on-ppc.patch b/00164-disable-interrupted_write-tests-on-ppc.patch deleted file mode 100644 index 5641b4b..0000000 --- a/00164-disable-interrupted_write-tests-on-ppc.patch +++ /dev/null @@ -1,52 +0,0 @@ -diff -up Python-3.4.2/Lib/test/test_exceptions.py.ppc Python-3.4.2/Lib/test/test_exceptions.py ---- Python-3.4.2/Lib/test/test_exceptions.py.ppc 2014-10-08 04:18:13.000000000 -0400 -+++ Python-3.4.2/Lib/test/test_exceptions.py 2015-01-12 05:56:15.922833055 -0500 -@@ -429,6 +429,7 @@ class ExceptionTests(unittest.TestCase): - self.assertIsNone(e.__context__) - self.assertIsNone(e.__cause__) - -+ @unittest.skip('rhbz#846849') - def testChainingDescriptors(self): - try: - raise Exception() -diff -up Python-3.4.2/Lib/test/test_io.py.ppc Python-3.4.2/Lib/test/test_io.py ---- Python-3.4.2/Lib/test/test_io.py.ppc 2015-01-12 05:56:15.922833055 -0500 -+++ Python-3.4.2/Lib/test/test_io.py 2015-01-12 05:58:23.482833055 -0500 -@@ -3296,12 +3296,15 @@ class SignalsTest(unittest.TestCase): - if e.errno != errno.EBADF: - raise - -+ @unittest.skip('rhbz#846849') - def test_interrupted_write_unbuffered(self): - self.check_interrupted_write(b"xy", b"xy", mode="wb", buffering=0) - -+ @unittest.skip('rhbz#846849') - def test_interrupted_write_buffered(self): - self.check_interrupted_write(b"xy", b"xy", mode="wb") - -+ @unittest.skip('rhbz#846849') - # Issue #22331: The test hangs on FreeBSD 7.2 - @support.requires_freebsd_version(8) - def test_interrupted_write_text(self): -diff -up Python-3.4.2/Lib/test/test_raise.py.ppc Python-3.4.2/Lib/test/test_raise.py ---- Python-3.4.2/Lib/test/test_raise.py.ppc 2014-10-08 04:18:14.000000000 -0400 -+++ Python-3.4.2/Lib/test/test_raise.py 2015-01-12 05:56:15.922833055 -0500 -@@ -151,6 +151,7 @@ class TestRaise(unittest.TestCase): - - class TestCause(unittest.TestCase): - -+ @unittest.skip('rhbz#846849') - def testCauseSyntax(self): - try: - try: -diff -up Python-3.4.2/Lib/test/test_traceback.py.ppc Python-3.4.2/Lib/test/test_traceback.py ---- Python-3.4.2/Lib/test/test_traceback.py.ppc 2014-10-08 04:18:14.000000000 -0400 -+++ Python-3.4.2/Lib/test/test_traceback.py 2015-01-12 05:56:15.922833055 -0500 -@@ -314,6 +314,7 @@ class BaseExceptionReportingTests: - self.check_zero_div(blocks[0]) - self.assertIn('inner_raise() # Marker', blocks[2]) - -+ @unittest.skip('rhbz#846849') - def test_context_suppression(self): - try: - try: diff --git a/00170-gc-assertions.patch b/00170-gc-assertions.patch index 1144cc2..9e34c21 100644 --- a/00170-gc-assertions.patch +++ b/00170-gc-assertions.patch @@ -96,13 +96,14 @@ Index: Lib/test/test_gc.py =================================================================== --- Lib/test/test_gc.py (revision 87911) +++ Lib/test/test_gc.py (working copy) -@@ -1,6 +1,6 @@ +@@ -1,7 +1,7 @@ import unittest from test.support import (verbose, refcount_test, run_unittest, -- strip_python_stderr, cpython_only) -+ strip_python_stderr, cpython_only, import_module) - from test.script_helper import assert_python_ok, make_script, temp_dir - + strip_python_stderr, cpython_only, start_threads, +- temp_dir) ++ temp_dir, import_module) + from test.support.script_helper import assert_python_ok, make_script + import sys @@ -512,6 +512,48 @@ self.assertEqual(len(gc.garbage), 0) @@ -316,7 +317,7 @@ diff -up Lib/test/test_gc.py.old Lib/test/test_gc.py --- Lib/test/test_gc.py.old 2014-12-10 12:50:58.252121318 +0100 +++ Lib/test/test_gc.py 2014-12-10 12:51:08.594266653 +0100 @@ -4,6 +4,7 @@ from test.support import (verbose, refco - from test.script_helper import assert_python_ok, make_script, temp_dir + from test.support.script_helper import assert_python_ok, make_script import sys +import sysconfig diff --git a/00173-workaround-ENOPROTOOPT-in-bind_port.patch b/00173-workaround-ENOPROTOOPT-in-bind_port.patch deleted file mode 100644 index 8d8b0bc..0000000 --- a/00173-workaround-ENOPROTOOPT-in-bind_port.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- Python-3.4.0b1/Lib/test/support/__init__.py.orig 2013-11-27 12:14:26.507216624 +0100 -+++ Python-3.4.0b1/Lib/test/support/__init__.py 2013-11-27 12:17:01.490805587 +0100 -@@ -593,7 +593,8 @@ - if sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR) == 1: - raise TestFailed("tests should never set the SO_REUSEADDR " \ - "socket option on TCP/IP sockets!") -- if hasattr(socket, 'SO_REUSEPORT'): -+ if hasattr(socket, 'SO_REUSEPORT') \ -+ and 'WITHIN_PYTHON_RPM_BUILD' not in os.environ: # rhbz#913732 - try: - if sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT) == 1: - raise TestFailed("tests should never set the SO_REUSEPORT " \ diff --git a/00179-dont-raise-error-on-gdb-corrupted-frames-in-backtrace.patch b/00179-dont-raise-error-on-gdb-corrupted-frames-in-backtrace.patch deleted file mode 100644 index 2112730..0000000 --- a/00179-dont-raise-error-on-gdb-corrupted-frames-in-backtrace.patch +++ /dev/null @@ -1,48 +0,0 @@ ---- a/Tools/gdb/libpython.py 2013-04-06 03:41:58.000000000 -0400 -+++ b/Tools/gdb/libpython.py 2013-04-24 03:51:04.720540343 -0400 -@@ -274,6 +274,9 @@ - self.tp_name = tp_name - self.address = address - -+ def __len__(self): -+ return len(repr(self)) -+ - def __repr__(self): - # For the NULL pointer, we have no way of knowing a type, so - # special-case it as per -@@ -881,6 +884,8 @@ - filename = self.filename() - try: - f = open(os_fsencode(filename), 'r') -+ except TypeError: # filename is FakeRepr -+ return None - except IOError: - return None - with f: -@@ -1523,9 +1528,12 @@ - - def print_summary(self): - if self.is_evalframeex(): -- pyop = self.get_pyop() -- if pyop: -+ try: -+ pyop = self.get_pyop() - line = pyop.get_truncated_repr(MAX_OUTPUT_LEN) -+ except: -+ pyop = None -+ if pyop: - write_unicode(sys.stdout, '#%i %s\n' % (self.get_index(), line)) - if not pyop.is_optimized_out(): - line = pyop.current_line() -@@ -1542,7 +1550,10 @@ - - def print_traceback(self): - if self.is_evalframeex(): -- pyop = self.get_pyop() -+ try: -+ pyop = self.get_pyop() -+ except: -+ pyop = None - if pyop: - pyop.print_traceback() - if not pyop.is_optimized_out(): diff --git a/00200-gettext-plural-fix.patch b/00200-gettext-plural-fix.patch deleted file mode 100644 index 93b817b..0000000 --- a/00200-gettext-plural-fix.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up Python-2.5.1/Lib/gettext.py.plural Python-2.5.1/Lib/gettext.py ---- Python-2.5.1/Lib/gettext.py.plural 2007-09-10 11:38:57.000000000 -0400 -+++ Python-2.5.1/Lib/gettext.py 2007-09-10 11:39:00.000000000 -0400 -@@ -299,6 +299,8 @@ class GNUTranslations(NullTranslations): - item = b_item.decode().strip() - if not item: - continue -+ if item.startswith("#"): -+ continue - if ':' in item: - k, v = item.split(':', 1) - k = k.strip().lower() diff --git a/00201-fix-memory-leak-in-gdbm.patch b/00201-fix-memory-leak-in-gdbm.patch deleted file mode 100644 index 48839d5..0000000 --- a/00201-fix-memory-leak-in-gdbm.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- Modules/_gdbmmodule.c.orig 2013-07-08 14:54:27.803790151 +0200 -+++ Modules/_gdbmmodule.c 2013-07-08 14:55:25.006672443 +0200 -@@ -106,6 +106,7 @@ - if(okey.dsize) free(okey.dptr); - okey=key; - } -+ if(okey.dsize) free(okey.dptr); - dp->di_size = size; - } - return dp->di_size; diff --git a/00203-disable-threading-test-koji.patch b/00203-disable-threading-test-koji.patch deleted file mode 100644 index 70010fb..0000000 --- a/00203-disable-threading-test-koji.patch +++ /dev/null @@ -1,11 +0,0 @@ -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/00207-math-once.patch b/00207-math-once.patch deleted file mode 100644 index 572ed59..0000000 --- a/00207-math-once.patch +++ /dev/null @@ -1,56 +0,0 @@ ---- Python-3.5.1/Makefile.pre.in.kh 2015-12-17 05:51:08.466546157 -0500 -+++ Python-3.5.1/Makefile.pre.in 2015-12-17 05:52:26.207761635 -0500 -@@ -587,11 +587,15 @@ pybuilddir.txt: $(BUILDPYTHON) - exit 1 ; \ - fi - -+# This is shared by the math and cmath modules -+Modules/_math.o: Modules/_math.c Modules/_math.h -+ $(CC) -c $(CCSHARED) $(PY_CORE_CFLAGS) -o $@ $< -+ - # Build the shared modules - # Under GNU make, MAKEFLAGS are sorted and normalized; the 's' for - # -s, --silent or --quiet is always the first char. - # Under BSD make, MAKEFLAGS might be " -s -v x=y". --sharedmods: $(BUILDPYTHON) pybuilddir.txt -+sharedmods: $(BUILDPYTHON) pybuilddir.txt Modules/_math.o - @case "$$MAKEFLAGS" in \ - *\ -s*|s*) quiet="-q";; \ - *) quiet="";; \ ---- Python-3.5.1/Misc/NEWS.kh 2015-12-17 05:53:40.898929946 -0500 -+++ Python-3.5.1/Misc/NEWS 2015-12-17 05:54:28.599676136 -0500 -@@ -464,6 +464,10 @@ Build - - Issue #24986: It is now possible to build Python on Windows without errors - when external libraries are not available. - -+- Issue #24421: Compile Modules/_math.c once, before building extensions. -+ Previously it could fail to compile properly if the math and cmath builds -+ were concurrent. -+ - Windows - ------- - ---- Python-3.5.1/setup.py.kh 2015-12-17 06:38:30.950955607 -0500 -+++ Python-3.5.1/setup.py 2015-12-17 06:42:32.074722493 -0500 -@@ -582,13 +582,17 @@ class PyBuildExt(build_ext): - - # array objects - exts.append( Extension('array', ['arraymodule.c']) ) -+ -+ shared_math = 'Modules/_math.o' - # complex math library functions -- exts.append( Extension('cmath', ['cmathmodule.c', '_math.c'], -- depends=['_math.h'], -+ exts.append( Extension('cmath', ['cmathmodule.c'], -+ extra_objects=[shared_math], -+ depends=['_math.h', shared_math], - libraries=math_libs) ) - # math library functions, e.g. sin() -- exts.append( Extension('math', ['mathmodule.c', '_math.c'], -- depends=['_math.h'], -+ exts.append( Extension('math', ['mathmodule.c'], -+ extra_objects=[shared_math], -+ depends=['_math.h', shared_math], - libraries=math_libs) ) - - # time libraries: librt may be needed for clock_gettime() diff --git a/00208-disable-test_with_pip-on-ppc.patch b/00208-disable-test_with_pip-on-ppc.patch deleted file mode 100644 index 00b98ae..0000000 --- a/00208-disable-test_with_pip-on-ppc.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -up Python-3.5.1/Lib/test/test_venv.py.1292467 Python-3.5.1/Lib/test/test_venv.py ---- Python-3.5.1/Lib/test/test_venv.py.1292467 2015-12-21 13:37:44.740190595 +0100 -+++ Python-3.5.1/Lib/test/test_venv.py 2015-12-21 13:40:25.707911828 +0100 -@@ -319,6 +319,7 @@ class EnsurePipTest(BaseTest): - - # Requesting pip fails without SSL (http://bugs.python.org/issue19744) - @unittest.skipIf(ssl is None, ensurepip._MISSING_SSL_MESSAGE) -+ @unittest.skip('rhbz#1292467') - def test_with_pip(self): - rmtree(self.env_dir) - with EnvironmentVarGuard() as envvars: diff --git a/00237-Raise-an-error-when-STARTTLS-fails.patch b/00237-Raise-an-error-when-STARTTLS-fails.patch deleted file mode 100644 index 9083e61..0000000 --- a/00237-Raise-an-error-when-STARTTLS-fails.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 761db274ca898f8a92348ed5979d3d3c1b0d634a Mon Sep 17 00:00:00 2001 -From: Tomas Orsava -Date: Fri, 17 Jun 2016 16:08:11 +0200 -Subject: [PATCH] Raise an error when STARTTLS fails - -CVE-2016-0772 python: smtplib StartTLS stripping attack -rhbz#1303647: https://bugzilla.redhat.com/show_bug.cgi?id=1303647 -rhbz#1346345: https://bugzilla.redhat.com/show_bug.cgi?id=1346345 - -Based on an upstream change by Benjamin Peterson -- in changeset 101887:d590114c2394 3.4 -- https://hg.python.org/cpython/rev/d590114c2394 ---- - Lib/smtplib.py | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/Lib/smtplib.py b/Lib/smtplib.py -index 4756973..dfbf5f9 100755 ---- a/Lib/smtplib.py -+++ b/Lib/smtplib.py -@@ -773,6 +773,11 @@ class SMTP: - self.ehlo_resp = None - self.esmtp_features = {} - self.does_esmtp = 0 -+ else: -+ # RFC 3207: -+ # 501 Syntax error (no parameters allowed) -+ # 454 TLS not available due to temporary reason -+ raise SMTPResponseException(resp, reply) - return (resp, reply) - - def sendmail(self, from_addr, to_addrs, msg, mail_options=[], --- -2.5.5 - diff --git a/00241-CVE-2016-5636-buffer-overflow-in-zipimport-module-fix.patch b/00241-CVE-2016-5636-buffer-overflow-in-zipimport-module-fix.patch deleted file mode 100644 index e2c8581..0000000 --- a/00241-CVE-2016-5636-buffer-overflow-in-zipimport-module-fix.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 531dfa4bcfe55d5cd1524425944b07c5b02bddf9 Mon Sep 17 00:00:00 2001 -From: Charalampos Stratakis -Date: Fri, 8 Jul 2016 17:16:41 +0200 -Subject: [PATCH] CVE-2016-5636 fix - ---- - Modules/zipimport.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/Modules/zipimport.c b/Modules/zipimport.c -index 06abb31..4d0d1de 100644 ---- a/Modules/zipimport.c -+++ b/Modules/zipimport.c -@@ -1076,6 +1076,10 @@ get_data(PyObject *archive, PyObject *toc_entry) - &date, &crc)) { - return NULL; - } -+ if (data_size < 0) { -+ PyErr_Format(ZipImportError, "negative data size"); -+ return NULL; -+ } - - fp = _Py_fopen_obj(archive, "rb"); - if (!fp) -@@ -1112,6 +1116,11 @@ get_data(PyObject *archive, PyObject *toc_entry) - } - file_offset += l; /* Start of file data */ - -+ if (data_size > LONG_MAX - 1) { -+ fclose(fp); -+ PyErr_NoMemory(); -+ return NULL; -+ } - bytes_size = compress == 0 ? data_size : data_size + 1; - if (bytes_size == 0) - bytes_size++; --- -2.7.4 - diff --git a/00242-CVE-2016-1000110-httpoxy.patch b/00242-CVE-2016-1000110-httpoxy.patch index 7c17b31..244ebec 100644 --- a/00242-CVE-2016-1000110-httpoxy.patch +++ b/00242-CVE-2016-1000110-httpoxy.patch @@ -1,20 +1,8 @@ - -# HG changeset patch -# User Senthil Kumaran -# Date 1469947146 25200 -# Node ID a0ac52ed8f7918222603b584ec8fc93d9b7bc0a5 -# Parent 4cb94e561e2db9865fb4d752f2bceefca4c6819a# Parent 3c19023c9fec5a615c25598468b44fade89049ce -[merge from 3.4] - Prevent HTTPoxy attack (CVE-2016-1000110) - -Ignore the HTTP_PROXY variable when REQUEST_METHOD environment is set, which -indicates that the script is in CGI mode. - -Issue #27568 Reported and patch contributed by RĂ©mi Rampin. - diff --git a/Doc/howto/urllib2.rst b/Doc/howto/urllib2.rst +index 24a4156..d2c7991 100644 --- a/Doc/howto/urllib2.rst +++ b/Doc/howto/urllib2.rst -@@ -538,6 +538,11 @@ setting up a `Basic Authentication`_ han +@@ -538,6 +538,11 @@ setting up a `Basic Authentication`_ handler: :: through a proxy. However, this can be enabled by extending urllib.request as shown in the recipe [#]_. @@ -27,11 +15,12 @@ diff --git a/Doc/howto/urllib2.rst b/Doc/howto/urllib2.rst Sockets and Layers ================== diff --git a/Doc/library/urllib.request.rst b/Doc/library/urllib.request.rst +index 6c1bfb8..1291aeb 100644 --- a/Doc/library/urllib.request.rst +++ b/Doc/library/urllib.request.rst -@@ -166,6 +166,16 @@ The :mod:`urllib.request` module defines the following functions: - cannot find it, looks for proxy information from Mac OSX System - Configuration for Mac OS X and Windows Systems Registry for Windows. +@@ -173,6 +173,16 @@ The :mod:`urllib.request` module defines the following functions: + If both lowercase and uppercase environment variables exist (and disagree), + lowercase is preferred. + .. note:: + @@ -46,25 +35,25 @@ diff --git a/Doc/library/urllib.request.rst b/Doc/library/urllib.request.rst The following classes are provided: -@@ -275,6 +285,12 @@ The following classes are provided: +@@ -280,6 +290,11 @@ The following classes are provided: + list of hostname suffixes, optionally with ``:port`` appended, for example + ``cern.ch,ncsa.uiuc.edu,some.host:8080``. - To disable autodetected proxy pass an empty dictionary. - -+ .. note:: ++ .. note:: + + ``HTTP_PROXY`` will be ignored if a variable ``REQUEST_METHOD`` is set; + see the documentation on :func:`~urllib.request.getproxies`. -+ + .. class:: HTTPPasswordMgr() diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py +index 5d05f8d..c26c52a 100644 --- a/Lib/test/test_urllib.py +++ b/Lib/test/test_urllib.py -@@ -225,6 +225,18 @@ class ProxyTests(unittest.TestCase): - self.env.set('NO_PROXY', 'localhost, anotherdomain.com, newdomain.com') - self.assertTrue(urllib.request.proxy_bypass_environment('anotherdomain.com')) +@@ -232,6 +232,18 @@ class ProxyTests(unittest.TestCase): + self.assertTrue(urllib.request.proxy_bypass_environment('anotherdomain.com:8888')) + self.assertTrue(urllib.request.proxy_bypass_environment('newdomain.com:1234')) + def test_proxy_cgi_ignore(self): + try: @@ -78,13 +67,14 @@ diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py + self.env.unset('REQUEST_METHOD') + self.env.unset('HTTP_PROXY') + - class urlopen_HttpTests(unittest.TestCase, FakeHTTPMixin, FakeFTPMixin): - """Test urlopen() opening a fake http connection.""" - + def test_proxy_bypass_environment_host_match(self): + bypass = urllib.request.proxy_bypass_environment + self.env.set('NO_PROXY', diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py +index 1731fe3..3be327d 100644 --- a/Lib/urllib/request.py +++ b/Lib/urllib/request.py -@@ -2394,6 +2394,12 @@ def getproxies_environment(): +@@ -2412,6 +2412,12 @@ def getproxies_environment(): name = name.lower() if value and name[-6:] == '_proxy': proxies[name[:-6]] = value @@ -93,8 +83,7 @@ diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py + # header from the client + # If "proxy" is lowercase, it will still be used thanks to the next block + if 'REQUEST_METHOD' in os.environ: -+ proxies.pop('http', None) - return proxies - - def proxy_bypass_environment(host): - ++ proxies.pop('http', None) + for name, value in os.environ.items(): + if name[-6:] == '_proxy': + name = name.lower() diff --git a/00243-fix-mips64-triplet.patch b/00243-fix-mips64-triplet.patch new file mode 100644 index 0000000..91bf6af --- /dev/null +++ b/00243-fix-mips64-triplet.patch @@ -0,0 +1,42 @@ +diff -urp Python-3.5.0/configure p/configure +--- Python-3.5.0/configure 2016-02-25 16:12:12.615184011 +0000 ++++ p/configure 2016-02-25 16:13:01.293412517 +0000 +@@ -5133,7 +5133,7 @@ cat >> conftest.c <> conftest.c <> conftest.c <> conftest.c < -Date: Fri, 16 Sep 2016 17:58:35 +0200 -Subject: [PATCH] Updated the buildtime check for the getrandom syscall - -to the one from Python version 3.5.2 ---- - configure | 6 ++++-- - configure.ac | 6 ++++-- - 2 files changed, 8 insertions(+), 4 deletions(-) - -diff --git a/configure b/configure -index 3a46658..f7f3717 100755 ---- a/configure -+++ b/configure -@@ -16111,13 +16111,15 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - - -+ #include - #include -+ #include - - int main() { - char buffer[1]; - const size_t buflen = sizeof(buffer); -- const int flags = 0; -- /* ignore the result, Python checks for ENOSYS at runtime */ -+ const int flags = GRND_NONBLOCK; -+ /* ignore the result, Python checks for ENOSYS and EAGAIN at runtime */ - (void)syscall(SYS_getrandom, buffer, buflen, flags); - return 0; - } -diff --git a/configure.ac b/configure.ac -index 05e067e..526688c 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -5168,13 +5168,15 @@ AC_MSG_CHECKING(for the Linux getrandom() syscall) - AC_LINK_IFELSE( - [ - AC_LANG_SOURCE([[ -+ #include - #include -+ #include - - int main() { - char buffer[1]; - const size_t buflen = sizeof(buffer); -- const int flags = 0; -- /* ignore the result, Python checks for ENOSYS at runtime */ -+ const int flags = GRND_NONBLOCK; -+ /* ignore the result, Python checks for ENOSYS and EAGAIN at runtime */ - (void)syscall(SYS_getrandom, buffer, buflen, flags); - return 0; - } --- -2.9.0 - diff --git a/05000-autotool-intermediates.patch b/05000-autotool-intermediates.patch deleted file mode 100644 index 903cbf0..0000000 --- a/05000-autotool-intermediates.patch +++ /dev/null @@ -1,72 +0,0 @@ -diff -up ./configure.autotool-intermediates ./configure ---- ./configure.autotool-intermediates 2013-04-09 14:52:49.831773426 +0200 -+++ ./configure 2013-04-09 14:52:53.204765347 +0200 -@@ -802,6 +802,8 @@ with_thread - enable_ipv6 - with_doc_strings - with_tsc -+with_count_allocs -+with_call_profile - with_pymalloc - with_valgrind - with_systemtap -@@ -1479,6 +1481,8 @@ Optional Packages: - deprecated; use --with(out)-threads - --with(out)-doc-strings disable/enable documentation strings - --with(out)-tsc enable/disable timestamp counter profile -+ --with(out)count-allocs enable/disable per-type instance accounting -+ --with(out)-call-profile enable/disable statistics on function call invocation - --with(out)-pymalloc disable/enable specialized mallocs - --with-valgrind Enable Valgrind support - --with(out)-systemtap disable/enable SystemTap support -@@ -10117,6 +10121,50 @@ $as_echo "#define WITH_TSC 1" >>confdefs - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 - $as_echo "yes" >&6; } -+else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-count-allocs" >&5 -+$as_echo_n "checking for --with-count-allocs... " >&6; } -+ -+# Check whether --with-count-allocs was given. -+if test "${with_count_allocs+set}" = set; then : -+ withval=$with_count_allocs; -+if test "$withval" != no -+then -+ -+$as_echo "#define COUNT_ALLOCS 1" >>confdefs.h -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+$as_echo "yes" >&6; } -+else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-call-profile" >&5 -+$as_echo_n "checking for --with-call-profile... " >&6; } -+ -+# Check whether --with-call-profile was given. -+if test "${with_call_profile+set}" = set; then : -+ withval=$with_call_profile; -+if test "$withval" != no -+then -+ -+$as_echo "#define CALL_PROFILE 1" >>confdefs.h -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+$as_echo "yes" >&6; } - else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 - $as_echo "no" >&6; } - fi diff --git a/python3-arm-skip-failing-fragile-test.patch b/python3-arm-skip-failing-fragile-test.patch deleted file mode 100644 index 3c2fa09..0000000 --- a/python3-arm-skip-failing-fragile-test.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- Python-3.3.2/Lib/test/test_gdb.py.orig 2013-07-26 09:52:15.533852708 -0500 -+++ Python-3.3.2/Lib/test/test_gdb.py 2013-07-26 15:07:53.733623014 -0500 -@@ -729,8 +729,7 @@ - foo\(1, 2, 3\) - ''') - -- @unittest.skipUnless(_thread, -- "Python was compiled without thread support") -+ @unittest.skip('Known failure on ARM: https://bugzilla.redhat.com/show_bug.cgi?id=986713') - def test_threads(self): - 'Verify that "py-bt" indicates threads that are waiting for the GIL' - cmd = ''' diff --git a/python3.spec b/python3.spec index 1f8c4ee..ae1e99e 100644 --- a/python3.spec +++ b/python3.spec @@ -71,7 +71,7 @@ %global with_systemtap 1 # some arches don't have valgrind so we need to disable its support on them -%ifnarch s390 +%ifnarch s390 %{mips} riscv64 %global with_valgrind 1 %else %global with_valgrind 0 @@ -87,7 +87,7 @@ # We want to byte-compile the .py files within the packages using the new # python3 binary. -# +# # Unfortunately, rpmbuild's infrastructure requires us to jump through some # hoops to avoid byte-compiling with the system python 2 version: # /usr/lib/rpm/redhat/macros sets up build policy that (amongst other things) @@ -100,7 +100,7 @@ %{!?__debug_package:/usr/lib/rpm/brp-strip %{__strip}} \ /usr/lib/rpm/brp-strip-static-archive %{__strip} \ /usr/lib/rpm/brp-strip-comment-note %{__strip} %{__objdump} \ - /usr/lib/rpm/brp-python-hardlink + /usr/lib/rpm/brp-python-hardlink # to remove the invocation of brp-python-bytecompile, whilst keeping the # invocation of brp-python-hardlink (since this should still work for python3 # pyc/pyo files) @@ -111,8 +111,8 @@ # ================== Summary: Version 3 of the Python programming language aka Python 3000 Name: python3 -Version: %{pybasever}.1 -Release: 17%{?dist} +Version: %{pybasever}.2 +Release: 3%{?dist} License: Python Group: Development/Languages @@ -232,13 +232,6 @@ Patch104: 00104-lib64-fix-for-test_install.patch # Downstream only: not appropriate for upstream Patch111: 00111-no-static-lib.patch -# 00131 # -# The four tests in test_io built on top of check_interrupted_write_retry -# fail when built in Koji, for ppc and ppc64; for some reason, the SIGALRM -# handlers are never called, and the call to write runs to completion -# (rhbz#732998) -Patch131: 00131-disable-tests-in-test_io.patch - # 00132 # # Add non-standard hooks to unittest for use in the "check" phase below, when # running selftests within the build: @@ -261,14 +254,6 @@ Patch132: 00132-add-rpmbuild-hooks-to-unittest.patch # Some tests within distutils fail when run in an rpmbuild: Patch137: 00137-skip-distutils-tests-that-fail-in-rpmbuild.patch -# 00139 # -# ARM-specific: skip known failure in test_float: -# http://bugs.python.org/issue8265 (rhbz#706253) -Patch139: 00139-skip-test_float-known-failure-on-arm.patch - -# ideally short lived patch disabling a test thats fragile on different arches -Patch140: python3-arm-skip-failing-fragile-test.patch - # 00143 # # Fix the --with-tsc option on ppc64, and rework it on 32-bit ppc to avoid # aliasing violations (rhbz#698726) @@ -299,13 +284,6 @@ Patch143: 00143-tsc-on-ppc.patch # implementation and OpenSSL still doesn't support it. For now, they're harmless. Patch146: 00146-hashlib-fips.patch -# 00150 # -# temporarily disable rAssertAlmostEqual in test_cmath on PPC (bz #750811) -# caused by a glibc bug. This patch can be removed when we have a glibc with -# the patch mentioned here: -# http://sourceware.org/bugzilla/show_bug.cgi?id=13472 -Patch150: 00150-disable-rAssertAlmostEqual-cmath-on-ppc.patch - # 00155 # # Avoid allocating thunks in ctypes unless absolutely necessary, to avoid # generating SELinux denials on "import ctypes" and "import uuid" when @@ -342,43 +320,23 @@ Patch160: 00160-disable-test_fs_holes-in-rpm-build.patch # Not yet sent upstream Patch163: 00163-disable-parts-of-test_socket-in-rpm-build.patch -# 0164 # -# some tests in test._io interrupted_write-* fail on PPC (rhbz#846849) -# testChainingDescriptors test in test_exceptions fails on PPc, too (rhbz#846849) -# disable those tests so that rebuilds on PPC can continue -Patch164: 00164-disable-interrupted_write-tests-on-ppc.patch - -# 00170 # -# In debug builds, try to print repr() when a C-level assert fails in the -# garbage collector (typically indicating a reference-counting error -# somewhere else e.g in an extension module) -# Backported to 2.7 from a patch I sent upstream for py3k -# http://bugs.python.org/issue9263 (rhbz#614680) -# hiding the proposed new macros/functions within gcmodule.c to avoid exposing -# them within the extension API. +# 00170 # +# In debug builds, try to print repr() when a C-level assert fails in the +# garbage collector (typically indicating a reference-counting error +# somewhere else e.g in an extension module) +# Backported to 2.7 from a patch I sent upstream for py3k +# http://bugs.python.org/issue9263 (rhbz#614680) +# hiding the proposed new macros/functions within gcmodule.c to avoid exposing +# them within the extension API. # (rhbz#850013 Patch170: 00170-gc-assertions.patch -# 00173 # -# Workaround for ENOPROTOOPT seen in Koji withi test.support.bind_port() -# (rhbz#913732) -Patch173: 00173-workaround-ENOPROTOOPT-in-bind_port.patch - # 00178 # # Don't duplicate various FLAGS in sysconfig values # http://bugs.python.org/issue17679 # Does not affect python2 AFAICS (different sysconfig values initialization) Patch178: 00178-dont-duplicate-flags-in-sysconfig.patch -# 00179 # -# Workaround for https://bugzilla.redhat.com/show_bug.cgi?id=951802 -# Reported upstream in http://bugs.python.org/issue17737 -# This patch basically looks at every frame and if it is somehow corrupted, -# it just stops printing the traceback - it doesn't fix the actual bug. -# This bug seems to only affect ARM. -# Doesn't seem to affect Python 2 AFAICS. -Patch179: 00179-dont-raise-error-on-gdb-corrupted-frames-in-backtrace.patch - # 00180 # # Enable building on ppc64p7 # Not appropriate for upstream, Fedora-specific naming @@ -424,31 +382,6 @@ Patch188: 00188-fix-lib2to3-tests-when-hashlib-doesnt-compile-properly.patch Patch189: 00189-add-rewheel-module.patch %endif -# 00194 # -# Tests requiring SIGHUP to work don't work in Koji -# see rhbz#1088233 -Patch194: temporarily-disable-tests-requiring-SIGHUP.patch - -# 00196 # -# Fix test_gdb failure on ppc64le -Patch196: 00196-test-gdb-match-addr-before-builtin.patch - -# 00200 # -# Fix for gettext plural form headers (lines that begin with "#") -# Note: Backported from scl -Patch200: 00200-gettext-plural-fix.patch - -# 00201 # -# Fixes memory leak in gdbm module (rhbz#977308) -# This was upstreamed as a part of bigger patch, but for our purposes -# this is ok: http://bugs.python.org/issue18404 -# Note: Backported from scl -Patch201: 00201-fix-memory-leak-in-gdbm.patch - -# 00203 # -# test_threading fails in koji dues to it's handling of signals -Patch203: 00203-disable-threading-test-koji.patch - # 00205 # # LIBPL variable in makefile takes LIBPL from configure.ac # but the LIBPL variable defined there doesn't respect libdir macro @@ -459,40 +392,12 @@ Patch205: 00205-make-libpl-respect-lib64.patch # by debian but fedora infra uses only eabi without hf Patch206: 00206-remove-hf-from-arm-triplet.patch -# 00207 # -# Avoid truncated _math.o files caused by parallel builds -# modified version of https://bugs.python.org/issue24421 -# rhbz#1292461 -Patch207: 00207-math-once.patch - -# 00208 # -# test_with_pip (test.test_venv.EnsurePipTest) fails on ppc64* -# rhbz#1292467 -Patch208: 00208-disable-test_with_pip-on-ppc.patch - # 00209 # # Fix test breakage with version 2.2.0 of Expat # rhbz#1353918: https://bugzilla.redhat.com/show_bug.cgi?id=1353918 # FIXED UPSTREAM: http://bugs.python.org/issue27369 Patch209: 00209-fix-test-pyexpat-failure.patch -# 00237 # -# CVE-2016-0772 python: smtplib StartTLS stripping attack -# rhbz#1303647: https://bugzilla.redhat.com/show_bug.cgi?id=1303647 -# rhbz#1346345: https://bugzilla.redhat.com/show_bug.cgi?id=1346345 -# FIXED UPSTREAM: https://hg.python.org/cpython/rev/d590114c2394 -# Raise an error when STARTTLS fails -Patch237: 00237-Raise-an-error-when-STARTTLS-fails.patch - -# 00241 # -# CVE-2016-5636: http://seclists.org/oss-sec/2016/q2/560 -# rhbz#1345859: https://bugzilla.redhat.com/show_bug.cgi?id=1345859 -# https://hg.python.org/cpython/rev/10dad6da1b28/ -# https://hg.python.org/cpython/rev/5533a9e02b21 -# Fix possible integer overflow and heap corruption in zipimporter.get_data() -# FIXED UPSTREAM: https://bugs.python.org/issue26171 -Patch241: 00241-CVE-2016-5636-buffer-overflow-in-zipimport-module-fix.patch - # 00242 # # HTTPoxy attack (CVE-2016-1000110) # https://httpoxy.org/ @@ -501,14 +406,12 @@ Patch241: 00241-CVE-2016-5636-buffer-overflow-in-zipimport-module-fix.patch # Resolves: rhbz#1359177 Patch242: 00242-CVE-2016-1000110-httpoxy.patch -# 00246 # -# Backported the build-time check for the getrandom syscall from Python 3.5.2. -# The Python 3.5.1 build-time check was failing due to missing headers. -# Note: After rhbz#1377240 is resolved, the patch for the configure file -# can be omitted. -# Resolves: rhbz#1350123 -Patch246: 00246-Updated-the-buildtime-check-for-the-getrandom-syscal.patch - +# 00243 # +# Fix the triplet used on 64-bit MIPS +# rhbz#1322526: https://bugzilla.redhat.com/show_bug.cgi?id=1322526 +# Upstream uses Debian-like style mips64-linux-gnuabi64 +# Fedora needs the default mips64-linux-gnu +Patch243: 00243-fix-mips64-triplet.patch # (New patches go here ^^^) # @@ -520,10 +423,6 @@ Patch246: 00246-Updated-the-buildtime-check-for-the-getrandom-syscal.patch # https://fedoraproject.org/wiki/SIGs/Python/PythonPatches -# This is the generated patch to "configure"; see the description of -# %{regenerate_autotooling_patch} -# above: - # 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 @@ -715,7 +614,7 @@ for f in md5module.c sha1module.c sha256module.c sha512module.c; do done %if 0%{with_rewheel} -%global pip_version 7.1.0 +%global pip_version 8.0.2 sed -r -i s/'_PIP_VERSION = "[0-9.]+"'/'_PIP_VERSION = "%{pip_version}"'/ Lib/ensurepip/__init__.py %endif @@ -733,32 +632,18 @@ sed -r -i s/'_PIP_VERSION = "[0-9.]+"'/'_PIP_VERSION = "%{pip_version}"'/ Lib/en %patch104 -p1 %endif %patch111 -p1 -%ifarch ppc %{power64} -%patch131 -p1 -%endif %patch132 -p1 %patch137 -p1 -%ifarch %{arm} -%patch139 -p1 -%patch140 -p1 -%endif %patch143 -p1 -b .tsc-on-ppc %patch146 -p1 -%ifarch ppc %{power64} -%patch150 -p1 -%endif %patch155 -p1 %patch157 -p1 %patch160 -p1 %patch163 -p1 -%ifarch ppc %{power64} -%patch164 -p1 -%endif -%patch173 -p1 +%patch170 -p0 %patch178 -p1 -%patch179 -p1 %patch180 -p1 -%patch184 -p1 +%patch184 -p1 %patch186 -p1 %patch188 -p1 @@ -766,18 +651,11 @@ sed -r -i s/'_PIP_VERSION = "[0-9.]+"'/'_PIP_VERSION = "%{pip_version}"'/ Lib/en %patch189 -p1 %endif -%patch194 -p1 -%patch196 -p1 -%patch203 -p1 %patch205 -p1 %patch206 -p1 -%patch207 -p1 -%patch208 -p1 %patch209 -p1 -%patch237 -p1 -%patch241 -p1 %patch242 -p1 -%patch246 -p1 +%patch243 -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. @@ -809,7 +687,7 @@ export LDFLAGS="$RPM_LD_FLAGS `pkg-config --libs-only-L openssl`" # Define a function, for how to perform a "build" of python for a given # configuration: BuildPython() { - ConfName=$1 + ConfName=$1 BinaryName=$2 SymlinkName=$3 ExtraConfigArgs=$4 @@ -890,7 +768,7 @@ mkdir -p %{buildroot}%{_prefix} %{buildroot}%{_mandir} InstallPython() { - ConfName=$1 + ConfName=$1 PyInstSoName=$2 MoreCFlags=$3 @@ -982,7 +860,7 @@ install -d -m 0755 %{buildroot}/%{_prefix}/lib/python%{pybasever}/site-packages/ %global _pyconfig32_h pyconfig-32.h %global _pyconfig64_h pyconfig-64.h -%ifarch %{power64} s390x x86_64 ia64 alpha sparc64 aarch64 +%ifarch %{power64} s390x x86_64 ia64 alpha sparc64 aarch64 %{mips64} riscv64 %global _pyconfig_h %{_pyconfig64_h} %else %global _pyconfig_h %{_pyconfig32_h} @@ -1075,7 +953,7 @@ find %{buildroot}/ -name \*.py -exec sed -i 's/\r//' {} \; # Fix an encoding: iconv -f iso8859-1 -t utf-8 %{buildroot}/%{pylibdir}/Demo/rpc/README > README.conv && mv -f README.conv %{buildroot}/%{pylibdir}/Demo/rpc/README -# Note that +# Note that # %{pylibdir}/Demo/distutils/test2to3/setup.py # is in iso-8859-1 encoding, and that this is deliberate; this is test data # for the 2to3 tool, and one of the functions of the 2to3 tool is to fixup @@ -1111,7 +989,7 @@ for Module in %{buildroot}/%{dynload_dir}/*.so ; do *.%{SOABI_debug}) ldd $Module | grep %{py_INSTSONAME_optimized} && (echo Debug module $Module linked against optimized %{py_INSTSONAME_optimized} ; exit 1) - + ;; *.%{SOABI_optimized}) ldd $Module | grep %{py_INSTSONAME_debug} && @@ -1136,7 +1014,7 @@ ln -s \ # Install a tapset for this libpython into tapsetdir, fixing up the path to the # library: mkdir -p %{buildroot}%{tapsetdir} -%ifarch %{power64} s390x x86_64 ia64 alpha sparc64 aarch64 +%ifarch %{power64} s390x x86_64 ia64 alpha sparc64 aarch64 %{mips64} %global libpython_stp_optimized libpython%{pybasever}-64.stp %global libpython_stp_debug libpython%{pybasever}-debug-64.stp %else @@ -1194,7 +1072,7 @@ find %{buildroot} -type f -a -name "*.py" -print0 | \ topdir=$(pwd) CheckPython() { - ConfName=$1 + ConfName=$1 ConfDir=$(pwd)/build/$ConfName echo STARTING: CHECKING OF PYTHON FOR CONFIGURATION: $ConfName @@ -1215,7 +1093,10 @@ CheckPython() { %ifarch ppc64le aarch64 -x test_faulthandler \ %endif - %ifarch %{power64} s390 s390x armv7hl aarch64 + %ifarch %{mips64} + -x test_ctypes \ + %endif + %ifarch %{power64} s390 s390x armv7hl aarch64 %{mips} -x test_gdb %endif @@ -1657,15 +1538,15 @@ rm -fr %{buildroot} # We put the debug-gdb.py file inside /usr/lib/debug to avoid noise from # ldconfig (rhbz:562980). -# +# # The /usr/lib/rpm/redhat/macros defines %__debug_package to use # debugfiles.list, and it appears that everything below /usr/lib/debug and # (/usr/src/debug) gets added to this file (via LISTFILES) in # /usr/lib/rpm/find-debuginfo.sh -# +# # Hence by installing it below /usr/lib/debug we ensure it is added to the # -debuginfo subpackage -# (if it doesn't, then the rpmbuild ought to fail since the debug-gdb.py +# (if it doesn't, then the rpmbuild ought to fail since the debug-gdb.py # payload file would be unpackaged) @@ -1674,6 +1555,23 @@ rm -fr %{buildroot} # ====================================================== %changelog +* Tue Oct 11 2016 Tomas Orsava - 3.5.2-3 +- Merged F25 branch into F24 thus updating Python to 3.5.2 in F24 +- Added missing changelog entries below this one for the sake of completeness + +* Tue Oct 11 2016 Tomas Orsava - 3.5.2-2 +- Update %py_byte_compile macro +- Remove unused configure flags (rhbz#1374357) + +* Tue Oct 11 2016 Tomas Orsava - 3.5.2-1 +- Rebased to version 3.5.2 +- Set to work with pip version 8.1.2 +- Removed patches 207, 237, 241 as fixes are already contained in Python 3.5.2 +- Removed arch or environment specific patches 194, 196, 203, and 208 + as test builds indicate they are no longer needed +- Updated patches 102, 146, and 242 to work with the new Python codebase +- Removed patches 200, 201, 5000 which weren't even being applied + * Fri Sep 16 2016 Tomas Orsava - 3.5.1-17 - Backported the build-time check for the getrandom syscall from Python 3.5.2 - The Python 3.5.1 build-time check was failing due to missing headers @@ -2125,7 +2023,7 @@ ppc to avoid aliasing violations (patch 130; rhbz#698726) - add %%python3_version to the rpm macros (rhbz#719082) * Mon Jul 11 2011 Dennis Gilmore - 3.2.1-2 -- disable some tests on sparc arches +- disable some tests on sparc arches * Mon Jul 11 2011 David Malcolm - 3.2.1-1 - 3.2.1; refresh lib64 patch (102), subprocess unit test patch (129), disabling diff --git a/sources b/sources index 106fda6..aeb1966 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -e9ea6f2623fffcdd871b7b19113fde80 Python-3.5.1.tar.xz +8906efbacfcdc7c3c9198aeefafd159e Python-3.5.2.tar.xz