<div dir="ltr">FYI, Fedora reviewed vdsm spec file regarding obsoletes.<div><br></div><div><br><div class="gmail_quote">---------- Forwarded message ----------<br>From: <b class="gmail_sendername">Igor Gnatenko</b> <span dir="ltr"><<a href="mailto:ignatenko@redhat.com">ignatenko@redhat.com</a>></span><br>Date: Fri, Sep 2, 2016 at 1:14 PM<br>Subject: Unversioned and >/=/>= obsoletes<br>To: Development discussions related to Fedora <<a href="mailto:devel@lists.fedoraproject.org">devel@lists.fedoraproject.org</a>>, <a href="mailto:devel-announce@lists.fedoraproject.org">devel-announce@lists.fedoraproject.org</a><br><br><br>All guidelines mandate the use of </<= Obsoletes, but unfortunately we<br>
have some number of packages (179 source rpms -> 292 binary rpms) with<br>
unversioned Obsoletes or with >/=/>= Obsoletes.<br>
<br>
It is causing problems with upgrade (if package is getting re-added)<br>
or with 3rd-party repositories. Older package is obsoleting new<br>
package.<br>
<br>
Problem categories (in following text by "never" I mean latest N-2 releases):<br>
<br>
* Package/SubPackage was never built in Fedora<br>
Package "python" has "Obsoletes: python2" which was never built -><br>
drop Obsoletes<br>
SubPackage "qpid-proton-c" of "qpid-proton" has "Obsoletes:<br>
qpid-proton" which was not the package for long time -> drop Obsoletes<br>
<br>
* Package replacement<br>
Package "storaged" has "Obsoletes: udisks2" -> take latest version<br>
from koji (2.1.7-1) and make Obsoletes versioned: udisks2 < 2.1.7-2<br>
storaged is not simple use-case as it replaces udisks2, but latter is<br>
still not retired.<br>
<br>
* "=" Obsoletes<br>
"rubygem-vte" has "Obsoletes: ruby-vte = 3.0.9-1.fc26" (probably it's<br>
macro in spec) which seems really weird as it will not obsolete<br>
F24/F25 with such version<br>
<br>
* Obsoletes by Provides<br>
It doesn't work to prevent undefined behavior. Imagine you have<br>
installed "A" and "B", both providing "C". Package "D" has "Obsoletes:<br>
C", it should not remove "A" and "B".<br>
** %{?_isa}<br>
"glibc-headers" has "Obsoletes: glibc-headers(i686)". %{?_isa} is just<br>
text, it's not part of architecture or something else.<br>
** Other provides<br>
"rubygem-http_connection" has "Obsoletes:<br>
rubygem(right_http_connection)<wbr>". Latter is virtual provides.<br>
<br>
* Weird obsoletes (broken)<br>
"krb5-server" has "Obsoletes: krb5-server-1.14.3-8.fc26.<wbr>i686".<br>
Basically it will not obsolete anything because it's threated as<br>
package name (and we definitely don't have such package name).<br>
<br>
* >/>= Obsoletes<br>
"vdsm" has "Obsoletes: vdsm-infra >= 4.16.0". It's almost same as<br>
unversioned Obsoletes. So it must not be used.<br>
<br>
Table of affected packages/maintainers:<br>
<a href="https://ignatenkobrain.fedorapeople.org/broken-obsoletes/2016-09-02/broken-obsoletes.txt" rel="noreferrer" target="_blank">https://ignatenkobrain.<wbr>fedorapeople.org/broken-<wbr>obsoletes/2016-09-02/broken-<wbr>obsoletes.txt</a><br>
<span class="HOEnZb"><font color="#888888">--<br>
-Igor Gnatenko<br>
--<br>
devel mailing list<br>
<a href="mailto:devel@lists.fedoraproject.org">devel@lists.fedoraproject.org</a><br>
<a href="https://lists.fedoraproject.org/admin/lists/devel@lists.fedoraproject.org" rel="noreferrer" target="_blank">https://lists.fedoraproject.<wbr>org/admin/lists/devel@lists.<wbr>fedoraproject.org</a><br>
</font></span></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr">Sandro Bonazzola<br>Better technology. Faster innovation. Powered by community collaboration.<br>See how it works at <a href="http://redhat.com" target="_blank">redhat.com</a><br></div></div><div dir="ltr"><a href="https://www.redhat.com/it/about/events/red-hat-open-source-day-2016" target="_blank"><img src="http://images.engage.redhat.com/EloquaImages/clients/RedHat/%7B53f97a34-013e-4b79-966f-222f50a6de8c%7D_Red_Hat_Open_Source_Day_2_CITIES.png" width="420" height="60"></a><br></div></div></div></div></div>
</div></div>