On Fri, Sep 2, 2016 at 2:26 PM, Sandro Bonazzola <sbonazzo(a)redhat.com>
wrote:
FYI, Fedora reviewed vdsm spec file regarding obsoletes.
---------- Forwarded message ----------
From: Igor Gnatenko <ignatenko(a)redhat.com>
Date: Fri, Sep 2, 2016 at 1:14 PM
Subject: Unversioned and >/=/>= obsoletes
To: Development discussions related to Fedora <
devel(a)lists.fedoraproject.org>, devel-announce(a)lists.fedoraproject.org
All guidelines mandate the use of </<= Obsoletes, but unfortunately we
have some number of packages (179 source rpms -> 292 binary rpms) with
unversioned Obsoletes or with >/=/>= Obsoletes.
It is causing problems with upgrade (if package is getting re-added)
or with 3rd-party repositories. Older package is obsoleting new
package.
Problem categories (in following text by "never" I mean latest N-2
releases):
* Package/SubPackage was never built in Fedora
Package "python" has "Obsoletes: python2" which was never built
->
drop Obsoletes
SubPackage "qpid-proton-c" of "qpid-proton" has "Obsoletes:
qpid-proton" which was not the package for long time -> drop Obsoletes
* Package replacement
Package "storaged" has "Obsoletes: udisks2" -> take latest
version
from koji (2.1.7-1) and make Obsoletes versioned: udisks2 < 2.1.7-2
storaged is not simple use-case as it replaces udisks2, but latter is
still not retired.
* "=" Obsoletes
"rubygem-vte" has "Obsoletes: ruby-vte = 3.0.9-1.fc26" (probably
it's
macro in spec) which seems really weird as it will not obsolete
F24/F25 with such version
* Obsoletes by Provides
It doesn't work to prevent undefined behavior. Imagine you have
installed "A" and "B", both providing "C". Package
"D" has "Obsoletes:
C", it should not remove "A" and "B".
** %{?_isa}
"glibc-headers" has "Obsoletes: glibc-headers(i686)". %{?_isa} is
just
text, it's not part of architecture or something else.
** Other provides
"rubygem-http_connection" has "Obsoletes:
rubygem(right_http_connection)". Latter is virtual provides.
* Weird obsoletes (broken)
"krb5-server" has "Obsoletes: krb5-server-1.14.3-8.fc26.i686".
Basically it will not obsolete anything because it's threated as
package name (and we definitely don't have such package name).
* >/>= Obsoletes
"vdsm" has "Obsoletes: vdsm-infra >= 4.16.0". It's almost same
as
unversioned Obsoletes. So it must not be used.
Should be fixed here if I understood the problem
https://gerrit.ovirt.org/63215