Am 21.05.22 um 14:53 schrieb Neal Gompa:
On Sat, May 21, 2022 at 8:49 AM Andrei Borzenkov <arvidjaar@gmail.com> wrote:
So in both cases it is up to higher level package management like
libsolv to chose the right packages, and comparing

Provides: NetworkManager:.../libnm-device-plugin-wifi.so

and

Obsoletes: NetworkManager < V-R

in the NetworkManager-wifi, the former is certainly more logical and
avoids issues with different V-R in different projects.
The former is a YaST/Zypp specific hack, the latter is *actually* how
RPM wants you to do it. Moreover, if you download all the built NM
packages and do "rpm -Uvh" on them, RPM would do the right thing.
That's the point of using the actual RPM-defined behavior for this.
This behavior is compatible with Zypp, YaST, DNF, and any other
dependency resolver, whereas your Provides hack only works in YaST/Zypp.

I'll have to slightly disagree on this being a hack.

  1. We're not obsoleting NetworkManager, it's still there. It simply lost some functionality that is now provided by another package. So conceptually Provides seems a better fit.
  2. There might be multiple alternative implementations obsoleting some outdated software. Would you want to install all of them? Not necessarily. Defining that all obsoleting packages are installed might create problems in those cases. (Let's assume that one of them is recommended, and let's ignore the question whether they conflict with each other. We simply only need one of them.)
  3. We have full file lists for installed packages. Using symbolic capabilities requires to anticipate the package split, which for obvious reasons is not really viable. So using file paths doesn't seem like a bad idea.

Aaron