In this case dnf install systemd-udev may lead to installation of systemd-boot-unsigned which is probably not what the user expected. The reason is the split in the upgrade-path created by obsolete and both branches - systemd-udev-2.0 and systemd-boot-unsigned-2.0 are considered valid.
With this patch install command takes into account only obsoleters of the best version of the package so the dnf install systemd-udev results in correct installation of systemd-udev-2.0 package.
In situation where a package exists in multiple versions and some older version is being obsoleted, any of obsoleters was considered a valid solution.
The result could be really misleading. For example let's have this package set:
systemd-udev-1.0
systemd-udev-2.0 Obsoletes: systemd-udev < 2
systemd-boot-unsigned-2.0 Obsoletes: systemd-udev < 2
In this case
dnf install systemd-udev
may lead to installation of systemd-boot-unsigned which is probably not what the user expected. The reason is the split in the upgrade-path created by obsolete and both branches - systemd-udev-2.0 and systemd-boot-unsigned-2.0 are considered valid.With this patch install command takes into account only obsoleters of the best version of the package so the
dnf install systemd-udev
results in correct installation of systemd-udev-2.0 package.Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2183279 Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2176263