Accepting request 1192365 from devel:languages:python:Factory

- 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

OBS-URL: https://build.opensuse.org/request/show/1192365
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python312?expand=0&rev=18
This commit is contained in:
Dominique Leuenberger 2024-08-29 13:42:27 +00:00 committed by Git OBS Bridge
commit e33fbc932e
15 changed files with 781 additions and 80 deletions

View File

@ -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.

View File

@ -0,0 +1,152 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
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 <encukou@gmail.com>
Co-authored-by: Miro Hrončok <miro@hroncok.cz>
Co-authored-by: Michal Cyprian <m.cyprian@gmail.com>
Co-authored-by: Lumír Balhar <frenzy.madness@gmail.com>
---
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

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:56bfef1fdfc1221ce6720e43a661e3eb41785dd914ce99698d8c7896af4bdaa1
size 20625068

View File

@ -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-----

3
Python-3.12.5.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fa8a2e12c5e620b09f53e65bcd87550d2e5a1e2e04bf8ba991dcc55113876397
size 20422396

18
Python-3.12.5.tar.xz.asc Normal file
View File

@ -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-----

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a17f3fb420bf6bd577dde9e2b256cdb1df179ba552abb7172863321208a4713f
size 25308
oid sha256:4624c6ab6543ec4875bdd5c6c58c874d487128e44e54c8ef1924ec1d48e35928
size 25328

View File

@ -13,10 +13,10 @@ Co-Authored-By: Xavier de Gaye <xdegaye@gmail.com>
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`.

View File

@ -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'

View File

@ -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

View File

@ -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

View File

@ -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) \

View File

@ -1,3 +1,477 @@
-------------------------------------------------------------------
Wed Aug 7 18:05:57 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
- 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 <greg@krypto.org> and Seth Larson
<seth@python.org>. Reported by Ellie <el@horse64.org>
- 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 objects 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
modules __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 <mcepl@cepl.eu>
- %{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 <mcepl@cepl.eu>
- Remove %suse_update_desktop_file macro as it is not useful any
more.
-------------------------------------------------------------------
Thu Jul 4 16:04:05 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
- 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 <daniel.garcia@suse.com>
- 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 <mcepl@suse.com>
- 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 <schwab@suse.de>
- Update import_failed.map for python 3.12
-------------------------------------------------------------------
Mon Jun 24 12:14:52 UTC 2024 - Andreas Schwab <schwab@suse.de>
- Reenable test_multiprocessing_forkserver test_multiprocessing_spawn
test_subprocess tests in qemu build
-------------------------------------------------------------------
Fri Jun 7 10:44:55 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
- 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 its 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 frames 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 doesnt 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 instances 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: Dont 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 users
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 <daniel.garcia@suse.com>
@ -28,7 +502,7 @@ Wed Apr 10 14:41:07 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
- 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

View File

@ -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

View File

@ -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.