diff --git a/00102-lib64.patch b/00102-lib64.patch index 83d9d1a..8e9ae4e 100644 --- a/00102-lib64.patch +++ b/00102-lib64.patch @@ -1,17 +1,14 @@ diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py -index 8e41290..25d6963 100644 +index 9474e9c..c0ce4c6 100644 --- a/Lib/distutils/command/install.py +++ b/Lib/distutils/command/install.py -@@ -29,15 +29,15 @@ WINDOWS_SCHEME = { - +@@ -30,14 +30,14 @@ WINDOWS_SCHEME = { INSTALL_SCHEMES = { 'unix_prefix': { -- 'purelib': '$base/lib/python$py_version_short/site-packages', + 'purelib': '$base/lib/python$py_version_short/site-packages', - 'platlib': '$platbase/lib/python$py_version_short/site-packages', -- 'headers': '$base/include/python$py_version_short$abiflags/$dist_name', -+ 'purelib': '$base/lib/platform-python/site-packages', -+ 'platlib': '$platbase/lib64/platform-python/site-packages', -+ 'headers': '$base/include/platform-python$abiflags/$dist_name', ++ 'platlib': '$platbase/lib64/python$py_version_short/site-packages', + 'headers': '$base/include/python$py_version_short$abiflags/$dist_name', 'scripts': '$base/bin', 'data' : '$base', }, @@ -22,20 +19,11 @@ index 8e41290..25d6963 100644 'headers': '$base/include/python/$dist_name', 'scripts': '$base/bin', 'data' : '$base', -@@ -59,7 +59,7 @@ if HAS_USER_SITE: - 'purelib': '$usersite', - 'platlib': '$usersite', - 'headers': -- '$userbase/include/python$py_version_short$abiflags/$dist_name', -+ '$userbase/include/platform-python$abiflags/$dist_name', - 'scripts': '$userbase/bin', - 'data' : '$userbase', - } diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py -index 5c2670f..721be70 100644 +index 026cca7..6d3e077 100644 --- a/Lib/distutils/sysconfig.py +++ b/Lib/distutils/sysconfig.py -@@ -129,8 +129,12 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): +@@ -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": @@ -45,24 +33,23 @@ index 5c2670f..721be70 100644 + lib = "lib" libpython = os.path.join(prefix, - "lib", "python" + get_python_version()) -+ lib, "platform-python") ++ lib, "python" + get_python_version()) if standard_lib: return libpython else: diff --git a/Lib/site.py b/Lib/site.py -index 386d2ad..91a2b7f 100644 +index a84e3bb..ba0d3ea 100644 --- a/Lib/site.py +++ b/Lib/site.py -@@ -304,11 +304,15 @@ def getsitepackages(prefixes=None): +@@ -303,11 +303,15 @@ def getsitepackages(prefixes=None): seen.add(prefix) if os.sep == '/': + sitepackages.append(os.path.join(prefix, "lib64", -+ "platform-python", ++ "python" + sys.version[:3], + "site-packages")) sitepackages.append(os.path.join(prefix, "lib", -- "python%d.%d" % sys.version_info[:2], -+ "platform-python", + "python%d.%d" % sys.version_info[:2], "site-packages")) else: sitepackages.append(prefix) @@ -71,69 +58,57 @@ index 386d2ad..91a2b7f 100644 if sys.platform == "darwin": # for framework builds *only* we add the standard Apple diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py -index d35b5eb..af9a664 100644 +index b9bbfe5..2a5f29c 100644 --- a/Lib/sysconfig.py +++ b/Lib/sysconfig.py -@@ -20,14 +20,14 @@ __all__ = [ +@@ -20,10 +20,10 @@ __all__ = [ _INSTALL_SCHEMES = { 'posix_prefix': { - 'stdlib': '{installed_base}/lib/python{py_version_short}', - 'platstdlib': '{platbase}/lib/python{py_version_short}', -- 'purelib': '{base}/lib/python{py_version_short}/site-packages', ++ 'stdlib': '{installed_base}/lib64/python{py_version_short}', ++ 'platstdlib': '{platbase}/lib64/python{py_version_short}', + 'purelib': '{base}/lib/python{py_version_short}/site-packages', - 'platlib': '{platbase}/lib/python{py_version_short}/site-packages', -+ 'stdlib': '{installed_base}/lib64/platform-python', -+ 'platstdlib': '{platbase}/lib64/platform-python', -+ 'purelib': '{base}/lib/platform-python/site-packages', -+ 'platlib': '{platbase}/lib64/platform-python/site-packages', ++ 'platlib': '{platbase}/lib64/python{py_version_short}/site-packages', 'include': -- '{installed_base}/include/python{py_version_short}{abiflags}', -+ '{installed_base}/include/platform-python{abiflags}', + '{installed_base}/include/python{py_version_short}{abiflags}', 'platinclude': -- '{installed_platbase}/include/python{py_version_short}{abiflags}', -+ '{installed_platbase}/include/platform-python{abiflags}', - 'scripts': '{base}/bin', - 'data': '{base}', - }, -@@ -61,11 +61,11 @@ _INSTALL_SCHEMES = { +@@ -61,10 +61,10 @@ _INSTALL_SCHEMES = { 'data': '{userbase}', }, 'posix_user': { - 'stdlib': '{userbase}/lib/python{py_version_short}', - 'platstdlib': '{userbase}/lib/python{py_version_short}', -- 'purelib': '{userbase}/lib/python{py_version_short}/site-packages', ++ 'stdlib': '{userbase}/lib64/python{py_version_short}', ++ 'platstdlib': '{userbase}/lib64/python{py_version_short}', + 'purelib': '{userbase}/lib/python{py_version_short}/site-packages', - 'platlib': '{userbase}/lib/python{py_version_short}/site-packages', -- 'include': '{userbase}/include/python{py_version_short}', -+ 'stdlib': '{userbase}/lib64/platform-python', -+ 'platstdlib': '{userbase}/lib64/platform-python', -+ 'purelib': '{userbase}/lib/platform-python/site-packages', -+ 'platlib': '{userbase}/lib64/platform-python/site-packages', -+ 'include': '{userbase}/include/platform-python', ++ 'platlib': '{userbase}/lib64/python{py_version_short}/site-packages', + 'include': '{userbase}/include/python{py_version_short}', 'scripts': '{userbase}/bin', 'data': '{userbase}', - }, diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py -index 4029617..9c98c06 100644 +index f698927..bc977b5 100644 --- a/Lib/test/test_site.py +++ b/Lib/test/test_site.py -@@ -260,9 +260,9 @@ class HelperFunctionsTests(unittest.TestCase): +@@ -248,8 +248,8 @@ class HelperFunctionsTests(unittest.TestCase): self.assertEqual(dirs[1], wanted) elif os.sep == '/': # OS X non-framwework builds, Linux, FreeBSD, etc - self.assertEqual(len(dirs), 1) - wanted = os.path.join('xoxo', 'lib', -- 'python%d.%d' % sys.version_info[:2], + self.assertEqual(len(dirs), 2) + wanted = os.path.join('xoxo', 'lib64', -+ 'platform-python', + 'python%d.%d' % sys.version_info[:2], 'site-packages') self.assertEqual(dirs[0], wanted) - else: diff --git a/Makefile.pre.in b/Makefile.pre.in -index e61fd55..e7414de 100644 +index 8fa7934..a693917 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in -@@ -133,14 +133,14 @@ LIBDIR= @libdir@ +@@ -126,7 +126,7 @@ LIBDIR= @libdir@ MANDIR= @mandir@ INCLUDEDIR= @includedir@ CONFINCLUDEDIR= $(exec_prefix)/include @@ -142,19 +117,8 @@ index e61fd55..e7414de 100644 ABIFLAGS= @ABIFLAGS@ # Detailed destination directories --BINLIBDEST= $(LIBDIR)/python$(VERSION) --LIBDEST= $(SCRIPTDIR)/python$(VERSION) --INCLUDEPY= $(INCLUDEDIR)/python$(LDVERSION) --CONFINCLUDEPY= $(CONFINCLUDEDIR)/python$(LDVERSION) -+BINLIBDEST= $(LIBDIR)/platform-python -+LIBDEST= $(SCRIPTDIR)/platform-python -+INCLUDEPY= $(INCLUDEDIR)/platform-python$(LDVERSION) -+CONFINCLUDEPY= $(CONFINCLUDEDIR)/platform-python$(LDVERSION) - - # Symbols used for using shared libraries - SHLIB_SUFFIX= @SHLIB_SUFFIX@ diff --git a/Modules/getpath.c b/Modules/getpath.c -index 0f91643..c4055be 100644 +index 65b47a3..eaa756c 100644 --- a/Modules/getpath.c +++ b/Modules/getpath.c @@ -494,7 +494,7 @@ calculate_path(void) @@ -162,7 +126,7 @@ index 0f91643..c4055be 100644 _prefix = Py_DecodeLocale(PREFIX, NULL); _exec_prefix = Py_DecodeLocale(EXEC_PREFIX, NULL); - lib_python = Py_DecodeLocale("lib/python" VERSION, NULL); -+ lib_python = Py_DecodeLocale("lib64/platform-python", NULL); ++ lib_python = Py_DecodeLocale("lib64/python" VERSION, NULL); if (!_pythonpath || !_prefix || !_exec_prefix || !lib_python) { Py_FatalError( @@ -185,10 +149,10 @@ index 0f91643..c4055be 100644 /* If we found EXEC_PREFIX do *not* reduce it! (Yet.) */ diff --git a/setup.py b/setup.py -index fe47797..3e5018a 100644 +index 0f2dfc4..da37896 100644 --- a/setup.py +++ b/setup.py -@@ -491,7 +491,7 @@ class PyBuildExt(build_ext): +@@ -492,7 +492,7 @@ class PyBuildExt(build_ext): # directories (i.e. '.' and 'Include') must be first. See issue # 10520. if not cross_compiling: @@ -197,7 +161,7 @@ index fe47797..3e5018a 100644 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: -@@ -783,11 +783,11 @@ class PyBuildExt(build_ext): +@@ -780,11 +780,11 @@ class PyBuildExt(build_ext): elif curses_library: readline_libs.append(curses_library) elif self.compiler.find_library_file(lib_dirs + @@ -211,7 +175,7 @@ index fe47797..3e5018a 100644 extra_link_args=readline_extra_link_args, libraries=readline_libs) ) else: -@@ -824,8 +824,8 @@ class PyBuildExt(build_ext): +@@ -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/00272-fix-ftplib-to-reject-newlines.patch b/00272-fix-ftplib-to-reject-newlines.patch deleted file mode 100644 index 66486a8..0000000 --- a/00272-fix-ftplib-to-reject-newlines.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 8c2d4cf092c5f0335e7982392a33927579c4d512 Mon Sep 17 00:00:00 2001 -From: Dong-hee Na -Date: Wed, 26 Jul 2017 21:11:25 +0900 -Subject: [PATCH] [3.6] bpo-30119: fix ftplib.FTP.putline() to throw an error - for a illegal command (#1214) (#2886) - ---- - Lib/ftplib.py | 2 ++ - Lib/test/test_ftplib.py | 6 +++++- - Misc/NEWS.d/next/Library/2017-07-26-15-15-00.bpo-30119.DZ6C_S.rst | 2 ++ - 3 files changed, 9 insertions(+), 1 deletion(-) - create mode 100644 Misc/NEWS.d/next/Library/2017-07-26-15-15-00.bpo-30119.DZ6C_S.rst - -diff --git a/Lib/ftplib.py b/Lib/ftplib.py -index 8f36f537e8a..a02e595cb02 100644 ---- a/Lib/ftplib.py -+++ b/Lib/ftplib.py -@@ -186,6 +186,8 @@ def sanitize(self, s): - - # Internal: send one line to the server, appending CRLF - def putline(self, line): -+ if '\r' in line or '\n' in line: -+ raise ValueError('an illegal newline character should not be contained') - line = line + CRLF - if self.debugging > 1: - print('*put*', self.sanitize(line)) -diff --git a/Lib/test/test_ftplib.py b/Lib/test/test_ftplib.py -index 12fabc5e8be..a561e9efa03 100644 ---- a/Lib/test/test_ftplib.py -+++ b/Lib/test/test_ftplib.py -@@ -484,6 +484,9 @@ def test_sanitize(self): - self.assertEqual(self.client.sanitize('PASS 12345'), repr('PASS *****')) - - def test_exceptions(self): -+ self.assertRaises(ValueError, self.client.sendcmd, 'echo 40\r\n0') -+ self.assertRaises(ValueError, self.client.sendcmd, 'echo 40\n0') -+ self.assertRaises(ValueError, self.client.sendcmd, 'echo 40\r0') - self.assertRaises(ftplib.error_temp, self.client.sendcmd, 'echo 400') - self.assertRaises(ftplib.error_temp, self.client.sendcmd, 'echo 499') - self.assertRaises(ftplib.error_perm, self.client.sendcmd, 'echo 500') -@@ -492,7 +495,8 @@ def test_exceptions(self): - - def test_all_errors(self): - exceptions = (ftplib.error_reply, ftplib.error_temp, ftplib.error_perm, -- ftplib.error_proto, ftplib.Error, OSError, EOFError) -+ ftplib.error_proto, ftplib.Error, OSError, -+ EOFError) - for x in exceptions: - try: - raise x('exception not included in all_errors set') -diff --git a/Misc/NEWS.d/next/Library/2017-07-26-15-15-00.bpo-30119.DZ6C_S.rst b/Misc/NEWS.d/next/Library/2017-07-26-15-15-00.bpo-30119.DZ6C_S.rst -new file mode 100644 -index 00000000000..a37d3703842 ---- /dev/null -+++ b/Misc/NEWS.d/next/Library/2017-07-26-15-15-00.bpo-30119.DZ6C_S.rst -@@ -0,0 +1,2 @@ -+ftplib.FTP.putline() now throws ValueError on commands that contains CR or -+LF. Patch by Dong-hee Na. diff --git a/platform-python.spec b/platform-python.spec index b424bef..8c86907 100644 --- a/platform-python.spec +++ b/platform-python.spec @@ -82,7 +82,7 @@ # (if these get out of sync, the payload of the libs subpackage will fail # and halt the build) %global py_SOVERSION 1.0 -%global py_INSTSONAME_optimized libpython%{LDVERSION_optimized}.so.%{py_SOVERSION} +%global py_INSTSONAME_optimized libplatformpython%{LDVERSION_optimized}.so.%{py_SOVERSION} %global with_gdb_hooks 1 @@ -101,7 +101,7 @@ %global with_computed_gotos yes # Turn this to 0 to turn off the "check" phase: -%global run_selftest_suite 1 +%global run_selftest_suite 0 # We want to byte-compile the .py files within the packages using the new # python3 binary. @@ -437,12 +437,8 @@ Patch270: 00270-fix-ssl-alpn-hook-test.patch # Reported upstream: http://bugs.python.org/issue31034 Patch271: 00271-asyncio-get-default-signal-handler.patch -# 00272 # -# Reject newline characters in ftplib.FTP.putline() arguments to -# avoid FTP protocol stream injection via malicious URLs. -# rhbz#1478916 -# Fixed upstream: http://bugs.python.org/issue30119 -Patch272: 00272-fix-ftplib-to-reject-newlines.patch + +Patch2000: 02000-platform-python.patch # (New patches go here ^^^) # @@ -668,6 +664,10 @@ sed -r -i s/'_PIP_VERSION = "[0-9.]+"'/'_PIP_VERSION = "%{pip_version}"'/ Lib/en %patch271 -p1 %patch272 -p1 + +# Platform python specific patch +%patch2000 -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. #