[Interest] Qt installation layouts in Linux and other distribution systems - and Linux/FreeBSD maintainers here?

René J.V. Bertin rjvbertin at gmail.com
Fri Jun 19 10:39:41 CEST 2015


Hello,

I'm having a bit of an argument within MacPorts on how Qt should be installed, i.e. which bits go where. I'm hoping to get some feedback from Linux distro maintainers (or anyone else) who are intimate with the reasons behind the install layout used for instance in Ubuntu and who are willing to explain those to me. Or to look at my own arguments and tell me I'm wrong (where and if possible why). I'd especially like to know if my hunch is correct that a layout with parts installing under ${prefix}/share/ facilitates (or is even required for) co-habitation of Qt-based FreeDesktop applications with applications using other frameworks (GTk, Gnome, XCFE etc).

The background:

MacPorts is comparable to something like Gentoo Prefix (or /usr/local on PC-BSD): it offers a whole slew of FOSS libraries and applications that are installed under a "secondary prefix", usually /opt/local. This includes a good part of the GTk/Gnome and also the KDE4 desktop applications, but there are of course also more "traditional" Qt applications that share the same Qt libraries (frameworks) as the KDE applications.
Until now, either a Qt4 ora  Qt5 "port" could be installed, with the binaries, headers and libraries in the usual places (/opt/local/{bin,include,lib} and /opt/local/Library/Frameworks), and the more shared stuff under /opt/local/share/qt{4,5}. I have made the ports co-installable by moving the former locations to /opt/local/libexec/qt{4,5}{bin,include,lib} and /opt/local/libexec/qt{4,5}Library/Frameworks. I did that as a courtesy to the official maintainers (who are chronically overbusy), with their knowledge and at least some form of consent from one (the other, Qt5, maintainer never gave a sign of life). 

Now the Qt5 maintainer has finally taken up the co-installability issue, and pushed a quick fix to the official repo (my own versions are published in a public but personal repo only). He followed the easy route by putting all of Qt5 into /opt/local/libexec/qt5-mac , because he (quote):
" strongly believe[s] installing Qt in one place is the best way to go.

- It is the default behavior
If you download and install Qt, it all goes in one place, which means that it is probably better supported
-- Qt is a big piece of software and does not always like surprises (i.e. non-default behavior)
--- A simple example: without a patch, part of Qt assumes the library is ${qt_dir}/lib no matter what the configure option -libdir is (see patch-shared.diff).
--- Another simple example: we have to clear the MacPorts variables (e.g. configure.cflags) to maintain consistency throughout the build.
--- From my own experience: Some time ago, QtCreator was regularly crashing. When I went back to the defaults, it worked correctly. I probably should have tracked down the error, but for the most part, I just want software installation to work smoothly so I can use it.
- It is *much* easier to maintain.
-- Making significant changes to a port requires significant testing for every major (or not so major) upgrade.
--- This takes maintainer time (a precious commodity if ever there was one).
--- This delays upgrades.
-- The fewer changes that are made, the fewer things can go wrong.
- It makes installing multiple versions of Qt trivial (#44193).
"

Not to make this long post even longer, my arguments against those reasons (except the last one of course) are here : https://trac.macports.org/ticket/48088#comment:4 (and following comments).

Thanks a lot in advance,
René




More information about the Interest mailing list