From 61d457cb017d817a623a3f8d0c7e2e431d80085e Mon Sep 17 00:00:00 2001 From: Charalampos Stratakis Date: Wed, 16 Nov 2022 18:39:55 +0100 Subject: [PATCH] RHEL: Convert from Fedora for the Python 3.11 stack in RHEL Resolves: rhbz#2127923 Changes: - Bconds set accordingly - python3-rpm-generators taken out of the bootstrap loop as it runs on Python 3.6 - All binaries have versioned variants --- python3.11.spec | 207 ++++++++++++++++-------------------------------- 1 file changed, 69 insertions(+), 138 deletions(-) diff --git a/python3.11.spec b/python3.11.spec index 17e0d3e..e5103b9 100644 --- a/python3.11.spec +++ b/python3.11.spec @@ -1,3 +1,6 @@ +%global __python3 /usr/bin/python3.11 +%global python3_pkgversion 3.11 + # ================== # Top-level metadata # ================== @@ -17,8 +20,8 @@ URL: https://www.python.org/ #global prerel ... %global upstream_version %{general_version}%{?prerel} Version: %{general_version}%{?prerel:~%{prerel}} -Release: 3%{?dist} -License: Python-2.0.1 +Release: 1%{?dist} +License: Python # ================================== @@ -28,15 +31,8 @@ License: Python-2.0.1 # 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 +# RHEL: Disabled by default %bcond_with main_python -%endif # 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. @@ -59,11 +55,11 @@ License: Python-2.0.1 # IMPORTANT: When bootstrapping, it's very likely the wheels for pip and # setuptools are not available. Turn off the rpmwheels bcond until # the two packages are built with wheels to get around the issue. -%bcond_with bootstrap +%bcond_without bootstrap # Whether to use RPM build wheels from the python-{pip,setuptools}-wheel package # Uses upstream bundled prebuilt wheels otherwise -%bcond_without rpmwheels +%bcond_with rpmwheels # 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. @@ -154,13 +150,6 @@ License: Python-2.0.1 # on files that test invalid syntax. %undefine py_auto_byte_compile -# When a main_python build is attempted despite the %%__default_python3_pkgversion value -# We undefine magic macros so the python3-... package does not provide wrong python3X-... -%if %{with main_python} && ("%{?__default_python3_pkgversion}" != "%{pybasever}") -%undefine __pythonname_provides -%{warn:Doing a main_python build with wrong %%__default_python3_pkgversion (0%{?__default_python3_pkgversion}, but this is %pyshortver)} -%endif - %if %{with main_python} # To keep the upgrade path clean, we Obsolete python3.X from the python3 # package and python3.X-foo from individual subpackages. @@ -199,7 +188,9 @@ BuildRequires: glibc-devel BuildRequires: gmp-devel BuildRequires: gnupg2 BuildRequires: libappstream-glib -BuildRequires: libb2-devel +# libb2 is not included in RHEL, we utilize +# the internal implementation of blake2 +#BuildRequires: libb2-devel BuildRequires: libffi-devel BuildRequires: libnsl2-devel BuildRequires: libtirpc-devel @@ -213,7 +204,7 @@ BuildRequires: ncurses-devel BuildRequires: openssl-devel BuildRequires: pkgconfig BuildRequires: readline-devel -BuildRequires: redhat-rpm-config >= 127 +BuildRequires: redhat-rpm-config BuildRequires: sqlite-devel BuildRequires: gdb @@ -246,7 +237,10 @@ BuildRequires: %{python_wheel_pkg_prefix}-pip-wheel # upgrading the main python3 to a new Python version, this would pull in the # old version instead. BuildRequires: python%{pybasever} -# for proper automatic provides +%endif + +%if %{without bootstrap} || %{without main_python} +# Generators run on the main Python 3 so we can take this dependency out of the bootstrap loop BuildRequires: python3-rpm-generators %endif @@ -457,8 +451,8 @@ Summary: Python runtime libraries Requires: %{python_wheel_pkg_prefix}-setuptools-wheel Requires: %{python_wheel_pkg_prefix}-pip-wheel %else -Provides: bundled(python3dist(pip)) = %{pip_version} -Provides: bundled(python3dist(setuptools)) = %{setuptools_version} +Provides: bundled(python%{python3_pkgversion}dist(pip)) = %{pip_version} +Provides: bundled(python%{python3_pkgversion}dist(setuptools)) = %{setuptools_version} %endif %unversioned_obsoletes_of_python3_X_if_main libs @@ -492,7 +486,10 @@ Requires: %{pkgname}-libs%{?_isa} = %{version}-%{release} # But we want them when packages BuildRequire python3-devel Requires: (python-rpm-macros if rpm-build) Requires: (python3-rpm-macros if rpm-build) -Requires: (pyproject-rpm-macros if rpm-build) + +# We provide the python3.11-rpm-macros here to make it possible to +# BuildRequire them in the same manner as RHEL8. +Provides: %{pkgname}-rpm-macros = %{version}-%{release} %unversioned_obsoletes_of_python3_X_if_main devel @@ -504,7 +501,8 @@ Recommends: %{pkgname}-pip # tox users are likely to need the devel subpackage Supplements: tox -%if %{without bootstrap} +%if %{without bootstrap} || %{without main_python} +# Generators run on the main Python 3 so we can take this dependency out of the bootstrap loop Requires: (python3-rpm-generators if rpm-build) %endif @@ -616,7 +614,6 @@ The debug runtime additionally supports debug builds of C-API extensions (with the "d" ABI flag) for debugging issues in those extensions. %endif # with debug_build - # ====================================================== # The prep phase of the build: # ====================================================== @@ -1107,7 +1104,6 @@ CheckPython optimized %endif # with tests - %files -n %{pkgname} %doc README.rst @@ -1605,113 +1601,48 @@ CheckPython optimized # ====================================================== %changelog -* Fri Jan 06 2023 Miro Hrončok - 3.11.1-3 -- Fix `asyncio` subprocess losing `stderr` and `stdout` output -- Remove any deprecation warnings in asyncio.get_event_loop() - -* Wed Dec 07 2022 Tomáš Hrnčiar - 3.11.1-1 -- Update to 3.11.1 - -* Mon Oct 24 2022 Miro Hrončok - 3.11.0-1 -- Update to 3.11.0 - -* Tue Sep 13 2022 Miro Hrončok - 3.11.0~rc2-1 -- Update to 3.11.0rc2 - -* Tue Aug 09 2022 Miro Hrončok - 3.11.0~rc1-2 -- Don't use custom installation schemes -- Fixes rhbz#2026979 -- Fixes rhbz#2097183 - -* Mon Aug 08 2022 Tomáš Hrnčiar - 3.11.0~rc1-1 -- Update to 3.11.0rc1 - -* Tue Jul 26 2022 Tomáš Hrnčiar - 3.11.0~b5-1 -- Update to 3.11.0b5 - -* Fri Jul 22 2022 Fedora Release Engineering - 3.11.0~b4-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Mon Jul 11 2022 Miro Hrončok - 3.11.0~b4-1 -- Update to 3.11.0b4 - -* Fri Jul 08 2022 Miro Hrončok - 3.11.0~b3-8 -- Finish bootstrap of the re module speed regression fix - -* Fri Jul 08 2022 Miro Hrončok - 3.11.0~b3-7 -- Fix speed regression in the re module which prevented chromium from building - -* Fri Jun 24 2022 Tomáš Hrnčiar - 3.11.0~b3-6 -- Clear and reset sqlite3 statements properly in cursor iternext (fixes rhbz#2099049) -- Revert a problematic fix of threading._shutdown() again (fixes rhbz#2100282) - -* Tue Jun 21 2022 Miro Hrončok - 3.11.0~b3-5 -- Build Python with the optimized Blake2 library libb2 - -* Tue Jun 21 2022 Miro Hrončok - 3.11.0~b3-4 -- Make C++ version of _Py_CAST work with 0/NULL - -* Mon Jun 13 2022 Tomáš Hrnčiar - 3.11.0~b3-3 -- Finish bootstrapping for Python 3.11 mass rebuild - -* Mon Jun 13 2022 Tomáš Hrnčiar - 3.11.0~b3-2 -- Initial bootstrap for Python 3.11 mass rebuild - -* Wed Jun 01 2022 Miro Hrončok - 3.11.0~b3-1 -- Update to 3.11.0b3 - -* Tue May 31 2022 Miro Hrončok - 3.11.0~b2-1 -- Update to 3.11.0b2 - -* Tue May 10 2022 Tomáš Hrnčiar - 3.11.0~b1-2 -- Finish bootstrapping 3.11.0b1 - -* Sun May 08 2022 Tomáš Hrnčiar - 3.11.0~b1-1 -- Update to 3.11.0b1 - -* Wed Apr 20 2022 Tomas Orsava - 3.11.0~a7-3 -- Build Python 3.11 with subpackages -- `python(abi)` is still not Provided for alternative Python versions -- Drop old no-longer-needed Obsoletes of python311 and python3-tools -- Move _sysconfigdata_d_linux*.py to the debug subpackage -- Resolves: rhbz#2063227 - -* Thu Apr 07 2022 Tomáš Hrnčiar - 3.11.0~a7-2 -- Finish bootstrapping 3.11.0a7 - -* Wed Apr 06 2022 Tomáš Hrnčiar - 3.11.0~a7-1 -- Update to 3.11.0a7 - -* Tue Mar 08 2022 Miro Hrončok - 3.11.0~a6-2 -- Finish bootstrapping 3.11.0a6 - -* Mon Mar 07 2022 Miro Hrončok - 3.11.0~a6-1 -- Update to 3.11.0a6 - -* Fri Feb 04 2022 Tomáš Hrnčiar - 3.11.0~a5-1 -- Update to 3.11.0a5 - -* Fri Jan 21 2022 Fedora Release Engineering - 3.11.0~a4-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Mon Jan 17 2022 Tomáš Hrnčiar - 3.11.0~a4-1 -- Update to 3.11.0a4 - -* Sat Jan 08 2022 Miro Hrončok - 3.11.0~a3-3 -- Rebuilt for https://fedoraproject.org/wiki/Changes/LIBFFI34 - -* Mon Dec 13 2021 Miro Hrončok - 3.11.0~a3-2 -- Supplement tox - -* Fri Dec 10 2021 Tomáš Hrnčiar - 3.11.0~a3-1 -- Update to 3.11.0a3 - -* Mon Nov 15 2021 Tomáš Hrnčiar - 3.11.0~a2-1 -- Update to 3.11.0a2 -- Patch 251 was updated to include specific install scheme for virtualenv - -* Fri Nov 12 2021 Björn Esser - 3.11.0~a1-2 -- Rebuild(libnsl2) - -* Wed Oct 06 2021 Tomáš Hrnčiar - 3.11.0~a1-1 -- Initial Python 3.11 package forked from Python 3.10 +* Tue Dec 13 2022 Charalampos Stratakis - 3.11.1-1 +- Initial package +- Fedora contributions by: + Björn Esser + Charalampos Stratakis + Dan Horák + David Malcolm + Dennis Gilmore + Florian Weimer + Gwyn Ciesla + Igor Gnatenko + Iryna Shcherbina + Jaroslav Škarvada + Jason ティビツ + Kalev Lember + Karsten Hopp + Lumir Balhar + Marcel Plch + Matej Stuchlik + Michal Cyprian + Michal Toman + Miro Hrončok + Nicolas Chauvet + Orion Poplawski + Patrik Kopkan + Peter Robinson + Petr Šplíchal + Petr Viktorin + Rex Dieter + Richard W.M. Jones + Robert Kuska + Sahana Prasad + Slavek Kabrda + Stephen Gallagher + Than Ngo + Thomas Spura + Till Maas + Tomáš Hrnčiar + Tomas Mraz + Tomas Orsava + Tomas Radej + Toshio Kuratomi + Victor Stinner + Ville Skyttä + Zbigniew Jędrzejewski-Szmek