Bug 1263230 - python2-solv does not obsolete python-solv
python2-solv does not obsolete python-solv
Status: CLOSED ERRATA
Product: Fedora
Classification: Fedora
Component: libsolv (Show other bugs)
23
Unspecified Unspecified
unspecified Severity unspecified
: ---
: ---
Assigned To: packaging-team-maint
Fedora Extras Quality Assurance
:
Depends On:
Blocks: F23BetaFreezeException Beta0Day/F23Beta0Day
  Show dependency treegraph
 
Reported: 2015-09-15 07:28 EDT by Kamil Páral
Modified: 2015-11-26 17:24 EST (History)
8 users (show)

See Also:
Fixed In Version: libsolv-0.6.14-5.fc23
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2015-11-21 21:22:02 EST
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Kamil Páral 2015-09-15 07:28:36 EDT
Description of problem:
If you have python-solv installed, you can't cleanly upgrade from Fedora 22 to Fedora 23:

$ rpm -q python-solv
python-solv-0.6.11-2.fc22.x86_64

$ sudo dnf system-upgrade download --releasever=23
<snip>
Skipping packages with broken dependencies:
 libsolv                                     x86_64   0.6.11-3.git1f9abfb.fc23                 fedora    339 k
<snip>

$ sudo dnf system-upgrade download --releasever=23 --best
Error: package python-solv-0.6.11-2.fc22.x86_64 requires libsolv(x86-64) = 0.6.11-2.fc22, but none of the providers can be installed.


That's because in Fedora 23 that package has been replaced by python2-solv, but it doesn't obsolete it properly:

$ rpm -q python2-solv
python2-solv-0.6.11-3.git1f9abfb.fc23.x86_64

$ rpm -q --provides python2-solv 
python-solv = 0.6.11-3.git1f9abfb.fc23
python2-solv = 0.6.11-3.git1f9abfb.fc23
python2-solv(x86-64) = 0.6.11-3.git1f9abfb.fc23

$ rpm -q --obsoletes python2-solv 


Version-Release number of selected component (if applicable):
python-solv-0.6.11-2.fc22.x86_64
python2-solv-0.6.11-3.git1f9abfb.fc23.x86_64

How reproducible:
always
Comment 1 Kamil Páral 2015-09-15 07:31:08 EDT
Easy fix, package not part of the default install set, and holding back libsolv from upgrade is most probably something we don't want to see. Should be eligible at least for a FE.
Comment 2 Stephen Gallagher 2015-09-16 09:08:18 EDT
I don't think this really needs to be part of the frozen package set. This would be perfectly reasonable to resolve as a zero-day update. (i.e. as long as this is submitted for stable before the release happens, it'll be part of the zero-day push).
Comment 3 Adam Williamson 2015-11-18 18:38:53 EST
This has still not been fixed. As it's been ignored by the packager for so long, I am going to fix it with provenpackager privs.
Comment 4 Fedora Update System 2015-11-18 19:07:46 EST
libsolv-0.6.14-5.fc23 has been submitted as an update to Fedora 23. https://bodhi.fedoraproject.org/updates/FEDORA-2015-a250f4b24a
Comment 5 Kamil Páral 2015-11-19 04:19:20 EST
Adam, I'm very confused here. I see the obsolete flag even with current stable version:
$ rpm -q python2-solv
python2-solv-0.6.14-2.fc23.x86_64
$ rpm -q --obsoletes python2-solv
python-solv < 0.6.14-2.fc23

However, I don't see any Obsoletes definition in the spec file that matches that build:
http://pkgs.fedoraproject.org/cgit/libsolv.git/tree/libsolv.spec?h=f23&id=29e11eeefc5b9148d2f92346752ec6dc77c3a931

I'm not sure how that is possible.
Comment 6 Fedora Update System 2015-11-19 10:25:56 EST
libsolv-0.6.14-5.fc23 has been pushed to the Fedora 23 testing repository. If problems still persist, please make note of it in this bug report.
If you want to test the update, you can install it with
$ su -c 'dnf --enablerepo=updates-testing update libsolv'
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2015-a250f4b24a
Comment 7 Fedora Update System 2015-11-19 11:54:35 EST
libsolv-0.6.14-5.fc23 has been pushed to the Fedora 23 testing repository. If problems still persist, please make note of it in this bug report.
If you want to test the update, you can install it with
$ su -c 'dnf --enablerepo=updates-testing update libsolv'
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2015-a250f4b24a
Comment 8 Adam Williamson 2015-11-20 16:55:25 EST
I'm, uh, honestly not sure either. I just checked the spec file (when I came across this bug), I didn't actually test the package. I can only guess maybe %python_provide does it, but I didn't think it did that?
Comment 9 Fedora Update System 2015-11-21 21:21:58 EST
libsolv-0.6.14-5.fc23 has been pushed to the Fedora 23 stable repository. If problems still persist, please make note of it in this bug report.
Comment 10 Kamil Páral 2015-11-23 03:53:30 EST
(In reply to awilliam@redhat.com from comment #8)
> I'm, uh, honestly not sure either. I just checked the spec file (when I came
> across this bug), I didn't actually test the package. I can only guess maybe
> %python_provide does it, but I didn't think it did that?

It doesn't seem so:
$ rpm --eval '%{python_provide python-test}'
Provides: python2-test = %{version}-%{release}

But I saw the same behavior in yet another python-foo to python2-foo package transition, without any explicit obsoleted, and it remains a mystery to me.
Comment 11 Adam Williamson 2015-11-26 17:24:08 EST
Actually, it does, you just tested with the wrong value:

[adamw@adam python-pyspf (master %)]$ rpm --eval '%{python_provide python2-test}'
Provides: python-test(x86-64) = %{version}-%{release}
Provides: python-test = %{version}-%{release}
Obsoletes: python-test(x86-64) < %{version}-%{release}
Obsoletes: python-test < %{version}-%{release}

python_provide has two 'modes' depending on whether the value you pass has a Python major version, because you're also allowed to use it something like this:

Name: python-foo
%python_provide python-foo

and what that will do is have it provide 'python2-foo' if the current python system version is 2, or 'python3-foo' if the current python system version is 3. See https://fedoraproject.org/wiki/Packaging:Python#The_.25python_provide_macro .

The 'Obsoletes' behaviour was added some time between 2015-08-27 and 2015-09-10, the trac ticket is https://fedorahosted.org/fpc/ticket/565 , but was not documented anywhere I can find. So this has in fact been fixed ever since libsolv-0.6.12-1.fc24 / libsolv-0.6.12-1.fc23 on 2015-09-10.

Note You need to log in before you can comment on or make changes to this bug.