From fae685bbeb3f195c574845e89aec6273363102e3 Mon Sep 17 00:00:00 2001 From: Miro Hrončok Date: May 28 2022 07:22:50 +0000 Subject: Make %py3_dist respect %python3_pkgversion By default, %{py3_dist foo} generates python3dist(foo). This change makes it respect %python3_pkgversion so when it is redefined as X.Y, %{py3_dist foo} generates pythonX.Y(foo). This is a modified backport of https://src.fedoraproject.org/rpms/python-rpm-macros/c/638f809f4c15b8b14dfc1f6f8c3c08b0d2ba0b70 In addition, `:gsub('^3(%d)', '3.%1')` was added. It makes sure that values of %python3_pkgversion without dot are converted to values with dots. In RHEL 8, at least until Python 3.9, the %python3_pkgversion value is 39. It is written in a way that allows us to use 3.10 for the next version if desired. $ rpm --define 'python3_pkgversion 3' --eval '%{py3_dist heh}' python3dist(heh) $ rpm --define 'python3_pkgversion 3.8' --eval '%{py3_dist heh}' python3.8dist(heh) $ rpm --define 'python3_pkgversion 38' --eval '%{py3_dist heh}' python3.8dist(heh) $ rpm --define 'python3_pkgversion 3.12' --eval '%{py3_dist heh}' python3.12dist(heh) $ rpm --define 'python3_pkgversion 312' --eval '%{py3_dist heh}' python3.12dist(heh) The default behavior is reasonable: $ rpm -q python36-rpm-macros package python36-rpm-macros is not installed $ rpm -q python38-rpm-macros package python38-rpm-macros is not installed $ rpm -q python39-rpm-macros package python39-rpm-macros is not installed $ rpm --eval '%{py3_dist heh}' python3dist(heh) $ rpm -q python36-rpm-macros python36-rpm-macros-3.6.8-38.module_el8.5.0+2569+5c5719bc.noarch $ rpm --eval '%{py3_dist heh}' python3dist(heh) $ rpm -q python38-rpm-macros python38-rpm-macros-3.8.12-1.module_el8.6.0+2778+cd494b30.noarch $ rpm --eval '%{py3_dist heh}' python3.8dist(heh) $ rpm -q python39-rpm-macros python39-rpm-macros-3.9.7-1.module_el8.6.0+2780+a40f65e1.noarch $ rpm --eval '%{py3_dist heh}' python3.9dist(heh) The value for non-3 %python3_pkgversion is preserved as is: $ rpm --define 'python3_pkgversion 4' --eval '%{py3_dist heh}' python4dist(heh) $ rpm --define 'python3_pkgversion 48' --eval '%{py3_dist heh}' python48dist(heh) Co-authored-by: Lumir Balhar --- diff --git a/SOURCES/macros.python-srpm b/SOURCES/macros.python-srpm index a064856..bdd13cb 100644 --- a/SOURCES/macros.python-srpm +++ b/SOURCES/macros.python-srpm @@ -41,10 +41,28 @@ end\ } +# RHEL 9+ and Fedora compatibility macro +# Only use in macro backports, not intended to be used in spec files! +# In the future, the %%python3_pkgversion macro has a dot, e.g. 3.9 or 3.11 +# However, in RHEL 8 at least, it does not, e.g. 38, 39 +# This is a helpful macro that determines the proper "Python version" string with dot +# from %%python3_pkgversion without actually having Python installed. +# For values other than 3X, it should expand to %%python3_pkgversion unchanged. +# Examples of %%python3_pkgversion -> %%_python3_pkgversion_with_dot: +# 3 -> 3 +# 38 -> 3.8 +# 39 -> 3.9 +# 310 -> 3.10 +# 3.12 -> 3.12 +# 4 -> 4 +# 412 -> 412 +%_python3_pkgversion_with_dot %{lua:print((rpm.expand("%python3_pkgversion"):gsub('^3(%d)', '3.%1')))} + # Creates Python 3 dist tag(s) after converting names to canonical format # Needs to first put all arguments into a list, because invoking a different # macro (%py_dist_name) overwrites them %py3_dist() %{lua:\ + python3_pkgversion_with_dot = rpm.expand("%_python3_pkgversion_with_dot")\ args = {}\ arg = 1\ while (true) do\ @@ -57,7 +75,7 @@ end\ for arg, name in ipairs(args) do\ canonical = rpm.expand("%py_dist_name " .. name);\ - print("python3dist(" .. canonical .. ") ");\ + print("python" .. python3_pkgversion_with_dot .. "dist(" .. canonical .. ") ");\ end\ } diff --git a/SPECS/python-rpm-macros.spec b/SPECS/python-rpm-macros.spec index 8d53b71..2ebf4b6 100644 --- a/SPECS/python-rpm-macros.spec +++ b/SPECS/python-rpm-macros.spec @@ -1,6 +1,6 @@ Name: python-rpm-macros Version: 3 -Release: 41%{?dist} +Release: 42%{?dist} Summary: The unversioned Python RPM macros License: MIT @@ -73,6 +73,10 @@ install -m 644 %{SOURCE0} %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} \ %changelog +* Wed May 25 2022 Miro Hrončok - 3-42 +- Make %%py3_dist respect %%python3_pkgversion +Resolves: rhbz#2090007 + * Mon Feb 01 2021 Lumír Balhar - 3-41 - Fix dependencies between subpackages Resolves: rhbz#1892797