The package rpms/python3.13.git has added or updated architecture specific content in its spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s): https://src.fedoraproject.org/cgit/rpms/python3.13.git/commit/?id=461d9adf9e... https://src.fedoraproject.org/cgit/rpms/python3.13.git/commit/?id=7fc2da03e5....
Change: +%ifarch %{valgrind_arches} -%ifarch x86_64 aarch64
Thanks.
Full change: ============
commit ae3b33f26602842b13f4410f72996e1eb11d48d4 Author: Charalampos Stratakis cstratak@redhat.com Date: Wed Dec 4 00:29:07 2024 +0100
Update to 3.13.1
Security fix for CVE-2024-9287
Fixes: rhbz#2321657
diff --git a/00251-change-user-install-location.patch b/00251-change-user-install-location.patch index df3baea..8025f83 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 frenzy.madness@gmail.com 3 files changed, 72 insertions(+), 4 deletions(-)
diff --git a/Lib/site.py b/Lib/site.py -index 0a0dc47b17..bb42e1cf5a 100644 +index 89a81c55cb..950e2e337f 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -414,8 +414,15 @@ def getsitepackages(prefixes=None): @@ -51,7 +51,7 @@ index 0a0dc47b17..bb42e1cf5a 100644 if os.path.isdir(sitedir): addsitedir(sitedir, known_paths) diff --git a/Lib/sysconfig/__init__.py b/Lib/sysconfig/__init__.py -index 80aef34471..4e4ea6aeea 100644 +index ec3b638f00..28ad8a2321 100644 --- a/Lib/sysconfig/__init__.py +++ b/Lib/sysconfig/__init__.py @@ -106,6 +106,12 @@ @@ -87,7 +87,7 @@ index 80aef34471..4e4ea6aeea 100644 _SCHEME_KEYS = ('stdlib', 'platstdlib', 'purelib', 'platlib', 'include', 'scripts', 'data')
-@@ -261,11 +280,40 @@ def _extend_dict(target_dict, other_dict): +@@ -259,11 +278,40 @@ def _extend_dict(target_dict, other_dict): target_dict[key] = value
@@ -120,7 +120,7 @@ index 80aef34471..4e4ea6aeea 100644 + # 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 ++ get_config_vars('prefix')[0] == '/usr' and + 'RPM_BUILD_ROOT' not in os.environ): + _extend_dict(vars, _config_vars_local()) + else: @@ -130,10 +130,10 @@ index 80aef34471..4e4ea6aeea 100644 # On Windows we want to substitute 'lib' for schemes rather # than the native value (without modifying vars, in case it diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py -index 1ade49281b..e21ca34733 100644 +index bf53413021..33fa2feb28 100644 --- a/Lib/test/test_sysconfig.py +++ b/Lib/test/test_sysconfig.py -@@ -121,8 +121,19 @@ def test_get_path(self): +@@ -130,8 +130,19 @@ def test_get_path(self): for scheme in _INSTALL_SCHEMES: for name in _INSTALL_SCHEMES[scheme]: expected = _INSTALL_SCHEMES[scheme][name].format(**config_vars) @@ -154,7 +154,7 @@ index 1ade49281b..e21ca34733 100644 os.path.normpath(expected), )
-@@ -377,7 +388,7 @@ def test_get_config_h_filename(self): +@@ -386,7 +397,7 @@ def test_get_config_h_filename(self): self.assertTrue(os.path.isfile(config_h), config_h)
def test_get_scheme_names(self): @@ -163,7 +163,7 @@ index 1ade49281b..e21ca34733 100644 if HAS_USER_BASE: wanted.extend(['nt_user', 'osx_framework_user', 'posix_user']) self.assertEqual(get_scheme_names(), tuple(sorted(wanted))) -@@ -389,6 +400,8 @@ def test_symlink(self): # Issue 7880 +@@ -398,6 +409,8 @@ def test_symlink(self): # Issue 7880 cmd = "-c", "import sysconfig; print(sysconfig.get_platform())" self.assertEqual(py.call_real(*cmd), py.call_link(*cmd))
diff --git a/python3.13.spec b/python3.13.spec index bee5a28..816f38f 100644 --- a/python3.13.spec +++ b/python3.13.spec @@ -13,7 +13,7 @@ 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}} @@ -57,7 +57,7 @@ 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 24.2 +%global pip_version 24.3.1 %global setuptools_version 67.6.1 %global wheel_version 0.43.0 # All of those also include a list of indirect bundled libs: @@ -65,8 +65,8 @@ License: Python-2.0.1 # $ %%{_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 -Provides: bundled(python3dist(certifi)) = 2024.7.4 -Provides: bundled(python3dist(distlib)) = 0.3.8 +Provides: bundled(python3dist(certifi)) = 2024.8.30 +Provides: bundled(python3dist(distlib)) = 0.3.9 Provides: bundled(python3dist(distro)) = 1.9 Provides: bundled(python3dist(idna)) = 3.7 Provides: bundled(python3dist(msgpack)) = 1.0.8 @@ -79,9 +79,9 @@ Provides: bundled(python3dist(resolvelib)) = 1.0.1 Provides: bundled(python3dist(rich)) = 13.7.1 Provides: bundled(python3dist(setuptools)) = 70.3 Provides: bundled(python3dist(tomli)) = 2.0.1 -Provides: bundled(python3dist(truststore)) = 0.9.1 +Provides: bundled(python3dist(truststore)) = 0.10 Provides: bundled(python3dist(typing-extensions)) = 4.12.2 -Provides: bundled(python3dist(urllib3)) = 1.26.18 +Provides: bundled(python3dist(urllib3)) = 1.26.20 } # setuptools # vendor.txt files not in .whl @@ -341,7 +341,7 @@ Source11: idle3.appdata.xml
# (Patches taken from github.com/fedora-python/cpython)
-# 00251 # 60dd97be7bf3662ff65edd8471e948924b4175b2 +# 00251 # f5b56b9d4a79df04e9d90ceff7388554c5f818b6 # Change user install location # # Set values of base and platbase in sysconfig from /usr @@ -1699,6 +1699,11 @@ CheckPython freethreading # ======================================================
%changelog +* Tue Dec 03 2024 Charalampos Stratakis cstratak@redhat.com - 3.13.1-1 +- Update to 3.13.1 +- Security fix for CVE-2024-9287 +- Fixes: rhbz#2321657 + * Tue Oct 08 2024 Karolina Surma ksurma@redhat.com - 3.13.0-1 - Update to Python 3.13.0
diff --git a/sources b/sources index 9cf507c..25463a6 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (Python-3.13.0.tar.xz) = 44a143c9b96b55b01885ec020c3364265bda55289615cd7d5071915b0d0178a6f35e7551a89090001fcb7f3172d38177a56bf8b8532b15c9dbc50295c9210152 -SHA512 (Python-3.13.0.tar.xz.asc) = 1b8bb0fe4eb93e31ec1770e90b94d44b5864c0391aad5dcba3a30d8e505d9b17107385414353c0060007f8a536254f49b8e919f36ddf6421a6e4330f817f1a3e +SHA512 (Python-3.13.1.tar.xz) = 056c9b5fc0a6b540f41513d045f43c1ed463d15e0f345cecec703ec9c2335e53b4beb19de9c74ab2b236b023f934d5fd9ae7727a808634eaa01cfe66018a9a35 +SHA512 (Python-3.13.1.tar.xz.asc) = 1b56b7c2f547aa39c75c18978e174debb113444ce3f9da3829ba6842e3160051e0de70bd49d306b8014299aa8aa911d7c67efe71dd648c3528cf8d7535a01599
commit a5d0a1835edcf93e874638c799bbd995e44170f6 Author: U2FsdGVkX1 U2FsdGVkX1@gmail.com Date: Wed Nov 13 20:17:42 2024 +0800
Increase the timeout for riscv64 because the current RISC-V CPU has slower performance.
diff --git a/python3.13.spec b/python3.13.spec index 4cf7517..bee5a28 100644 --- a/python3.13.spec +++ b/python3.13.spec @@ -1255,7 +1255,12 @@ CheckPython() { # freethreading{,-debug} build, skipping it to shorten the build time # see: https://github.com/python/cpython/issues/121719 LD_LIBRARY_PATH=$ConfDir $ConfDir/python -m test.regrtest \ - -wW --slowest %{_smp_mflags} --timeout=2700 \ + -wW --slowest %{_smp_mflags} \ + %ifarch riscv64 + --timeout=8100 \ + %else + --timeout=2700 \ + %endif -i test_freeze_simple_script \ -i test_check_probes \ %ifarch %{mips64}
commit 461d9adf9eaa7713ecdca3fef949d4f01ba1563a Author: Miro Hrončok miro@hroncok.cz Date: Tue Oct 15 18:19:14 2024 +0200
Turn valgrind bcond into in-place %ifarch
There's no way to turn this bcond off on arches where it is not supported. There's no need to turn this bcond on on arches where it is supported.
diff --git a/python3.13.spec b/python3.13.spec index c9ff579..4cf7517 100644 --- a/python3.13.spec +++ b/python3.13.spec @@ -135,14 +135,6 @@ Provides: bundled(python3dist(packaging)) = 24 # Main interpreter loop optimization %bcond computed_gotos 1
-# Support for the Valgrind debugger/profiler -# (no way to use %%ifarch as an expression) -%ifarch %{valgrind_arches} -%bcond valgrind 1 -%else -%bcond valgrind 0 -%endif - # ===================== # General global macros # ===================== @@ -295,7 +287,7 @@ BuildRequires: clang(major) = 18 BuildRequires: llvm(major) = 18 %endif
-%if %{with valgrind} +%ifarch %{valgrind_arches} BuildRequires: valgrind-devel %endif
@@ -877,7 +869,7 @@ BuildPython() { %if %{with rpmwheels} --with-wheel-pkg-dir=%{python_wheel_dir} \ %endif -%if %{with valgrind} +%ifarch %{valgrind_arches} --with-valgrind \ %endif $ExtraConfigArgs \
commit 90ea69d66a261165ec6bbb911bb3c20970923e8e Author: Miro Hrončok miro@hroncok.cz Date: Tue Oct 15 18:18:17 2024 +0200
Remove rarely used bconds
I have not used those in ~12 years.
diff --git a/python3.13.spec b/python3.13.spec index cd7a33c..c9ff579 100644 --- a/python3.13.spec +++ b/python3.13.spec @@ -132,12 +132,6 @@ Provides: bundled(python3dist(packaging)) = 24 %global jit_flag --enable-experimental-jit=yes-off %endif
-# Support for the GDB debugger -%bcond gdb_hooks 1 - -# The dbm.gnu module (key-value database) -%bcond gdbm 1 - # Main interpreter loop optimization %bcond computed_gotos 1
@@ -262,6 +256,7 @@ BuildRequires: bzip2-devel BuildRequires: expat-devel >= 2.6 BuildRequires: findutils BuildRequires: gcc +BuildRequires: gdbm-devel BuildRequires: git-core BuildRequires: glibc-devel BuildRequires: gnupg2 @@ -304,10 +299,6 @@ BuildRequires: llvm(major) = 18 BuildRequires: valgrind-devel %endif
-%if %{with gdbm} -BuildRequires: gdbm-devel -%endif - %if %{with main_python} BuildRequires: desktop-file-utils BuildRequires: libappstream-glib @@ -962,10 +953,8 @@ topdir=$(pwd) # See https://fedoraproject.org/wiki/Features/EasierPythonDebugging for more # information
-%if %{with gdb_hooks} DirHoldingGdbPy=%{_usr}/lib/debug/%{_libdir} mkdir -p %{buildroot}$DirHoldingGdbPy -%endif # with gdb_hooks
# When the actual %%{dynload_dir} exists (it does when python3.X is installed for regen-all) # %%{buildroot}%%{dynload_dir} is not created by make install and the extension modules are missing @@ -1002,11 +991,9 @@ InstallPython() {
popd
-%if %{with gdb_hooks} # See comment on $DirHoldingGdbPy above PathOfGdbPy=$DirHoldingGdbPy/$PyInstSoName-%{version}-%{release}.%{_arch}.debug-gdb.py cp Tools/gdb/libpython.py %{buildroot}$PathOfGdbPy -%endif # with gdb_hooks
# Rename the -devel script that differs on different arches to arch specific name mv %{buildroot}%{_bindir}/python${LDVersion}-{,`uname -m`-}config @@ -1113,7 +1100,7 @@ LD_LIBRARY_PATH=./build/optimized ./build/optimized/python \ -i "%{_bindir}/python%{pybasever}" -pn \ %{buildroot} \ %{buildroot}%{_bindir}/*%{pybasever}.py \ - %{?with_gdb_hooks:%{buildroot}$DirHoldingGdbPy/*.py} + %{buildroot}$DirHoldingGdbPy/*.py
# Remove shebang lines from .py files that aren't executable, and # remove executability from .py files that don't have a shebang line: @@ -1423,9 +1410,7 @@ CheckPython freethreading %{1}/_curses_panel.%{2}.so\ %{1}/_datetime.%{2}.so\ %{1}/_dbm.%{2}.so\ -%if %{with gdbm}\ %{1}/_gdbm.%{2}.so\ -%endif\ %{1}/_decimal.%{2}.so\ %{1}/_elementtree.%{2}.so\ %{1}/_hashlib.%{2}.so\
commit 7fc2da03e52a52e09d2ca4aa52f2748f88e55ff7 Author: Miro Hrončok miro@hroncok.cz Date: Tue Oct 15 18:16:01 2024 +0200
Use new-style RPM bconds
diff --git a/python3.13.spec b/python3.13.spec index ca07111..cd7a33c 100644 --- a/python3.13.spec +++ b/python3.13.spec @@ -25,27 +25,16 @@ License: Python-2.0.1 # Conditionals controlling the build # ==================================
-# Note that the bcond macros are named for the CLI option they create. -# "%%bcond_without" means "ENABLE by default and create a --without option" - # Main Python, i.e. whether this is the main Python version in the distribution # that owns /usr/bin/python3 and other unique paths # This also means the built subpackages are called python3 rather than python3X # By default, this is determined by the %%__default_python3_pkgversion value -%if "%{?__default_python3_pkgversion}" == "%{pybasever}" -%bcond_without main_python -%else -%bcond_with main_python -%endif +%bcond main_python %["%{?__default_python3_pkgversion}" == "%{pybasever}"]
# If this is *not* Main Python, should it contain `Provides: python(abi) ...`? # In Fedora no package shall depend on an alternative Python via this tag, so we do not provide it. # In ELN/RHEL/CentOS we want to allow building against alternative stacks, so the Provide is enabled. -%if 0%{?fedora} -%bcond_with python_abi_provides_for_alt_pythons -%else -%bcond_without python_abi_provides_for_alt_pythons -%endif +%bcond python_abi_provides_for_alt_pythons %{undefined fedora}
# When bootstrapping python3, we need to build python3-packaging. # but packaging BR python3-devel and that brings in python3-rpm-generators; @@ -58,11 +47,11 @@ License: Python-2.0.1 # IMPORTANT: When bootstrapping, it's very likely python-pip-wheel is # not available. Turn off the rpmwheels bcond until # python-pip is built with a wheel to get around the issue. -%bcond_with bootstrap +%bcond bootstrap 0
# Whether to use RPM build wheels from the python-{pip,setuptools,wheel}-wheel packages # Uses upstream bundled prebuilt wheels otherwise -%bcond_without rpmwheels +%bcond rpmwheels 1 # If the rpmwheels condition is disabled, we use the bundled wheel packages # from Python with the versions below. # This needs to be manually updated when we update Python. @@ -119,49 +108,45 @@ Provides: bundled(python3dist(packaging)) = 24 }
# Expensive optimizations (mainly, profile-guided optimizations) -%bcond_without optimizations +%bcond optimizations 1
# Run the test suite in %%check -%bcond_without tests +%bcond tests 1
# Extra build for debugging the interpreter or C-API extensions # (the -debug subpackages) -%bcond_without debug_build +%bcond debug_build 1
# Extra build without GIL, the freethreading PEP 703 provisional way # (the -freethreading subpackage) -%bcond_without freethreading_build +%bcond freethreading_build 1
# PEP 744: JIT Compilation # Whether to build with the experimental JIT compiler # We can only have this on Fedora 40+, where clang 18+ is available # And only on certain architectures: https://peps.python.org/pep-0744/#support # The freethreading build (when enabled) does not support JIT yet -%bcond_with jit -%ifarch x86_64 aarch64 -%if 0%{?fedora} >= 40 || 0%{?rhel} >= 10 -%bcond_without jit -%endif -%endif +%bcond jit %[(0%{?fedora} >= 40 || 0%{?rhel} >= 10) && ("%{_arch}" == "x86_64" || "%{_arch}" == "aarch64")] %if %{with jit} # When built with JIT, it still needs to be enabled on runtime via PYTHON_JIT=1 %global jit_flag --enable-experimental-jit=yes-off %endif
# Support for the GDB debugger -%bcond_without gdb_hooks +%bcond gdb_hooks 1
# The dbm.gnu module (key-value database) -%bcond_without gdbm +%bcond gdbm 1
# Main interpreter loop optimization -%bcond_without computed_gotos +%bcond computed_gotos 1
# Support for the Valgrind debugger/profiler +# (no way to use %%ifarch as an expression) %ifarch %{valgrind_arches} -%bcond_without valgrind +%bcond valgrind 1 %else -%bcond_with valgrind +%bcond valgrind 0 %endif
# =====================
commit a8ce422a93903af0224b0a222da98b7c77d3185f Author: Miro Hrončok miro@hroncok.cz Date: Mon Oct 14 12:00:50 2024 +0200
CI: Explicitly lists flags to be checked for -O3/-O0
Not listing the flags skips the ones without -O. This way, we no longer assert -O3/-O2 is the only -O flag, but we also assert it is actually set.
diff --git a/tests/tests.yml b/tests/tests.yml index fb2659f..8a4ba6b 100644 --- a/tests/tests.yml +++ b/tests/tests.yml @@ -36,16 +36,16 @@ run: "VERSION={{ pybasever }} PYTHON=python{{ pybasever }}d X='-i test_check_probes' ./parallel.sh" - optimizedflags: dir: python/flags - run: "python{{ pybasever }} ./assertflags.py -O3" + run: "python{{ pybasever }} ./assertflags.py -O3 CFLAGS PY_BUILTIN_MODULE_CFLAGS PY_CFLAGS PY_CORE_CFLAGS PY_CFLAGS_NODIST PY_STDMODULE_CFLAGS" - debugflags: dir: python/flags - run: "python{{ pybasever }}d ./assertflags.py -O0" + run: "python{{ pybasever }}d ./assertflags.py -O0 CFLAGS PY_BUILTIN_MODULE_CFLAGS PY_CFLAGS PY_CORE_CFLAGS PY_CFLAGS_NODIST PY_STDMODULE_CFLAGS" - freethreadingflags: dir: python/flags - run: "python{{ pybasever }}t ./assertflags.py -O3" + run: "python{{ pybasever }}t ./assertflags.py -O3 CFLAGS PY_BUILTIN_MODULE_CFLAGS PY_CFLAGS PY_CORE_CFLAGS PY_CFLAGS_NODIST PY_STDMODULE_CFLAGS" - freethreadingdebugflags: dir: python/flags - run: "python{{ pybasever }}td ./assertflags.py -O0" + run: "python{{ pybasever }}td ./assertflags.py -O0 CFLAGS PY_BUILTIN_MODULE_CFLAGS PY_CFLAGS PY_CORE_CFLAGS PY_CFLAGS_NODIST PY_STDMODULE_CFLAGS" - marshalparser: dir: python/marshalparser run: "VERSION={{ pybasever }} SAMPLE=10 test_marshalparser_compatibility.sh"
arch-excludes@lists.fedoraproject.org