[Development] Co-installation & library naming rules
Erik van Pienbroek
erik at vanpienbroek.nl
Sun Sep 23 20:30:31 CEST 2012
Thiago Macieira schreef op vr 21-09-2012 om 16:47 [+0200]:
> Include the major version number (5) in all library base names
Hi,
As the person who filed the mentioned QT-BUG in the first place I would
like to let you know that I'm +1 to the proposal from Thiago. For the
people who don't know me yet: I'm a member of the Fedora MinGW group and
we provide cross-compiled binaries of Qt for the win32 and win64 targets
so users can easily cross-compile their software on a Linux host and run
them on Windows (or Wine).
On IRC I've been discussing this subject with Kevin Kofler (Fedora KDE
group) and he also +1's the proposal from Thiago
Some days ago I started on packaging the entire Qt5 stack and stumbled
across the fact that by default Qt4 and Qt5 can't be installed in the
same prefix as there are various file name conflicts. Therefore I had to
do some additional patching (like
https://codereview.qt-project.org/34981 ) and manual renames to make it
possible to co-install Qt4 and Qt5. The resulting packages can be found
at https://bugzilla.redhat.com/showdependencytree.cgi?id=3D858058
The reason why we want to be able to co-install Qt4 and Qt5 is because
all packages in Fedora are expected to follow the FHS as close as
possible and the packaging rules state that no packages are allowed to
conflict with each other.
A suggestion was made in this thread that distro's should use separate
prefixes to install Qt4 and Qt5. This will be a no-go as in that
situation you will force all users of Qt4 or Qt5 to apply
distribution-specific hacks to get their Qt-using application built.
Examples of these hacks are:
For qmake:
- Users having to manually call $some_random_prefix/bin/qmake to select
either Qt4 or Qt5 instead of having the qmake binary available in their
default path
For pkg-config:
- Manually setting PKG_CONFIG_PATH to point to the pkg-config folder
where either the Qt4 or Qt5 pkg-config files are stored
As mentioned earlier in this thread the gtk folks have been using
versioned library names for a very long time already and due to this the
introduction of gtk3 itself was quite painless (just speaking about gtk3
here, not gnome3). All gtk-using packages are supposed to use pkg-config
to detect the compiler flags for gtk. The gtk2 library has been
providing a pkg-config file named 'gtk+-2.0.pc' and the gtk3 library is
providing a pkg-config file named' gtk+-3.0.pc'. As these names don't
conflict all gtk2-using packages rebuilt fine even when gtk3 is
installed. Packages which want to use gtk3 can indicate so by using
pkg-config to check for 'gtk+-3.0'.
In my opinion the Qt project should make it possible to co-install Qt4
and Qt5 in the same prefix. If the Qt project refuses to do so then this
will result in distributions applying random patches to get Qt5 working
correctly on their distribution. This will lead to more
distribution-specific hacks and will make it more hard for you guys to
diagnose and resolve bugs (as you're not aware of distribution-specific
patches). Now various distributions could start a collaboration to come
to uniform packaging guidelines for the Qt package (naming of qmake,
installation location, etc..) but why not solve the problem at the level
where it's supposed to be fixed, upstream?
I don't think it's fair to move the problem to the distributions. If the
library name stays as is you're forcing a lot of additional work on us
package maintainers while it can be resolved quite easily and now is the
perfect time to do so (right before the release of a major new version
of Qt)
Kind regards,
Erik van Pienbroek
Fedora MinGW SIG
More information about the Development
mailing list