[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