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=2da1bb9f6d....
Change: +%ifnarch ppc64le s390x
Thanks.
Full change: ============
commit c01336e5dcfbedd316aaa9be157fd520e7fe957b Author: Miro Hrončok miro@hroncok.cz Date: Wed Dec 6 14:19:18 2023 +0100
Update rpmlint.toml with regards to the freethreading builds
diff --git a/rpmlint.toml b/rpmlint.toml index b532441..2b157ef 100644 --- a/rpmlint.toml +++ b/rpmlint.toml @@ -52,10 +52,10 @@ Filters = [ # manual pages 'no-manual-page-for-binary (idle|pydoc|pyvenv|2to3|python3?-debug|pathfix|msgfmt|pygettext)', 'no-manual-page-for-binary python3?.*-config$', - 'no-manual-page-for-binary python3.\d+dm?$', + 'no-manual-page-for-binary python3.\d+t?dm?$',
# missing documentation from subpackages - '^python3(.\d+)?-(debug|tkinter|test|idle).[^:]+: (E|W): no-documentation', + '^python3(.\d+)?-(freethreading(-debug)?|debug|tkinter|test|idle).[^:]+: (E|W): no-documentation',
# platform python is obsoleted, but not provided 'obsolete-not-provided platform-python', @@ -77,13 +77,13 @@ Filters = [ # this is OK for F28+ 'library-without-ldconfig-post',
- # debug package contains devel and non-devel files - 'python3(.\d+)?-debug.[^:]+: (E|W): (non-)?devel-file-in-(non-)?devel-package', + # freethreading/debug package contains devel and non-devel files + 'python3(.\d+)?-(freethreading(-debug)?|debug).[^:]+: (E|W): (non-)?devel-file-in-(non-)?devel-package',
# this goes to other subpackage, hence not actually dangling 'dangling-relative-symlink /usr/bin/python python3', 'dangling-relative-symlink /usr/share/man/man1/python.1.gz python3.1.gz', - 'dangling-relative-symlink /usr/lib(64)?/pkgconfig/python-3.\d+dm?(-embed)?.pc python-3.\d+(-embed)?.pc', + 'dangling-relative-symlink /usr/lib(64)?/pkgconfig/python-3.\d+t?d?m?(-embed)?.pc python-3.\d+t?(-embed)?.pc',
# the python-unversioned-command package contains dangling symlinks by design '^python-unversioned-command.[^:]+: (E|W): dangling-relative-symlink (/usr/bin/python ./python3|/usr/share/man/man1/python.1\S* ./python3.1\S*)$',
commit 2da1bb9f6d7ee905dfb8c1e982eced9fa7143b10 Author: Miro Hrončok miro@hroncok.cz Date: Wed Dec 6 11:52:56 2023 +0100
Don't build the freethreding packages on ppc64le/s390x for now
See https://github.com/python/cpython/issues/112535 And https://github.com/python/cpython/pull/112624 And https://github.com/python/cpython/pull/112751
Rather than backporting a handful of small commits, let's wait for the next release.
diff --git a/python3.13.spec b/python3.13.spec index 068fe14..1f704af 100644 --- a/python3.13.spec +++ b/python3.13.spec @@ -138,7 +138,13 @@ Provides: bundled(python3dist(packaging)) = 23
# Extra build without GIL, the freethreading PEP 703 provisional way # (the -freethreading subpackage) +# support for the excluded arches is being added upstream and is expected to land in 3.13.0a3 +# https://github.com/python/cpython/issues/112535 +%ifnarch ppc64le s390x %bcond_without freethreading_build +%else +%bcond_with freethreading_build +%endif
# Support for the GDB debugger %bcond_without gdb_hooks @@ -1656,6 +1662,7 @@ CheckPython freethreading * Tue Dec 05 2023 Miro Hrončok mhroncok@redhat.com - 3.13.0~a2-2 - Add the python3.13-freethreading and python3.13-freethreading-debug packages - See https://peps.python.org/pep-0703/ +- ppc64le and s390x are excluded for now, support is expected in 3.13.0a3
* Fri Nov 24 2023 Karolina Surma ksurma@redhat.com - 3.13.0~a2-1 - Update to Python 3.13.0a2
commit 84d78b385a57306af12b04922f60d516e6e8be49 Author: Miro Hrončok miro@hroncok.cz Date: Mon Oct 30 14:29:53 2023 +0100
Add the python3.13-freethreading and python3.13-freethreading-debug packages
- See https://peps.python.org/pep-0703/
diff --git a/python3.13.spec b/python3.13.spec index 2eb5fa0..068fe14 100644 --- a/python3.13.spec +++ b/python3.13.spec @@ -17,7 +17,7 @@ URL: https://www.python.org/ %global prerel a2 %global upstream_version %{general_version}%{?prerel} Version: %{general_version}%{?prerel:~%{prerel}} -Release: 1%{?dist} +Release: 2%{?dist} License: Python-2.0.1
@@ -136,6 +136,10 @@ Provides: bundled(python3dist(packaging)) = 23 # (the -debug subpackages) %bcond_without debug_build
+# Extra build without GIL, the freethreading PEP 703 provisional way +# (the -freethreading subpackage) +%bcond_without freethreading_build + # Support for the GDB debugger %bcond_without gdb_hooks
@@ -168,11 +172,15 @@ Provides: bundled(python3dist(packaging)) = 23
# ABIFLAGS, LDVERSION and SOABI are in the upstream configure.ac # See PEP 3149 for some background: http://www.python.org/dev/peps/pep-3149/ -%global ABIFLAGS_optimized %{nil} -%global ABIFLAGS_debug d +%global ABIFLAGS_optimized %{nil} +%global ABIFLAGS_debug d +%global ABIFLAGS_freethreading t +%global ABIFLAGS_freethreading_debug td
-%global LDVERSION_optimized %{pybasever}%{ABIFLAGS_optimized} -%global LDVERSION_debug %{pybasever}%{ABIFLAGS_debug} +%global LDVERSION_optimized %{pybasever}%{ABIFLAGS_optimized} +%global LDVERSION_debug %{pybasever}%{ABIFLAGS_debug} +%global LDVERSION_freethreading %{pybasever}%{ABIFLAGS_freethreading} +%global LDVERSION_freethreading_debug %{pybasever}%{ABIFLAGS_freethreading_debug}
# We use the upstream arch triplets, we convert them from %%{_arch}-linux%%{_gnu} %global platform_triplet %{expand:%(echo %{_arch}-linux%{_gnu} | sed -E \ @@ -180,8 +188,10 @@ Provides: bundled(python3dist(packaging)) = 23 -e 's/^mips64(el)?-linux-gnu$/mips64\1-linux-gnuabi64/' \ -e 's/^ppc(64)?(le)?-linux-gnu$/powerpc\1\2-linux-gnu/')}
-%global SOABI_optimized cpython-%{pyshortver}%{ABIFLAGS_optimized}-%{platform_triplet} -%global SOABI_debug cpython-%{pyshortver}%{ABIFLAGS_debug}-%{platform_triplet} +%global SOABI_optimized cpython-%{pyshortver}%{ABIFLAGS_optimized}-%{platform_triplet} +%global SOABI_debug cpython-%{pyshortver}%{ABIFLAGS_debug}-%{platform_triplet} +%global SOABI_freethreading cpython-%{pyshortver}%{ABIFLAGS_freethreading}-%{platform_triplet} +%global SOABI_freethreading_debug cpython-%{pyshortver}%{ABIFLAGS_freethreading_debug}-%{platform_triplet}
# All bytecode files are in a __pycache__ subdirectory, with a name # reflecting the version of the bytecode. @@ -202,8 +212,10 @@ Provides: bundled(python3dist(packaging)) = 23 # (if these get out of sync, the payload of the libs subpackage will fail # and halt the build) %global py_SOVERSION 1.0 -%global py_INSTSONAME_optimized libpython%{LDVERSION_optimized}.so.%{py_SOVERSION} -%global py_INSTSONAME_debug libpython%{LDVERSION_debug}.so.%{py_SOVERSION} +%global py_INSTSONAME_optimized libpython%{LDVERSION_optimized}.so.%{py_SOVERSION} +%global py_INSTSONAME_debug libpython%{LDVERSION_debug}.so.%{py_SOVERSION} +%global py_INSTSONAME_freethreading libpython%{LDVERSION_freethreading}.so.%{py_SOVERSION} +%global py_INSTSONAME_freethreading_debug libpython%{LDVERSION_freethreading_debug}.so.%{py_SOVERSION}
# Disable automatic bytecompilation. The python3 binary is not yet be # available in /usr/bin when Python is built. Also, the bytecompilation fails @@ -659,6 +671,67 @@ The debug runtime additionally supports debug builds of C-API extensions %endif # with debug_build
+%if %{with freethreading_build} +# This deliberately does not use the %%{pkgname}- prefix, +# we want to call this python3.X-threading even when built as a main Python. +# At least until the PEP 703 build remains provisional. +%package -n python%{pybasever}-freethreading +Summary: Free Threading (PEP 703) version of the Python runtime + +# The freethreading build is an all-in-one package version of the regular build, and +# shares the same .py/.pyc files and directories as the regular build. Hence +# we depend on all of the subpackages of the regular build: +Requires: %{pkgname}%{?_isa} = %{version}-%{release} +Requires: %{pkgname}-libs%{?_isa} = %{version}-%{release} +Requires: %{pkgname}-devel%{?_isa} = %{version}-%{release} +Requires: %{pkgname}-test%{?_isa} = %{version}-%{release} +Requires: %{pkgname}-tkinter%{?_isa} = %{version}-%{release} +Requires: %{pkgname}-idle%{?_isa} = %{version}-%{release} + +%description -n python%{pybasever}-freethreading +The provisional Free Threading (PEP 703) build of Python. + +CPython’s global interpreter lock (“GIL”) prevents multiple threads from +executing Python code at the same time. The GIL is an obstacle to using +multi-core CPUs from Python efficiently. + +This build of Python is built with the --disable-gil option. +It lets the interpreter run Python code without the global interpreter lock +and with the necessary changes needed to make the interpreter thread-safe. +%endif # with freethreading_build + + +%if %{with freethreading_build} && %{with debug_build} +%package -n python%{pybasever}-freethreading-debug +Summary: Free Threading (PEP 703) version of the Python runtime (debug build) + +# The debug build is an all-in-one package version of the regular build, and +# shares the same .py/.pyc files and directories as the regular build. Hence +# we depend on all of the subpackages of the regular build: +Requires: %{pkgname}%{?_isa} = %{version}-%{release} +Requires: %{pkgname}-libs%{?_isa} = %{version}-%{release} +Requires: %{pkgname}-devel%{?_isa} = %{version}-%{release} +Requires: %{pkgname}-test%{?_isa} = %{version}-%{release} +Requires: %{pkgname}-tkinter%{?_isa} = %{version}-%{release} +Requires: %{pkgname}-idle%{?_isa} = %{version}-%{release} + +%description -n python%{pybasever}-freethreading-debug +The provisional Free Threading (PEP 703) build of Python. Debug build. + +CPython’s global interpreter lock (“GIL”) prevents multiple threads from +executing Python code at the same time. The GIL is an obstacle to using +multi-core CPUs from Python efficiently. + +This build of Python is built with the --disable-gil option. +It lets the interpreter run Python code without the global interpreter lock +and with the necessary changes needed to make the interpreter thread-safe. + +This package provides a version of the Python runtime with numerous debugging +features enabled, aimed at advanced Python users such as developers of Python +extension modules. +%endif # with freethreading_build && debug_build + + # ====================================================== # The prep phase of the build: # ====================================================== @@ -820,6 +893,18 @@ BuildPython optimized \ "--without-ensurepip %{optimizations_flag}" \ ""
+%if %{with freethreading_build} && %{with debug_build} +BuildPython freethreading-debug \ + "--without-ensurepip --with-pydebug --disable-gil" \ + "-O0 -Wno-cpp" +%endif # with freethreading_build && debug_build + +%if %{with freethreading_build} +BuildPython freethreading \ + "--without-ensurepip %{optimizations_flag} --disable-gil" \ + "" +%endif # with freethreading_build + # ====================================================== # Installing the built code: # ====================================================== @@ -918,8 +1003,16 @@ EOF echo FINISHED: INSTALL OF PYTHON FOR CONFIGURATION: $ConfName }
-# Install the "debug" build first; any common files will be overridden with +# Install the "freethreading" and "debug" builds first; any common files will be overridden with # later builds +%if %{with freethreading_build} && %{with debug_build} +# Now the freethreading debug build: +InstallPython freethreading-debug \ + %{py_INSTSONAME_freethreading_debug} \ + "" \ + %{LDVERSION_freethreading_debug} +%endif # with freethreading_build && debug_build + %if %{with debug_build} InstallPython debug \ %{py_INSTSONAME_debug} \ @@ -927,6 +1020,14 @@ InstallPython debug \ %{LDVERSION_debug} %endif # with debug_build
+%if %{with freethreading_build} +# Now the freethreading optimized build: +InstallPython freethreading \ + %{py_INSTSONAME_freethreading} \ + "" \ + %{LDVERSION_freethreading} +%endif # with freethreading_build + # Now the optimized build: InstallPython optimized \ %{py_INSTSONAME_optimized} \ @@ -1160,6 +1261,12 @@ CheckPython() { CheckPython debug %endif # with debug_build CheckPython optimized +%if %{with freethreading_build} && %{with debug_build} +CheckPython freethreading-debug +%endif # with freethreading_build && debug_build +%if %{with freethreading_build} +CheckPython freethreading +%endif # with freethreading_build
%endif # with tests
@@ -1471,6 +1578,60 @@ CheckPython optimized
%endif # with debug_build
+%if %{with freethreading_build} +%files -n python%{pybasever}-freethreading +# Analog of the core subpackage's files: +%{_bindir}/python%{LDVERSION_freethreading} + +# Analog to the -libs subpackage's files: +%{_libdir}/%{py_INSTSONAME_freethreading} + +# Analog of the libs, test, and tkinter extension modules: +%extension_modules %{SOABI_freethreading} +%extension_modules_test %{SOABI_freethreading} +%{dynload_dir}/_tkinter.%{SOABI_freethreading}.so + +# Analog of the -devel subpackage's files: +%{pylibdir}/config-%{LDVERSION_freethreading}-%{platform_triplet}/ +%{_includedir}/python%{LDVERSION_freethreading}/ +%{_bindir}/python%{LDVERSION_freethreading}-config +%{_bindir}/python%{LDVERSION_freethreading}-*-config +%{_libdir}/libpython%{LDVERSION_freethreading}.so +%{_libdir}/pkgconfig/python-%{LDVERSION_freethreading}.pc +%{_libdir}/pkgconfig/python-%{LDVERSION_freethreading}-embed.pc + +%{pylibdir}/_sysconfigdata_%{ABIFLAGS_freethreading}_linux_%{platform_triplet}.py +%{pylibdir}/__pycache__/_sysconfigdata_%{ABIFLAGS_freethreading}_linux_%{platform_triplet}%{bytecode_suffixes} + +%endif # with freethreading_build + +%if %{with freethreading_build} && %{with debug_build} +%files -n python%{pybasever}-freethreading-debug +# Analog of the core subpackage's files: +%{_bindir}/python%{LDVERSION_freethreading_debug} + +# Analog to the -libs subpackage's files: +%{_libdir}/%{py_INSTSONAME_freethreading_debug} + +# Analog of the libs, test, and tkinter extension modules: +%extension_modules %{SOABI_freethreading_debug} +%extension_modules_test %{SOABI_freethreading_debug} +%{dynload_dir}/_tkinter.%{SOABI_freethreading_debug}.so + +# Analog of the -devel subpackage's files: +%{pylibdir}/config-%{LDVERSION_freethreading_debug}-%{platform_triplet}/ +%{_includedir}/python%{LDVERSION_freethreading_debug}/ +%{_bindir}/python%{LDVERSION_freethreading_debug}-config +%{_bindir}/python%{LDVERSION_freethreading_debug}-*-config +%{_libdir}/libpython%{LDVERSION_freethreading_debug}.so +%{_libdir}/pkgconfig/python-%{LDVERSION_freethreading_debug}.pc +%{_libdir}/pkgconfig/python-%{LDVERSION_freethreading_debug}-embed.pc + +%{pylibdir}/_sysconfigdata_%{ABIFLAGS_freethreading_debug}_linux_%{platform_triplet}.py +%{pylibdir}/__pycache__/_sysconfigdata_%{ABIFLAGS_freethreading_debug}_linux_%{platform_triplet}%{bytecode_suffixes} + +%endif # with freethreading_build && debug_build + # We put the debug-gdb.py file inside /usr/lib/debug to avoid noise from ldconfig # See https://bugzilla.redhat.com/show_bug.cgi?id=562980 # @@ -1492,6 +1653,10 @@ CheckPython optimized # ======================================================
%changelog +* Tue Dec 05 2023 Miro Hrončok mhroncok@redhat.com - 3.13.0~a2-2 +- Add the python3.13-freethreading and python3.13-freethreading-debug packages +- See https://peps.python.org/pep-0703/ + * Fri Nov 24 2023 Karolina Surma ksurma@redhat.com - 3.13.0~a2-1 - Update to Python 3.13.0a2
commit f7b147540fd9d372072ad6921829b7340e5334dd Author: Miro Hrončok miro@hroncok.cz Date: Wed Nov 29 15:50:27 2023 +0100
Remove a duplicate %files entry for /usr/lib64/libpython3.Xd.so.1.0
This file is already listed as %{_libdir}/%{py_INSTSONAME_debug}. The relevant nondebug file is in -libs, not -devel.
diff --git a/python3.13.spec b/python3.13.spec index 33e947d..2eb5fa0 100644 --- a/python3.13.spec +++ b/python3.13.spec @@ -1463,7 +1463,6 @@ CheckPython optimized %{_bindir}/python%{LDVERSION_debug}-config %{_bindir}/python%{LDVERSION_debug}-*-config %{_libdir}/libpython%{LDVERSION_debug}.so -%{_libdir}/libpython%{LDVERSION_debug}.so.%{py_SOVERSION} %{_libdir}/pkgconfig/python-%{LDVERSION_debug}.pc %{_libdir}/pkgconfig/python-%{LDVERSION_debug}-embed.pc
commit 0412f5117ab7c488c5c16deddf6f2aecf0ea850c Author: Miro Hrončok miro@hroncok.cz Date: Thu Nov 23 15:41:18 2023 +0100
Sanitize the %files section
- Don't bother listing %dirs and __pycache__ and *.py, list entire directories - Keep pure Python and extension modules separated - Sort things - Macronize the list of extension modules for -debug
diff --git a/python3.13.spec b/python3.13.spec index 8ba1c0a..33e947d 100644 --- a/python3.13.spec +++ b/python3.13.spec @@ -1193,30 +1193,52 @@ CheckPython optimized
%license %{pylibdir}/LICENSE.txt
-%dir %{pylibdir}/unittest/ -%dir %{pylibdir}/unittest/__pycache__/ -%{pylibdir}/unittest/*.py -%{pylibdir}/unittest/__pycache__/*%{bytecode_suffixes} - -%dir %{pylibdir}/asyncio/ -%dir %{pylibdir}/asyncio/__pycache__/ -%{pylibdir}/asyncio/*.py -%{pylibdir}/asyncio/__pycache__/*%{bytecode_suffixes} - -%dir %{pylibdir}/venv/ -%dir %{pylibdir}/venv/__pycache__/ -%{pylibdir}/venv/*.py -%{pylibdir}/venv/__pycache__/*%{bytecode_suffixes} -%{pylibdir}/venv/scripts +# Pure Python modules +%{pylibdir}/*.py +%dir %{pylibdir}/__pycache__/ +%{pylibdir}/__pycache__/*%{bytecode_suffixes}
-%{pylibdir}/wsgiref -%{pylibdir}/xmlrpc +%{pylibdir}/__phello__/ +%{pylibdir}/asyncio/ +%{pylibdir}/collections/ +%{pylibdir}/concurrent/ +%{pylibdir}/ctypes/ +%{pylibdir}/curses/ +%{pylibdir}/dbm/ +%{pylibdir}/encodings/ +%{pylibdir}/html/ +%{pylibdir}/http/ +%{pylibdir}/importlib/ +%{pylibdir}/json/ +%{pylibdir}/logging/ +%{pylibdir}/multiprocessing/ +%{pylibdir}/pydoc_data/ +%{pylibdir}/re/ +%{pylibdir}/sqlite3/ +%{pylibdir}/sysconfig/ +%{pylibdir}/tomllib/ +%{pylibdir}/unittest/ +%{pylibdir}/urllib/ +%{pylibdir}/venv/ +%{pylibdir}/wsgiref/ +%{pylibdir}/xml/ +%{pylibdir}/xmlrpc/ +%{pylibdir}/zipfile/ +%{pylibdir}/zoneinfo/ + +# Handle the email module in detail to mark architecture.rst as %%doc +%dir %{pylibdir}/email/ +%dir %{pylibdir}/email/__pycache__/ +%{pylibdir}/email/*.py +%{pylibdir}/email/__pycache__/*%{bytecode_suffixes} +%{pylibdir}/email/mime/ +%doc %{pylibdir}/email/architecture.rst
+# Handle the ensurepip module in detail to not accidentally ship wheels %dir %{pylibdir}/ensurepip/ %dir %{pylibdir}/ensurepip/__pycache__/ %{pylibdir}/ensurepip/*.py %{pylibdir}/ensurepip/__pycache__/*%{bytecode_suffixes} - %if %{with rpmwheels} %exclude %{pylibdir}/ensurepip/_bundled %else @@ -1224,190 +1246,94 @@ CheckPython optimized %{pylibdir}/ensurepip/_bundled/pip-%{pip_version}-py3-none-any.whl %endif
-%dir %{pylibdir}/concurrent/ -%dir %{pylibdir}/concurrent/__pycache__/ -%{pylibdir}/concurrent/*.py -%{pylibdir}/concurrent/__pycache__/*%{bytecode_suffixes} - -%dir %{pylibdir}/concurrent/futures/ -%dir %{pylibdir}/concurrent/futures/__pycache__/ -%{pylibdir}/concurrent/futures/*.py -%{pylibdir}/concurrent/futures/__pycache__/*%{bytecode_suffixes} - -%dir %{pylibdir}/sysconfig/ -%dir %{pylibdir}/sysconfig/__pycache__/ -%{pylibdir}/sysconfig/*.py -%{pylibdir}/sysconfig/__pycache__/*%{bytecode_suffixes} - -%{pylibdir}/pydoc_data - -%{dynload_dir}/_blake2.%{SOABI_optimized}.so -%{dynload_dir}/_md5.%{SOABI_optimized}.so -%{dynload_dir}/_sha1.%{SOABI_optimized}.so -%{dynload_dir}/_sha2.%{SOABI_optimized}.so -%{dynload_dir}/_sha3.%{SOABI_optimized}.so - -%{dynload_dir}/_asyncio.%{SOABI_optimized}.so -%{dynload_dir}/_bisect.%{SOABI_optimized}.so -%{dynload_dir}/_bz2.%{SOABI_optimized}.so -%{dynload_dir}/_codecs_cn.%{SOABI_optimized}.so -%{dynload_dir}/_codecs_hk.%{SOABI_optimized}.so -%{dynload_dir}/_codecs_iso2022.%{SOABI_optimized}.so -%{dynload_dir}/_codecs_jp.%{SOABI_optimized}.so -%{dynload_dir}/_codecs_kr.%{SOABI_optimized}.so -%{dynload_dir}/_codecs_tw.%{SOABI_optimized}.so -%{dynload_dir}/_contextvars.%{SOABI_optimized}.so -%{dynload_dir}/_csv.%{SOABI_optimized}.so -%{dynload_dir}/_ctypes.%{SOABI_optimized}.so -%{dynload_dir}/_curses.%{SOABI_optimized}.so -%{dynload_dir}/_curses_panel.%{SOABI_optimized}.so -%{dynload_dir}/_dbm.%{SOABI_optimized}.so -%{dynload_dir}/_decimal.%{SOABI_optimized}.so -%{dynload_dir}/_elementtree.%{SOABI_optimized}.so -%if %{with gdbm} -%{dynload_dir}/_gdbm.%{SOABI_optimized}.so -%endif -%{dynload_dir}/_hashlib.%{SOABI_optimized}.so -%{dynload_dir}/_heapq.%{SOABI_optimized}.so -%{dynload_dir}/_json.%{SOABI_optimized}.so -%{dynload_dir}/_lsprof.%{SOABI_optimized}.so -%{dynload_dir}/_lzma.%{SOABI_optimized}.so -%{dynload_dir}/_multibytecodec.%{SOABI_optimized}.so -%{dynload_dir}/_multiprocessing.%{SOABI_optimized}.so -%{dynload_dir}/_opcode.%{SOABI_optimized}.so -%{dynload_dir}/_pickle.%{SOABI_optimized}.so -%{dynload_dir}/_posixsubprocess.%{SOABI_optimized}.so -%{dynload_dir}/_queue.%{SOABI_optimized}.so -%{dynload_dir}/_random.%{SOABI_optimized}.so -%{dynload_dir}/_socket.%{SOABI_optimized}.so -%{dynload_dir}/_sqlite3.%{SOABI_optimized}.so -%{dynload_dir}/_ssl.%{SOABI_optimized}.so -%{dynload_dir}/_statistics.%{SOABI_optimized}.so -%{dynload_dir}/_struct.%{SOABI_optimized}.so -%{dynload_dir}/array.%{SOABI_optimized}.so -%{dynload_dir}/binascii.%{SOABI_optimized}.so -%{dynload_dir}/cmath.%{SOABI_optimized}.so -%{dynload_dir}/_datetime.%{SOABI_optimized}.so -%{dynload_dir}/fcntl.%{SOABI_optimized}.so -%{dynload_dir}/grp.%{SOABI_optimized}.so -%{dynload_dir}/math.%{SOABI_optimized}.so -%{dynload_dir}/mmap.%{SOABI_optimized}.so -%{dynload_dir}/_posixshmem.%{SOABI_optimized}.so -%{dynload_dir}/pyexpat.%{SOABI_optimized}.so -%{dynload_dir}/readline.%{SOABI_optimized}.so -%{dynload_dir}/resource.%{SOABI_optimized}.so -%{dynload_dir}/select.%{SOABI_optimized}.so -%{dynload_dir}/syslog.%{SOABI_optimized}.so -%{dynload_dir}/termios.%{SOABI_optimized}.so -%{dynload_dir}/unicodedata.%{SOABI_optimized}.so -%{dynload_dir}/_uuid.%{SOABI_optimized}.so -%{dynload_dir}/xxlimited.%{SOABI_optimized}.so -%{dynload_dir}/xxlimited_35.%{SOABI_optimized}.so -%{dynload_dir}/_xxsubinterpreters.%{SOABI_optimized}.so -%{dynload_dir}/xxsubtype.%{SOABI_optimized}.so -%{dynload_dir}/zlib.%{SOABI_optimized}.so -%{dynload_dir}/_zoneinfo.%{SOABI_optimized}.so - -%dir %{pylibdir}/site-packages/ -%dir %{pylibdir}/site-packages/__pycache__/ -%{pylibdir}/site-packages/README.txt +# This will be in the tkinter package +%exclude %{pylibdir}/turtle.py +%exclude %{pylibdir}/__pycache__/turtle*%{bytecode_suffixes}
+# This will be in the debug package %if %{with debug_build} %exclude %{pylibdir}/_sysconfigdata_%{ABIFLAGS_debug}_linux_%{platform_triplet}.py %exclude %{pylibdir}/__pycache__/_sysconfigdata_%{ABIFLAGS_debug}_linux_%{platform_triplet}%{bytecode_suffixes} %endif
-%{pylibdir}/*.py -%dir %{pylibdir}/__pycache__/ -%{pylibdir}/__pycache__/*%{bytecode_suffixes} - -%dir %{pylibdir}/collections/ -%dir %{pylibdir}/collections/__pycache__/ -%{pylibdir}/collections/*.py -%{pylibdir}/collections/__pycache__/*%{bytecode_suffixes} - -%dir %{pylibdir}/ctypes/ -%dir %{pylibdir}/ctypes/__pycache__/ -%{pylibdir}/ctypes/*.py -%{pylibdir}/ctypes/__pycache__/*%{bytecode_suffixes} -%{pylibdir}/ctypes/macholib +# Extension modules +# This is macronized for reuse in the -debug package +%define extension_modules() \ +%{dynload_dir}/_asyncio.%{1}.so\ +%{dynload_dir}/_bisect.%{1}.so\ +%{dynload_dir}/_blake2.%{1}.so\ +%{dynload_dir}/_bz2.%{1}.so\ +%{dynload_dir}/_codecs_cn.%{1}.so\ +%{dynload_dir}/_codecs_hk.%{1}.so\ +%{dynload_dir}/_codecs_iso2022.%{1}.so\ +%{dynload_dir}/_codecs_jp.%{1}.so\ +%{dynload_dir}/_codecs_kr.%{1}.so\ +%{dynload_dir}/_codecs_tw.%{1}.so\ +%{dynload_dir}/_contextvars.%{1}.so\ +%{dynload_dir}/_csv.%{1}.so\ +%{dynload_dir}/_ctypes.%{1}.so\ +%{dynload_dir}/_curses.%{1}.so\ +%{dynload_dir}/_curses_panel.%{1}.so\ +%{dynload_dir}/_datetime.%{1}.so\ +%{dynload_dir}/_dbm.%{1}.so\ +%if %{with gdbm}\ +%{dynload_dir}/_gdbm.%{1}.so\ +%endif\ +%{dynload_dir}/_decimal.%{1}.so\ +%{dynload_dir}/_elementtree.%{1}.so\ +%{dynload_dir}/_hashlib.%{1}.so\ +%{dynload_dir}/_heapq.%{1}.so\ +%{dynload_dir}/_json.%{1}.so\ +%{dynload_dir}/_lsprof.%{1}.so\ +%{dynload_dir}/_lzma.%{1}.so\ +%{dynload_dir}/_md5.%{1}.so\ +%{dynload_dir}/_multibytecodec.%{1}.so\ +%{dynload_dir}/_multiprocessing.%{1}.so\ +%{dynload_dir}/_opcode.%{1}.so\ +%{dynload_dir}/_pickle.%{1}.so\ +%{dynload_dir}/_posixshmem.%{1}.so\ +%{dynload_dir}/_posixsubprocess.%{1}.so\ +%{dynload_dir}/_queue.%{1}.so\ +%{dynload_dir}/_random.%{1}.so\ +%{dynload_dir}/_sha1.%{1}.so\ +%{dynload_dir}/_sha2.%{1}.so\ +%{dynload_dir}/_sha3.%{1}.so\ +%{dynload_dir}/_socket.%{1}.so\ +%{dynload_dir}/_sqlite3.%{1}.so\ +%{dynload_dir}/_ssl.%{1}.so\ +%{dynload_dir}/_statistics.%{1}.so\ +%{dynload_dir}/_struct.%{1}.so\ +%{dynload_dir}/_uuid.%{1}.so\ +%{dynload_dir}/_xxsubinterpreters.%{1}.so\ +%{dynload_dir}/_zoneinfo.%{1}.so\ +%{dynload_dir}/array.%{1}.so\ +%{dynload_dir}/binascii.%{1}.so\ +%{dynload_dir}/cmath.%{1}.so\ +%{dynload_dir}/fcntl.%{1}.so\ +%{dynload_dir}/grp.%{1}.so\ +%{dynload_dir}/math.%{1}.so\ +%{dynload_dir}/mmap.%{1}.so\ +%{dynload_dir}/pyexpat.%{1}.so\ +%{dynload_dir}/readline.%{1}.so\ +%{dynload_dir}/resource.%{1}.so\ +%{dynload_dir}/select.%{1}.so\ +%{dynload_dir}/syslog.%{1}.so\ +%{dynload_dir}/termios.%{1}.so\ +%{dynload_dir}/unicodedata.%{1}.so\ +%{dynload_dir}/xxlimited.%{1}.so\ +%{dynload_dir}/xxlimited_35.%{1}.so\ +%{dynload_dir}/xxsubtype.%{1}.so\ +%{dynload_dir}/zlib.%{1}.so + +%extension_modules %{SOABI_optimized}
-%{pylibdir}/curses - -%dir %{pylibdir}/dbm/ -%dir %{pylibdir}/dbm/__pycache__/ -%{pylibdir}/dbm/*.py -%{pylibdir}/dbm/__pycache__/*%{bytecode_suffixes} - -%dir %{pylibdir}/email/ -%dir %{pylibdir}/email/__pycache__/ -%{pylibdir}/email/*.py -%{pylibdir}/email/__pycache__/*%{bytecode_suffixes} -%{pylibdir}/email/mime -%doc %{pylibdir}/email/architecture.rst - -%{pylibdir}/encodings - -%{pylibdir}/html -%{pylibdir}/http - -%dir %{pylibdir}/importlib/ -%dir %{pylibdir}/importlib/__pycache__/ -%{pylibdir}/importlib/*.py -%{pylibdir}/importlib/__pycache__/*%{bytecode_suffixes} - -%dir %{pylibdir}/importlib/metadata/ -%dir %{pylibdir}/importlib/metadata/__pycache__/ -%{pylibdir}/importlib/metadata/*.py -%{pylibdir}/importlib/metadata/__pycache__/*%{bytecode_suffixes} - -%dir %{pylibdir}/importlib/resources/ -%dir %{pylibdir}/importlib/resources/__pycache__/ -%{pylibdir}/importlib/resources/*.py -%{pylibdir}/importlib/resources/__pycache__/*%{bytecode_suffixes} - -%dir %{pylibdir}/json/ -%dir %{pylibdir}/json/__pycache__/ -%{pylibdir}/json/*.py -%{pylibdir}/json/__pycache__/*%{bytecode_suffixes} - -%{pylibdir}/logging -%{pylibdir}/multiprocessing - -%dir %{pylibdir}/re/ -%{pylibdir}/re/*.py -%{pylibdir}/re/__pycache__/*%{bytecode_suffixes} - -%dir %{pylibdir}/sqlite3/ -%dir %{pylibdir}/sqlite3/__pycache__/ -%{pylibdir}/sqlite3/*.py -%{pylibdir}/sqlite3/__pycache__/*%{bytecode_suffixes} - -%dir %{pylibdir}/tomllib/ -%{pylibdir}/tomllib/*.py -%{pylibdir}/tomllib/__pycache__/*%{bytecode_suffixes} -%exclude %{pylibdir}/turtle.py -%exclude %{pylibdir}/__pycache__/turtle*%{bytecode_suffixes} - -%{pylibdir}/urllib -%{pylibdir}/xml - -%dir %{pylibdir}/zipfile/ -%{pylibdir}/zipfile/*.py -%{pylibdir}/zipfile/__pycache__/*%{bytecode_suffixes} -%{pylibdir}/zipfile/_path/*.py -%{pylibdir}/zipfile/_path/__pycache__/*%{bytecode_suffixes} - -%{pylibdir}/zoneinfo - -%dir %{pylibdir}/__phello__ -%{pylibdir}/__phello__/__init__.py -%{pylibdir}/__phello__/spam.py -%{pylibdir}/__phello__/__pycache__/*%{bytecode_suffixes} +%dir %{pylibdir}/site-packages/ +%dir %{pylibdir}/site-packages/__pycache__/ +%{pylibdir}/site-packages/README.txt
%if "%{_lib}" == "lib64" -%attr(0755,root,root) %dir %{_prefix}/lib/python%{pybasever} -%attr(0755,root,root) %dir %{_prefix}/lib/python%{pybasever}/site-packages +%attr(0755,root,root) %dir %{_prefix}/lib/python%{pybasever}/ +%attr(0755,root,root) %dir %{_prefix}/lib/python%{pybasever}/site-packages/ %attr(0755,root,root) %dir %{_prefix}/lib/python%{pybasever}/site-packages/__pycache__/ %endif
@@ -1419,6 +1345,7 @@ CheckPython optimized %dir %{_includedir}/python%{LDVERSION_optimized}/ %{_includedir}/python%{LDVERSION_optimized}/%{_pyconfig_h}
+# Finally, libpython %{_libdir}/%{py_INSTSONAME_optimized} %if %{with main_python} %{_libdir}/libpython3.so @@ -1487,25 +1414,31 @@ CheckPython optimized
%files -n %{pkgname}-test -%{pylibdir}/test -%{dynload_dir}/_ctypes_test.%{SOABI_optimized}.so -%{dynload_dir}/_testbuffer.%{SOABI_optimized}.so -%{dynload_dir}/_testcapi.%{SOABI_optimized}.so -%{dynload_dir}/_testclinic.%{SOABI_optimized}.so -%{dynload_dir}/_testclinic_limited.%{SOABI_optimized}.so -%{dynload_dir}/_testimportmultiple.%{SOABI_optimized}.so -%{dynload_dir}/_testinternalcapi.%{SOABI_optimized}.so -%{dynload_dir}/_testmultiphase.%{SOABI_optimized}.so -%{dynload_dir}/_testsinglephase.%{SOABI_optimized}.so -%{dynload_dir}/_xxinterpchannels.%{SOABI_optimized}.so -%{dynload_dir}/_xxtestfuzz.%{SOABI_optimized}.so +%{pylibdir}/test/ + +# Extension modules +# This is macronized for reuse in the -debug package +%define extension_modules_test() \ +%{dynload_dir}/_ctypes_test.%{1}.so\ +%{dynload_dir}/_testbuffer.%{1}.so\ +%{dynload_dir}/_testcapi.%{1}.so\ +%{dynload_dir}/_testclinic.%{1}.so\ +%{dynload_dir}/_testclinic_limited.%{1}.so\ +%{dynload_dir}/_testimportmultiple.%{1}.so\ +%{dynload_dir}/_testinternalcapi.%{1}.so\ +%{dynload_dir}/_testmultiphase.%{1}.so\ +%{dynload_dir}/_testsinglephase.%{1}.so\ +%{dynload_dir}/_xxinterpchannels.%{1}.so\ +%{dynload_dir}/_xxtestfuzz.%{1}.so + +%extension_modules_test %{SOABI_optimized} +
# We don't bother splitting the debug build out into further subpackages: -# if you need it, you're probably a developer. +# if you need it, you're debugging and you probably don't mind having it all.
# Hence the manifest is the combination of analogous files in the manifests of # all of the other subpackages - %if %{with debug_build} %files -n %{pkgname}-debug %if %{with main_python} @@ -1516,85 +1449,17 @@ CheckPython optimized # Analog of the core subpackage's files: %{_bindir}/python%{LDVERSION_debug}
-# Analog of the -libs subpackage's files: -# ...with debug builds of the built-in "extension" modules: - -%{dynload_dir}/_blake2.%{SOABI_debug}.so -%{dynload_dir}/_md5.%{SOABI_debug}.so -%{dynload_dir}/_sha1.%{SOABI_debug}.so -%{dynload_dir}/_sha2.%{SOABI_debug}.so -%{dynload_dir}/_sha3.%{SOABI_debug}.so - -%{dynload_dir}/_asyncio.%{SOABI_debug}.so -%{dynload_dir}/_bisect.%{SOABI_debug}.so -%{dynload_dir}/_bz2.%{SOABI_debug}.so -%{dynload_dir}/_codecs_cn.%{SOABI_debug}.so -%{dynload_dir}/_codecs_hk.%{SOABI_debug}.so -%{dynload_dir}/_codecs_iso2022.%{SOABI_debug}.so -%{dynload_dir}/_codecs_jp.%{SOABI_debug}.so -%{dynload_dir}/_codecs_kr.%{SOABI_debug}.so -%{dynload_dir}/_codecs_tw.%{SOABI_debug}.so -%{dynload_dir}/_contextvars.%{SOABI_debug}.so -%{dynload_dir}/_csv.%{SOABI_debug}.so -%{dynload_dir}/_ctypes.%{SOABI_debug}.so -%{dynload_dir}/_curses.%{SOABI_debug}.so -%{dynload_dir}/_curses_panel.%{SOABI_debug}.so -%{dynload_dir}/_dbm.%{SOABI_debug}.so -%{dynload_dir}/_decimal.%{SOABI_debug}.so -%{dynload_dir}/_elementtree.%{SOABI_debug}.so -%if %{with gdbm} -%{dynload_dir}/_gdbm.%{SOABI_debug}.so -%endif -%{dynload_dir}/_hashlib.%{SOABI_debug}.so -%{dynload_dir}/_heapq.%{SOABI_debug}.so -%{dynload_dir}/_json.%{SOABI_debug}.so -%{dynload_dir}/_lsprof.%{SOABI_debug}.so -%{dynload_dir}/_lzma.%{SOABI_debug}.so -%{dynload_dir}/_multibytecodec.%{SOABI_debug}.so -%{dynload_dir}/_multiprocessing.%{SOABI_debug}.so -%{dynload_dir}/_opcode.%{SOABI_debug}.so -%{dynload_dir}/_pickle.%{SOABI_debug}.so -%{dynload_dir}/_posixsubprocess.%{SOABI_debug}.so -%{dynload_dir}/_queue.%{SOABI_debug}.so -%{dynload_dir}/_random.%{SOABI_debug}.so -%{dynload_dir}/_socket.%{SOABI_debug}.so -%{dynload_dir}/_sqlite3.%{SOABI_debug}.so -%{dynload_dir}/_ssl.%{SOABI_debug}.so -%{dynload_dir}/_statistics.%{SOABI_debug}.so -%{dynload_dir}/_struct.%{SOABI_debug}.so -%{dynload_dir}/array.%{SOABI_debug}.so -%{dynload_dir}/binascii.%{SOABI_debug}.so -%{dynload_dir}/cmath.%{SOABI_debug}.so -%{dynload_dir}/_datetime.%{SOABI_debug}.so -%{dynload_dir}/fcntl.%{SOABI_debug}.so -%{dynload_dir}/grp.%{SOABI_debug}.so -%{dynload_dir}/math.%{SOABI_debug}.so -%{dynload_dir}/mmap.%{SOABI_debug}.so -%{dynload_dir}/_posixshmem.%{SOABI_debug}.so -%{dynload_dir}/pyexpat.%{SOABI_debug}.so -%{dynload_dir}/readline.%{SOABI_debug}.so -%{dynload_dir}/resource.%{SOABI_debug}.so -%{dynload_dir}/select.%{SOABI_debug}.so -%{dynload_dir}/syslog.%{SOABI_debug}.so -%{dynload_dir}/termios.%{SOABI_debug}.so -%{dynload_dir}/unicodedata.%{SOABI_debug}.so -%{dynload_dir}/_uuid.%{SOABI_debug}.so -%{dynload_dir}/xxlimited.%{SOABI_debug}.so -%{dynload_dir}/xxlimited_35.%{SOABI_debug}.so -%{dynload_dir}/_xxsubinterpreters.%{SOABI_debug}.so -%{dynload_dir}/xxsubtype.%{SOABI_debug}.so -%{dynload_dir}/zlib.%{SOABI_debug}.so -%{dynload_dir}/_zoneinfo.%{SOABI_debug}.so - -# No need to split things out the "Makefile" and the config-32/64.h file as we -# do for the regular build above (bug 531901), since they're all in one package -# now; they're listed below, under "-devel": - +# Analog to the -libs subpackage's files: %{_libdir}/%{py_INSTSONAME_debug}
+# Analog of the libs, test, and tkinter extension modules: +%extension_modules %{SOABI_debug} +%extension_modules_test %{SOABI_debug} +%{dynload_dir}/_tkinter.%{SOABI_debug}.so + # Analog of the -devel subpackage's files: -%{pylibdir}/config-%{LDVERSION_debug}-%{platform_triplet} -%{_includedir}/python%{LDVERSION_debug} +%{pylibdir}/config-%{LDVERSION_debug}-%{platform_triplet}/ +%{_includedir}/python%{LDVERSION_debug}/ %{_bindir}/python%{LDVERSION_debug}-config %{_bindir}/python%{LDVERSION_debug}-*-config %{_libdir}/libpython%{LDVERSION_debug}.so @@ -1602,26 +1467,6 @@ CheckPython optimized %{_libdir}/pkgconfig/python-%{LDVERSION_debug}.pc %{_libdir}/pkgconfig/python-%{LDVERSION_debug}-embed.pc
-# Analog of the -tools subpackage's files: -# None for now; we could build precanned versions that have the appropriate -# shebang if needed - -# Analog of the tkinter subpackage's files: -%{dynload_dir}/_tkinter.%{SOABI_debug}.so - -# Analog of the -test subpackage's files: -%{dynload_dir}/_ctypes_test.%{SOABI_debug}.so -%{dynload_dir}/_testbuffer.%{SOABI_debug}.so -%{dynload_dir}/_testcapi.%{SOABI_debug}.so -%{dynload_dir}/_testclinic.%{SOABI_debug}.so -%{dynload_dir}/_testclinic_limited.%{SOABI_debug}.so -%{dynload_dir}/_testimportmultiple.%{SOABI_debug}.so -%{dynload_dir}/_testinternalcapi.%{SOABI_debug}.so -%{dynload_dir}/_testmultiphase.%{SOABI_debug}.so -%{dynload_dir}/_testsinglephase.%{SOABI_debug}.so -%{dynload_dir}/_xxinterpchannels.%{SOABI_debug}.so -%{dynload_dir}/_xxtestfuzz.%{SOABI_debug}.so - %{pylibdir}/_sysconfigdata_%{ABIFLAGS_debug}_linux_%{platform_triplet}.py %{pylibdir}/__pycache__/_sysconfigdata_%{ABIFLAGS_debug}_linux_%{platform_triplet}%{bytecode_suffixes}
arch-excludes@lists.fedoraproject.org