On 3/31/20 3:23 PM, Miro Hrončok wrote:
%{python3} = python3

%{python3} = /usr/bin/python3

At least in Fedora. In EPEL, most likely as well.

See https://bugzilla.redhat.com/show_bug.cgi?id=1812665

There's a bug in the macros.

But that bug has nothing to do with either %python3 or %python3_pkgversion.

Requires: %{python3}
Requires: %{python3}-dbus

What does this supposed to evaluate to?

Yeah my apologies I left out the most important part of the spec file:

%global python3 python%{python3_pkgversion}
%global python3_other python%{python3_other_pkgversion}


Anyway, the inconsistency problem is:

python36-dbus on EPEL 7 does not provide python3-dbus (can be fixed by adding %python_provide %{name} to the EPEL package)

Ok so this would be a bug to file against the package then. Thanks.



python3-dbus in RHEL 8 does not provide python36-dbus (can be fixed by changing RHEL's %python_provide and rebuilding the RHEL package, not sure if that will go trough)

Understandably.



I am looking into python3_pkgversion macro but that doesn't seem to be correct either.

This should work on both EPEL 7 and EPEL 8:

    Requires: python%{python3_pkgversion}-dbus

Doesn't it?

    $ mock -r epel-7-x86_64 shell
    <mock-chroot> sh-4.2# rpm --eval '%python3_pkgversion'
    36

    $ mock -r epel-8-x86_64 shell
    <mock-chroot> sh-4.4# rpm --eval '%python3_pkgversion'
    3


Interestingly... no it did not and the reason is I built against rhel-7-x86_64 in mock not epel-7-x86_64. I believe there is a macro override for epel-7-x86_64 hence why I was getting a dependency against python3-dbus.

I finally ended up doing this for the moment, which I do not like very much and I will probably fix here shortly:

%if 0%{?rhel} == 7
Requires: python36-dbus
%else
Requires: %{python3}-dbus
%endif


Thanks all for all the good information, it is appreciated.

-Erinn