FS#22391 - The "python2-sip" and "python-sip" packages must not conflict with each other

Attached to Project: Arch Linux
Opened by Xavion (Xavion) - Tuesday, 11 January 2011, 07:54 GMT
Last edited by Andrea Scarpino (BaSh) - Wednesday, 19 January 2011, 18:03 GMT
Task Type Feature Request
Category Packages: Extra
Status Closed
Assigned To Andrea Scarpino (BaSh)
Architecture All
Severity Medium
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 4
Private No

Details

Thanks for reorganising the packages relating to 'SIP' and 'PyQt'. The only problem is that "python2-sip" and "python-sip" conflict, as do "python2-qt" and "python-qt".

It's only the "/usr/bin/sip" file that causes the conflict. This file should be alone in a "sip-base" package, which would be required by "python2-sip" and "python-sip".

This would mean that none of the packages I mentioned in the first paragraph could conflict with each other, giving users the freedom to install all of them concurrently.

As it stands, users must choose between installing "python2-qt" and "python-qt". This is problematic, as some programs depend on the first while others depend on the second.
This task depends upon

Closed by  Andrea Scarpino (BaSh)
Wednesday, 19 January 2011, 18:03 GMT
Reason for closing:  Fixed
Additional comments about closing:  python-qt 4.8.2-2
python2-qt 4.8.2-2
python-sip 4.12-3
python2-sip 4.12-2
Comment by Andrea Scarpino (BaSh) - Tuesday, 11 January 2011, 10:32 GMT
I don't like your solution of adding a sip-base package...Also I don't know if you can use both the python2 and python3 version on a system. Does any other distro this?
Comment by Xavion (Xavion) - Wednesday, 12 January 2011, 00:45 GMT
Of course you can have both of them installed together, as they only share an identical "/usr/bin/sip" file. Just look at the "sip-py3and2" and "pyqt-py3and2" packages, or see my "sip-dev" and "pyqt-dev" packages.

Why don't you like my "sip-base" solution? It's a hell of a lot better than leaving them in a conflicted state! This is a perfect candidate for the new package-splitting capabilities of 'makepkg'.

I didn't want to be rude the first time around, but it's next to useless the way you've got it. Nobody will want to break some packages by removing "python2-qt", just to satisfy some others by installing "python-qt".

If other distributions don't do what I'm suggesting yet, it's probably just because they're lagging behind the times. I've been writing PyQt v4 applications for years, so you can trust my judgement here :-).
Comment by Andrea Scarpino (BaSh) - Wednesday, 12 January 2011, 01:15 GMT
Ok, you have convinced me and I'll implement this in the next days :)
Comment by Xavion (Xavion) - Wednesday, 12 January 2011, 01:34 GMT
Thanks for considering my suggestions carefully. To make things easier for you in a few days, here's a list of changes you'll need to make to your PKGBUILD files, so that these packages can coexist on our systems.

The "package()" section of "python-sip" will need "rm ${pkgdir}/usr/bin/sip". The "build()" section of "python-qt" will need "python3 configure.py --confirm-license --qsci-api". Note that I've removed your "-v /usr/share/sip" argument. The "package()" section of "python-qt" will need:
rm ${pkgdir}/usr/bin/{pylupdate4,pyrcc4,pyuic4}
rm ${pkgdir}/usr/lib/qt/plugins/designer/libpythonplugin.so
rm ${pkgdir}/usr/share/qt/qsci/api/python/PyQt4.api
Comment by Xavion (Xavion) - Wednesday, 12 January 2011, 22:04 GMT
I should also mention that the removed files from the "package()" section of "python2-qt" and "python-qt" would need to exist in a "pyqt-base" package that both of these depend on.

You can use the ones from "python2-qt", as they work fine with projects intended for "python-qt". I hope all of this makes sense. If not, I'm happy to modify your PKGBUILD files for you.
Comment by Xavion (Xavion) - Wednesday, 12 January 2011, 22:23 GMT
What I've written above is correct, but further testing has revealed a potentially showstopping problem. The removed files from the "package()" section of "python2-qt" would still require that package in order to work with projects intended for "python-qt".

Given this constraint, you can just do what I've done for "sip-dev" and "pyqt-dev". This would require forcing "python-sip" to depend on "python2-sip" and "python-qt" to depend on "python2-qt". It would prevent the need to create "sip-base" and "pyqt-base" packages!
Comment by Andrea Scarpino (BaSh) - Tuesday, 18 January 2011, 23:15 GMT
Your help is really appreciated. This has been an easy work with your info.

Instead of sip-base and pyqt-base, I simply named them respectively sip and pyqt.
We are updating every package to depend on python2-qt now. Packages will be released soon.

Loading...