diff --git a/CVE-2023-6597-TempDir-cleaning-symlink.patch b/CVE-2023-6597-TempDir-cleaning-symlink.patch index c62fbbe..c5e3528 100644 --- a/CVE-2023-6597-TempDir-cleaning-symlink.patch +++ b/CVE-2023-6597-TempDir-cleaning-symlink.patch @@ -4,8 +4,10 @@ Misc/NEWS.d/next/Library/2022-12-01-16-57-44.gh-issue-91133.LKMVCV.rst | 2 3 files changed, 131 insertions(+) ---- a/Lib/tempfile.py -+++ b/Lib/tempfile.py +Index: Python-3.12.4/Lib/tempfile.py +=================================================================== +--- Python-3.12.4.orig/Lib/tempfile.py ++++ Python-3.12.4/Lib/tempfile.py @@ -285,6 +285,22 @@ def _resetperms(path): _dont_follow_symlinks(chflags, path, 0) _dont_follow_symlinks(_os.chmod, path, 0o700) @@ -29,9 +31,11 @@ # User visible interfaces. ---- a/Lib/test/test_tempfile.py -+++ b/Lib/test/test_tempfile.py -@@ -1781,6 +1781,103 @@ class TestTemporaryDirectory(BaseTestCas +Index: Python-3.12.4/Lib/test/test_tempfile.py +=================================================================== +--- Python-3.12.4.orig/Lib/test/test_tempfile.py ++++ Python-3.12.4/Lib/test/test_tempfile.py +@@ -1803,6 +1803,103 @@ class TestTemporaryDirectory(BaseTestCas new_flags = os.stat(dir1).st_flags self.assertEqual(new_flags, old_flags) @@ -135,7 +139,7 @@ @support.cpython_only def test_del_on_collection(self): # A TemporaryDirectory is deleted when garbage collected -@@ -1955,6 +2052,22 @@ class TestTemporaryDirectory(BaseTestCas +@@ -1977,6 +2074,22 @@ class TestTemporaryDirectory(BaseTestCas def check_flags(self, flags): # skip the test if these flags are not supported (ex: FreeBSD 13) @@ -158,8 +162,10 @@ filename = os_helper.TESTFN try: open(filename, "w").close() +Index: Python-3.12.4/Misc/NEWS.d/next/Library/2022-12-01-16-57-44.gh-issue-91133.LKMVCV.rst +=================================================================== --- /dev/null -+++ b/Misc/NEWS.d/next/Library/2022-12-01-16-57-44.gh-issue-91133.LKMVCV.rst ++++ Python-3.12.4/Misc/NEWS.d/next/Library/2022-12-01-16-57-44.gh-issue-91133.LKMVCV.rst @@ -0,0 +1,2 @@ +Fix a bug in :class:`tempfile.TemporaryDirectory` cleanup, which now no longer +dereferences symlinks when working around file system permission errors. diff --git a/F00251-change-user-install-location.patch b/F00251-change-user-install-location.patch new file mode 100644 index 0000000..bdab695 --- /dev/null +++ b/F00251-change-user-install-location.patch @@ -0,0 +1,152 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= +Date: Mon, 15 Feb 2021 12:19:27 +0100 +Subject: [PATCH] 00251: Change user install location +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Set values of base and platbase in sysconfig from /usr +to /usr/local when RPM build is not detected +to make pip and similar tools install into separate location. + +Fedora Change: https://fedoraproject.org/wiki/Changes/Making_sudo_pip_safe +Downstream only. + +We've tried to rework in Fedora 36/Python 3.10 to follow https://bugs.python.org/issue43976 +but we have identified serious problems with that approach, +see https://bugzilla.redhat.com/2026979 or https://bugzilla.redhat.com/2097183 + +pypa/distutils integration: https://github.com/pypa/distutils/pull/70 + +Co-authored-by: Petr Viktorin +Co-authored-by: Miro Hrončok +Co-authored-by: Michal Cyprian +Co-authored-by: Lumír Balhar +--- + Lib/site.py | 9 ++++++- + Lib/sysconfig.py | 49 +++++++++++++++++++++++++++++++++++++- + Lib/test/test_sysconfig.py | 17 +++++++++++-- + 3 files changed, 71 insertions(+), 4 deletions(-) + +Index: Python-3.12.4/Lib/sysconfig.py +=================================================================== +--- Python-3.12.4.orig/Lib/sysconfig.py ++++ Python-3.12.4/Lib/sysconfig.py +@@ -104,6 +104,11 @@ if os.name == 'nt': + else: + _INSTALL_SCHEMES['venv'] = _INSTALL_SCHEMES['posix_venv'] + ++# For a brief period of time in the Fedora 36 life cycle, ++# this installation scheme existed and was documented in the release notes. ++# For backwards compatibility, we keep it here (at least on 3.10 and 3.11). ++_INSTALL_SCHEMES['rpm_prefix'] = _INSTALL_SCHEMES['posix_prefix'] ++ + + # NOTE: site.py has copy of this function. + # Sync it when modify this function. +@@ -163,6 +168,19 @@ if _HAS_USER_BASE: + }, + } + ++# This is used by distutils.command.install in the stdlib ++# as well as pypa/distutils (e.g. bundled in setuptools). ++# The self.prefix value is set to sys.prefix + /local/ ++# if neither RPM build nor virtual environment is ++# detected to make distutils install packages ++# into the separate location. ++# https://fedoraproject.org/wiki/Changes/Making_sudo_pip_safe ++if (not (hasattr(sys, 'real_prefix') or ++ sys.prefix != sys.base_prefix) and ++ 'RPM_BUILD_ROOT' not in os.environ): ++ _prefix_addition = '/local' ++ ++ + _SCHEME_KEYS = ('stdlib', 'platstdlib', 'purelib', 'platlib', 'include', + 'scripts', 'data') + +@@ -263,11 +281,40 @@ def _extend_dict(target_dict, other_dict + target_dict[key] = value + + ++_CONFIG_VARS_LOCAL = None ++ ++ ++def _config_vars_local(): ++ # This function returns the config vars with prefixes amended to /usr/local ++ # https://fedoraproject.org/wiki/Changes/Making_sudo_pip_safe ++ global _CONFIG_VARS_LOCAL ++ if _CONFIG_VARS_LOCAL is None: ++ _CONFIG_VARS_LOCAL = dict(get_config_vars()) ++ _CONFIG_VARS_LOCAL['base'] = '/usr/local' ++ _CONFIG_VARS_LOCAL['platbase'] = '/usr/local' ++ return _CONFIG_VARS_LOCAL ++ ++ + def _expand_vars(scheme, vars): + res = {} + if vars is None: + vars = {} +- _extend_dict(vars, get_config_vars()) ++ ++ # when we are not in a virtual environment or an RPM build ++ # we change '/usr' to '/usr/local' ++ # to avoid surprises, we explicitly check for the /usr/ prefix ++ # Python virtual environments have different prefixes ++ # we only do this for posix_prefix, not to mangle the venv scheme ++ # posix_prefix is used by sudo pip install ++ # we only change the defaults here, so explicit --prefix will take precedence ++ # https://fedoraproject.org/wiki/Changes/Making_sudo_pip_safe ++ if (scheme == 'posix_prefix' and ++ _PREFIX == '/usr' and ++ 'RPM_BUILD_ROOT' not in os.environ): ++ _extend_dict(vars, _config_vars_local()) ++ else: ++ _extend_dict(vars, get_config_vars()) ++ + 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.4/Lib/test/test_sysconfig.py +=================================================================== +--- Python-3.12.4.orig/Lib/test/test_sysconfig.py ++++ Python-3.12.4/Lib/test/test_sysconfig.py +@@ -110,8 +110,19 @@ class TestSysConfig(unittest.TestCase): + for scheme in _INSTALL_SCHEMES: + for name in _INSTALL_SCHEMES[scheme]: + expected = _INSTALL_SCHEMES[scheme][name].format(**config_vars) ++ tested = get_path(name, scheme) ++ # https://fedoraproject.org/wiki/Changes/Making_sudo_pip_safe ++ if tested.startswith('/usr/local'): ++ # /usr/local should only be used in posix_prefix ++ self.assertEqual(scheme, 'posix_prefix') ++ # Fedora CI runs tests for venv and virtualenv that check for other prefixes ++ self.assertEqual(sys.prefix, '/usr') ++ # When building the RPM of Python, %check runs this with RPM_BUILD_ROOT set ++ # Fedora CI runs this with RPM_BUILD_ROOT unset ++ self.assertNotIn('RPM_BUILD_ROOT', os.environ) ++ tested = tested.replace('/usr/local', '/usr') + self.assertEqual( +- os.path.normpath(get_path(name, scheme)), ++ os.path.normpath(tested), + os.path.normpath(expected), + ) + +@@ -344,7 +355,7 @@ class TestSysConfig(unittest.TestCase): + self.assertTrue(os.path.isfile(config_h), config_h) + + def test_get_scheme_names(self): +- wanted = ['nt', 'posix_home', 'posix_prefix', 'posix_venv', 'nt_venv', 'venv'] ++ wanted = ['nt', 'posix_home', 'posix_prefix', 'posix_venv', 'nt_venv', 'venv', 'rpm_prefix'] + if HAS_USER_BASE: + wanted.extend(['nt_user', 'osx_framework_user', 'posix_user']) + self.assertEqual(get_scheme_names(), tuple(sorted(wanted))) +@@ -356,6 +367,8 @@ class TestSysConfig(unittest.TestCase): + cmd = "-c", "import sysconfig; print(sysconfig.get_platform())" + self.assertEqual(py.call_real(*cmd), py.call_link(*cmd)) + ++ @unittest.skipIf('RPM_BUILD_ROOT' not in os.environ, ++ "Test doesn't expect Fedora's paths") + def test_user_similar(self): + # Issue #8759: make sure the posix scheme for the users + # is similar to the global posix_prefix one diff --git a/Python-3.12.3.tar.xz b/Python-3.12.3.tar.xz deleted file mode 100644 index db2a767..0000000 --- a/Python-3.12.3.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:56bfef1fdfc1221ce6720e43a661e3eb41785dd914ce99698d8c7896af4bdaa1 -size 20625068 diff --git a/Python-3.12.3.tar.xz.asc b/Python-3.12.3.tar.xz.asc deleted file mode 100644 index f0579f8..0000000 --- a/Python-3.12.3.tar.xz.asc +++ /dev/null @@ -1,18 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQKTBAABCgB9FiEEcWlgX2LHUTVtBUomqCHmgOX6YwUFAmYVDdNfFIAAAAAALgAo -aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDcx -Njk2MDVGNjJDNzUxMzU2RDA1NEEyNkE4MjFFNjgwRTVGQTYzMDUACgkQqCHmgOX6 -YwU8Vg//aP8bxzPTDIM9Af1LLJj5LNLIuZOl5QysWQVbakoCpS8Z8ZiK3LyzGi7H -pQ5uJEnRjhULnOi+va2TPBDqiYvY1CkVizYzmUe1dMtzHdJUBE1TzybfON02JzPD -62oDHxUC1hvITyLE8tjnsgBuP9bbYYHnS+qqmDgBWS1M60i4bqcBiSdlWZp7ZTI4 -KIxIy9eyNujHnNQrQQ1oqIoj7ty1Hrtkfqia/3cVq7rkQT8HecBIW0K82WuIXizm -/Ua/TQslTJsypslFYpoJBoIkWG2nk7RhJvfU5iLxQHen6cr7JOUo/u3jv0DIJyJs -LdBWG6noTIiqKJb65UswLUxexM5f3Y7gLEZ4FCqlbAOAPG16xwwC8Xd7LIF33cHK -133BvYCkwdl0MCpmsQuxi8i6Kql0MaEqJ9MEj6UN66ZJVpRx8hOm2FtZGhn5ZNxx -r5C2zXGw/IjXeS01wgD8cSRVA0XJdN4bu88vmvhqMuezg3CDF5bX85isoFUaLUjS -c5Lv1HNrqPiaWHOctnvzasy0djpwze+WCzsXFMI6VfejPpYwNlhmnxS7i3R9A4RK -gBwViMd5q5rwx365tCfRfGcBW6OOvrHZalhSGYmUw13sBarFliW9CvN4ghN9kWbN -YQwSggf5KD6v5mAAyReMrOJTyBG6B5hMlxKai5CzbRLlG25T2wI= -=ZQxz ------END PGP SIGNATURE----- diff --git a/Python-3.12.5.tar.xz b/Python-3.12.5.tar.xz new file mode 100644 index 0000000..abbbe8a --- /dev/null +++ b/Python-3.12.5.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa8a2e12c5e620b09f53e65bcd87550d2e5a1e2e04bf8ba991dcc55113876397 +size 20422396 diff --git a/Python-3.12.5.tar.xz.asc b/Python-3.12.5.tar.xz.asc new file mode 100644 index 0000000..445454f --- /dev/null +++ b/Python-3.12.5.tar.xz.asc @@ -0,0 +1,18 @@ +-----BEGIN PGP SIGNATURE----- + +iQKTBAABCgB9FiEEcWlgX2LHUTVtBUomqCHmgOX6YwUFAmayiFtfFIAAAAAALgAo +aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDcx +Njk2MDVGNjJDNzUxMzU2RDA1NEEyNkE4MjFFNjgwRTVGQTYzMDUACgkQqCHmgOX6 +YwUr4g//VyVs9tvbtiSp8pGe8f1gYErEw54r124sL/CBuNii8Irts1j5ymGxcm+l +hshPK5UlqRnhd5dCJWFTvLTXa5Ko2R1L3JyyxfGd1hmDuMhrWsDHijI0R7L/mGM5 +6X2LTaadBVNvk8HaNKvR8SEWvo68rdnOuYElFA9ir7uqwjO26ZWz9FfH80YDGwo8 +Blef2NYw8rNhiaZMFV0HYV7D+YyUAZnFNfW8M7Fd4oskUyj1tD9J89T9FFLYN09d +BcCIf+EdiEfqRpKxH89bW2g52kDrm4jYGONtpyF8eruyS3YwYSbvbuWioBYKmlxC +s51mieXz6G325GTZnmPxLek3ywPv6Gil9y0wH3fIr2BsWsmXust4LBpjDGt56Fy6 +seokGBg8xzsBSk3iEqNoFmNsy/QOiuCcDejX4XqBDNodOlETQPJb07TkTI2iOmg9 +NG4Atiz1HvGVxK68UuK9IIcNHyaWUmH8h4VQFGvc6KV6feP5Nm21Y12PZ5XIqJBO +Y8M/VJIJ5koaNPQfnBbbI5YBkUr4BVpIXIpY5LM/L5sUo2C3R7hMi0VGK88HGfSQ +KV4JmZgf6RMBNmrWY12sryS1QQ6q3P110GTUGQWB3sxxNbhmfcrK+4viqHc83yDz +ifmk33HuqaQGU7OzUMHeNcoCJIPo3H1FpoHOn9wLLCtA1pT+as4= +=t0Rk +-----END PGP SIGNATURE----- diff --git a/bluez-devel-vendor.tar.xz b/bluez-devel-vendor.tar.xz index d4d3912..bb4fd89 100644 --- a/bluez-devel-vendor.tar.xz +++ b/bluez-devel-vendor.tar.xz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a17f3fb420bf6bd577dde9e2b256cdb1df179ba552abb7172863321208a4713f -size 25308 +oid sha256:4624c6ab6543ec4875bdd5c6c58c874d487128e44e54c8ef1924ec1d48e35928 +size 25328 diff --git a/bpo-31046_ensurepip_honours_prefix.patch b/bpo-31046_ensurepip_honours_prefix.patch index ad4910d..4faebdb 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.2/Doc/library/ensurepip.rst +Index: Python-3.12.4/Doc/library/ensurepip.rst =================================================================== ---- Python-3.12.2.orig/Doc/library/ensurepip.rst -+++ Python-3.12.2/Doc/library/ensurepip.rst +--- Python-3.12.4.orig/Doc/library/ensurepip.rst ++++ Python-3.12.4/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.2/Doc/library/ensurepip.rst .. audit-event:: ensurepip.bootstrap root ensurepip.bootstrap .. note:: -Index: Python-3.12.2/Lib/ensurepip/__init__.py +Index: Python-3.12.4/Lib/ensurepip/__init__.py =================================================================== ---- Python-3.12.2.orig/Lib/ensurepip/__init__.py -+++ Python-3.12.2/Lib/ensurepip/__init__.py +--- Python-3.12.4.orig/Lib/ensurepip/__init__.py ++++ Python-3.12.4/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.2/Lib/ensurepip/__init__.py upgrade=args.upgrade, user=args.user, verbosity=args.verbosity, -Index: Python-3.12.2/Lib/test/test_ensurepip.py +Index: Python-3.12.4/Lib/test/test_ensurepip.py =================================================================== ---- Python-3.12.2.orig/Lib/test/test_ensurepip.py -+++ Python-3.12.2/Lib/test/test_ensurepip.py +--- Python-3.12.4.orig/Lib/test/test_ensurepip.py ++++ Python-3.12.4/Lib/test/test_ensurepip.py @@ -105,6 +105,17 @@ class TestBootstrap(EnsurepipMixin, unit unittest.mock.ANY, ) @@ -143,11 +143,11 @@ Index: Python-3.12.2/Lib/test/test_ensurepip.py def test_bootstrapping_with_user(self): ensurepip.bootstrap(user=True) -Index: Python-3.12.2/Makefile.pre.in +Index: Python-3.12.4/Makefile.pre.in =================================================================== ---- Python-3.12.2.orig/Makefile.pre.in -+++ Python-3.12.2/Makefile.pre.in -@@ -1912,7 +1912,7 @@ install: @FRAMEWORKINSTALLFIRST@ commoni +--- Python-3.12.4.orig/Makefile.pre.in ++++ Python-3.12.4/Makefile.pre.in +@@ -1914,7 +1914,7 @@ install: @FRAMEWORKINSTALLFIRST@ commoni install|*) ensurepip="" ;; \ esac; \ $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \ @@ -156,7 +156,7 @@ Index: Python-3.12.2/Makefile.pre.in fi .PHONY: altinstall -@@ -1923,7 +1923,7 @@ altinstall: commoninstall +@@ -1925,7 +1925,7 @@ altinstall: commoninstall install|*) ensurepip="--altinstall" ;; \ esac; \ $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \ @@ -165,9 +165,9 @@ Index: Python-3.12.2/Makefile.pre.in fi .PHONY: commoninstall -Index: Python-3.12.2/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst +Index: Python-3.12.4/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst =================================================================== --- /dev/null -+++ Python-3.12.2/Misc/NEWS.d/next/Build/2019-12-16-17-50-42.bpo-31046.XA-Qfr.rst ++++ Python-3.12.4/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/docs-docutils_014-Sphinx_420.patch b/docs-docutils_014-Sphinx_420.patch new file mode 100644 index 0000000..ecb3c87 --- /dev/null +++ b/docs-docutils_014-Sphinx_420.patch @@ -0,0 +1,56 @@ +--- + Doc/tools/extensions/c_annotations.py | 6 +++++- + Doc/tools/extensions/glossary_search.py | 12 ++++++++++-- + Doc/tools/extensions/pyspecific.py | 5 ++++- + 3 files changed, 19 insertions(+), 4 deletions(-) + +--- a/Doc/tools/extensions/c_annotations.py ++++ b/Doc/tools/extensions/c_annotations.py +@@ -118,7 +118,11 @@ def add_annotations(app: Sphinx, doctree + state = app.env.domaindata["c_annotations"] + refcount_data = state["refcount_data"] + stable_abi_data = state["stable_abi_data"] +- for node in doctree.findall(addnodes.desc_content): ++ try: ++ findall = doctree.findall ++ except AttributeError: ++ findall = doctree.traverse ++ for node in findall(addnodes.desc_content): + par = node.parent + if par["domain"] != "c": + continue +--- a/Doc/tools/extensions/glossary_search.py ++++ b/Doc/tools/extensions/glossary_search.py +@@ -30,8 +30,16 @@ def process_glossary_nodes( + else: + terms = app.env.glossary_terms = {} + +- for node in doctree.findall(glossary): +- for glossary_item in node.findall(nodes.definition_list_item): ++ try: ++ findall = doctree.findall ++ except AttributeError: ++ findall = doctree.traverse ++ for node in findall(glossary): ++ try: ++ node_findall = node.findall ++ except AttributeError: ++ node_findall = node.traverse ++ for glossary_item in node_findall(nodes.definition_list_item): + term = glossary_item[0].astext() + definition = glossary_item[-1] + +--- a/Doc/tools/extensions/pyspecific.py ++++ b/Doc/tools/extensions/pyspecific.py +@@ -27,7 +27,10 @@ from sphinx.locale import _ as sphinx_ge + from sphinx.util import logging + from sphinx.util.docutils import SphinxDirective + from sphinx.writers.text import TextWriter, TextTranslator +-from sphinx.util.display import status_iterator ++try: ++ from sphinx.util.display import status_iterator ++except ModuleNotFoundError: ++ from sphinx.util import status_iterator + + + ISSUE_URI = 'https://bugs.python.org/issue?@action=redirect&bpo=%s' diff --git a/fix_configure_rst.patch b/fix_configure_rst.patch index ab85538..d0d9baf 100644 --- a/fix_configure_rst.patch +++ b/fix_configure_rst.patch @@ -5,7 +5,7 @@ --- a/Doc/using/configure.rst +++ b/Doc/using/configure.rst -@@ -631,13 +631,11 @@ macOS Options +@@ -640,13 +640,11 @@ macOS Options See ``Mac/README.rst``. @@ -21,7 +21,7 @@ Create a Python.framework rather than a traditional Unix install. Optional --- a/Misc/NEWS +++ b/Misc/NEWS -@@ -13428,7 +13428,7 @@ C API +@@ -13832,7 +13832,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/import_failed.map b/import_failed.map index f33690c..7cba163 100644 --- a/import_failed.map +++ b/import_failed.map @@ -1,7 +1,7 @@ -python311-curses: curses _curses _curses_panel -python311-dbm: dbm _dbm _gdbm -python311-idle: idlelib -python311-testsuite: test _ctypes_test _testbuffer _testcapi _testinternalcapi _testimportmultiple _testmultiphase xxlimited -python311-tk: tkinter _tkinter -python311-tools: turtledemo -python311: sqlite3 readline _sqlite3 nis +python312-curses: curses _curses +python312-dbm: dbm _dbm _gdbm +python312-idle: idlelib +python312-testsuite: test _ctypes_test _testbuffer _testcapi _testclinic _testinternalcapi _testimportmultiple _testmultiphase _testsinglephase _xxinterpchannels _xxtestfuzz +python312-tk: tkinter _tkinter +python312-tools: turtledemo +python312: sqlite3 readline _sqlite3 nis diff --git a/python-3.3.0b1-fix_date_time_compiler.patch b/python-3.3.0b1-fix_date_time_compiler.patch index 038dd66..43bb625 100644 --- a/python-3.3.0b1-fix_date_time_compiler.patch +++ b/python-3.3.0b1-fix_date_time_compiler.patch @@ -2,11 +2,11 @@ Makefile.pre.in | 7 +++++++ 1 file changed, 7 insertions(+) -Index: Python-3.12.2/Makefile.pre.in +Index: Python-3.12.4/Makefile.pre.in =================================================================== ---- Python-3.12.2.orig/Makefile.pre.in -+++ Python-3.12.2/Makefile.pre.in -@@ -1335,11 +1335,18 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \ +--- Python-3.12.4.orig/Makefile.pre.in ++++ Python-3.12.4/Makefile.pre.in +@@ -1337,11 +1337,18 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \ $(DTRACE_OBJS) \ $(srcdir)/Modules/getbuildinfo.c $(CC) -c $(PY_CORE_CFLAGS) \ diff --git a/python312.changes b/python312.changes index 722b280..78bed4d 100644 --- a/python312.changes +++ b/python312.changes @@ -1,3 +1,477 @@ +------------------------------------------------------------------- +Wed Aug 7 18:05:57 UTC 2024 - Matej Cepl + +- Update to 3.12.5: + - Tests + - gh-59022: Add tests for pkgutil.extend_path(). Patch by + Andreas Stocker. + - gh-99242: os.getloadavg() may throw OSError when + running regression tests under certain conditions (e.g. + chroot). This error is now caught and ignored, since + reporting load average is optional. + - gh-121084: Fix test_typing random leaks. Clear typing ABC + caches when running tests for refleaks (-R option): call + _abc_caches_clear() on typing abstract classes and their + subclasses. Patch by Victor Stinner. + - gh-121160: Add a test for + readline.set_history_length(). Note that this test may fail + on readline libraries. + - gh-121200: Fix test_expanduser_pwd2() of + test_posixpath. Call getpwnam() to get pw_dir, since it + can be different than getpwall() pw_dir. Patch by Victor + Stinner. + - gh-121188: When creating the JUnit XML file, regrtest + now escapes characters which are invalid in XML, such + as the chr(27) control character used in ANSI escape + sequences. Patch by Victor Stinner. + - Security + - gh-121957: Fixed missing audit events around interactive + use of Python, now also properly firing for python -i, as + well as for python -m asyncio. The event in question is + cpython.run_stdin. + - gh-122133: Authenticate the socket connection for the + socket.socketpair() fallback on platforms where AF_UNIX is + not available like Windows. + - Patch by Gregory P. Smith and Seth Larson + . Reported by Ellie + - Library + - gh-122744: Bump the version of pip bundled in ensurepip to + version 24.2. + - gh-122334: Fix crash when importing ssl after the main + interpreter restarts. + - gh-87320: In code.InteractiveInterpreter, handle exceptions + caused by calling a non-default sys.excepthook(). Before, + the exception bubbled up to the caller, ending the REPL. + - gh-122400: Handle ValueErrors raised by os.stat() in + filecmp.dircmp and filecmp.cmpfiles(). Patch by Bénédikt + Tran. + - gh-122311: Fix some error messages in pickle. + - gh-121650: email headers with embedded newlines are + now quoted on output. The generator will now refuse to + serialize (write) headers that are unsafely folded or + delimited; see verify_generated_headers. (Contributed by + Bas Bloemsaat and Petr Viktorin in gh-121650; bsc#1228780, + CVE-2024-6923). + - gh-122332: Fixed segfault with asyncio.Task.get_coro() when + using an eager task factory. + - gh-122170: Handle ValueErrors raised by os.stat() in + linecache. Patch by Bénédikt Tran. + - gh-121723: Make logging.config.dictConfig() accept any + object implementing the Queue public API. See the queue + configuration section for details. Patch by Bénédikt Tran. + - gh-82951: Serializing objects with complex __qualname__ + (such as unbound methods and nested classes) by name no + longer involves serializing parent objects by value in + pickle protocols < 4. + - gh-120930: Fixed a bug introduced by gh-92081 that added an + incorrect extra blank to encoded words occurring in wrapped + headers. + - gh-121474: Fix missing sanity check for parties arg in + threading.Barrier constructor. Patch by Clinton Christian + (pygeek). + - gh-121025: Improve the __repr__() of + functools.partialmethod. Patch by Bénédikt Tran. + - gh-121018: Fixed issues where + argparse.ArgumentParser.parse_args() did not honor + exit_on_error=False. Based on patch by Ben Hsing. + - gh-119614: Fix truncation of strings with embedded null + characters in some internal operations in tkinter. + - gh-120910: When reading installed files from an egg, use + relative_to(walk_up=True) to honor files installed outside + of the installation root. + - gh-101830: Accessing the tkinter object’s string + representation no longer converts the underlying Tcl object + to a string on Windows. + - gh-120811: Fix possible memory leak in + contextvars.Context.run(). + - gh-120769: Make empty line in pdb repeats the last command + even when the command is from cmdqueue. + - gh-120732: Fix name passing to unittest.mock.Mock object + when using unittest.mock.create_autospec(). + - gh-120495: Fix incorrect exception handling in Tab + Nanny. Patch by Wulian233. + - gh-120343: Fix column offset reporting for tokens that come + after multiline f-strings in the tokenize module. + - gh-119600: Fix unittest.mock.patch() to not read attributes + of the target when new_callable is set. Patch by Robert + Collins. + - gh-120289: Fixed the use-after-free issue in cProfile by + disallowing disable() and clear() in external timers. + - gh-114053: Fix edge-case bug where typing.get_type_hints() + would produce incorrect results if type parameters in a + class scope were overridden by assignments in a class scope + and from __future__ import annotations semantics were + enabled. Patch by Alex Waygood. + - gh-114053: Fix erroneous NameError when calling + inspect.get_annotations() with eval_str=True` on a class + that made use of PEP 695 type parameters in a module that + had from __future__ import annotations at the top of the + file. Patch by Alex Waygood. + - gh-120268: Prohibit passing None to pure-Python + datetime.date.fromtimestamp() to achieve consistency with + C-extension implementation. + - gh-120244: Fix memory leak in re.sub() when the replacement + string contains backreferences. + - gh-120211: Fix tkinter.ttk with Tcl/Tk 9.0. + - gh-71587: Fix crash in C version of + datetime.datetime.strptime() when called again on the + restarted interpreter. + - gh-117983: Defer the threading import in importlib.util + until lazy loading is used. + - gh-119698: Fix symtable.Class.get_methods() and document + its behaviour. Patch by Bénédikt Tran. + - gh-120121: Add concurrent.futures.InvalidStateError to + module’s __all__. + - gh-112672: Support building tkinter with Tcl 9.0. + - gh-65454: unittest.mock.Mock.attach_mock() no longer + triggers a call to a PropertyMock being attached. + - gh-81936: help() and showtopic() methods now respect a + configured output argument to pydoc.Helper and not use the + pager in such cases. Patch by Enrico Tröger. + - gh-119577: The DeprecationWarning emitted when testing + the truth value of an xml.etree.ElementTree.Element now + describes unconditionally returning True in a future + version rather than raising an exception in Python 3.14. + - gh-119506: Fix io.TextIOWrapper.write() method breaks + internal buffer when the method is called again during + flushing internal buffer. + - gh-119189: When using the ** operator or pow() with + Fraction as the base and an exponent that is not rational, + a float, or a complex, the fraction is no longer converted + to a float. + - gh-105623: Fix performance degradation in + logging.handlers.RotatingFileHandler. Patch by Craig + Robson. + - bpo-39324: Add mime type mapping for .md <-> text/markdown + - IDLE + - gh-122482: Change About IDLE to direct users to + discuss.python.org instead of the now unused idle-dev email + and mailing list. + - gh-78889: Stop Shell freezes by blocking user access to + non-method sys.stdout.shell attributes, which are all + private. + - gh-120104: Fix padding in config and search dialog windows + in IDLE. + - Documentation + - gh-121749: Fix documentation for PyModule_AddObjectRef(). + - gh-120012: Clarify the behaviours of + multiprocessing.Queue.empty() and + multiprocessing.SimpleQueue.empty() on closed queues. Patch + by Bénédikt Tran. + - gh-121871: Documentation HTML varies from timestamp. Patch by + Bernhard M. Wiedemann (bsc#1227999). + - Core and Builtins + - gh-122208: Dictionary watchers now only deliver the + PyDict_EVENT_ADDED event when the insertion is in a known + good state to succeed. + - gh-122300: Preserve AST nodes for f-string with + single-element format specifiers. Patch by Pablo Galindo + - gh-122029: Emit c_call events in sys.setprofile() when a + PyMethodObject pointing to a PyCFunction is called. + - gh-122026: Fix a bug that caused the tokenizer to not + correctly identify mismatched parentheses inside f-strings + in some situations. Patch by Pablo Galindo + - gh-121657: Improve the SyntaxError message if the user + tries to use yield from outside a function. + - gh-117482: Unexpected slot wrappers are no longer created + for builtin static types in subinterpreters. + - gh-121439: Allow tuples of length 20 in the freelist to be + reused. + - gh-121130: Fix f-strings with debug expressions in format + specifiers. Patch by Pablo Galindo + - gh-120722: Correctly set the bytecode position on return + instructions within lambdas. Patch by Jelle Zijlstra. + - gh-120384: Fix an array out of bounds crash in + list_ass_subscript, which could be invoked via some + specificly tailored input: including concurrent + modification of a list object, where one thread assigns a + slice and another clears it. + - gh-120380: Fix Python implementation of pickle.Pickler for + bytes and bytearray objects when using protocol version + 5. Patch by Bénédikt Tran. + - gh-93691: Fix source locations of instructions generated + for the iterator of a for statement. + - gh-120198: Fix a crash when multiple threads read and write + to the same __class__ of an object concurrently. + - gh-120298: Fix use-after free in list_richcompare_impl + which can be invoked via some specificly tailored evil + input. + - gh-119666: Fix a compiler crash in the case where two + comprehensions in class scope both reference __class__. + - bpo-24766: Fix handling of doc argument to subclasses of + property. + - Build + - gh-120671: Fix failing configure tests due to a missing + space when appending to CFLAGS. + - gh-115983: Skip building test modules that must be built as + shared under WASI. + +------------------------------------------------------------------- +Wed Aug 7 13:40:44 UTC 2024 - Matej Cepl + +- %{profileopt} variable is set according to the variable + %{do_profiling} (bsc#1227999) +- Update bluez-devel-vendor.tar.xz + +------------------------------------------------------------------- +Mon Jul 22 21:20:55 UTC 2024 - Matej Cepl + +- Remove %suse_update_desktop_file macro as it is not useful any + more. + +------------------------------------------------------------------- +Thu Jul 4 16:04:05 UTC 2024 - Matej Cepl + +- Stop using %%defattr, it seems to be breaking proper executable + attributes on /usr/bin/ scripts (bsc#1227378). + +------------------------------------------------------------------- +Tue Jul 2 10:33:52 UTC 2024 - Daniel Garcia + +- Add F00251-change-user-install-location.patch to make pip and + modern tools install directly in /usr/local when used by the user. + bsc#1225660 + +------------------------------------------------------------------- +Wed Jun 26 20:00:38 UTC 2024 - Matej Cepl + +- Add docs-docutils_014-Sphinx_420.patch make building docs + compatible with Sphinx 4_2_0 and docutils 0.14. + +------------------------------------------------------------------- +Wed Jun 26 08:08:19 UTC 2024 - Andreas Schwab + +- Update import_failed.map for python 3.12 + +------------------------------------------------------------------- +Mon Jun 24 12:14:52 UTC 2024 - Andreas Schwab + +- Reenable test_multiprocessing_forkserver test_multiprocessing_spawn + test_subprocess tests in qemu build + +------------------------------------------------------------------- +Fri Jun 7 10:44:55 UTC 2024 - Matej Cepl + +- Update to 3.12.4: + - Security + - gh-118486: os.mkdir() on Windows now accepts mode of 0o700 + to restrict the new directory to the current user. This + fixes CVE-2024-4030 affecting tempfile.mkdtemp() in + scenarios where the base temporary directory is more + permissive than the default (bsc#1227152). + - gh-116741: Update bundled libexpat to 2.6.2 + - gh-117233: Detect BLAKE2, SHA3, Shake, & truncated SHA512 + support in the OpenSSL-ish libcrypto library at build + time. This allows hashlib to be used with libraries that do + not to support every algorithm that upstream OpenSSL does. + - Core and Builtins + - gh-119821: Fix execution of annotation scopes within + classes when globals is set to a non-dict. Patch by Jelle + Zijlstra. + - gh-118263: Speed up os.path.normpath() with a direct C + call. + - gh-119311: Fix bug where names are unexpectedly mangled in + the bases of generic classes. + - gh-119395: Fix bug where names appearing after a generic + class are mangled as if they are in the generic class. + - gh-118507: Fix os.path.isfile() on Windows for pipes. + - gh-119213: Non-builtin modules built with argument clinic + were crashing if used in a subinterpreter before the main + interpreter. The objects that were causing the problem by + leaking between interpreters carelessly have been fixed. + - gh-119011: Fixes type.__type_params__ to return an empty + tuple instead of a descriptor. + - gh-118997: Fix _Py_ClearImmortal() assertion: use + _Py_IsImmortal() to tolerate reference count lower than + _Py_IMMORTAL_REFCNT. Fix the assertion for the stable + ABI, when a C extension is built with Python 3.11 or + lower. Patch by Victor Stinner. + - gh-118513: Fix incorrect UnboundLocalError when two + comprehensions in the same function both reference the same + name, and in one comprehension the name is bound while in + the other it’s an implicit global. + - gh-118164: Break a loop between the Python implementation + of the decimal module and the Python code for integer + to string conversion. Also optimize integer to string + conversion for values in the range from 9_000 to 135_000 + decimal digits. + - gh-118272: Fix bug where generator.close does not free the + generator frame’s locals. + - gh-116767: Fix crash in compiler on ‘async with’ that has + many context managers. + - gh-117894: Prevent agen.aclose() objects being re-used + after .throw(). + - gh-117881: prevent concurrent access to an async generator + via athrow().throw() or asend().throw() + - gh-115874: Fixed a possible segfault during garbage + collection of _asyncio.FutureIter objects + - Library + - gh-119819: Fix regression to allow logging configuration + with multiprocessing queue types. + - gh-89727: Fix issue with shutil.rmtree() where a + RecursionError is raised on deep directory trees. + - gh-89727: Partially fix issue with shutil.rmtree() + where a RecursionError is raised on deep directory + trees. A recursion error is no longer raised when + rmtree.avoids_symlink_attacks is false. + - gh-119118: Fix performance regression in the tokenize + module by caching the line token attribute and calculating + the column offset more efficiently. + - gh-89727: Fix issue with os.fwalk() where a RecursionError + was raised on deep directory trees by adjusting the + implementation to be iterative instead of recursive. + - gh-113892: Now, the method sock_connect of + asyncio.ProactorEventLoop raises a ValueError if given + socket is not in non-blocking mode, as well as in other + loop implementations. + - gh-119174: Fix high DPI causes turtledemo(turtle-graphics + examples) windows blurry Patch by Wulian233 and Terry Jan + Reedy + - gh-118643: Fix an AttributeError in the email module + when re-fold a long address list. Also fix more cases of + incorrect encoding of the address separator in the address + list. + - gh-58933: Make pdb return to caller frame correctly when + f_trace of the caller frame is not set + - gh-118868: Fixed issue where kwargs were no longer passed + to the logging handler QueueHandler + - gh-118164: The Python implementation of the decimal + module could appear to hang in relatively small power + cases (like 2**117) if context precision was set to a + very high value. A different method to check for exactly + representable results is used now that doesn’t rely on + computing 10**precision (which could be effectively too + large to compute). + - gh-118404: Fix inspect.signature() for non-comparable + callables. + - gh-118314: Fix an edge case in binascii.a2b_base64() strict + mode, where excessive padding is not detected when no + padding is necessary. + - gh-118042: Fix an unraisable exception in + telnetlib.Telnet.__del__() when the __init__() method was + not called. + - gh-118221: Fix a bug where sqlite3.iterdump() could fail if + a custom row factory was used. Patch by Erlend Aasland. + - gh-118013: Fix regression introduced in gh-103193 that + meant that calling inspect.getattr_static() on an instance + would cause a strong reference to that instance’s class to + persist in an internal cache in the inspect module. This + caused unexpected memory consumption if the class was + dynamically created, the class held strong references to + other objects which took up a significant amount of memory, + and the cache contained the sole strong reference to the + class. The fix for the regression leads to a slowdown + in getattr_static(), but the function should still be + significantly faster than it was in Python 3.11. Patch by + Alex Waygood. + - gh-90848: Fixed unittest.mock.create_autospec() to + configure parent mock with keyword arguments. + - gh-118168: Fix incorrect argument substitution when + typing.Unpack is used with the builtin tuple. typing.Unpack + now raises TypeError when used with certain invalid + types. Patch by Jelle Zijlstra. + - gh-118033: Fix dataclasses.dataclass() not creating a + __weakref__ slot when subclassing typing.Generic. + - gh-117535: Do not try to get the source line for made up + file name “sys” in warnings. + - gh-114053: Fix erroneous NameError when calling + typing.get_type_hints() on a class that made use of PEP 695 + type parameters in a module that had from __future__ import + annotations at the top of the file. Patch by Alex Waygood. + - gh-117995: Don’t raise DeprecationWarning when a + sequence of parameters is used to bind indexed, nameless + placeholders. See also gh-100668. + - gh-80361: Fix TypeError in + email.message.Message.get_payload() when the charset is RFC + 2231 encoded. + - gh-86650: Fix IndexError when parse some emails with + invalid Message-ID (including one-off addresses generated + by Microsoft Outlook). + - gh-117691: Improve the error messages emitted by tarfile + deprecation warnings relating to PEP 706. If a filter + argument is not provided to extract() or extractall, the + deprecation warning now points to the line in the user’s + code where the relevant function was called. Patch by Alex + Waygood. + - gh-77102: site module now parses .pth file with UTF-8 + first, and locale encoding if UnicodeDecodeError + happened. It supported only locale encoding before. + - gh-117692: Fixes a bug when doctest.DocTestFinder was + failing on wrapped builtin_function_or_method. + - gh-117566: ipaddress.IPv6Address.is_loopback() will now + return True for IPv4-mapped loopback addresses, i.e. + addresses in the ::ffff:127.0.0.0/104 address space. + - gh-117503: Fix support of non-ASCII user names in bytes + paths in os.path.expanduser() on Posix. + - gh-117313: Only treat '\n', '\r' and '\r\n' as line + separators in re-folding the email messages. Preserve + control characters '\v', '\f', '\x1c', '\x1d' and '\x1e' + and Unicode line separators '\x85', '\u2028' and '\u2029' + as is. + - gh-113171 (bsc#1226448, CVE-2024-4032): Fixed various false + positives and false negatives in + ipaddress.IPv4Address.is_private (see these docs for details) + ipaddress.IPv4Address.is_global + ipaddress.IPv6Address.is_private + ipaddress.IPv6Address.is_global + Also in the corresponding ipaddress.IPv4Network and + ipaddress.IPv6Network attributes. + - gh-103956: Fix lack of newline characters in trace module + output when line tracing is enabled but source code line + for current frame is not available. + - gh-92081: Fix missing spaces in email headers when the + spaces are mixed with encoded 8-bit characters. + - gh-103194: Prepare Tkinter for C API changes in Tcl 8.7/9.0 + to avoid _tkinter.Tcl_Obj being unexpectedly returned + instead of bool, str, bytearray, or int. + - gh-87106: Fixed handling in inspect.Signature.bind() of + keyword arguments having the same name as positional-only + arguments when a variadic keyword argument (e.g. **kwargs) + is present. + - bpo-45767: Fix integer conversion in os.major(), + os.minor(), and os.makedev(). Support device numbers larger + than 2**63-1. Support non-existent device number (NODEV). + - bpo-40943: Fix several IndexError when parse emails with + truncated Message-ID, address, routes, etc, e.g. example@. + - bpo-30988: Fix parsing of emails with invalid address + headers having a leading or trailing dot. Patch by tsufeki. + - gh-67693: Fix urllib.parse.urlunparse() and + urllib.parse.urlunsplit() for URIs with path starting with + multiple slashes and no authority. Based on patch by Ashwin + Ramaswami. + - bpo-15010: unittest.TestLoader.discover() now saves the + original value of unittest.TestLoader._top_level_dir and + restores it at the end of the call. + - Documentation + - gh-117928: The minimum Sphinx version required for the + documentation is now 6.2.1. + - gh-91565: Changes to documentation files and config + outputs to reflect the new location for reporting bugs - + i.e. GitHub rather than bugs.python.org. + - Tests + - gh-119050: regrtest test runner: Add XML support to the + refleak checker (-R option). Patch by Victor Stinner. + - IDLE + - bpo-34774: Use user-selected color theme for Help => IDLE + Doc. + - C API + - gh-119585: Fix crash when a thread state that was + created by PyGILState_Ensure() calls a destructor that + during PyThreadState_Clear() that calls back into + PyGILState_Ensure() and PyGILState_Release(). This + might occur when in the free-threaded build or when + using thread-local variables whose destructors call + PyGILState_Ensure(). + - gh-117534: Improve validation logic in the C implementation + of datetime.fromisoformat() to better handle invalid + years. Patch by Vlad Efanov. +- Updated patches: + - CVE-2023-6597-TempDir-cleaning-symlink.patch + - bpo-31046_ensurepip_honours_prefix.patch + - fix_configure_rst.patch + - python-3.3.0b1-fix_date_time_compiler.patch + - subprocess-raise-timeout.patch + ------------------------------------------------------------------- Mon Apr 15 10:31:32 UTC 2024 - Daniel Garcia @@ -28,7 +502,7 @@ Wed Apr 10 14:41:07 UTC 2024 - Matej Cepl - gh-114572: ssl.SSLContext.cert_store_stats() and ssl.SSLContext.get_ca_certs() now correctly lock access to the certificate store, when the ssl.SSLContext is shared - across multiple threads. + across multiple threads (bsc#1226447, CVE-2024-0397). - Core and Builtins - gh-109120: Added handle of incorrect star expressions, e.g f(3, *). Patch by Grigoryev Semyon diff --git a/python312.spec b/python312.spec index ede5bda..72db76e 100644 --- a/python312.spec +++ b/python312.spec @@ -36,6 +36,12 @@ %bcond_without general %endif +%if 0%{?do_profiling} +%bcond_without profileopt +%else +%bcond_with profileopt +%endif + %define python_pkg_name python312 %if "%{python_pkg_name}" == "%{primary_python}" %define primary_interpreter 1 @@ -103,9 +109,8 @@ # pyexpat.cpython-35m-armv7-linux-gnueabihf # _md5.cpython-38m-x86_64-linux-gnu.so %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.3 +Version: 3.12.5 Release: 0 Summary: Python 3 Interpreter License: Python-2.0 @@ -136,6 +141,13 @@ Source99: python.keyring # They are listed here to work around missing functionality in rpmbuild, # which would otherwise exclude them from distributed src.rpm files. Source100: PACKAGING-NOTES +# PATCH-FEATURE-UPSTREAM F00251-change-user-install-location.patch bsc#[0-9]+ mcepl@suse.com +# Fix installation in /usr/local (boo#1071941), originally from Fedora +# https://src.fedoraproject.org/rpms/python3.12/blob/rawhide/f/00251-change-user-install-location.patch +# Set values of prefix and exec_prefix in distutils install command +# to /usr/local if executable is /usr/bin/python* and RPM build +# is not detected to make pip and distutils install into separate location +Patch02: F00251-change-user-install-location.patch # support finding packages in /usr/local, install to /usr/local by default Patch07: python-3.3.0b1-localpath.patch # replace DATE, TIME and COMPILER by fixed definitions to aid reproducible builds @@ -171,6 +183,9 @@ Patch39: CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch # PATCH-FIX-OPENSUSE fix-test-recursion-limit-15.6.patch gh#python/cpython#115083 # Skip some failing tests in test_compile for i586 arch in 15.6. Patch40: fix-test-recursion-limit-15.6.patch +# PATCH-FIX-SLE docs-docutils_014-Sphinx_420.patch bsc#[0-9]+ mcepl@suse.com +# related to gh#python/cpython#119317 +Patch41: docs-docutils_014-Sphinx_420.patch BuildRequires: autoconf-archive BuildRequires: automake BuildRequires: fdupes @@ -212,7 +227,6 @@ BuildRequires: gettext BuildRequires: readline-devel BuildRequires: sqlite-devel BuildRequires: timezone -BuildRequires: update-desktop-files BuildRequires: pkgconfig(ncurses) BuildRequires: pkgconfig(tk) BuildRequires: pkgconfig(x11) @@ -428,6 +442,9 @@ other applications. %setup -q -n %{tarname} %autopatch -p1 +# Fix devhelp doc build gh#python/cpython#120150 +echo "master_doc = 'contents'" >> Doc/conf.py + # drop Autoconf version requirement sed -i 's/^AC_PREREQ/dnl AC_PREREQ/' configure.ac @@ -551,7 +568,12 @@ EXCLUDE="$EXCLUDE test_faulthandler" %endif # some tests break in QEMU %if 0%{?qemu_user_space_build} -EXCLUDE="$EXCLUDE test_faulthandler test_multiprocessing_forkserver test_multiprocessing_spawn test_os test_posix test_signal test_socket test_subprocess" +# test_faulthandler: test_register_chain is racy +# test_os: test_fork_warns_when_non_python_thread_exists fails +# test_posix: qemu does not support fexecve in test_fexecve +# test_signal: qemu crashes in test_stress_modifying_handlers +# test_socket: many CmsgTrunc tests fail +EXCLUDE="$EXCLUDE test_faulthandler test_os test_posix test_signal test_socket" %endif # This test (part of test_uuid) requires real network interfaces @@ -663,7 +685,6 @@ done cp %{SOURCE19} idle%{python_version}.desktop sed -i -e 's:idle3:idle%{python_version}:g' idle%{python_version}.desktop install -m 644 -D -t %{buildroot}%{_datadir}/applications idle%{python_version}.desktop -%suse_update_desktop_file idle%{python_version} cp %{SOURCE20} idle%{python_version}.appdata.xml sed -i -e 's:idle3.desktop:idle%{python_version}.desktop:g' idle%{python_version}.appdata.xml @@ -762,6 +783,9 @@ LD_LIBRARY_PATH=. ./python -O -c "from py_compile import compile; compile('$FAIL cd $FAILDIR while read package modules; do for module in $modules; do +%if 0%{?suse_version} >= 1599 + test $module = nis && continue +%endif ln import_failed.py $module.py pushd __pycache__ for i in import_failed*; do @@ -776,23 +800,19 @@ echo %{sitedir}/_import_failed > %{buildroot}/%{sitedir}/site-packages/zzzz-impo %if %{with general} %files -n %{python_pkg_name}-tk -%defattr(644, root, root, 755) %{sitedir}/tkinter %{dynlib _tkinter} %files -n %{python_pkg_name}-curses -%defattr(644, root, root, 755) %{sitedir}/curses %{dynlib _curses} %files -n %{python_pkg_name}-dbm -%defattr(644, root, root, 755) %{sitedir}/dbm %{dynlib _dbm} %{dynlib _gdbm} %files -n %{python_pkg_name} -%defattr(644, root, root, 755) %dir %{sitedir} %dir %{sitedir}/lib-dynload %{sitedir}/sqlite3 @@ -803,7 +823,6 @@ echo %{sitedir}/_import_failed > %{buildroot}/%{sitedir}/site-packages/zzzz-impo %endif %files -n %{python_pkg_name}-idle -%defattr(644, root, root, 755) %{sitedir}/idlelib %dir %{_sysconfdir}/idle%{python_version} %config %{_sysconfdir}/idle%{python_version}/* @@ -840,11 +859,9 @@ echo %{sitedir}/_import_failed > %{buildroot}/%{sitedir}/site-packages/zzzz-impo %postun -n libpython%{so_version} -p /sbin/ldconfig %files -n libpython%{so_version} -%defattr(644, root,root) %{_libdir}/libpython%{python_abi}.so.%{so_major}.%{so_minor} %files -n %{python_pkg_name}-tools -%defattr(644, root, root, 755) %{sitedir}/turtledemo %if %{primary_interpreter} %{_bindir}/2to3 @@ -853,7 +870,6 @@ echo %{sitedir}/_import_failed > %{buildroot}/%{sitedir}/site-packages/zzzz-impo %doc %{_docdir}/%{name}/Tools %files -n %{python_pkg_name}-devel -%defattr(644, root, root, 755) %{_libdir}/libpython%{python_abi}.so %if %{primary_interpreter} %{_libdir}/libpython3.so @@ -861,7 +877,6 @@ echo %{sitedir}/_import_failed > %{buildroot}/%{sitedir}/site-packages/zzzz-impo %{_libdir}/pkgconfig/* %{_includedir}/python%{python_abi} %{sitedir}/config-%{python_abi}-* -%defattr(755, root, root) %{_bindir}/python%{python_abi}-config %if %{primary_interpreter} %{_bindir}/python3-config @@ -874,7 +889,6 @@ echo %{sitedir}/_import_failed > %{buildroot}/%{sitedir}/site-packages/zzzz-impo %{_datadir}/gdb/auto-load/%{_libdir}/libpython%{python_abi}.so.%{so_major}.%{so_minor}-gdb.py %files -n %{python_pkg_name}-testsuite -%defattr(644, root, root, 755) %{sitedir}/test # %%{sitedir}/*/test # %%{sitedir}/*/tests @@ -893,7 +907,6 @@ echo %{sitedir}/_import_failed > %{buildroot}/%{sitedir}/site-packages/zzzz-impo %dir %{sitedir}/tkinter %files -n %{python_pkg_name}-base -%defattr(644, root, root, 755) # docs %dir %{_docdir}/%{name} %doc %{_docdir}/%{name}/README.rst diff --git a/subprocess-raise-timeout.patch b/subprocess-raise-timeout.patch index 9db6433..a15acaa 100644 --- a/subprocess-raise-timeout.patch +++ b/subprocess-raise-timeout.patch @@ -2,11 +2,11 @@ Lib/test/test_subprocess.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -Index: Python-3.12.2/Lib/test/test_subprocess.py +Index: Python-3.12.4/Lib/test/test_subprocess.py =================================================================== ---- Python-3.12.2.orig/Lib/test/test_subprocess.py -+++ Python-3.12.2/Lib/test/test_subprocess.py -@@ -281,7 +281,8 @@ class ProcessTestCase(BaseTestCase): +--- Python-3.12.4.orig/Lib/test/test_subprocess.py ++++ Python-3.12.4/Lib/test/test_subprocess.py +@@ -280,7 +280,8 @@ class ProcessTestCase(BaseTestCase): "time.sleep(3600)"], # Some heavily loaded buildbots (sparc Debian 3.x) require # this much time to start and print.