Bug 1263230

Summary: python2-solv does not obsolete python-solv
Product: [Fedora] Fedora Reporter: Kamil Páral <kparal>
Component: libsolvAssignee: Packaging Maintenance Team <packaging-team-maint>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 23CC: awilliam, ignatenko, jsilhan, mluscon, packaging-team-maint, pnemade, sgallagh, vmukhame
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: libsolv-0.6.14-5.fc23 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-11-22 02:22:02 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1170820, 1264167    

Description Kamil Páral 2015-09-15 11:28:36 UTC
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 11:31:08 UTC
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 13:08:18 UTC
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 23:38:53 UTC
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-19 00:07:46 UTC
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 09:19:20 UTC
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 15:25:56 UTC
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 16:54:35 UTC
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 21:55:25 UTC
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-22 02:21:58 UTC
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 08:53:30 UTC
(In reply to awilliam 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 22:24:08 UTC
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.