Move the bootstrapping conditionals above the global metadata

We need to have it above the Release field, in order for the build NVR
to contain the ~bootstrap suffix and sort correctly (lower than the main
build).

This enables bootstrapping the package directly in Koji side tag.
This commit is contained in:
Karolina Surma 2025-06-25 11:53:02 +02:00
commit 1a07ebce6b

View file

@ -1,3 +1,30 @@
# ======================
# Bootstrap conditionals
# ======================
# When bootstrapping python3, we need to build python3-packaging.
# but packaging BR python3-devel and that brings in python3-rpm-generators;
# python3-rpm-generators needs python3-packaging, so we cannot have it yet.
#
# We also use the previous build of Python in "make regen-all".
#
# Procedure: https://fedoraproject.org/wiki/SIGs/Python/UpgradingPython
#
# 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 bootstrap 0
# Whether to use RPM build wheels from the python-{pip,setuptools,wheel}-wheel packages
# Uses upstream bundled prebuilt wheels otherwise
%bcond rpmwheels 1
# Expensive optimizations (mainly, profile-guided optimizations)
%bcond optimizations 1
# Run the test suite in %%check
%bcond tests 1
# ==================
# Top-level metadata
# ==================
@ -36,22 +63,42 @@ License: Python-2.0.1
# In ELN/RHEL/CentOS we want to allow building against alternative stacks, so the Provide is enabled.
%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;
# python3-rpm-generators needs python3-packaging, so we cannot have it yet.
#
# We also use the previous build of Python in "make regen-all".
#
# Procedure: https://fedoraproject.org/wiki/SIGs/Python/UpgradingPython
#
# 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 bootstrap 0
# Extra build for debugging the interpreter or C-API extensions
# (the -debug subpackages)
%bcond debug_build 1
# Extra build without GIL, the freethreading PEP 703 provisional way
# (the -freethreading subpackage)
%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 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
# Main interpreter loop optimization
%bcond computed_gotos 1
# =====================
# General global macros
# =====================
%if %{with main_python}
%global pkgname python3
%global exename python3
%global python3_pkgversion 3
%else
%global pkgname python%{pybasever}
%global exename python%{pybasever}
%global python3_pkgversion %{pybasever}
%endif
# Whether to use RPM build wheels from the python-{pip,setuptools,wheel}-wheel packages
# Uses upstream bundled prebuilt wheels otherwise
%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.
@ -106,47 +153,6 @@ Provides: bundled(python3dist(wheel)) = 0.45.1
Provides: bundled(python3dist(zipp)) = 3.19.2
}
# Expensive optimizations (mainly, profile-guided optimizations)
%bcond optimizations 1
# Run the test suite in %%check
%bcond tests 1
# Extra build for debugging the interpreter or C-API extensions
# (the -debug subpackages)
%bcond debug_build 1
# Extra build without GIL, the freethreading PEP 703 provisional way
# (the -freethreading subpackage)
%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 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
# Main interpreter loop optimization
%bcond computed_gotos 1
# =====================
# General global macros
# =====================
%if %{with main_python}
%global pkgname python3
%global exename python3
%global python3_pkgversion 3
%else
%global pkgname python%{pybasever}
%global exename python%{pybasever}
%global python3_pkgversion %{pybasever}
%endif
# 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}