From d849d8f12715320b2e1713e414d665f1a8347a9d Mon Sep 17 00:00:00 2001 From: Karolina Surma Date: Wed, 3 Dec 2025 09:21:58 +0100 Subject: [PATCH] Update to Python 3.14.1 --- 00251-change-user-install-location.patch | 2 +- ...eel-in-test-venvs-when-setuptools-71.patch | 33 ------------------ ...not-working-with-older-expat-version.patch | 10 +++--- plan.fmf | 9 ++--- python3.14.spec | 34 +++++++++---------- sources | 10 +++--- 6 files changed, 33 insertions(+), 65 deletions(-) delete mode 100644 00461-downstream-only-install-wheel-in-test-venvs-when-setuptools-71.patch diff --git a/00251-change-user-install-location.patch b/00251-change-user-install-location.patch index ff9c69b..41995c3 100644 --- a/00251-change-user-install-location.patch +++ b/00251-change-user-install-location.patch @@ -30,7 +30,7 @@ Co-authored-by: Lumír Balhar 3 files changed, 72 insertions(+), 4 deletions(-) diff --git a/Lib/site.py b/Lib/site.py -index f932719715..e4ef914ec2 100644 +index aeb7c6cfc7..86f9ae9e76 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -421,8 +421,15 @@ def getsitepackages(prefixes=None): diff --git a/00461-downstream-only-install-wheel-in-test-venvs-when-setuptools-71.patch b/00461-downstream-only-install-wheel-in-test-venvs-when-setuptools-71.patch deleted file mode 100644 index aea27d9..0000000 --- a/00461-downstream-only-install-wheel-in-test-venvs-when-setuptools-71.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= -Date: Fri, 25 Apr 2025 09:33:37 +0200 -Subject: 00461: Downstream only: Install wheel in test venvs when setuptools < - 71 - -This can be removed when Fedora 41 goes EOL (or updates setuptools). ---- - Lib/test/support/__init__.py | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - -diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py -index 88f6110351..210ddcdbe3 100644 ---- a/Lib/test/support/__init__.py -+++ b/Lib/test/support/__init__.py -@@ -2512,9 +2512,16 @@ def run_command(cmd): - else: - python = os.path.join(venv, 'bin', python_exe) - -+ setuptools_whl = _findwheel('setuptools') -+ whl_filename = os.path.basename(setuptools_whl) -+ setuptools_major = int(whl_filename.split('-')[1].split('.')[0]) -+ if setuptools_major >= 71: # we need 70.1+, but that's OK -+ wheels = (setuptools_whl,) -+ else: -+ wheels = (setuptools_whl, _findwheel('wheel')) - cmd = (python, '-X', 'dev', - '-m', 'pip', 'install', -- _findwheel('setuptools'), -+ *wheels, - ) - run_command(cmd) - diff --git a/00466-downstream-only-skip-tests-not-working-with-older-expat-version.patch b/00466-downstream-only-skip-tests-not-working-with-older-expat-version.patch index 953c18d..1b36e9b 100644 --- a/00466-downstream-only-skip-tests-not-working-with-older-expat-version.patch +++ b/00466-downstream-only-skip-tests-not-working-with-older-expat-version.patch @@ -15,10 +15,10 @@ which is tested as working. 3 files changed, 10 insertions(+) diff --git a/Lib/test/test_pyexpat.py b/Lib/test/test_pyexpat.py -index a091430463..55ebf34c52 100644 +index daeaa38a3c..b243f1da14 100644 --- a/Lib/test/test_pyexpat.py +++ b/Lib/test/test_pyexpat.py -@@ -826,6 +826,8 @@ def start_element(name, _): +@@ -847,6 +847,8 @@ def start_element(name, _): self.assertEqual(started, ['doc']) @@ -41,10 +41,10 @@ index 5c10bcedc6..1fd7a273b5 100644 result = BytesIO() xmlgen = XMLGenerator(result) diff --git a/Lib/test/test_xml_etree.py b/Lib/test/test_xml_etree.py -index bf6d5074fd..6f8ef34590 100644 +index 25c084c8b9..e26e6e0c26 100644 --- a/Lib/test/test_xml_etree.py +++ b/Lib/test/test_xml_etree.py -@@ -1547,9 +1547,13 @@ def test_simple_xml(self, chunk_size=None, flush=False): +@@ -1573,9 +1573,13 @@ def test_simple_xml(self, chunk_size=None, flush=False): self.assert_event_tags(parser, [('end', 'root')]) self.assertIsNone(parser.close()) @@ -58,7 +58,7 @@ index bf6d5074fd..6f8ef34590 100644 def test_simple_xml_chunk_5(self): self.test_simple_xml(chunk_size=5, flush=True) -@@ -1774,6 +1778,8 @@ def test_flush_reparse_deferral_enabled(self): +@@ -1802,6 +1806,8 @@ def test_flush_reparse_deferral_enabled(self): self.assert_event_tags(parser, [('end', 'doc')]) diff --git a/plan.fmf b/plan.fmf index f956e08..c7d158a 100644 --- a/plan.fmf +++ b/plan.fmf @@ -24,19 +24,20 @@ discover: test: "PYTHON=python${pybasever}d TOX=false VERSION=${pybasever} CYTHON=true ./venv.sh" - name: selftest path: /selftest - test: "VERSION=${pybasever} X='-i test_check_probes -i test_sysconfigdata_json' ./parallel.sh" + test: "VERSION=${pybasever} X='-i test_check_probes -i test_sysconfigdata_json -i test_margin_is_sufficient' ./parallel.sh" - name: debugtest path: /selftest # test_base_interpreter: https://github.com/python/cpython/issues/131372 # test_interrupt and test_interrupt_no_handler: https://github.com/python/cpython/issues/133651 - test: "VERSION=${pybasever} PYTHON=python${pybasever}d X='-i test_check_probes -i test_sysconfigdata_json -i test_base_interpreter -i test_interrupt -i test_interrupt_no_handler' ./parallel.sh" + # test_margin_is_sufficient: https://github.com/python/cpython/issues/140222 + test: "VERSION=${pybasever} PYTHON=python${pybasever}d X='-i test_check_probes -i test_sysconfigdata_json -i test_base_interpreter -i test_interrupt -i test_interrupt_no_handler -i test_margin_is_sufficient' ./parallel.sh" - name: freethreadingtest path: /selftest - test: "VERSION=${pybasever}t X='-i test_check_probes -i test_sysconfigdata_json -i test_base_interpreter' ./parallel.sh" + test: "VERSION=${pybasever}t X='-i test_check_probes -i test_sysconfigdata_json -i test_base_interpreter -i test_margin_is_sufficient' ./parallel.sh" - name: selftest_jit path: /selftest # test_attr_promotion_failure: https://github.com/python/cpython/issues/141833 - test: "VERSION=${pybasever} PYTHON_JIT=1 X='-i test_check_probes -i test_sysconfigdata_json -i test_attr_promotion_failure' ./parallel.sh" + test: "VERSION=${pybasever} PYTHON_JIT=1 X='-i test_check_probes -i test_sysconfigdata_json -i test_attr_promotion_failure -i test_margin_is_sufficient' ./parallel.sh" - name: jit_disabled_by_default test: "python${pybasever} -c 'import sys; assert not sys._jit.is_enabled()'" - name: jit_disabled_explicitly diff --git a/python3.14.spec b/python3.14.spec index 866f5d4..2d6158a 100644 --- a/python3.14.spec +++ b/python3.14.spec @@ -45,11 +45,11 @@ URL: https://www.python.org/ # WARNING When rebasing to a new Python version, # remember to update the python3-docs package as well -%global general_version %{pybasever}.0 +%global general_version %{pybasever}.1 #global prerel ... %global upstream_version %{general_version}%{?prerel} Version: %{general_version}%{?prerel:~%{prerel}} -Release: 2%{?dist} +Release: 1%{?dist} License: Python-2.0.1 @@ -112,30 +112,30 @@ License: Python-2.0.1 # This needs to be manually updated when we update Python. # Explore the sources tarball (you need the version before %%prep is executed): # $ tar -tf Python-%%{upstream_version}.tar.xz | grep whl -%global pip_version 25.2 +%global pip_version 25.3 %global setuptools_version 79.0.1 # All of those also include a list of indirect bundled libs: # pip # $ %%{_rpmconfigdir}/pythonbundles.py <(unzip -p Lib/ensurepip/_bundled/pip-*.whl pip/_vendor/vendor.txt) %global pip_bundled_provides %{expand: Provides: bundled(python3dist(cachecontrol)) = 0.14.3 -Provides: bundled(python3dist(certifi)) = 2025.7.14 +Provides: bundled(python3dist(certifi)) = 2025.10.5 Provides: bundled(python3dist(dependency-groups)) = 1.3.1 Provides: bundled(python3dist(distlib)) = 0.4 Provides: bundled(python3dist(distro)) = 1.9 Provides: bundled(python3dist(idna)) = 3.10 -Provides: bundled(python3dist(msgpack)) = 1.1.1 +Provides: bundled(python3dist(msgpack)) = 1.1.2 Provides: bundled(python3dist(packaging)) = 25 -Provides: bundled(python3dist(platformdirs)) = 4.3.8 +Provides: bundled(python3dist(platformdirs)) = 4.5 Provides: bundled(python3dist(pygments)) = 2.19.2 Provides: bundled(python3dist(pyproject-hooks)) = 1.2 -Provides: bundled(python3dist(requests)) = 2.32.4 -Provides: bundled(python3dist(resolvelib)) = 1.2 -Provides: bundled(python3dist(rich)) = 14.1 +Provides: bundled(python3dist(requests)) = 2.32.5 +Provides: bundled(python3dist(resolvelib)) = 1.2.1 +Provides: bundled(python3dist(rich)) = 14.2 Provides: bundled(python3dist(setuptools)) = 70.3 -Provides: bundled(python3dist(tomli)) = 2.2.1 +Provides: bundled(python3dist(tomli)) = 2.3 Provides: bundled(python3dist(tomli-w)) = 1.2 -Provides: bundled(python3dist(truststore)) = 0.10.1 +Provides: bundled(python3dist(truststore)) = 0.10.4 Provides: bundled(python3dist(urllib3)) = 1.26.20 } # setuptools @@ -387,12 +387,6 @@ Source34: Python-%{upstream_version}-x86_64-optimized-jit_stencils.h # pypa/distutils integration: https://github.com/pypa/distutils/pull/70 Patch251: 00251-change-user-install-location.patch -# 00461 # 920175020b21c0aff5edcc4c28d688b5061f591c -# Downstream only: Install wheel in test venvs when setuptools < 71 -# -# This can be removed when Fedora 41 goes EOL (or updates setuptools). -Patch461: 00461-downstream-only-install-wheel-in-test-venvs-when-setuptools-71.patch - # 00464 # 292acffec7a379cb6d1f3c47b9e5a2f170bbadb6 # Enable PAC and BTI protections for aarch64 # @@ -1475,6 +1469,8 @@ CheckPython() { # see: https://github.com/python/cpython/issues/121719 # test_interrupt and test_interrupt_no_handler # reported in https://github.com/python/cpython/issues/133651 + # test_margin_is_sufficient + # reported in https://github.com/python/cpython/issues/140222 LD_LIBRARY_PATH=$ConfDir $ConfDir/python -m test.regrtest \ -wW --slowest %{_smp_mflags} \ %ifarch riscv64 @@ -1486,6 +1482,7 @@ CheckPython() { -i test_check_probes \ -i test_interrupt \ -i test_interrupt_no_handler \ + -i test_margin_is_sufficient \ %ifarch %{mips64} -x test_ctypes \ %endif @@ -1982,6 +1979,9 @@ CheckPython freethreading # ====================================================== %changelog +* Wed Dec 03 2025 Karolina Surma - 3.14.1-1 +- Update to Python 3.14.1 + * Fri Oct 17 2025 Karolina Surma - 3.14.0-2 - Split -freethreading package into analogs of the main Python diff --git a/sources b/sources index 8aaba44..0db8db1 100644 --- a/sources +++ b/sources @@ -1,5 +1,5 @@ -SHA512 (Python-3.14.0.tar.xz) = 46e9e205c3a084cba68bf7f267ab2fd0862a05430165e0eb713f2d6b3a1a4452f72f563de5de55caea824be9df56f66dd568f4814941667a9bb0954229772c53 -SHA512 (Python-3.14.0-aarch64-debug-jit_stencils.h) = 850952abc9ee83be51a67d64d013e31abd6a9e4331045ae169f684107d98fba9c91ef28fd1bf60e75c8975b600665afc9aec258b7e5b61abafa834996b16fb18 -SHA512 (Python-3.14.0-aarch64-optimized-jit_stencils.h) = d7b50e8bb2341f0404781f3f17dca9ac489efd8e25b832eb34346e4b88f3084e9c4482f981e51db4a9596df05c4138642252f52d0712dac9dda15cee21db196c -SHA512 (Python-3.14.0-x86_64-debug-jit_stencils.h) = 51484d6b19a2483f67589c4d57f2df25f28d089a591f19c5eef6564006db5f7d5afa52181df2cd925a550e358ee5562c8f02ef0f8de7628f5f1fa242fd89a56a -SHA512 (Python-3.14.0-x86_64-optimized-jit_stencils.h) = c84dda9956690faf372a09d9a532311d975ae69c4bf2a91102c30086dca16bef9a2c0ebb2f372437cfad64585e7a872db74476f5c502dc9635a25dd9e0b710d4 +SHA512 (Python-3.14.1-aarch64-debug-jit_stencils.h) = 158a259a89b86d5456f4e07d41132644698d40783fb6cd3c6aba231da4ac428c1588c3c1e665430ee6909f7b6c29c7924ff0e37adf0470679c120faaf169f07a +SHA512 (Python-3.14.1-aarch64-optimized-jit_stencils.h) = 45ac03531984fcd0c1366563649510e6b0c6760e76e4c8ce675291202b4e1bcd78ed038c312bc66c7ab8b8cd26a6bae7804e7b87b327d1e67c901b93194c4fc1 +SHA512 (Python-3.14.1-x86_64-debug-jit_stencils.h) = bfacfb2fe7fc32dd239b7a533f1e86364d687d46dbc6c7170bdd39c1660deda72f3fa2d5e26bd9a27f009f487e248e0426614fcb8dcefd42be1e71d5ef0f0523 +SHA512 (Python-3.14.1-x86_64-optimized-jit_stencils.h) = ecf76a904c7f686c01fea4ecfd498ef07fef226e62b792c97dcbb45c76f54351e5ecc02554fa21a3a82d55e5b6255b80c73f67538929d69c1c326f81ac8bd7b2 +SHA512 (Python-3.14.1.tar.xz) = b5ec011190536126fedade5c33a4afabc081a133ad5c734f4b872769d376735775219d63a482812d139fdd90c46707927065ab9dc733d0bce2d1ebc59fe705a2