Matej Cepl
8d39a136b6
- bpo#42988 (bsc#1183374) CVE-2021-3426: Remove the getfile feature of the pydoc module which could be abused to read arbitrary files on the disk (directory traversal vulnerability). Moreover, even source code of Python modules can contain sensitive data like passwords. Vulnerability reported by David Schwörer. - bpo-43285: ftplib no longer trusts the IP address value returned from the server in response to the PASV command by default. This prevents a malicious FTP server from using the response to probe IPv4 address and port combinations on the client network. - Code that requires the former vulnerable behavior may set a trust_server_pasv_ipv4_address attribute on their ftplib.FTP instances to True to re-enable it. - bpo-43439: Add audit hooks for gc.get_objects(), gc.get_referrers() and gc.get_referents(). Patch by Pablo Galindo. - bpo-43660: Fix crash that happens when replacing sys.stderr with a callable that can remove the object while an exception is being printed. Patch by Pablo Galindo. - bpo-35883: Python no longer fails at startup with a fatal error if a command line argument contains an invalid Unicode character. The Py_DecodeLocale() function now escapes byte sequences which would be decoded as Unicode characters outside the [U+0000; U+10ffff] range. - bpo-43406: Fix a possible race condition where PyErr_CheckSignals tries to execute a non-Python signal handler. - bpo-35930: Raising an exception raised in a “future” instance OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python38?expand=0&rev=62
237 lines
9.9 KiB
Diff
237 lines
9.9 KiB
Diff
From 81904771db8b112c8617a111e989b68e55af7a9c Mon Sep 17 00:00:00 2001
|
|
From: David Malcolm <dmalcolm@redhat.com>
|
|
Date: Wed, 13 Jan 2010 21:25:18 +0000
|
|
Subject: [PATCH] 00102: Change the various install paths to use /usr/lib64/
|
|
instead or /usr/lib/
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Only used when "%{_lib}" == "lib64".
|
|
|
|
Co-authored-by: David Malcolm <dmalcolm@redhat.com>
|
|
Co-authored-by: Thomas Spura <tomspur@fedoraproject.org>
|
|
Co-authored-by: Slavek Kabrda <bkabrda@redhat.com>
|
|
Co-authored-by: Matej Stuchlik <mstuchli@redhat.com>
|
|
Co-authored-by: Tomas Orsava <torsava@redhat.com>
|
|
Co-authored-by: Charalampos Stratakis <cstratak@redhat.com>
|
|
Co-authored-by: Petr Viktorin <pviktori@redhat.com>
|
|
Co-authored-by: Miro Hrončok <miro@hroncok.cz>
|
|
Co-authored-by: Iryna Shcherbina <shcherbina.iryna@gmail.com>
|
|
---
|
|
Lib/distutils/command/install.py | 4 ++--
|
|
Lib/distutils/sysconfig.py | 6 +++++-
|
|
Lib/distutils/tests/test_install.py | 3 ++-
|
|
Lib/site.py | 4 ++++
|
|
Lib/sysconfig.py | 12 ++++++------
|
|
Lib/test/test_site.py | 4 ++--
|
|
Makefile.pre.in | 2 +-
|
|
Modules/getpath.c | 6 +++---
|
|
configure | 4 ++--
|
|
configure.ac | 4 ++--
|
|
setup.py | 6 +++---
|
|
11 files changed, 32 insertions(+), 23 deletions(-)
|
|
|
|
--- 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',
|
|
- 'platlib': '$platbase/lib/python$py_version_short/site-packages',
|
|
+ 'platlib': '$platbase/lib64/python$py_version_short/site-packages',
|
|
'headers': '$base/include/python$py_version_short$abiflags/$dist_name',
|
|
'scripts': '$base/bin',
|
|
'data' : '$base',
|
|
},
|
|
'unix_home': {
|
|
'purelib': '$base/lib/python',
|
|
- 'platlib': '$base/lib/python',
|
|
+ 'platlib': '$base/lib64/python',
|
|
'headers': '$base/include/python/$dist_name',
|
|
'scripts': '$base/bin',
|
|
'data' : '$base',
|
|
--- a/Lib/distutils/sysconfig.py
|
|
+++ b/Lib/distutils/sysconfig.py
|
|
@@ -146,8 +146,12 @@ def get_python_lib(plat_specific=0, stan
|
|
prefix = plat_specific and EXEC_PREFIX or PREFIX
|
|
|
|
if os.name == "posix":
|
|
+ if plat_specific or standard_lib:
|
|
+ lib = "lib64"
|
|
+ else:
|
|
+ lib = "lib"
|
|
libpython = os.path.join(prefix,
|
|
- "lib", "python" + get_python_version())
|
|
+ lib, "python" + get_python_version())
|
|
if standard_lib:
|
|
return libpython
|
|
else:
|
|
--- a/Lib/distutils/tests/test_install.py
|
|
+++ b/Lib/distutils/tests/test_install.py
|
|
@@ -57,8 +57,9 @@ class InstallTestCase(support.TempdirMan
|
|
self.assertEqual(got, expected)
|
|
|
|
libdir = os.path.join(destination, "lib", "python")
|
|
+ platlibdir = os.path.join(destination, "lib", "python")
|
|
check_path(cmd.install_lib, libdir)
|
|
- check_path(cmd.install_platlib, libdir)
|
|
+ check_path(cmd.install_platlib, platlibdir)
|
|
check_path(cmd.install_purelib, libdir)
|
|
check_path(cmd.install_headers,
|
|
os.path.join(destination, "include", "python", "foopkg"))
|
|
--- a/Lib/site.py
|
|
+++ b/Lib/site.py
|
|
@@ -335,11 +335,15 @@ def getsitepackages(prefixes=None):
|
|
seen.add(prefix)
|
|
|
|
if os.sep == '/':
|
|
+ sitepackages.append(os.path.join(prefix, "lib64",
|
|
+ "python" + sys.version[:3],
|
|
+ "site-packages"))
|
|
sitepackages.append(os.path.join(prefix, "lib",
|
|
"python%d.%d" % sys.version_info[:2],
|
|
"site-packages"))
|
|
else:
|
|
sitepackages.append(prefix)
|
|
+ sitepackages.append(os.path.join(prefix, "lib64", "site-packages"))
|
|
sitepackages.append(os.path.join(prefix, "lib", "site-packages"))
|
|
return sitepackages
|
|
|
|
--- a/Lib/sysconfig.py
|
|
+++ b/Lib/sysconfig.py
|
|
@@ -20,10 +20,10 @@ __all__ = [
|
|
|
|
_INSTALL_SCHEMES = {
|
|
'posix_prefix': {
|
|
- 'stdlib': '{installed_base}/lib/python{py_version_short}',
|
|
- 'platstdlib': '{platbase}/lib/python{py_version_short}',
|
|
+ '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',
|
|
+ 'platlib': '{platbase}/lib64/python{py_version_short}/site-packages',
|
|
'include':
|
|
'{installed_base}/include/python{py_version_short}{abiflags}',
|
|
'platinclude':
|
|
@@ -62,10 +62,10 @@ _INSTALL_SCHEMES = {
|
|
'data': '{userbase}',
|
|
},
|
|
'posix_user': {
|
|
- 'stdlib': '{userbase}/lib/python{py_version_short}',
|
|
- 'platstdlib': '{userbase}/lib/python{py_version_short}',
|
|
+ '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',
|
|
+ 'platlib': '{userbase}/lib64/python{py_version_short}/site-packages',
|
|
'include': '{userbase}/include/python{py_version_short}',
|
|
'scripts': '{userbase}/bin',
|
|
'data': '{userbase}',
|
|
--- a/Lib/test/test_site.py
|
|
+++ b/Lib/test/test_site.py
|
|
@@ -267,8 +267,8 @@ class HelperFunctionsTests(unittest.Test
|
|
dirs = site.getsitepackages()
|
|
if os.sep == '/':
|
|
# OS X, Linux, FreeBSD, etc
|
|
- self.assertEqual(len(dirs), 1)
|
|
- wanted = os.path.join('xoxo', 'lib',
|
|
+ self.assertEqual(len(dirs), 2)
|
|
+ wanted = os.path.join('xoxo', 'lib64',
|
|
'python%d.%d' % sys.version_info[:2],
|
|
'site-packages')
|
|
self.assertEqual(dirs[0], wanted)
|
|
--- a/Makefile.pre.in
|
|
+++ b/Makefile.pre.in
|
|
@@ -143,7 +143,7 @@ LIBDIR= @libdir@
|
|
MANDIR= @mandir@
|
|
INCLUDEDIR= @includedir@
|
|
CONFINCLUDEDIR= $(exec_prefix)/include
|
|
-SCRIPTDIR= $(prefix)/lib
|
|
+SCRIPTDIR= $(prefix)/lib64
|
|
ABIFLAGS= @ABIFLAGS@
|
|
|
|
# Detailed destination directories
|
|
--- a/Modules/getpath.c
|
|
+++ b/Modules/getpath.c
|
|
@@ -730,7 +730,7 @@ calculate_exec_prefix(PyCalculatePath *c
|
|
if (safe_wcscpy(exec_prefix, calculate->exec_prefix, exec_prefix_len) < 0) {
|
|
return PATHLEN_ERR();
|
|
}
|
|
- status = joinpath(exec_prefix, L"lib/lib-dynload", exec_prefix_len);
|
|
+ status = joinpath(exec_prefix, L"lib64/lib-dynload", exec_prefix_len);
|
|
if (_PyStatus_EXCEPTION(status)) {
|
|
return status;
|
|
}
|
|
@@ -1067,7 +1067,7 @@ calculate_zip_path(PyCalculatePath *calc
|
|
return PATHLEN_ERR();
|
|
}
|
|
}
|
|
- status = joinpath(zip_path, L"lib/python00.zip", zip_path_len);
|
|
+ status = joinpath(zip_path, L"lib64/python00.zip", zip_path_len);
|
|
if (_PyStatus_EXCEPTION(status)) {
|
|
return status;
|
|
}
|
|
@@ -1197,7 +1197,7 @@ calculate_init(PyCalculatePath *calculat
|
|
if (!calculate->exec_prefix) {
|
|
return DECODE_LOCALE_ERR("EXEC_PREFIX define", len);
|
|
}
|
|
- calculate->lib_python = Py_DecodeLocale("lib/python" VERSION, &len);
|
|
+ calculate->lib_python = Py_DecodeLocale("lib64/python" VERSION, &len);
|
|
if (!calculate->lib_python) {
|
|
return DECODE_LOCALE_ERR("EXEC_PREFIX define", len);
|
|
}
|
|
--- a/configure
|
|
+++ b/configure
|
|
@@ -15222,9 +15222,9 @@ fi
|
|
|
|
|
|
if test x$PLATFORM_TRIPLET = x; then
|
|
- LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}"
|
|
+ LIBPL='$(prefix)'"/lib64/python${VERSION}/config-${LDVERSION}"
|
|
else
|
|
- LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}"
|
|
+ LIBPL='$(prefix)'"/lib64/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}"
|
|
fi
|
|
|
|
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -4698,9 +4698,9 @@ fi
|
|
dnl define LIBPL after ABIFLAGS and LDVERSION is defined.
|
|
AC_SUBST(PY_ENABLE_SHARED)
|
|
if test x$PLATFORM_TRIPLET = x; then
|
|
- LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}"
|
|
+ LIBPL='$(prefix)'"/lib64/python${VERSION}/config-${LDVERSION}"
|
|
else
|
|
- LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}"
|
|
+ LIBPL='$(prefix)'"/lib64/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}"
|
|
fi
|
|
AC_SUBST(LIBPL)
|
|
|
|
--- a/setup.py
|
|
+++ b/setup.py
|
|
@@ -649,7 +649,7 @@ class PyBuildExt(build_ext):
|
|
# directories (i.e. '.' and 'Include') must be first. See issue
|
|
# 10520.
|
|
if not CROSS_COMPILING:
|
|
- add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
|
|
+ add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib64')
|
|
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:
|
|
@@ -953,11 +953,11 @@ class PyBuildExt(build_ext):
|
|
elif curses_library:
|
|
readline_libs.append(curses_library)
|
|
elif self.compiler.find_library_file(self.lib_dirs +
|
|
- ['/usr/lib/termcap'],
|
|
+ ['/usr/lib64/termcap'],
|
|
'termcap'):
|
|
readline_libs.append('termcap')
|
|
self.add(Extension('readline', ['readline.c'],
|
|
- library_dirs=['/usr/lib/termcap'],
|
|
+ library_dirs=['/usr/lib64/termcap'],
|
|
extra_link_args=readline_extra_link_args,
|
|
libraries=readline_libs))
|
|
else:
|