diff --git a/00157-uid-gid-overflows.patch b/00157-uid-gid-overflows.patch index 43bd394..03f3e02 100644 --- a/00157-uid-gid-overflows.patch +++ b/00157-uid-gid-overflows.patch @@ -1,6 +1,8 @@ ---- Python-3.4.0b1/Lib/test/test_os.py.orig 2013-11-27 12:07:32.368411798 +0100 -+++ Python-3.4.0b1/Lib/test/test_os.py 2013-11-27 12:12:11.220265174 +0100 -@@ -1319,30 +1319,36 @@ +diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py +index e9fdb07..ea60e6e 100644 +--- a/Lib/test/test_os.py ++++ b/Lib/test/test_os.py +@@ -1723,30 +1723,36 @@ class PosixUidGidTests(unittest.TestCase): def test_setuid(self): if os.getuid() != 0: self.assertRaises(OSError, os.setuid, 0) @@ -37,7 +39,7 @@ self.assertRaises(OverflowError, os.setreuid, 1<<32, 0) self.assertRaises(OverflowError, os.setreuid, 0, 1<<32) -@@ -1358,6 +1364,8 @@ +@@ -1762,6 +1768,8 @@ class PosixUidGidTests(unittest.TestCase): def test_setregid(self): if os.getuid() != 0 and not HAVE_WHEEL_GROUP: self.assertRaises(OSError, os.setregid, 0, 0) @@ -46,17 +48,21 @@ self.assertRaises(OverflowError, os.setregid, 1<<32, 0) self.assertRaises(OverflowError, os.setregid, 0, 1<<32) ---- Python-3.4.0b1/Lib/test/test_pwd.py.orig 2013-11-24 21:36:55.000000000 +0100 -+++ Python-3.4.0b1/Lib/test/test_pwd.py 2013-11-27 12:07:32.369411798 +0100 -@@ -89,9 +89,9 @@ +diff --git a/Lib/test/test_pwd.py b/Lib/test/test_pwd.py +index ac9cff7..db98159 100644 +--- a/Lib/test/test_pwd.py ++++ b/Lib/test/test_pwd.py +@@ -104,11 +104,11 @@ class PwdTest(unittest.TestCase): # In some cases, byuids isn't a complete list of all users in the # system, so if we try to pick a value not in byuids (via a perturbing # loop, say), pwd.getpwuid() might still be able to find data for that - # uid. Using sys.maxint may provoke the same problems, but hopefully + # uid. Using 2**32 - 2 may provoke the same problems, but hopefully # it will be a more repeatable failure. + # Android accepts a very large span of uids including sys.maxsize and + # -1; it raises KeyError with 1 or 2 for example. - fakeuid = sys.maxsize + fakeuid = 2**32 - 2 self.assertNotIn(fakeuid, byuids) - self.assertRaises(KeyError, pwd.getpwuid, fakeuid) - + if not support.is_android: + self.assertRaises(KeyError, pwd.getpwuid, fakeuid) diff --git a/00250-getentropy.patch b/00250-getentropy.patch deleted file mode 100644 index 6d0025a..0000000 --- a/00250-getentropy.patch +++ /dev/null @@ -1,171 +0,0 @@ -diff -r ee1390c9b585 Python/random.c ---- a/Python/random.c Wed Jan 04 12:02:30 2017 +0100 -+++ b/Python/random.c Wed Jan 04 18:32:21 2017 +0100 -@@ -77,45 +77,8 @@ win32_urandom(unsigned char *buffer, Py_ - return 0; - } - --/* Issue #25003: Don't use getentropy() on Solaris (available since -- * Solaris 11.3), it is blocking whereas os.urandom() should not block. */ --#elif defined(HAVE_GETENTROPY) && !defined(sun) --#define PY_GETENTROPY 1 -- --/* Fill buffer with size pseudo-random bytes generated by getentropy(). -- Return 0 on success, or raise an exception and return -1 on error. -- -- If raise is zero, don't raise an exception on error. */ --static int --py_getentropy(char *buffer, Py_ssize_t size, int raise) --{ -- while (size > 0) { -- Py_ssize_t len = Py_MIN(size, 256); -- int res; -+#else /* !MS_WINDOWS */ - -- if (raise) { -- Py_BEGIN_ALLOW_THREADS -- res = getentropy(buffer, len); -- Py_END_ALLOW_THREADS -- } -- else { -- res = getentropy(buffer, len); -- } -- -- if (res < 0) { -- if (raise) { -- PyErr_SetFromErrno(PyExc_OSError); -- } -- return -1; -- } -- -- buffer += len; -- size -= len; -- } -- return 0; --} -- --#else - - #if defined(HAVE_GETRANDOM) || defined(HAVE_GETRANDOM_SYSCALL) - #define PY_GETRANDOM 1 -@@ -217,6 +180,59 @@ py_getrandom(void *buffer, Py_ssize_t si - } - return 1; - } -+ -+/* Issue #25003: Don't use getentropy() on Solaris (available since -+ * Solaris 11.3), it is blocking whereas os.urandom() should not block. */ -+#elif defined(HAVE_GETENTROPY) && !defined(sun) -+#define PY_GETENTROPY 1 -+ -+/* Fill buffer with size pseudo-random bytes generated by getentropy(). -+ Return 1 on success, or raise an exception and return -1 on error. -+ -+ If raise is zero, don't raise an exception on error. */ -+static int -+py_getentropy(char *buffer, Py_ssize_t size, int raise) -+{ -+ /* Is getentropy() supported by the running kernel? Set to 0 if -+ getentropy() failed with ENOSYS. */ -+ static int getentropy_works = 1; -+ -+ if (!getentropy_works) { -+ return 0; -+ } -+ -+ while (size > 0) { -+ Py_ssize_t len = Py_MIN(size, 256); -+ int res; -+ -+ if (raise) { -+ Py_BEGIN_ALLOW_THREADS -+ res = getentropy(buffer, len); -+ Py_END_ALLOW_THREADS -+ } -+ else { -+ res = getentropy(buffer, len); -+ } -+ -+ if (res < 0) { -+ /* ENOSYS: the inner syscall is not supported by the running -+ kernel. */ -+ if (errno == ENOSYS) { -+ getentropy_works = 0; -+ return 0; -+ } -+ -+ if (raise) { -+ PyErr_SetFromErrno(PyExc_OSError); -+ } -+ return -1; -+ } -+ -+ buffer += len; -+ size -= len; -+ } -+ return 1; -+} - #endif - - static struct { -@@ -236,7 +252,7 @@ dev_urandom(char *buffer, Py_ssize_t siz - { - int fd; - Py_ssize_t n; --#ifdef PY_GETRANDOM -+#if defined(PY_GETRANDOM) || defined(PY_GETENTROPY) - int res; - #endif - -@@ -244,17 +260,20 @@ dev_urandom(char *buffer, Py_ssize_t siz - - #ifdef PY_GETRANDOM - res = py_getrandom(buffer, size, blocking, raise); -+#elif defined(PY_GETENTROPY) -+ res = py_getentropy(buffer, size, raise); -+#endif -+#if defined(PY_GETRANDOM) || defined(PY_GETENTROPY) - if (res < 0) { - return -1; - } - if (res == 1) { - return 0; - } -- /* getrandom() failed with ENOSYS or EPERM, -- fall back on reading /dev/urandom */ -+ /* function failed with ENOSYS or EPERM, fall back on reading -+ from /dev/urandom */ - #endif - -- - if (raise) { - struct _Py_stat_struct st; - -@@ -349,8 +368,8 @@ dev_urandom_close(void) - urandom_cache.fd = -1; - } - } -+#endif /* !MS_WINDOWS */ - --#endif - - /* Fill buffer with pseudo-random bytes generated by a linear congruent - generator (LCG): -@@ -395,8 +414,6 @@ pyurandom(void *buffer, Py_ssize_t size, - - #ifdef MS_WINDOWS - return win32_urandom((unsigned char *)buffer, size, raise); --#elif defined(PY_GETENTROPY) -- return py_getentropy(buffer, size, raise); - #else - return dev_urandom(buffer, size, blocking, raise); - #endif -@@ -491,8 +508,6 @@ void - CryptReleaseContext(hCryptProv, 0); - hCryptProv = 0; - } --#elif defined(PY_GETENTROPY) -- /* nothing to clean */ - #else - dev_urandom_close(); - #endif diff --git a/00253-fix-HAVE_LONG_LONG-compatibility.patch b/00253-fix-HAVE_LONG_LONG-compatibility.patch deleted file mode 100644 index 7951e63..0000000 --- a/00253-fix-HAVE_LONG_LONG-compatibility.patch +++ /dev/null @@ -1,24 +0,0 @@ - -# HG changeset patch -# User Victor Stinner -# Date 1483653533 -3600 -# Node ID fad67c66885f0bd9ebafe2a54f0fa12b5a8fe3bf -# Parent 52d671684342cd2dcc804566d4c755634d3210a8 -Issue #27961: Define HAVE_LONG_LONG as 1. - -Fix backward compatibility issue, HAVE_LONG_LONG was defined but empty, whereas -it is defined as 1 in Python 3.5. - -diff --git a/Include/pyport.h b/Include/pyport.h ---- a/Include/pyport.h -+++ b/Include/pyport.h -@@ -39,7 +39,7 @@ Used in: Py_SAFE_DOWNCAST - - // long long is required. Ensure HAVE_LONG_LONG is defined for compatibility. - #ifndef HAVE_LONG_LONG --#define HAVE_LONG_LONG -+#define HAVE_LONG_LONG 1 - #endif - #ifndef PY_LONG_LONG - #define PY_LONG_LONG long long - diff --git a/00254-make-Random.seed-actually-use-OS-randomness.patch b/00254-make-Random.seed-actually-use-OS-randomness.patch deleted file mode 100644 index e5ecb38..0000000 --- a/00254-make-Random.seed-actually-use-OS-randomness.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/Modules/_randommodule.c b/Modules/_randommodule.c -index 63759d5..0d3282d 100644 ---- a/Modules/_randommodule.c -+++ b/Modules/_randommodule.c -@@ -245,7 +245,7 @@ random_seed(RandomObject *self, PyObject *args) - return NULL; - - if (arg == NULL || arg == Py_None) { -- if (random_seed_urandom(self) >= 0) { -+ if (random_seed_urandom(self) < 0) { - PyErr_Clear(); - - /* Reading system entropy failed, fall back on the worst entropy: diff --git a/00262-pep538_coerce_legacy_c_locale.patch b/00262-pep538_coerce_legacy_c_locale.patch index e267b50..a13b644 100644 --- a/00262-pep538_coerce_legacy_c_locale.patch +++ b/00262-pep538_coerce_legacy_c_locale.patch @@ -151,7 +151,7 @@ index b71bb9f..56867fc 100644 @@ -9,8 +9,9 @@ import sys import subprocess import tempfile - from test.support import script_helper + from test.support import script_helper, is_android -from test.support.script_helper import (spawn_python, kill_python, assert_python_ok, - assert_python_failure) +from test.support.script_helper import ( diff --git a/00264-skip-test-failing-on-aarch64.patch b/00264-skip-test-failing-on-aarch64.patch new file mode 100644 index 0000000..edda219 --- /dev/null +++ b/00264-skip-test-failing-on-aarch64.patch @@ -0,0 +1,12 @@ +diff --git a/Lib/ctypes/test/test_structures.py b/Lib/ctypes/test/test_structures.py +index 3eded77..ad7859a 100644 +--- a/Lib/ctypes/test/test_structures.py ++++ b/Lib/ctypes/test/test_structures.py +@@ -392,6 +392,7 @@ class StructureTestCase(unittest.TestCase): + (1, 0, 0, 0, 0, 0)) + self.assertRaises(TypeError, lambda: Z(1, 2, 3, 4, 5, 6, 7)) + ++ @unittest.skip('Fails on aarch64: http://bugs.python.org/issue29804') + def test_pass_by_value(self): + # This should mirror the structure in Modules/_ctypes/_ctypes_test.c + class X(Structure): diff --git a/python3.spec b/python3.spec index 85c4142..042ff25 100644 --- a/python3.spec +++ b/python3.spec @@ -24,6 +24,8 @@ # Currently these packages are recommended to have been built before a targeted rebuild after a python abi change: # python-sphinx, pytest, python-requests, cloud-init, dnf, anaconda, abrt. +# First release cadidate +%global prerel rc1 %global with_rewheel 1 @@ -123,8 +125,8 @@ # ================== Summary: Version 3 of the Python programming language aka Python 3000 Name: python3 -Version: %{pybasever}.0 -Release: 21%{?dist} +Version: %{pybasever}.1 +Release: 0.1.%{?prerel}%{?dist} License: Python Group: Development/Languages @@ -197,7 +199,7 @@ BuildRequires: python3-pip # Source code and patches # ======================= -Source: https://www.python.org/ftp/python/%{version}/Python-%{version}.tar.xz +Source: https://www.python.org/ftp/python/%{version}/Python-%{version}%{?prerel}.tar.xz # Supply an RPM macro "py_byte_compile" for the python3-devel subpackage # to enable specfiles to selectively byte-compile individual files and paths @@ -412,28 +414,11 @@ Patch243: 00243-fix-mips64-triplet.patch # Not yet fixed upstream: http://bugs.python.org/issue28787 Patch249: 00249-fix-out-of-tree-dtrace-builds.patch -# 00250 # -# After glibc-2.24.90, Python 3 failed to start on EL7 kernel -# rhbz#1410175: https://bugzilla.redhat.com/show_bug.cgi?id=1410175 -# http://bugs.python.org/issue29157 -Patch250: 00250-getentropy.patch - # 00252 # Add executable option to install.py command to make it work for # scripts specified as an entry_points Patch252: 00252-add-executable-option.patch -# 00253 # -# Define HAVE_LONG_LONG as 1 instead of blank for backwards compatibility -# Fixed upstream: https://hg.python.org/cpython/rev/fad67c66885f -Patch253: 00253-fix-HAVE_LONG_LONG-compatibility.patch - -# 00254 # -# Fix error check, so that Random.seed actually uses OS randomness -# rhbz#1412275: https://bugzilla.redhat.com/show_bug.cgi?id=1412275 -# Fixed upstream: https://bugs.python.org/issue29085 -Patch254: 00254-make-Random.seed-actually-use-OS-randomness.patch - # 00258 # # Kernel 4.9 introduced some changes to its crypto API # making test_aead_aes_gcm fail, so skipping the test for now @@ -470,6 +455,13 @@ 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 @@ -705,15 +697,16 @@ sed -r -i s/'_PIP_VERSION = "[0-9.]+"'/'_PIP_VERSION = "%{pip_version}"'/ Lib/en %patch206 -p1 %patch243 -p1 %patch249 -p1 -%patch250 -p1 %patch252 -p1 -%patch253 -p1 -%patch254 -p1 %patch258 -p1 %patch260 -p1 %patch261 -p1 %patch262 -p1 +%ifarch aarch64 +%patch264 -p1 +%endif + # 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. # @@ -1219,7 +1212,7 @@ fi %files %defattr(-, root, root) %license LICENSE -%doc README +%doc README.rst %{_bindir}/pydoc* %{_bindir}/python3 %{_bindir}/python%{pybasever} @@ -1231,7 +1224,7 @@ fi %files libs %defattr(-,root,root,-) %license LICENSE -%doc README +%doc README.rst %{pylibdir}/lib2to3 %exclude %{pylibdir}/lib2to3/tests @@ -1296,13 +1289,13 @@ fi %files -n system-python %defattr(-,root,root,-) %license LICENSE -%doc README +%doc README.rst %{_libexecdir}/system-python %files -n system-python-libs %defattr(-,root,root,-) %license LICENSE -%doc README +%doc README.rst %dir %{pylibdir} %dir %{dynload_dir} @@ -1375,7 +1368,6 @@ fi %dir %{pylibdir}/site-packages/ %dir %{pylibdir}/site-packages/__pycache__/ -%{pylibdir}/site-packages/README %{pylibdir}/site-packages/README.txt %{pylibdir}/*.py %dir %{pylibdir}/__pycache__/ @@ -1659,6 +1651,10 @@ fi # ====================================================== %changelog +* Thu Mar 16 2017 Iryna Shcherbina - 3.6.1-0.1.rc1 +- Update to Python 3.6.1 release candidate 1 +- Add patch 264 to skip a known test failure on aarch64 + * Fri Mar 10 2017 Charalampos Stratakis - 3.6.0-21 - Use proper command line parsing in _testembed - Backport of PEP 538: Coercing the legacy C locale to a UTF-8 based locale diff --git a/sources b/sources index 7b47bed..676f3bf 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (Python-3.6.0.tar.xz) = 9d06bee9172bc0bfd2d280fd1c27ea712f3258cfbfd2e2aeb734d0a6710998d5deeefc5d6e72251750dd9493d35461511ceaa187a29dea700ca238ff6ac1dbb2 +SHA512 (Python-3.6.1rc1.tar.xz) = 21ae75db2a568ba85af5510d45c3616595ae00b9f5008d78b926340980b4728f4fd393d2ecd435d2902cd25aba50a8b98f5cdbfa651da75c8f164909bc4730be