diff --git a/F00251-change-user-install-location.patch b/F00251-change-user-install-location.patch index 92bb356..11489f7 100644 --- a/F00251-change-user-install-location.patch +++ b/F00251-change-user-install-location.patch @@ -29,10 +29,10 @@ Co-authored-by: Lumír Balhar Lib/test/test_sysconfig.py | 17 +++++++++++-- 3 files changed, 71 insertions(+), 4 deletions(-) -Index: Python-3.12.0b1/Lib/site.py +Index: Python-3.12.0rc1/Lib/site.py =================================================================== ---- Python-3.12.0b1.orig/Lib/site.py -+++ Python-3.12.0b1/Lib/site.py +--- Python-3.12.0rc1.orig/Lib/site.py ++++ Python-3.12.0rc1/Lib/site.py @@ -377,8 +377,15 @@ def getsitepackages(prefixes=None): return sitepackages @@ -50,10 +50,10 @@ Index: Python-3.12.0b1/Lib/site.py for sitedir in getsitepackages(prefixes): if os.path.isdir(sitedir): addsitedir(sitedir, known_paths) -Index: Python-3.12.0b1/Lib/sysconfig.py +Index: Python-3.12.0rc1/Lib/sysconfig.py =================================================================== ---- Python-3.12.0b1.orig/Lib/sysconfig.py -+++ Python-3.12.0b1/Lib/sysconfig.py +--- Python-3.12.0rc1.orig/Lib/sysconfig.py ++++ Python-3.12.0rc1/Lib/sysconfig.py @@ -104,6 +104,11 @@ if os.name == 'nt': else: _INSTALL_SCHEMES['venv'] = _INSTALL_SCHEMES['posix_venv'] @@ -128,10 +128,10 @@ Index: Python-3.12.0b1/Lib/sysconfig.py if os.name == 'nt': # On Windows we want to substitute 'lib' for schemes rather # than the native value (without modifying vars, in case it -Index: Python-3.12.0b1/Lib/test/test_sysconfig.py +Index: Python-3.12.0rc1/Lib/test/test_sysconfig.py =================================================================== ---- Python-3.12.0b1.orig/Lib/test/test_sysconfig.py -+++ Python-3.12.0b1/Lib/test/test_sysconfig.py +--- Python-3.12.0rc1.orig/Lib/test/test_sysconfig.py ++++ Python-3.12.0rc1/Lib/test/test_sysconfig.py @@ -110,8 +110,19 @@ class TestSysConfig(unittest.TestCase): for scheme in _INSTALL_SCHEMES: for name in _INSTALL_SCHEMES[scheme]: diff --git a/Python-3.12.0b4.tar.xz b/Python-3.12.0b4.tar.xz deleted file mode 100644 index a1314cd..0000000 --- a/Python-3.12.0b4.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f05710c36aee5850f5c2769be76b80bf212aec351438fdf8adc20c38c8361fac -size 20244176 diff --git a/Python-3.12.0b4.tar.xz.asc b/Python-3.12.0b4.tar.xz.asc deleted file mode 100644 index e9e59ee..0000000 --- a/Python-3.12.0b4.tar.xz.asc +++ /dev/null @@ -1,18 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQKTBAABCgB9FiEEcWlgX2LHUTVtBUomqCHmgOX6YwUFAmStSfVfFIAAAAAALgAo -aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDcx -Njk2MDVGNjJDNzUxMzU2RDA1NEEyNkE4MjFFNjgwRTVGQTYzMDUACgkQqCHmgOX6 -YwW0RQ//cCsYuhgw+RUslhcDQSNDc+Fuhb0estm7MRzH7VnkUwrrKMTTedWxGp8z -KrJmsH/PRL1c+AX9+1Hi9sr4enh9jgV1KQuqW7TfqS7w+qhlt9krdaDX7zdHqy2k -K0KLua5bv62MBPF5hPM6cP71WJcOsZZLw7r2Cx6USapq6hnSuew7XpSB9zqyehLs -bZOHIAlI1DK6sIdmO42fJr9AZWIO3Z5QhQLglMrHcn9LIp9P/gftVSLt2ZnPQ0qE -2f8d+XyEP0OG+oErbu+aZxHBroVSTEqp85lEVee/Sr0r8+dOJzgF/vVnpHKzu54M -csmRXVljhMm+Iy2rzIuSvI3YFqPL7PBUezRuGDeUDFwkapt+XsiO0eMddxX7W7U2 -isinSriLFmAKxHiIy76E8ELkJ/uUxNdN3Hgqey9g5VbfpEYUGSBT6wGoG3FQ3jHq -gI0XqxSfTqVyM7XBlg2Uyf+3wv4Vhku/6xH3CTPEJYGqiR9ZobR1cv3MMAtRQodx -5kD0Rhb9MF0Q/LEIAF0W99mJaAhn+wpf0bwP4/U+3LXmH5RsKoe8eGnyAGiejVn7 -RajZUhFRqsC2g+n9sjhXX+vNPcbl4OykTZat94Bfq5jBBRBlm0nx5Qf/bCFzmjzM -v3s2FWCQ8eM0sgPQkSYn3Zal9pEG+iDXtz7ODrsl998RlkknjrA= -=aiWo ------END PGP SIGNATURE----- diff --git a/Python-3.12.0rc1.tar.xz b/Python-3.12.0rc1.tar.xz new file mode 100644 index 0000000..f78330c --- /dev/null +++ b/Python-3.12.0rc1.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd88d516b51474d7facae3ed7ab6a421efb17e583c21c8a749470f293e2575fc +size 20285264 diff --git a/Python-3.12.0rc1.tar.xz.asc b/Python-3.12.0rc1.tar.xz.asc new file mode 100644 index 0000000..bb7332a --- /dev/null +++ b/Python-3.12.0rc1.tar.xz.asc @@ -0,0 +1,18 @@ +-----BEGIN PGP SIGNATURE----- + +iQKTBAABCgB9FiEEcWlgX2LHUTVtBUomqCHmgOX6YwUFAmTOQCpfFIAAAAAALgAo +aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDcx +Njk2MDVGNjJDNzUxMzU2RDA1NEEyNkE4MjFFNjgwRTVGQTYzMDUACgkQqCHmgOX6 +YwX5DxAAjL+OpYDuAssAXPIdLU4VlzR+whI1kCquPHIgBn8u+xWqgzVMwEyd8x2i +OdvQj+206Hh2sspsrys+sBkyPqGzo/mjlRe18CQvHU8FrjPj8IsZgSU6/gpKcfZL +ZJzUeG6jy6jy2LygM2cmgDEhr8kl6fNQ5hAV/jkpuzLZe0M4oEsKQRCQVC5D8rSE +5NLV6ZUK8/MeFd6S3BXSsUrx1bgr0Pi2YDlfTAqB++BBWiQiLsclNpwvMHlcu1D4 +z3QM3GXBkUQrh2QAtRKomJdqDILdakIuJg+aKD+ZuRZxzNcdFBVH9PBbSpfObSJ9 +ohBkpVo+MpEDJNq64N9AjnH0xT/cpvGimmsoVZ+zMU26uDm4qyGoDfem2UNgHuaz +4m+QmDoIUSYbhegsMXzcPRyGFKFb6fOCyWBQbb2YB6oo2vPVYNNpHFsMx21Gi43K +54vk0eBYzVBChOsY+igEdFZMbwQ7PEkajGbgQ4FiXhGlA7otQp7mx/IxjVcT1SxA +A07fXAFYF2aZkLlw4V09EeDdkrcO00pCGtTGXhfFCO0KsfyAWm3k8xLGgLFVzDyl +afMTMo2W5kEeL2Ui8fkxWBBtvF8xrF67XT6vT+kaElk1yrG8dIixG0fEVsoDPpz2 +edbb/Kd5MNyWzjMfJaW9otlH7KjPBPRuQzubgmBXXDBxij5C1UI= +=rhXA +-----END PGP SIGNATURE----- diff --git a/Revert-gh105127-left-tests.patch b/Revert-gh105127-left-tests.patch deleted file mode 100644 index 96eb8a6..0000000 --- a/Revert-gh105127-left-tests.patch +++ /dev/null @@ -1,299 +0,0 @@ -From 4288c623d62cf90d8e4444facb3379fb06d01140 Mon Sep 17 00:00:00 2001 -From: "Gregory P. Smith" -Date: Thu, 20 Jul 2023 20:30:52 -0700 -Subject: [PATCH] [3.12] gh-106669: Revert "gh-102988: Detect email address - parsing errors ... (GH-105127)" (GH-106733) - -This reverts commit 18dfbd035775c15533d13a98e56b1d2bf5c65f00. -Adds a regression test from the issue. - -See https://github.com/python/cpython/issues/106669.. -(cherry picked from commit a31dea1feb61793e48fa9aa5014f358352205c1d) - -Co-authored-by: Gregory P. Smith ---- - Doc/library/email.utils.rst | 26 -- - Doc/whatsnew/3.12.rst | 8 - Lib/email/utils.py | 63 ------ - Lib/test/test_email/test_email.py | 96 +--------- - Misc/NEWS.d/next/Security/2023-06-13-20-52-24.gh-issue-102988.Kei7Vf.rst | 4 - 5 files changed, 30 insertions(+), 167 deletions(-) - create mode 100644 Misc/NEWS.d/next/Security/2023-06-13-20-52-24.gh-issue-102988.Kei7Vf.rst - -Index: Python-3.12.0b4/Doc/library/email.utils.rst -=================================================================== ---- Python-3.12.0b4.orig/Doc/library/email.utils.rst -+++ Python-3.12.0b4/Doc/library/email.utils.rst -@@ -65,11 +65,6 @@ of the new API. - *email address* parts. Returns a tuple of that information, unless the parse - fails, in which case a 2-tuple of ``('', '')`` is returned. - -- .. versionchanged:: 3.12 -- For security reasons, addresses that were ambiguous and could parse into -- multiple different addresses now cause ``('', '')`` to be returned -- instead of only one of the *potential* addresses. -- - - .. function:: formataddr(pair, charset='utf-8') - -@@ -92,7 +87,7 @@ of the new API. - This method returns a list of 2-tuples of the form returned by ``parseaddr()``. - *fieldvalues* is a sequence of header field values as might be returned by - :meth:`Message.get_all `. Here's a simple -- example that gets all the recipients of a message: -+ example that gets all the recipients of a message:: - - from email.utils import getaddresses - -@@ -102,25 +97,6 @@ of the new API. - resent_ccs = msg.get_all('resent-cc', []) - all_recipients = getaddresses(tos + ccs + resent_tos + resent_ccs) - -- When parsing fails for a single fieldvalue, a 2-tuple of ``('', '')`` -- is returned in its place. Other errors in parsing the list of -- addresses such as a fieldvalue seemingly parsing into multiple -- addresses may result in a list containing a single empty 2-tuple -- ``[('', '')]`` being returned rather than returning potentially -- invalid output. -- -- Example malformed input parsing: -- -- .. doctest:: -- -- >>> from email.utils import getaddresses -- >>> getaddresses(['alice@example.com ', 'me@example.com']) -- [('', '')] -- -- .. versionchanged:: 3.12 -- The 2-tuple of ``('', '')`` in the returned values when parsing -- fails were added as to address a security issue. -- - - .. function:: parsedate(date) - -Index: Python-3.12.0b4/Doc/whatsnew/3.12.rst -=================================================================== ---- Python-3.12.0b4.orig/Doc/whatsnew/3.12.rst -+++ Python-3.12.0b4/Doc/whatsnew/3.12.rst -@@ -570,14 +570,6 @@ dis - :data:`~dis.hasarg` collection instead. - (Contributed by Irit Katriel in :gh:`94216`.) - --email ------- -- --* :func:`email.utils.getaddresses` and :func:`email.utils.parseaddr` now return -- ``('', '')`` 2-tuples in more situations where invalid email addresses are -- encountered instead of potentially inaccurate values. -- (Contributed by Thomas Dwyer for :gh:`102988` to ameliorate CVE-2023-27043.) -- - fractions - --------- - -Index: Python-3.12.0b4/Lib/email/utils.py -=================================================================== ---- Python-3.12.0b4.orig/Lib/email/utils.py -+++ Python-3.12.0b4/Lib/email/utils.py -@@ -106,54 +106,12 @@ def formataddr(pair, charset='utf-8'): - return address - - --def _pre_parse_validation(email_header_fields): -- accepted_values = [] -- for v in email_header_fields: -- s = v.replace('\\(', '').replace('\\)', '') -- if s.count('(') != s.count(')'): -- v = "('', '')" -- accepted_values.append(v) -- -- return accepted_values -- -- --def _post_parse_validation(parsed_email_header_tuples): -- accepted_values = [] -- # The parser would have parsed a correctly formatted domain-literal -- # The existence of an [ after parsing indicates a parsing failure -- for v in parsed_email_header_tuples: -- if '[' in v[1]: -- v = ('', '') -- accepted_values.append(v) -- -- return accepted_values -- - - def getaddresses(fieldvalues): -- """Return a list of (REALNAME, EMAIL) or ('','') for each fieldvalue. -- -- When parsing fails for a fieldvalue, a 2-tuple of ('', '') is returned in -- its place. -- -- If the resulting list of parsed address is not the same as the number of -- fieldvalues in the input list a parsing error has occurred. A list -- containing a single empty 2-tuple [('', '')] is returned in its place. -- This is done to avoid invalid output. -- """ -- fieldvalues = [str(v) for v in fieldvalues] -- fieldvalues = _pre_parse_validation(fieldvalues) -- all = COMMASPACE.join(v for v in fieldvalues) -+ """Return a list of (REALNAME, EMAIL) for each fieldvalue.""" -+ all = COMMASPACE.join(str(v) for v in fieldvalues) - a = _AddressList(all) -- result = _post_parse_validation(a.addresslist) -- -- n = 0 -- for v in fieldvalues: -- n += v.count(',') + 1 -- -- if len(result) != n: -- return [('', '')] -- -- return result -+ return a.addresslist - - - def _format_timetuple_and_zone(timetuple, zone): -@@ -254,18 +212,9 @@ def parseaddr(addr): - Return a tuple of realname and email address, unless the parse fails, in - which case return a 2-tuple of ('', ''). - """ -- if isinstance(addr, list): -- addr = addr[0] -- -- if not isinstance(addr, str): -- return ('', '') -- -- addr = _pre_parse_validation([addr])[0] -- addrs = _post_parse_validation(_AddressList(addr).addresslist) -- -- if not addrs or len(addrs) > 1: -- return ('', '') -- -+ addrs = _AddressList(addr).addresslist -+ if not addrs: -+ return '', '' - return addrs[0] - - -Index: Python-3.12.0b4/Lib/test/test_email/test_email.py -=================================================================== ---- Python-3.12.0b4.orig/Lib/test/test_email/test_email.py -+++ Python-3.12.0b4/Lib/test/test_email/test_email.py -@@ -3319,90 +3319,32 @@ Foo - [('Al Person', 'aperson@dom.ain'), - ('Bud Person', 'bperson@dom.ain')]) - -- def test_getaddresses_parsing_errors(self): -- """Test for parsing errors from CVE-2023-27043""" -- eq = self.assertEqual -- eq(utils.getaddresses(['alice@example.org(']), -- [('', '')]) -- eq(utils.getaddresses(['alice@example.org)']), -- [('', '')]) -- eq(utils.getaddresses(['alice@example.org<']), -- [('', '')]) -- eq(utils.getaddresses(['alice@example.org>']), -- [('', '')]) -- eq(utils.getaddresses(['alice@example.org@']), -- [('', '')]) -- eq(utils.getaddresses(['alice@example.org,']), -- [('', 'alice@example.org'), ('', 'bob@example.com')]) -- eq(utils.getaddresses(['alice@example.org;']), -- [('', '')]) -- eq(utils.getaddresses(['alice@example.org:']), -- [('', '')]) -- eq(utils.getaddresses(['alice@example.org.']), -- [('', '')]) -- eq(utils.getaddresses(['alice@example.org"']), -- [('', '')]) -- eq(utils.getaddresses(['alice@example.org[']), -- [('', '')]) -- eq(utils.getaddresses(['alice@example.org]']), -- [('', '')]) -- -- def test_parseaddr_parsing_errors(self): -- """Test for parsing errors from CVE-2023-27043""" -- eq = self.assertEqual -- eq(utils.parseaddr(['alice@example.org(']), -- ('', '')) -- eq(utils.parseaddr(['alice@example.org)']), -- ('', '')) -- eq(utils.parseaddr(['alice@example.org<']), -- ('', '')) -- eq(utils.parseaddr(['alice@example.org>']), -- ('', '')) -- eq(utils.parseaddr(['alice@example.org@']), -- ('', '')) -- eq(utils.parseaddr(['alice@example.org,']), -- ('', '')) -- eq(utils.parseaddr(['alice@example.org;']), -- ('', '')) -- eq(utils.parseaddr(['alice@example.org:']), -- ('', '')) -- eq(utils.parseaddr(['alice@example.org.']), -- ('', '')) -- eq(utils.parseaddr(['alice@example.org"']), -- ('', '')) -- eq(utils.parseaddr(['alice@example.org[']), -- ('', '')) -- eq(utils.parseaddr(['alice@example.org]']), -- ('', '')) -+ def test_getaddresses_comma_in_name(self): -+ """GH-106669 regression test.""" -+ self.assertEqual( -+ utils.getaddresses( -+ [ -+ '"Bud, Person" ', -+ 'aperson@dom.ain (Al Person)', -+ '"Mariusz Felisiak" ', -+ ] -+ ), -+ [ -+ ('Bud, Person', 'bperson@dom.ain'), -+ ('Al Person', 'aperson@dom.ain'), -+ ('Mariusz Felisiak', 'to@example.com'), -+ ], -+ ) - - def test_getaddresses_nasty(self): - eq = self.assertEqual - eq(utils.getaddresses(['foo: ;']), [('', '')]) -- eq(utils.getaddresses(['[]*-- =~$']), [('', '')]) -+ eq(utils.getaddresses( -+ ['[]*-- =~$']), -+ [('', ''), ('', ''), ('', '*--')]) - eq(utils.getaddresses( - ['foo: ;', '"Jason R. Mastaler" ']), - [('', ''), ('Jason R. Mastaler', 'jason@dom.ain')]) -- eq(utils.getaddresses( -- [r'Pete(A nice \) chap) ']), -- [('Pete (A nice ) chap his account his host)', 'pete@silly.test')]) -- eq(utils.getaddresses( -- ['(Empty list)(start)Undisclosed recipients :(nobody(I know))']), -- [('', '')]) -- eq(utils.getaddresses( -- ['Mary <@machine.tld:mary@example.net>, , jdoe@test . example']), -- [('Mary', 'mary@example.net'), ('', ''), ('', 'jdoe@test.example')]) -- eq(utils.getaddresses( -- ['John Doe ']), -- [('John Doe (comment)', 'jdoe@machine.example')]) -- eq(utils.getaddresses( -- ['"Mary Smith: Personal Account" ']), -- [('Mary Smith: Personal Account', 'smith@home.example')]) -- eq(utils.getaddresses( -- ['Undisclosed recipients:;']), -- [('', '')]) -- eq(utils.getaddresses( -- [r', "Giant; \"Big\" Box" ']), -- [('', 'boss@nil.test'), ('Giant; "Big" Box', 'bob@example.net')]) - - def test_getaddresses_embedded_comment(self): - """Test proper handling of a nested comment""" -Index: Python-3.12.0b4/Misc/NEWS.d/next/Security/2023-06-13-20-52-24.gh-issue-102988.Kei7Vf.rst -=================================================================== ---- /dev/null -+++ Python-3.12.0b4/Misc/NEWS.d/next/Security/2023-06-13-20-52-24.gh-issue-102988.Kei7Vf.rst -@@ -0,0 +1,4 @@ -+Reverted the :mod:`email.utils` security improvement change released in -+3.12beta4 that unintentionally caused :mod:`email.utils.getaddresses` to fail -+to parse email addresses with a comma in the quoted name field. -+See :gh:`106669`. diff --git a/bpo-31046_ensurepip_honours_prefix.patch b/bpo-31046_ensurepip_honours_prefix.patch index ad54e00..0878ed6 100644 --- a/bpo-31046_ensurepip_honours_prefix.patch +++ b/bpo-31046_ensurepip_honours_prefix.patch @@ -13,10 +13,10 @@ Co-Authored-By: Xavier de Gaye 5 files changed, 34 insertions(+), 9 deletions(-) create mode 100644 Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst -Index: Python-3.12.0b1/Doc/library/ensurepip.rst +Index: Python-3.12.0rc1/Doc/library/ensurepip.rst =================================================================== ---- Python-3.12.0b1.orig/Doc/library/ensurepip.rst -+++ Python-3.12.0b1/Doc/library/ensurepip.rst +--- Python-3.12.0rc1.orig/Doc/library/ensurepip.rst ++++ Python-3.12.0rc1/Doc/library/ensurepip.rst @@ -59,8 +59,9 @@ is at least as recent as the one availab By default, ``pip`` is installed into the current virtual environment (if one is active) or into the system site packages (if there is no @@ -55,10 +55,10 @@ Index: Python-3.12.0b1/Doc/library/ensurepip.rst .. audit-event:: ensurepip.bootstrap root ensurepip.bootstrap .. note:: -Index: Python-3.12.0b1/Lib/ensurepip/__init__.py +Index: Python-3.12.0rc1/Lib/ensurepip/__init__.py =================================================================== ---- Python-3.12.0b1.orig/Lib/ensurepip/__init__.py -+++ Python-3.12.0b1/Lib/ensurepip/__init__.py +--- Python-3.12.0rc1.orig/Lib/ensurepip/__init__.py ++++ Python-3.12.0rc1/Lib/ensurepip/__init__.py @@ -120,27 +120,27 @@ def _disable_pip_configuration_settings( os.environ['PIP_CONFIG_FILE'] = os.devnull @@ -121,10 +121,10 @@ Index: Python-3.12.0b1/Lib/ensurepip/__init__.py upgrade=args.upgrade, user=args.user, verbosity=args.verbosity, -Index: Python-3.12.0b1/Lib/test/test_ensurepip.py +Index: Python-3.12.0rc1/Lib/test/test_ensurepip.py =================================================================== ---- Python-3.12.0b1.orig/Lib/test/test_ensurepip.py -+++ Python-3.12.0b1/Lib/test/test_ensurepip.py +--- Python-3.12.0rc1.orig/Lib/test/test_ensurepip.py ++++ Python-3.12.0rc1/Lib/test/test_ensurepip.py @@ -105,6 +105,17 @@ class TestBootstrap(EnsurepipMixin, unit unittest.mock.ANY, ) @@ -143,11 +143,11 @@ Index: Python-3.12.0b1/Lib/test/test_ensurepip.py def test_bootstrapping_with_user(self): ensurepip.bootstrap(user=True) -Index: Python-3.12.0b1/Makefile.pre.in +Index: Python-3.12.0rc1/Makefile.pre.in =================================================================== ---- Python-3.12.0b1.orig/Makefile.pre.in -+++ Python-3.12.0b1/Makefile.pre.in -@@ -1908,7 +1908,7 @@ install: @FRAMEWORKINSTALLFIRST@ commoni +--- Python-3.12.0rc1.orig/Makefile.pre.in ++++ Python-3.12.0rc1/Makefile.pre.in +@@ -1909,7 +1909,7 @@ install: @FRAMEWORKINSTALLFIRST@ commoni install|*) ensurepip="" ;; \ esac; \ $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \ @@ -156,7 +156,7 @@ Index: Python-3.12.0b1/Makefile.pre.in fi .PHONY: altinstall -@@ -1919,7 +1919,7 @@ altinstall: commoninstall +@@ -1920,7 +1920,7 @@ altinstall: commoninstall install|*) ensurepip="--altinstall" ;; \ esac; \ $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \ @@ -165,9 +165,9 @@ Index: Python-3.12.0b1/Makefile.pre.in fi .PHONY: commoninstall -Index: Python-3.12.0b1/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst +Index: Python-3.12.0rc1/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst =================================================================== --- /dev/null -+++ Python-3.12.0b1/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst ++++ Python-3.12.0rc1/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst @@ -0,0 +1 @@ +A directory prefix can now be specified when using :mod:`ensurepip`. diff --git a/fix_configure_rst.patch b/fix_configure_rst.patch index eea65df..e006a29 100644 --- a/fix_configure_rst.patch +++ b/fix_configure_rst.patch @@ -3,8 +3,10 @@ Misc/NEWS | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) ---- a/Doc/using/configure.rst -+++ b/Doc/using/configure.rst +Index: Python-3.12.0rc1/Doc/using/configure.rst +=================================================================== +--- Python-3.12.0rc1.orig/Doc/using/configure.rst ++++ Python-3.12.0rc1/Doc/using/configure.rst @@ -599,13 +599,11 @@ macOS Options See ``Mac/README.rst``. @@ -19,9 +21,11 @@ .. cmdoption:: --enable-framework=INSTALLDIR Create a Python.framework rather than a traditional Unix install. Optional ---- a/Misc/NEWS -+++ b/Misc/NEWS -@@ -11318,7 +11318,7 @@ C API +Index: Python-3.12.0rc1/Misc/NEWS +=================================================================== +--- Python-3.12.0rc1.orig/Misc/NEWS ++++ Python-3.12.0rc1/Misc/NEWS +@@ -11530,7 +11530,7 @@ C API - bpo-40939: Removed documentation for the removed ``PyParser_*`` C API. - bpo-43795: The list in :ref:`limited-api-list` now shows the public name diff --git a/no-skipif-doctests.patch b/no-skipif-doctests.patch index 92e1ec8..a738dac 100644 --- a/no-skipif-doctests.patch +++ b/no-skipif-doctests.patch @@ -4,9 +4,11 @@ unchanged: Doc/library/turtle.rst | 81 ------------------------------------------------- 1 file changed, 81 deletions(-) ---- a/Doc/library/turtle.rst -+++ b/Doc/library/turtle.rst -@@ -251,7 +251,6 @@ Turtle motion +Index: Python-3.12.0rc1/Doc/library/turtle.rst +=================================================================== +--- Python-3.12.0rc1.orig/Doc/library/turtle.rst ++++ Python-3.12.0rc1/Doc/library/turtle.rst +@@ -441,7 +441,6 @@ Turtle motion turtle is headed. .. doctest:: @@ -14,7 +16,7 @@ unchanged: >>> turtle.position() (0.00,0.00) -@@ -278,7 +277,6 @@ Turtle motion +@@ -468,7 +467,6 @@ Turtle motion >>> turtle.goto(0, 0) .. doctest:: @@ -22,7 +24,7 @@ unchanged: >>> turtle.position() (0.00,0.00) -@@ -297,13 +295,11 @@ Turtle motion +@@ -487,13 +485,11 @@ Turtle motion orientation depends on the turtle mode, see :func:`mode`. .. doctest:: @@ -36,7 +38,7 @@ unchanged: >>> turtle.heading() 22.0 -@@ -322,13 +318,11 @@ Turtle motion +@@ -512,13 +508,11 @@ Turtle motion orientation depends on the turtle mode, see :func:`mode`. .. doctest:: @@ -50,7 +52,7 @@ unchanged: >>> turtle.heading() 22.0 -@@ -351,13 +345,11 @@ Turtle motion +@@ -541,13 +535,11 @@ Turtle motion not change the turtle's orientation. .. doctest:: @@ -64,7 +66,7 @@ unchanged: >>> tp = turtle.pos() >>> tp -@@ -419,13 +411,11 @@ Turtle motion +@@ -609,13 +601,11 @@ Turtle motion unchanged. .. doctest:: @@ -78,7 +80,7 @@ unchanged: >>> turtle.position() (0.00,240.00) -@@ -441,13 +431,11 @@ Turtle motion +@@ -631,13 +621,11 @@ Turtle motion Set the turtle's second coordinate to *y*, leave first coordinate unchanged. .. doctest:: @@ -92,7 +94,7 @@ unchanged: >>> turtle.position() (0.00,40.00) -@@ -474,7 +462,6 @@ Turtle motion +@@ -664,7 +652,6 @@ Turtle motion =================== ==================== .. doctest:: @@ -100,7 +102,7 @@ unchanged: >>> turtle.setheading(90) >>> turtle.heading() -@@ -487,14 +474,12 @@ Turtle motion +@@ -677,14 +664,12 @@ Turtle motion its start-orientation (which depends on the mode, see :func:`mode`). .. doctest:: @@ -115,7 +117,7 @@ unchanged: >>> turtle.heading() 90.0 -@@ -526,7 +511,6 @@ Turtle motion +@@ -716,7 +701,6 @@ Turtle motion calculated automatically. May be used to draw regular polygons. .. doctest:: @@ -123,7 +125,7 @@ unchanged: >>> turtle.home() >>> turtle.position() -@@ -555,7 +539,6 @@ Turtle motion +@@ -745,7 +729,6 @@ Turtle motion .. doctest:: @@ -131,7 +133,7 @@ unchanged: >>> turtle.home() >>> turtle.dot() -@@ -573,7 +556,6 @@ Turtle motion +@@ -763,7 +746,6 @@ Turtle motion it by calling ``clearstamp(stamp_id)``. .. doctest:: @@ -139,7 +141,7 @@ unchanged: >>> turtle.color("blue") >>> stamp_id = turtle.stamp() -@@ -588,7 +570,6 @@ Turtle motion +@@ -778,7 +760,6 @@ Turtle motion Delete stamp with given *stampid*. .. doctest:: @@ -147,7 +149,7 @@ unchanged: >>> turtle.position() (150.00,-0.00) -@@ -626,7 +607,6 @@ Turtle motion +@@ -816,7 +797,6 @@ Turtle motion undo actions is determined by the size of the undobuffer. .. doctest:: @@ -155,7 +157,7 @@ unchanged: >>> for i in range(4): ... turtle.fd(50); turtle.lt(80) -@@ -659,7 +639,6 @@ Turtle motion +@@ -849,7 +829,6 @@ Turtle motion turtle turn instantly. .. doctest:: @@ -163,7 +165,7 @@ unchanged: >>> turtle.speed() 3 -@@ -680,7 +659,6 @@ Tell Turtle's state +@@ -870,7 +849,6 @@ Tell Turtle's state Return the turtle's current location (x,y) (as a :class:`Vec2D` vector). .. doctest:: @@ -171,7 +173,7 @@ unchanged: >>> turtle.pos() (440.00,-0.00) -@@ -696,7 +674,6 @@ Tell Turtle's state +@@ -886,7 +864,6 @@ Tell Turtle's state orientation which depends on the mode - "standard"/"world" or "logo". .. doctest:: @@ -179,7 +181,7 @@ unchanged: >>> turtle.goto(10, 10) >>> turtle.towards(0,0) -@@ -708,7 +685,6 @@ Tell Turtle's state +@@ -898,7 +875,6 @@ Tell Turtle's state Return the turtle's x coordinate. .. doctest:: @@ -187,7 +189,7 @@ unchanged: >>> turtle.home() >>> turtle.left(50) -@@ -724,7 +700,6 @@ Tell Turtle's state +@@ -914,7 +890,6 @@ Tell Turtle's state Return the turtle's y coordinate. .. doctest:: @@ -195,7 +197,7 @@ unchanged: >>> turtle.home() >>> turtle.left(60) -@@ -741,7 +716,6 @@ Tell Turtle's state +@@ -931,7 +906,6 @@ Tell Turtle's state :func:`mode`). .. doctest:: @@ -203,7 +205,7 @@ unchanged: >>> turtle.home() >>> turtle.left(67) -@@ -758,7 +732,6 @@ Tell Turtle's state +@@ -948,7 +922,6 @@ Tell Turtle's state other turtle, in turtle step units. .. doctest:: @@ -211,7 +213,7 @@ unchanged: >>> turtle.home() >>> turtle.distance(30,40) -@@ -782,7 +755,6 @@ Settings for measurement +@@ -972,7 +945,6 @@ Settings for measurement Default value is 360 degrees. .. doctest:: @@ -219,7 +221,7 @@ unchanged: >>> turtle.home() >>> turtle.left(90) -@@ -805,7 +777,6 @@ Settings for measurement +@@ -995,7 +967,6 @@ Settings for measurement ``degrees(2*math.pi)``. .. doctest:: @@ -227,7 +229,7 @@ unchanged: >>> turtle.home() >>> turtle.left(90) -@@ -816,7 +787,6 @@ Settings for measurement +@@ -1006,7 +977,6 @@ Settings for measurement 1.5707963267948966 .. doctest:: @@ -235,7 +237,7 @@ unchanged: :hide: >>> turtle.degrees(360) -@@ -852,7 +822,6 @@ Drawing state +@@ -1042,7 +1012,6 @@ Drawing state thickness. If no argument is given, the current pensize is returned. .. doctest:: @@ -243,7 +245,7 @@ unchanged: >>> turtle.pensize() 1 -@@ -884,7 +853,6 @@ Drawing state +@@ -1074,7 +1043,6 @@ Drawing state attributes in one statement. .. doctest:: @@ -251,7 +253,7 @@ unchanged: :options: +NORMALIZE_WHITESPACE >>> turtle.pen(fillcolor="black", pencolor="red", pensize=10) -@@ -907,7 +875,6 @@ Drawing state +@@ -1097,7 +1065,6 @@ Drawing state Return ``True`` if pen is down, ``False`` if it's up. .. doctest:: @@ -259,7 +261,7 @@ unchanged: >>> turtle.penup() >>> turtle.isdown() -@@ -948,7 +915,6 @@ Color control +@@ -1138,7 +1105,6 @@ Color control newly set pencolor. .. doctest:: @@ -267,7 +269,7 @@ unchanged: >>> colormode() 1.0 -@@ -997,7 +963,6 @@ Color control +@@ -1187,7 +1153,6 @@ Color control with the newly set fillcolor. .. doctest:: @@ -275,7 +277,7 @@ unchanged: >>> turtle.fillcolor("violet") >>> turtle.fillcolor() -@@ -1036,7 +1001,6 @@ Color control +@@ -1226,7 +1191,6 @@ Color control with the newly set colors. .. doctest:: @@ -283,7 +285,7 @@ unchanged: >>> turtle.color("red", "green") >>> turtle.color() -@@ -1053,7 +1017,6 @@ Filling +@@ -1243,7 +1207,6 @@ Filling ~~~~~~~ .. doctest:: @@ -291,7 +293,7 @@ unchanged: :hide: >>> turtle.home() -@@ -1063,7 +1026,6 @@ Filling +@@ -1253,7 +1216,6 @@ Filling Return fillstate (``True`` if filling, ``False`` else). .. doctest:: @@ -299,7 +301,7 @@ unchanged: >>> turtle.begin_fill() >>> if turtle.filling(): -@@ -1088,7 +1050,6 @@ Filling +@@ -1278,7 +1240,6 @@ Filling above may be either all yellow or have some white regions. .. doctest:: @@ -307,7 +309,7 @@ unchanged: >>> turtle.color("black", "red") >>> turtle.begin_fill() -@@ -1105,7 +1066,6 @@ More drawing control +@@ -1295,7 +1256,6 @@ More drawing control variables to the default values. .. doctest:: @@ -315,7 +317,7 @@ unchanged: >>> turtle.goto(0,-22) >>> turtle.left(100) -@@ -1156,7 +1116,6 @@ Visibility +@@ -1346,7 +1306,6 @@ Visibility drawing observably. .. doctest:: @@ -323,7 +325,7 @@ unchanged: >>> turtle.hideturtle() -@@ -1167,7 +1126,6 @@ Visibility +@@ -1357,7 +1316,6 @@ Visibility Make the turtle visible. .. doctest:: @@ -331,7 +333,7 @@ unchanged: >>> turtle.showturtle() -@@ -1198,7 +1156,6 @@ Appearance +@@ -1388,7 +1346,6 @@ Appearance deal with shapes see Screen method :func:`register_shape`. .. doctest:: @@ -339,7 +341,7 @@ unchanged: >>> turtle.shape() 'classic' -@@ -1224,7 +1181,6 @@ Appearance +@@ -1414,7 +1371,6 @@ Appearance ``resizemode("user")`` is called by :func:`shapesize` when used with arguments. .. doctest:: @@ -347,7 +349,7 @@ unchanged: >>> turtle.resizemode() 'noresize' -@@ -1248,7 +1204,6 @@ Appearance +@@ -1438,7 +1394,6 @@ Appearance of the shape's outline. .. doctest:: @@ -355,7 +357,7 @@ unchanged: >>> turtle.shapesize() (1.0, 1.0, 1) -@@ -1273,7 +1228,6 @@ Appearance +@@ -1463,7 +1418,6 @@ Appearance heading of the turtle are sheared. .. doctest:: @@ -363,7 +365,7 @@ unchanged: >>> turtle.shape("circle") >>> turtle.shapesize(5,2) -@@ -1290,7 +1244,6 @@ Appearance +@@ -1480,7 +1434,6 @@ Appearance change the turtle's heading (direction of movement). .. doctest:: @@ -371,7 +373,7 @@ unchanged: >>> turtle.reset() >>> turtle.shape("circle") -@@ -1336,7 +1289,6 @@ Appearance +@@ -1526,7 +1479,6 @@ Appearance turtle (its direction of movement). .. doctest:: @@ -379,7 +381,7 @@ unchanged: >>> turtle.reset() >>> turtle.shape("circle") -@@ -1365,7 +1317,6 @@ Appearance +@@ -1555,7 +1507,6 @@ Appearance given matrix. .. doctest:: @@ -387,7 +389,7 @@ unchanged: >>> turtle = Turtle() >>> turtle.shape("square") -@@ -1381,7 +1332,6 @@ Appearance +@@ -1571,7 +1522,6 @@ Appearance can be used to define a new shape or components of a compound shape. .. doctest:: @@ -395,7 +397,7 @@ unchanged: >>> turtle.shape("square") >>> turtle.shapetransform(4, -1, 0, 2) -@@ -1406,7 +1356,6 @@ Using events +@@ -1596,7 +1546,6 @@ Using events procedural way: .. doctest:: @@ -403,7 +405,7 @@ unchanged: >>> def turn(x, y): ... left(180) -@@ -1427,7 +1376,6 @@ Using events +@@ -1617,7 +1566,6 @@ Using events ``None``, existing bindings are removed. .. doctest:: @@ -411,7 +413,7 @@ unchanged: >>> class MyTurtle(Turtle): ... def glow(self,x,y): -@@ -1455,7 +1403,6 @@ Using events +@@ -1645,7 +1593,6 @@ Using events mouse-click event on that turtle. .. doctest:: @@ -419,7 +421,7 @@ unchanged: >>> turtle.ondrag(turtle.goto) -@@ -1483,7 +1430,6 @@ Special Turtle methods +@@ -1673,7 +1620,6 @@ Special Turtle methods Return the last recorded polygon. .. doctest:: @@ -427,7 +429,7 @@ unchanged: >>> turtle.home() >>> turtle.begin_poly() -@@ -1503,7 +1449,6 @@ Special Turtle methods +@@ -1693,7 +1639,6 @@ Special Turtle methods turtle properties. .. doctest:: @@ -435,7 +437,7 @@ unchanged: >>> mick = Turtle() >>> joe = mick.clone() -@@ -1516,7 +1461,6 @@ Special Turtle methods +@@ -1706,7 +1651,6 @@ Special Turtle methods return the "anonymous turtle": .. doctest:: @@ -443,7 +445,7 @@ unchanged: >>> pet = getturtle() >>> pet.fd(50) -@@ -1530,7 +1474,6 @@ Special Turtle methods +@@ -1720,7 +1664,6 @@ Special Turtle methods TurtleScreen methods can then be called for that object. .. doctest:: @@ -451,7 +453,7 @@ unchanged: >>> ts = turtle.getscreen() >>> ts -@@ -1548,7 +1491,6 @@ Special Turtle methods +@@ -1738,7 +1681,6 @@ Special Turtle methods ``None``, the undobuffer is disabled. .. doctest:: @@ -459,7 +461,7 @@ unchanged: >>> turtle.setundobuffer(42) -@@ -1558,7 +1500,6 @@ Special Turtle methods +@@ -1748,7 +1690,6 @@ Special Turtle methods Return number of entries in the undobuffer. .. doctest:: @@ -467,7 +469,7 @@ unchanged: >>> while undobufferentries(): ... undo() -@@ -1581,7 +1522,6 @@ below: +@@ -1771,7 +1712,6 @@ below: For example: .. doctest:: @@ -475,7 +477,7 @@ unchanged: >>> s = Shape("compound") >>> poly1 = ((0,0),(10,-5),(0,10),(-10,-5)) -@@ -1592,7 +1532,6 @@ below: +@@ -1782,7 +1722,6 @@ below: 3. Now add the Shape to the Screen's shapelist and use it: .. doctest:: @@ -483,7 +485,7 @@ unchanged: >>> register_shape("myshape", s) >>> shape("myshape") -@@ -1612,7 +1551,6 @@ Most of the examples in this section ref +@@ -1802,7 +1741,6 @@ Most of the examples in this section ref ``screen``. .. doctest:: @@ -491,7 +493,7 @@ unchanged: :hide: >>> screen = Screen() -@@ -1629,7 +1567,6 @@ Window control +@@ -1819,7 +1757,6 @@ Window control Set or return background color of the TurtleScreen. .. doctest:: @@ -499,7 +501,7 @@ unchanged: >>> screen.bgcolor("orange") >>> screen.bgcolor() -@@ -1721,7 +1658,6 @@ Window control +@@ -1911,7 +1848,6 @@ Window control distorted. .. doctest:: @@ -507,7 +509,7 @@ unchanged: >>> screen.reset() >>> screen.setworldcoordinates(-50,-7.5,50,7.5) -@@ -1732,7 +1668,6 @@ Window control +@@ -1922,7 +1858,6 @@ Window control ... left(45); fd(2) # a regular octagon .. doctest:: @@ -515,7 +517,7 @@ unchanged: :hide: >>> screen.reset() -@@ -1754,7 +1689,6 @@ Animation control +@@ -1944,7 +1879,6 @@ Animation control Optional argument: .. doctest:: @@ -523,7 +525,7 @@ unchanged: >>> screen.delay() 10 -@@ -1776,7 +1710,6 @@ Animation control +@@ -1966,7 +1900,6 @@ Animation control :func:`delay`). .. doctest:: @@ -531,7 +533,7 @@ unchanged: >>> screen.tracer(8, 25) >>> dist = 2 -@@ -1813,7 +1746,6 @@ Using screen events +@@ -2003,7 +1936,6 @@ Using screen events must have the focus. (See method :func:`listen`.) .. doctest:: @@ -539,7 +541,7 @@ unchanged: >>> def f(): ... fd(50) -@@ -1834,7 +1766,6 @@ Using screen events +@@ -2024,7 +1956,6 @@ Using screen events must have focus. (See method :func:`listen`.) .. doctest:: @@ -547,7 +549,7 @@ unchanged: >>> def f(): ... fd(50) -@@ -1859,7 +1790,6 @@ Using screen events +@@ -2049,7 +1980,6 @@ Using screen events named ``turtle``: .. doctest:: @@ -555,7 +557,7 @@ unchanged: >>> screen.onclick(turtle.goto) # Subsequently clicking into the TurtleScreen will >>> # make the turtle move to the clicked point. -@@ -1879,7 +1809,6 @@ Using screen events +@@ -2069,7 +1999,6 @@ Using screen events Install a timer that calls *fun* after *t* milliseconds. .. doctest:: @@ -563,7 +565,7 @@ unchanged: >>> running = True >>> def f(): -@@ -1961,7 +1890,6 @@ Settings and special methods +@@ -2151,7 +2080,6 @@ Settings and special methods ============ ========================= =================== .. doctest:: @@ -571,7 +573,7 @@ unchanged: >>> mode("logo") # resets turtle heading to north >>> mode() -@@ -1976,7 +1904,6 @@ Settings and special methods +@@ -2166,7 +2094,6 @@ Settings and special methods values of color triples have to be in the range 0..*cmode*. .. doctest:: @@ -579,7 +581,7 @@ unchanged: >>> screen.colormode(1) >>> turtle.pencolor(240, 160, 80) -@@ -1997,7 +1924,6 @@ Settings and special methods +@@ -2187,7 +2114,6 @@ Settings and special methods do with a Tkinter Canvas. .. doctest:: @@ -587,7 +589,7 @@ unchanged: >>> cv = screen.getcanvas() >>> cv -@@ -2009,7 +1935,6 @@ Settings and special methods +@@ -2199,7 +2125,6 @@ Settings and special methods Return a list of names of all currently available turtle shapes. .. doctest:: @@ -595,7 +597,7 @@ unchanged: >>> screen.getshapes() ['arrow', 'blank', 'circle', ..., 'turtle'] -@@ -2033,7 +1958,6 @@ Settings and special methods +@@ -2223,7 +2148,6 @@ Settings and special methods coordinates: Install the corresponding polygon shape. .. doctest:: @@ -603,7 +605,7 @@ unchanged: >>> screen.register_shape("triangle", ((5,-3), (0,5), (-5,-3))) -@@ -2049,7 +1973,6 @@ Settings and special methods +@@ -2239,7 +2163,6 @@ Settings and special methods Return the list of turtles on the screen. .. doctest:: @@ -611,7 +613,7 @@ unchanged: >>> for turtle in screen.turtles(): ... turtle.color("red") -@@ -2111,7 +2034,6 @@ Methods specific to Screen, not inherite +@@ -2301,7 +2224,6 @@ Methods specific to Screen, not inherite center window vertically .. doctest:: @@ -619,7 +621,7 @@ unchanged: >>> screen.setup (width=200, height=200, startx=0, starty=0) >>> # sets window to 200x200 pixels, in upper left of screen -@@ -2127,7 +2049,6 @@ Methods specific to Screen, not inherite +@@ -2317,7 +2239,6 @@ Methods specific to Screen, not inherite Set title of turtle window to *titlestring*. .. doctest:: @@ -627,7 +629,7 @@ unchanged: >>> screen.title("Welcome to the turtle zoo!") -@@ -2198,7 +2119,6 @@ Public classes +@@ -2388,7 +2309,6 @@ Public classes Example: .. doctest:: @@ -635,7 +637,7 @@ unchanged: >>> poly = ((0,0),(10,-5),(0,10),(-10,-5)) >>> s = Shape("compound") -@@ -2549,7 +2469,6 @@ Changes since Python 3.0 +@@ -2774,7 +2694,6 @@ Changes since Python 3.0 .. doctest:: diff --git a/python-3.3.0b1-fix_date_time_compiler.patch b/python-3.3.0b1-fix_date_time_compiler.patch index 5988773..4b21337 100644 --- a/python-3.3.0b1-fix_date_time_compiler.patch +++ b/python-3.3.0b1-fix_date_time_compiler.patch @@ -2,10 +2,10 @@ Makefile.pre.in | 7 +++++++ 1 file changed, 7 insertions(+) -Index: Python-3.12.0b1/Makefile.pre.in +Index: Python-3.12.0rc1/Makefile.pre.in =================================================================== ---- Python-3.12.0b1.orig/Makefile.pre.in -+++ Python-3.12.0b1/Makefile.pre.in +--- Python-3.12.0rc1.orig/Makefile.pre.in ++++ Python-3.12.0rc1/Makefile.pre.in @@ -1332,11 +1332,18 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \ $(DTRACE_OBJS) \ $(srcdir)/Modules/getbuildinfo.c diff --git a/python-3.3.0b1-localpath.patch b/python-3.3.0b1-localpath.patch index 6819aa9..6289740 100644 --- a/python-3.3.0b1-localpath.patch +++ b/python-3.3.0b1-localpath.patch @@ -1,7 +1,7 @@ -Index: Python-3.12.0b1/Lib/site.py +Index: Python-3.12.0rc1/Lib/site.py =================================================================== ---- Python-3.12.0b1.orig/Lib/site.py -+++ Python-3.12.0b1/Lib/site.py +--- Python-3.12.0rc1.orig/Lib/site.py ++++ Python-3.12.0rc1/Lib/site.py @@ -76,7 +76,7 @@ import _sitebuiltins import io diff --git a/python-3.3.0b1-test-posix_fadvise.patch b/python-3.3.0b1-test-posix_fadvise.patch index 8b72068..8f10ade 100644 --- a/python-3.3.0b1-test-posix_fadvise.patch +++ b/python-3.3.0b1-test-posix_fadvise.patch @@ -2,10 +2,10 @@ Lib/test/test_posix.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: Python-3.12.0b1/Lib/test/test_posix.py +Index: Python-3.12.0rc1/Lib/test/test_posix.py =================================================================== ---- Python-3.12.0b1.orig/Lib/test/test_posix.py -+++ Python-3.12.0b1/Lib/test/test_posix.py +--- Python-3.12.0rc1.orig/Lib/test/test_posix.py ++++ Python-3.12.0rc1/Lib/test/test_posix.py @@ -431,7 +431,7 @@ class PosixTester(unittest.TestCase): def test_posix_fadvise(self): fd = os.open(os_helper.TESTFN, os.O_RDONLY) diff --git a/python312.changes b/python312.changes index a45b3db..ef89f68 100644 --- a/python312.changes +++ b/python312.changes @@ -1,3 +1,133 @@ +------------------------------------------------------------------- +Mon Aug 7 07:31:27 UTC 2023 - Daniel Garcia + +- Refresh all patches +- Drop Revert-gh105127-left-tests.patch, in upstream now +- Update to 3.12.0rc1: + - Reverted the :mod:`email.utils` security improvement change + released in 3.12beta4 that unintentionally caused + :mod:`email.utils.getaddresses` to fail to parse email addresses + with a comma in the quoted name field. See :gh:`106669`. + - Start initializing ob_digit during creation of + :c:type:`PyLongObject` objects. Patch by Illia Volochii. + - Increase C recursion limit for functions other than the main + interpreter from 800 to 1500. This should allow functions like + list.__repr__ and json.dumps to handle all the inputs that they + could prior to 3.12 + - Fix potential unaligned memory access on C APIs involving returned + sequences of char * pointers within the :mod:`grp` and + :mod:`socket` modules. These were revealed using a + -fsaniziter=alignment build on ARM macOS. Patch by Christopher + Chavez. + - Add the exception as the third argument to PY_UNIND callbacks in + sys.monitoring. This makes the PY_UNWIND callback consistent with + the other exception hanlding callbacks. + - Raise a ValueError when a monitoring callback funtion returns + DISABLE for events that cannot be disabled locally. + - Add a RERAISE event to sys.monitoring, which occurs when an + exception is reraised, either explicitly by a plain raise + statement, or implicitly in an except or finally block. + - Unsupported modules now always fail to be imported. + - Fix classmethod-style :func:`super` method calls (i.e., where the + second argument to :func:`super`, or the implied second argument + drawn from self/cls in the case of zero-arg super, is a type) when + the target of the call is not a classmethod. + - Python no longer crashes due an infrequent race when initialzing + per-interpreter interned strings. The crash would manifest when + the interpreter was finalized. + - Python no longer crashes due to an infrequent race in setting + Py_FileSystemDefaultEncoding and Py_FileSystemDefaultEncodeErrors + (both deprecated), when simultaneously initializing two isolated + subinterpreters. Now they are only set during runtime + initialization. + - Fix a segmentation fault caused by a use-after-free bug in + frame_dealloc when the trashcan delays the deallocation of a + PyFrameObject. + - No longer suppress arbitrary errors in the __annotations__ getter + and setter in the type and module types. + - Propagate frozen_modules to multiprocessing spawned process + interpreters. + - Prevent out-of-bounds memory access during mmap.find() calls. + - Seems that in some conditions, OpenSSL will return + SSL_ERROR_SYSCALL instead of SSL_ERROR_SSL when a certification + verification has failed, but the error parameters will still + contain ERR_LIB_SSL and SSL_R_CERTIFICATE_VERIFY_FAILED. We are + now detecting this situation and raising the appropiate + ssl.SSLCertVerificationError. Patch by Pablo Galindo + - Fix :func:`types.get_original_bases` to only return + :attr:`!__orig_bases__` if it is present on cls directly. Patch by + James Hilton-Balfe. + - Prevent memory leak and use-after-free when using pointers to + pointers with ctypes + - Make :func:`gettext.pgettext` search plural definitions when + translation is not found. + - Document behavior of :func:`shutil.disk_usage` for non-mounted + filesystems on Unix. + - Do not report MultipartInvariantViolationDefect defect when the + :class:`email.parser.Parser` class is used to parse emails with + headersonly=True. + - Fix invalid result from :meth:`PurePath.relative_to` method when + attempting to walk a ".." segment in other with walk_up enabled. A + :exc:`ValueError` exception is now raised in this case. + - Fix potential missing NULL check of d2i_SSL_SESSION result in + _ssl.c. + - Update the bundled copy of pip to version 23.2.1. + - Fixed several bugs in zipfile.Path, including: in Path.match`, + Windows separators are no longer honored (and never were meant to + be); Fixed ``name/suffix/suffixes/stem operations when no filename + is present and the Path is not at the root of the zipfile; + Reworked glob for performance and more correct matching behavior. + - Add __copy__ and __deepcopy__ in :mod:`enum` + - Revert a change to :func:`colorsys.rgb_to_hls` that caused + division by zero for certain almost-white inputs. Patch by Terry + Jan Reedy. + - Instances of :class:`typing.TypeVar`, :class:`typing.ParamSpec`, + :class:`typing.ParamSpecArgs`, :class:`typing.ParamSpecKwargs`, + and :class:`typing.TypeVarTuple` once again support weak + references, fixing a regression introduced in Python 3.12.0 beta + 1. Patch by Jelle Zijlstra. + - Detect possible memory allocation failure in the libtommath + function :c:func:`mp_init` used by the _tkinter module. + - Fix crash when calling repr with a manually constructed SignalDict + object. Patch by Charlie Zhao. + - Change the default return value of + :meth:`http.client.HTTPConnection.get_proxy_response_headers` to + be None and not {}. + - Ensure gettext(msg) retrieve translations even if a plural form + exists. In other words: gettext(msg) == ngettext(msg, '', 1). + - Add documentation for :c:type:`PyInterpreterConfig` and + :c:func:`Py_NewInterpreterFromConfig`. Also clarify some of the + nearby docs relative to per-interpreter GIL. + - Document the :mod:`curses` module variables :const:`~curses.LINES` + and :const:`~curses.COLS`. + - Add a number of standard external names to nitpick_ignore. + - Add documentation on how to localize the :mod:`argparse` module. + - test_logging: Fix test_udp_reconnection() by increasing the + timeout from 100 ms to 5 minutes (LONG_TIMEOUT). Patch by Victor + Stinner. + - test_capi: Fix test_no_FatalError_infinite_loop() to no longer + write a coredump, by using test.support.SuppressCrashReport. Patch + by Victor Stinner. + - Avoid creating a reference to the test object in + :meth:`~unittest.TestResult.collectedDurations`. + - Moved tests for zipfile.Path into Lib/test/test_zipfile/_path. + Made zipfile._path a package. + - Check for linux/limits.h before including it in + Modules/posixmodule.c. + - Detect MPI compilers in :file:`configure`. + - Add experimental wasi-threads support. Patch by Takashi Yamamoto. + - Update Windows build to use OpenSSL 3.0.9 + - Update macOS installer to use OpenSSL 3.0.9. + - Fix bugs in the Argument Clinic destination clear command; + the destination buffers would never be cleared, and the + destination directive parser would simply continue to the fault + handler after processing the command. Patch by Erlend E. Aasland. + - freeze now fetches CONFIG_ARGS from the original CPython instance + the Makefile uses to call utility scripts. Patch by Ijtaba + Hussain. + - :c:func:`PyModule_AddObjectRef` is now only available in the + limited API version 3.10 or later. + ------------------------------------------------------------------- Fri Aug 4 06:37:41 UTC 2023 - Dirk Müller diff --git a/python312.spec b/python312.spec index 73112c0..5974fe7 100644 --- a/python312.spec +++ b/python312.spec @@ -105,7 +105,7 @@ %define dynlib() %{sitedir}/lib-dynload/%{1}.cpython-%{abi_tag}-%{archname}-%{_os}%{?_gnu}%{?armsuffix}.so %bcond_without profileopt Name: %{python_pkg_name}%{psuffix} -Version: 3.12.0b4 +Version: 3.12.0rc1 Release: 0 Summary: Python 3 Interpreter License: Python-2.0 @@ -163,9 +163,6 @@ Patch34: skip-test_pyobject_freed_is_freed.patch # PATCH-FIX-SLE fix_configure_rst.patch bpo#43774 mcepl@suse.com # remove duplicate link targets and make documentation with old Sphinx in SLE Patch35: fix_configure_rst.patch -# PATCH-FIX-UPSTREAM Revert-gh105127-left-tests.patch bsc#1210638 mcepl@suse.com -# Partially revert previous patch -Patch41: Revert-gh105127-left-tests.patch BuildRequires: autoconf-archive BuildRequires: automake BuildRequires: fdupes @@ -434,7 +431,6 @@ other applications. %patch34 -p1 # %%endif %patch35 -p1 -%patch41 -p1 # drop Autoconf version requirement sed -i 's/^AC_PREREQ/dnl AC_PREREQ/' configure.ac diff --git a/skip-test_pyobject_freed_is_freed.patch b/skip-test_pyobject_freed_is_freed.patch index 623d045..e1d7c89 100644 --- a/skip-test_pyobject_freed_is_freed.patch +++ b/skip-test_pyobject_freed_is_freed.patch @@ -2,8 +2,10 @@ Lib/test/test_capi/test_mem.py | 1 + 1 file changed, 1 insertion(+) ---- a/Lib/test/test_capi/test_mem.py -+++ b/Lib/test/test_capi/test_mem.py +Index: Python-3.12.0rc1/Lib/test/test_capi/test_mem.py +=================================================================== +--- Python-3.12.0rc1.orig/Lib/test/test_capi/test_mem.py ++++ Python-3.12.0rc1/Lib/test/test_capi/test_mem.py @@ -110,6 +110,7 @@ class PyMemDebugTests(unittest.TestCase) def test_pyobject_forbidden_bytes_is_freed(self): self.check_pyobject_is_freed('check_pyobject_forbidden_bytes_is_freed') diff --git a/subprocess-raise-timeout.patch b/subprocess-raise-timeout.patch index b984fc4..97071d3 100644 --- a/subprocess-raise-timeout.patch +++ b/subprocess-raise-timeout.patch @@ -2,8 +2,10 @@ Lib/test/test_subprocess.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) ---- a/Lib/test/test_subprocess.py -+++ b/Lib/test/test_subprocess.py +Index: Python-3.12.0rc1/Lib/test/test_subprocess.py +=================================================================== +--- Python-3.12.0rc1.orig/Lib/test/test_subprocess.py ++++ Python-3.12.0rc1/Lib/test/test_subprocess.py @@ -280,7 +280,8 @@ class ProcessTestCase(BaseTestCase): "time.sleep(3600)"], # Some heavily loaded buildbots (sparc Debian 3.x) require