[Development] qtchooser (was: Re: Adding new third party component three.js to Qt?)

Lisandro Damián Nicanor Pérez Meyer perezmeyer at gmail.com
Sun Jan 18 19:48:30 CET 2015


I'll try to summarize my points of view on this issue as I have been 
maintaining qtchooser almost since the beginning. Please bear in mind that 
most of what I write here is with the experience gained during this time, had 
I know it when the issue arose here in the mailing list I would have tried to 
pop up then.

With my distro-packager hat on I realize the best solution would have been 
indeed using prefixed binaries, and not only for build-tools like qmake but 
also for tools needed at runtime like qdbus [0]. I remember Thiago also 
preparing patches for this, but as he expressed, it was no the idea that 
prevailed. That ship already sailed for Qt5, but we might want to revisit it 
for Qt6.

[0] Except of course if backward compatibility was assured for all of Qt5's 
qdbus life, but if I remember correctly that was not the case.

qtchooser, on the other hand, has it's pros and cons. For Qt developers the 
idea of easily choosing between different Qt builds is clearly a win. Now I 
think it could still be an interesting tool to use even if at some point the 
binaries get prefixed, qtchooser shipping the non-prefixed ones.

It has it's drawbacks, too. For example qtchooser needs to be installed in 
order for Qt4 and Qt5 to coexists without breaking a user's system. Installing 
it means that it starts to ship symlinks for tools that might not be 
installed, like for example lrelease. And I think we agree that lrelease is 
not a tool a user wants, so installing it as a dependency is a non.go. And 
after all, should we install the qt4, qt5 or both versions?

It will also mask tools that are only shipped in one Qt version, like 
qtconfig. Yes, I could simply make qtchooser not ship that symlink and make 
qtconfig's package ship it, but then I'll break developers' flows.

Multilib as it is in Debian is only for libs and headers. qtchooser's config 
files are shipped within /usr/lib/<arch triplet>/qtn/<someplace> because they 
content differs between archs, so making it arch-dependant.

Thiago was very kind to accept some patches for this to happen. 
QTCHOOSER_GLOBAL_DIR is used to select between the available conf files even 
with hierarchy.

I think the biggest issue here for us Debian are executables called at runtime 
for which no claim for backward compatibility was made. As binaries where not 
prefixed we needed to set qt4 as default to not break the user's setups (and 
here I mean the user of the apps made with Qt). Maybe in these cases the real 
solution would be simply adding the prefix *or* specifying in the docs that it 
must be called with the -qt<foo> argument, and consider a bug when that's not 
done. But as qtchooser was not really deployed in other OSs I don't know how 
practical this can be. 

Ideas are of course much welcomed. I really hope to be able to get to a conf 
someday to discuss this face-to-face, time will tell...

-- 
“I don’t think security can solve problems.
We need to teach greater respect.”
  Oslo Mayor Stang when asked whether Oslo needs greater security
  after the attacks in Norway, 07/2011.

Lisandro Damián Nicanor Pérez Meyer
http://perezmeyer.com.ar/
http://perezmeyer.blogspot.com/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.qt-project.org/pipermail/development/attachments/20150118/28a2f52b/attachment.sig>


More information about the Development mailing list