import python3-3.6.8-30.el8
This commit is contained in:
parent
15200b22d6
commit
60ad1ecf4f
@ -200,3 +200,19 @@ index 0f2dfc4..da37896 100644
|
|||||||
] )
|
] )
|
||||||
|
|
||||||
if (ssl_incs is not None and
|
if (ssl_incs is not None and
|
||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index 01c66fe..1e6d515 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -4772,9 +4772,9 @@ AC_MSG_RESULT($LDVERSION)
|
||||||
|
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)
|
||||||
|
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
diff -r 39b9b05c3085 Lib/distutils/sysconfig.py
|
|
||||||
--- a/Lib/distutils/sysconfig.py Wed Apr 10 00:27:23 2013 +0200
|
|
||||||
+++ b/Lib/distutils/sysconfig.py Wed Apr 10 10:14:18 2013 +0200
|
|
||||||
@@ -362,7 +362,10 @@
|
|
||||||
done[n] = item = ""
|
|
||||||
if found:
|
|
||||||
after = value[m.end():]
|
|
||||||
- value = value[:m.start()] + item + after
|
|
||||||
+ value = value[:m.start()]
|
|
||||||
+ if item.strip() not in value:
|
|
||||||
+ value += item
|
|
||||||
+ value += after
|
|
||||||
if "$" in after:
|
|
||||||
notdone[name] = value
|
|
||||||
else:
|
|
||||||
diff -r 39b9b05c3085 Lib/sysconfig.py
|
|
||||||
--- a/Lib/sysconfig.py Wed Apr 10 00:27:23 2013 +0200
|
|
||||||
+++ b/Lib/sysconfig.py Wed Apr 10 10:14:18 2013 +0200
|
|
||||||
@@ -296,7 +296,10 @@
|
|
||||||
|
|
||||||
if found:
|
|
||||||
after = value[m.end():]
|
|
||||||
- value = value[:m.start()] + item + after
|
|
||||||
+ value = value[:m.start()]
|
|
||||||
+ if item.strip() not in value:
|
|
||||||
+ value += item
|
|
||||||
+ value += after
|
|
||||||
if "$" in after:
|
|
||||||
notdone[name] = value
|
|
||||||
else:
|
|
@ -1,12 +0,0 @@
|
|||||||
diff -up Python-3.5.0/Makefile.pre.in.lib Python-3.5.0/Makefile.pre.in
|
|
||||||
--- Python-3.5.0/Makefile.pre.in.lib 2015-09-21 15:39:47.928286620 +0200
|
|
||||||
+++ Python-3.5.0/Makefile.pre.in 2015-09-21 15:42:58.004042762 +0200
|
|
||||||
@@ -1340,7 +1340,7 @@ inclinstall:
|
|
||||||
|
|
||||||
# Install the library and miscellaneous stuff needed for extending/embedding
|
|
||||||
# This goes into $(exec_prefix)
|
|
||||||
-LIBPL= @LIBPL@
|
|
||||||
+LIBPL= $(LIBDEST)/config-$(LDVERSION)-$(MULTIARCH)
|
|
||||||
|
|
||||||
# pkgconfig directory
|
|
||||||
LIBPC= $(LIBDIR)/pkgconfig
|
|
File diff suppressed because it is too large
Load Diff
22
SOURCES/00338-fix-test_gdb-for-LTO.patch
Normal file
22
SOURCES/00338-fix-test_gdb-for-LTO.patch
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
diff --git a/Lib/test/test_gdb.py b/Lib/test/test_gdb.py
|
||||||
|
index 9c15fca..c972409 100644
|
||||||
|
--- a/Lib/test/test_gdb.py
|
||||||
|
+++ b/Lib/test/test_gdb.py
|
||||||
|
@@ -279,8 +279,15 @@ class DebuggerTests(unittest.TestCase):
|
||||||
|
# gdb can insert additional '\n' and space characters in various places
|
||||||
|
# in its output, depending on the width of the terminal it's connected
|
||||||
|
# to (using its "wrap_here" function)
|
||||||
|
- m = re.match(r'.*#0\s+builtin_id\s+\(self\=.*,\s+v=\s*(.*?)\)\s+at\s+\S*Python/bltinmodule.c.*',
|
||||||
|
- gdb_output, re.DOTALL)
|
||||||
|
+ m = re.search(
|
||||||
|
+ # Match '#0 builtin_id(self=..., v=...)'
|
||||||
|
+ r'#0\s+builtin_id\s+\(self\=.*,\s+v=\s*(.*?)?\)'
|
||||||
|
+ # Match ' at Python/bltinmodule.c'.
|
||||||
|
+ # bpo-38239: builtin_id() is defined in Python/bltinmodule.c,
|
||||||
|
+ # but accept any "Directory\file.c" to support Link Time
|
||||||
|
+ # Optimization (LTO).
|
||||||
|
+ r'\s+at\s+\S*[A-Za-z]+/[A-Za-z0-9_-]+\.c',
|
||||||
|
+ gdb_output, re.DOTALL)
|
||||||
|
if not m:
|
||||||
|
self.fail('Unexpected gdb output: %r\n%s' % (gdb_output, gdb_output))
|
||||||
|
return m.group(1), gdb_output
|
54
SOURCES/00344-CVE-2019-16935.patch
Normal file
54
SOURCES/00344-CVE-2019-16935.patch
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
diff --git a/Lib/test/test_docxmlrpc.py b/Lib/test/test_docxmlrpc.py
|
||||||
|
index 0090333..d2adb21 100644
|
||||||
|
--- a/Lib/test/test_docxmlrpc.py
|
||||||
|
+++ b/Lib/test/test_docxmlrpc.py
|
||||||
|
@@ -1,5 +1,6 @@
|
||||||
|
from xmlrpc.server import DocXMLRPCServer
|
||||||
|
import http.client
|
||||||
|
+import re
|
||||||
|
import sys
|
||||||
|
from test import support
|
||||||
|
threading = support.import_module('threading')
|
||||||
|
@@ -193,6 +194,21 @@ class DocXMLRPCHTTPGETServer(unittest.TestCase):
|
||||||
|
b'method_annotation</strong></a>(x: bytes)</dt></dl>'),
|
||||||
|
response.read())
|
||||||
|
|
||||||
|
+ def test_server_title_escape(self):
|
||||||
|
+ # bpo-38243: Ensure that the server title and documentation
|
||||||
|
+ # are escaped for HTML.
|
||||||
|
+ self.serv.set_server_title('test_title<script>')
|
||||||
|
+ self.serv.set_server_documentation('test_documentation<script>')
|
||||||
|
+ self.assertEqual('test_title<script>', self.serv.server_title)
|
||||||
|
+ self.assertEqual('test_documentation<script>',
|
||||||
|
+ self.serv.server_documentation)
|
||||||
|
+
|
||||||
|
+ generated = self.serv.generate_html_documentation()
|
||||||
|
+ title = re.search(r'<title>(.+?)</title>', generated).group()
|
||||||
|
+ documentation = re.search(r'<p><tt>(.+?)</tt></p>', generated).group()
|
||||||
|
+ self.assertEqual('<title>Python: test_title<script></title>', title)
|
||||||
|
+ self.assertEqual('<p><tt>test_documentation<script></tt></p>', documentation)
|
||||||
|
+
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
|
diff --git a/Lib/xmlrpc/server.py b/Lib/xmlrpc/server.py
|
||||||
|
index 3e0dca0..efe5937 100644
|
||||||
|
--- a/Lib/xmlrpc/server.py
|
||||||
|
+++ b/Lib/xmlrpc/server.py
|
||||||
|
@@ -106,6 +106,7 @@ server.handle_request()
|
||||||
|
|
||||||
|
from xmlrpc.client import Fault, dumps, loads, gzip_encode, gzip_decode
|
||||||
|
from http.server import BaseHTTPRequestHandler
|
||||||
|
+import html
|
||||||
|
import http.server
|
||||||
|
import socketserver
|
||||||
|
import sys
|
||||||
|
@@ -904,7 +905,7 @@ class XMLRPCDocGenerator:
|
||||||
|
methods
|
||||||
|
)
|
||||||
|
|
||||||
|
- return documenter.page(self.server_title, documentation)
|
||||||
|
+ return documenter.page(html.escape(self.server_title), documentation)
|
||||||
|
|
||||||
|
class DocXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
|
||||||
|
"""XML-RPC and documentation request handler class.
|
44
SOURCES/00345-fix-test_site-with-extra-pth-files.patch
Normal file
44
SOURCES/00345-fix-test_site-with-extra-pth-files.patch
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py
|
||||||
|
index d0cd84f..9d2c28c 100644
|
||||||
|
--- a/Lib/test/test_site.py
|
||||||
|
+++ b/Lib/test/test_site.py
|
||||||
|
@@ -10,6 +10,7 @@ from test import support
|
||||||
|
from test.support import (captured_stderr, TESTFN, EnvironmentVarGuard,
|
||||||
|
change_cwd)
|
||||||
|
import builtins
|
||||||
|
+import glob
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import re
|
||||||
|
@@ -500,6 +501,23 @@ class ImportSideEffectTests(unittest.TestCase):
|
||||||
|
class StartupImportTests(unittest.TestCase):
|
||||||
|
|
||||||
|
def test_startup_imports(self):
|
||||||
|
+ # Get sys.path in isolated mode (python3 -I)
|
||||||
|
+ popen = subprocess.Popen([sys.executable, '-I', '-c',
|
||||||
|
+ 'import sys; print(repr(sys.path))'],
|
||||||
|
+ stdout=subprocess.PIPE,
|
||||||
|
+ encoding='utf-8')
|
||||||
|
+ stdout = popen.communicate()[0]
|
||||||
|
+ self.assertEqual(popen.returncode, 0, repr(stdout))
|
||||||
|
+ isolated_paths = eval(stdout)
|
||||||
|
+
|
||||||
|
+ # bpo-27807: Even with -I, the site module executes all .pth files
|
||||||
|
+ # found in sys.path (see site.addpackage()). Skip the test if at least
|
||||||
|
+ # one .pth file is found.
|
||||||
|
+ for path in isolated_paths:
|
||||||
|
+ pth_files = glob.glob(os.path.join(path, "*.pth"))
|
||||||
|
+ if pth_files:
|
||||||
|
+ self.skipTest(f"found {len(pth_files)} .pth files in: {path}")
|
||||||
|
+
|
||||||
|
# This tests checks which modules are loaded by Python when it
|
||||||
|
# initially starts upon startup.
|
||||||
|
popen = subprocess.Popen([sys.executable, '-I', '-v', '-c',
|
||||||
|
@@ -508,6 +526,7 @@ class StartupImportTests(unittest.TestCase):
|
||||||
|
stderr=subprocess.PIPE,
|
||||||
|
encoding='utf-8')
|
||||||
|
stdout, stderr = popen.communicate()
|
||||||
|
+ self.assertEqual(popen.returncode, 0, (stdout, stderr))
|
||||||
|
modules = eval(stdout)
|
||||||
|
|
||||||
|
self.assertIn('site', modules)
|
193
SOURCES/00346-CVE-2020-8492.patch
Normal file
193
SOURCES/00346-CVE-2020-8492.patch
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py
|
||||||
|
index 876fcd4..fe9a32b 100644
|
||||||
|
--- a/Lib/test/test_urllib2.py
|
||||||
|
+++ b/Lib/test/test_urllib2.py
|
||||||
|
@@ -1445,40 +1445,64 @@ class HandlerTests(unittest.TestCase):
|
||||||
|
bypass = {'exclude_simple': True, 'exceptions': []}
|
||||||
|
self.assertTrue(_proxy_bypass_macosx_sysconf('test', bypass))
|
||||||
|
|
||||||
|
- def test_basic_auth(self, quote_char='"'):
|
||||||
|
- opener = OpenerDirector()
|
||||||
|
- password_manager = MockPasswordManager()
|
||||||
|
- auth_handler = urllib.request.HTTPBasicAuthHandler(password_manager)
|
||||||
|
- realm = "ACME Widget Store"
|
||||||
|
- http_handler = MockHTTPHandler(
|
||||||
|
- 401, 'WWW-Authenticate: Basic realm=%s%s%s\r\n\r\n' %
|
||||||
|
- (quote_char, realm, quote_char))
|
||||||
|
- opener.add_handler(auth_handler)
|
||||||
|
- opener.add_handler(http_handler)
|
||||||
|
- self._test_basic_auth(opener, auth_handler, "Authorization",
|
||||||
|
- realm, http_handler, password_manager,
|
||||||
|
- "http://acme.example.com/protected",
|
||||||
|
- "http://acme.example.com/protected",
|
||||||
|
- )
|
||||||
|
-
|
||||||
|
- def test_basic_auth_with_single_quoted_realm(self):
|
||||||
|
- self.test_basic_auth(quote_char="'")
|
||||||
|
-
|
||||||
|
- def test_basic_auth_with_unquoted_realm(self):
|
||||||
|
- opener = OpenerDirector()
|
||||||
|
- password_manager = MockPasswordManager()
|
||||||
|
- auth_handler = urllib.request.HTTPBasicAuthHandler(password_manager)
|
||||||
|
- realm = "ACME Widget Store"
|
||||||
|
- http_handler = MockHTTPHandler(
|
||||||
|
- 401, 'WWW-Authenticate: Basic realm=%s\r\n\r\n' % realm)
|
||||||
|
- opener.add_handler(auth_handler)
|
||||||
|
- opener.add_handler(http_handler)
|
||||||
|
- with self.assertWarns(UserWarning):
|
||||||
|
+ def check_basic_auth(self, headers, realm):
|
||||||
|
+ with self.subTest(realm=realm, headers=headers):
|
||||||
|
+ opener = OpenerDirector()
|
||||||
|
+ password_manager = MockPasswordManager()
|
||||||
|
+ auth_handler = urllib.request.HTTPBasicAuthHandler(password_manager)
|
||||||
|
+ body = '\r\n'.join(headers) + '\r\n\r\n'
|
||||||
|
+ http_handler = MockHTTPHandler(401, body)
|
||||||
|
+ opener.add_handler(auth_handler)
|
||||||
|
+ opener.add_handler(http_handler)
|
||||||
|
self._test_basic_auth(opener, auth_handler, "Authorization",
|
||||||
|
- realm, http_handler, password_manager,
|
||||||
|
- "http://acme.example.com/protected",
|
||||||
|
- "http://acme.example.com/protected",
|
||||||
|
- )
|
||||||
|
+ realm, http_handler, password_manager,
|
||||||
|
+ "http://acme.example.com/protected",
|
||||||
|
+ "http://acme.example.com/protected")
|
||||||
|
+
|
||||||
|
+ def test_basic_auth(self):
|
||||||
|
+ realm = "realm2@example.com"
|
||||||
|
+ realm2 = "realm2@example.com"
|
||||||
|
+ basic = f'Basic realm="{realm}"'
|
||||||
|
+ basic2 = f'Basic realm="{realm2}"'
|
||||||
|
+ other_no_realm = 'Otherscheme xxx'
|
||||||
|
+ digest = (f'Digest realm="{realm2}", '
|
||||||
|
+ f'qop="auth, auth-int", '
|
||||||
|
+ f'nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", '
|
||||||
|
+ f'opaque="5ccc069c403ebaf9f0171e9517f40e41"')
|
||||||
|
+ for realm_str in (
|
||||||
|
+ # test "quote" and 'quote'
|
||||||
|
+ f'Basic realm="{realm}"',
|
||||||
|
+ f"Basic realm='{realm}'",
|
||||||
|
+
|
||||||
|
+ # charset is ignored
|
||||||
|
+ f'Basic realm="{realm}", charset="UTF-8"',
|
||||||
|
+
|
||||||
|
+ # Multiple challenges per header
|
||||||
|
+ f'{basic}, {basic2}',
|
||||||
|
+ f'{basic}, {other_no_realm}',
|
||||||
|
+ f'{other_no_realm}, {basic}',
|
||||||
|
+ f'{basic}, {digest}',
|
||||||
|
+ f'{digest}, {basic}',
|
||||||
|
+ ):
|
||||||
|
+ headers = [f'WWW-Authenticate: {realm_str}']
|
||||||
|
+ self.check_basic_auth(headers, realm)
|
||||||
|
+
|
||||||
|
+ # no quote: expect a warning
|
||||||
|
+ with support.check_warnings(("Basic Auth Realm was unquoted",
|
||||||
|
+ UserWarning)):
|
||||||
|
+ headers = [f'WWW-Authenticate: Basic realm={realm}']
|
||||||
|
+ self.check_basic_auth(headers, realm)
|
||||||
|
+
|
||||||
|
+ # Multiple headers: one challenge per header.
|
||||||
|
+ # Use the first Basic realm.
|
||||||
|
+ for challenges in (
|
||||||
|
+ [basic, basic2],
|
||||||
|
+ [basic, digest],
|
||||||
|
+ [digest, basic],
|
||||||
|
+ ):
|
||||||
|
+ headers = [f'WWW-Authenticate: {challenge}'
|
||||||
|
+ for challenge in challenges]
|
||||||
|
+ self.check_basic_auth(headers, realm)
|
||||||
|
|
||||||
|
def test_proxy_basic_auth(self):
|
||||||
|
opener = OpenerDirector()
|
||||||
|
diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py
|
||||||
|
index c9945d9..6624e04 100644
|
||||||
|
--- a/Lib/urllib/request.py
|
||||||
|
+++ b/Lib/urllib/request.py
|
||||||
|
@@ -945,8 +945,15 @@ class AbstractBasicAuthHandler:
|
||||||
|
|
||||||
|
# allow for double- and single-quoted realm values
|
||||||
|
# (single quotes are a violation of the RFC, but appear in the wild)
|
||||||
|
- rx = re.compile('(?:.*,)*[ \t]*([^ \t]+)[ \t]+'
|
||||||
|
- 'realm=(["\']?)([^"\']*)\\2', re.I)
|
||||||
|
+ rx = re.compile('(?:^|,)' # start of the string or ','
|
||||||
|
+ '[ \t]*' # optional whitespaces
|
||||||
|
+ '([^ \t]+)' # scheme like "Basic"
|
||||||
|
+ '[ \t]+' # mandatory whitespaces
|
||||||
|
+ # realm=xxx
|
||||||
|
+ # realm='xxx'
|
||||||
|
+ # realm="xxx"
|
||||||
|
+ 'realm=(["\']?)([^"\']*)\\2',
|
||||||
|
+ re.I)
|
||||||
|
|
||||||
|
# XXX could pre-emptively send auth info already accepted (RFC 2617,
|
||||||
|
# end of section 2, and section 1.2 immediately after "credentials"
|
||||||
|
@@ -958,27 +965,51 @@ class AbstractBasicAuthHandler:
|
||||||
|
self.passwd = password_mgr
|
||||||
|
self.add_password = self.passwd.add_password
|
||||||
|
|
||||||
|
+ def _parse_realm(self, header):
|
||||||
|
+ # parse WWW-Authenticate header: accept multiple challenges per header
|
||||||
|
+ found_challenge = False
|
||||||
|
+ for mo in AbstractBasicAuthHandler.rx.finditer(header):
|
||||||
|
+ scheme, quote, realm = mo.groups()
|
||||||
|
+ if quote not in ['"', "'"]:
|
||||||
|
+ warnings.warn("Basic Auth Realm was unquoted",
|
||||||
|
+ UserWarning, 3)
|
||||||
|
+
|
||||||
|
+ yield (scheme, realm)
|
||||||
|
+
|
||||||
|
+ found_challenge = True
|
||||||
|
+
|
||||||
|
+ if not found_challenge:
|
||||||
|
+ if header:
|
||||||
|
+ scheme = header.split()[0]
|
||||||
|
+ else:
|
||||||
|
+ scheme = ''
|
||||||
|
+ yield (scheme, None)
|
||||||
|
+
|
||||||
|
def http_error_auth_reqed(self, authreq, host, req, headers):
|
||||||
|
# host may be an authority (without userinfo) or a URL with an
|
||||||
|
# authority
|
||||||
|
- # XXX could be multiple headers
|
||||||
|
- authreq = headers.get(authreq, None)
|
||||||
|
+ headers = headers.get_all(authreq)
|
||||||
|
+ if not headers:
|
||||||
|
+ # no header found
|
||||||
|
+ return
|
||||||
|
|
||||||
|
- if authreq:
|
||||||
|
- scheme = authreq.split()[0]
|
||||||
|
- if scheme.lower() != 'basic':
|
||||||
|
- raise ValueError("AbstractBasicAuthHandler does not"
|
||||||
|
- " support the following scheme: '%s'" %
|
||||||
|
- scheme)
|
||||||
|
- else:
|
||||||
|
- mo = AbstractBasicAuthHandler.rx.search(authreq)
|
||||||
|
- if mo:
|
||||||
|
- scheme, quote, realm = mo.groups()
|
||||||
|
- if quote not in ['"',"'"]:
|
||||||
|
- warnings.warn("Basic Auth Realm was unquoted",
|
||||||
|
- UserWarning, 2)
|
||||||
|
- if scheme.lower() == 'basic':
|
||||||
|
- return self.retry_http_basic_auth(host, req, realm)
|
||||||
|
+ unsupported = None
|
||||||
|
+ for header in headers:
|
||||||
|
+ for scheme, realm in self._parse_realm(header):
|
||||||
|
+ if scheme.lower() != 'basic':
|
||||||
|
+ unsupported = scheme
|
||||||
|
+ continue
|
||||||
|
+
|
||||||
|
+ if realm is not None:
|
||||||
|
+ # Use the first matching Basic challenge.
|
||||||
|
+ # Ignore following challenges even if they use the Basic
|
||||||
|
+ # scheme.
|
||||||
|
+ return self.retry_http_basic_auth(host, req, realm)
|
||||||
|
+
|
||||||
|
+ if unsupported is not None:
|
||||||
|
+ raise ValueError("AbstractBasicAuthHandler does not "
|
||||||
|
+ "support the following scheme: %r"
|
||||||
|
+ % (scheme,))
|
||||||
|
|
||||||
|
def retry_http_basic_auth(self, host, req, realm):
|
||||||
|
user, pw = self.passwd.find_user_password(realm, host)
|
@ -14,7 +14,7 @@ URL: https://www.python.org/
|
|||||||
# WARNING When rebasing to a new Python version,
|
# WARNING When rebasing to a new Python version,
|
||||||
# remember to update the python3-docs package as well
|
# remember to update the python3-docs package as well
|
||||||
Version: %{pybasever}.8
|
Version: %{pybasever}.8
|
||||||
Release: 23%{?dist}
|
Release: 30%{?dist}
|
||||||
License: Python
|
License: Python
|
||||||
|
|
||||||
|
|
||||||
@ -309,22 +309,11 @@ Patch163: 00163-disable-parts-of-test_socket-in-rpm-build.patch
|
|||||||
# See https://bugzilla.redhat.com/show_bug.cgi?id=614680
|
# See https://bugzilla.redhat.com/show_bug.cgi?id=614680
|
||||||
Patch170: 00170-gc-assertions.patch
|
Patch170: 00170-gc-assertions.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
|
|
||||||
|
|
||||||
# 00189 #
|
# 00189 #
|
||||||
# Instead of bundled wheels, use our RPM packaged wheels from
|
# Instead of bundled wheels, use our RPM packaged wheels from
|
||||||
# /usr/share/python3-wheels
|
# /usr/share/python3-wheels
|
||||||
Patch189: 00189-use-rpm-wheels.patch
|
Patch189: 00189-use-rpm-wheels.patch
|
||||||
|
|
||||||
# 00205 #
|
|
||||||
# LIBPL variable in makefile takes LIBPL from configure.ac
|
|
||||||
# but the LIBPL variable defined there doesn't respect libdir macro
|
|
||||||
Patch205: 00205-make-libpl-respect-lib64.patch
|
|
||||||
|
|
||||||
# 00251
|
# 00251
|
||||||
# Set values of prefix and exec_prefix in distutils install command
|
# Set values of prefix and exec_prefix in distutils install command
|
||||||
# to /usr/local if executable is /usr/bin/python* and RPM build
|
# to /usr/local if executable is /usr/bin/python* and RPM build
|
||||||
@ -488,6 +477,30 @@ Patch332: 00332-CVE-2019-16056.patch
|
|||||||
# Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1749576
|
# Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1749576
|
||||||
Patch333: 00333-reduce-pgo-tests.patch
|
Patch333: 00333-reduce-pgo-tests.patch
|
||||||
|
|
||||||
|
# 00338 #
|
||||||
|
# Fix test_gdb for when compiling python with Link Time Optimizations
|
||||||
|
# Fixed upstream: https://bugs.python.org/issue38239
|
||||||
|
Patch338: 00338-fix-test_gdb-for-LTO.patch
|
||||||
|
|
||||||
|
# 00344 #
|
||||||
|
# Fix CVE-2019-16935: XSS vulnerability in the ocumentation XML-RPC server in server_title field
|
||||||
|
# Fixed upstream: https://bugs.python.org/issue38243
|
||||||
|
# Resolves: https://bugzilla.redhat.com/how_bug.cgi?id=1798001
|
||||||
|
Patch344: 00344-CVE-2019-16935.patch
|
||||||
|
|
||||||
|
# 00345 #
|
||||||
|
# Skip from test_site the test_startup_imports case if a path of sys.path
|
||||||
|
# contains a .pth file
|
||||||
|
# Fixed upstream: https://bugs.python.org/issue27807
|
||||||
|
# Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1814392
|
||||||
|
Patch345: 00345-fix-test_site-with-extra-pth-files.patch
|
||||||
|
|
||||||
|
# 00346 #
|
||||||
|
# Fix CVE-2020-8492: wrong backtracking in urllib.request.AbstractBasicAuthHandler allows for a ReDoS
|
||||||
|
# Fixed upstream: https://bugs.python.org/issue39503
|
||||||
|
# Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1810618
|
||||||
|
Patch346: 00346-CVE-2020-8492.patch
|
||||||
|
|
||||||
# (New patches go here ^^^)
|
# (New patches go here ^^^)
|
||||||
#
|
#
|
||||||
# When adding new patches to "python" and "python3" in Fedora, EL, etc.,
|
# When adding new patches to "python" and "python3" in Fedora, EL, etc.,
|
||||||
@ -778,14 +791,12 @@ rm -r Modules/zlib
|
|||||||
%patch160 -p1
|
%patch160 -p1
|
||||||
%patch163 -p1
|
%patch163 -p1
|
||||||
%patch170 -p1
|
%patch170 -p1
|
||||||
%patch178 -p1
|
|
||||||
|
|
||||||
%if %{with rpmwheels}
|
%if %{with rpmwheels}
|
||||||
%patch189 -p1
|
%patch189 -p1
|
||||||
rm Lib/ensurepip/_bundled/*.whl
|
rm Lib/ensurepip/_bundled/*.whl
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%patch205 -p1
|
|
||||||
%patch251 -p1
|
%patch251 -p1
|
||||||
%patch262 -p1
|
%patch262 -p1
|
||||||
%patch274 -p1
|
%patch274 -p1
|
||||||
@ -803,6 +814,10 @@ rm Lib/ensurepip/_bundled/*.whl
|
|||||||
%patch330 -p1
|
%patch330 -p1
|
||||||
%patch332 -p1
|
%patch332 -p1
|
||||||
%patch333 -p1
|
%patch333 -p1
|
||||||
|
%patch338 -p1
|
||||||
|
%patch344 -p1
|
||||||
|
%patch345 -p1
|
||||||
|
%patch346 -p1
|
||||||
|
|
||||||
|
|
||||||
# Remove files that should be generated by the build
|
# Remove files that should be generated by the build
|
||||||
@ -845,14 +860,14 @@ topdir=$(pwd)
|
|||||||
# RHEL packages utilizing %%py3_build will use them as well
|
# RHEL packages utilizing %%py3_build will use them as well
|
||||||
# https://fedoraproject.org/wiki/Changes/Python_Extension_Flags
|
# https://fedoraproject.org/wiki/Changes/Python_Extension_Flags
|
||||||
export CFLAGS="%{extension_cflags} -D_GNU_SOURCE -fPIC -fwrapv"
|
export CFLAGS="%{extension_cflags} -D_GNU_SOURCE -fPIC -fwrapv"
|
||||||
export CFLAGS_NODIST="%{build_cflags} -D_GNU_SOURCE -fPIC -fwrapv"
|
export CFLAGS_NODIST="%{build_cflags} -D_GNU_SOURCE -fPIC -fwrapv -fno-semantic-interposition"
|
||||||
export CXXFLAGS="%{extension_cxxflags} -D_GNU_SOURCE -fPIC -fwrapv"
|
export CXXFLAGS="%{extension_cxxflags} -D_GNU_SOURCE -fPIC -fwrapv"
|
||||||
export CPPFLAGS="$(pkg-config --cflags-only-I libffi)"
|
export CPPFLAGS="$(pkg-config --cflags-only-I libffi)"
|
||||||
export OPT="%{extension_cflags} -D_GNU_SOURCE -fPIC -fwrapv"
|
export OPT="%{extension_cflags} -D_GNU_SOURCE -fPIC -fwrapv"
|
||||||
export LINKCC="gcc"
|
export LINKCC="gcc"
|
||||||
export CFLAGS="$CFLAGS $(pkg-config --cflags openssl)"
|
export CFLAGS="$CFLAGS $(pkg-config --cflags openssl)"
|
||||||
export LDFLAGS="%{extension_ldflags} -g $(pkg-config --libs-only-L openssl)"
|
export LDFLAGS="%{extension_ldflags} -g $(pkg-config --libs-only-L openssl)"
|
||||||
export LDFLAGS_NODIST="%{build_ldflags} -g $(pkg-config --libs-only-L openssl)"
|
export LDFLAGS_NODIST="%{build_ldflags} -fno-semantic-interposition -g $(pkg-config --libs-only-L openssl)"
|
||||||
|
|
||||||
# We can build several different configurations of Python: regular and debug.
|
# We can build several different configurations of Python: regular and debug.
|
||||||
# Define a common function that does one build:
|
# Define a common function that does one build:
|
||||||
@ -1720,6 +1735,36 @@ fi
|
|||||||
# ======================================================
|
# ======================================================
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jun 25 2020 Victor Stinner <vstinner@python.org> - 3.6.8-30
|
||||||
|
- Remove downstream 00178-dont-duplicate-flags-in-sysconfig.patch which
|
||||||
|
introduced a bug on distutils.sysconfig.get_config_var('LIBPL')
|
||||||
|
(rhbz#1851090).
|
||||||
|
|
||||||
|
* Thu Jun 18 2020 Victor Stinner <vstinner@python.org> - 3.6.8-29
|
||||||
|
- Fix python3-config --configdir (rhbz#1772992).
|
||||||
|
|
||||||
|
* Fri Apr 03 2020 Charalampos Stratakis <cstratak@redhat.com> - 3.6.8-28
|
||||||
|
- Security fix for CVE-2020-8492
|
||||||
|
Resolves: rhbz#1810618
|
||||||
|
|
||||||
|
* Tue Mar 31 2020 Charalampos Stratakis <cstratak@redhat.com> - 3.6.8-27
|
||||||
|
- Add a sentinel value on the Hmac_members table of the fips compliant hmac module
|
||||||
|
Resolves: rhbz#1800512
|
||||||
|
|
||||||
|
* Mon Mar 23 2020 Charalampos Stratakis <cstratak@redhat.com> - 3.6.8-26
|
||||||
|
- Skip test_startup_imports from test_site if we have a .pth file in sys.path
|
||||||
|
Resolves: rhbz#1814392
|
||||||
|
|
||||||
|
* Fri Mar 20 2020 Charalampos Stratakis <cstratak@redhat.com> - 3.6.8-25
|
||||||
|
- Security fix for CVE-2019-16935
|
||||||
|
Resolves: rhbz#1798001
|
||||||
|
|
||||||
|
* Mon Mar 16 2020 Charalampos Stratakis <cstratak@redhat.com> - 3.6.8-24
|
||||||
|
- Build Python with -fno-semantic-interposition for better performance
|
||||||
|
- https://fedoraproject.org/wiki/Changes/PythonNoSemanticInterpositionSpeedup
|
||||||
|
- Also fix test_gdb failures with Link Time Optimizations
|
||||||
|
Resolves: rhbz#1724996
|
||||||
|
|
||||||
* Wed Nov 27 2019 Charalampos Stratakis <cstratak@redhat.com> - 3.6.8-23
|
* Wed Nov 27 2019 Charalampos Stratakis <cstratak@redhat.com> - 3.6.8-23
|
||||||
- Modify the test suite to better handle disabled SSL/TLS versions and FIPS mode
|
- Modify the test suite to better handle disabled SSL/TLS versions and FIPS mode
|
||||||
- Use OpenSSL's DRBG and disable os.getrandom() function in FIPS mode
|
- Use OpenSSL's DRBG and disable os.getrandom() function in FIPS mode
|
||||||
|
Loading…
Reference in New Issue
Block a user