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

Kevin Kofler kevin.kofler at chello.at
Tue Jan 20 04:05:20 CET 2015


Oswald Buddenhagen wrote:
> correct. as far as i'm concerned, the purpose of qtchooser is to be a
> frontend tool which targets developers working with multiple qt
> versions, regardless whether these versions come from distro packages or
> own builds.

The thing is, we asked for something that fulfills distro's needs. You shot 
that down and instead got Thiago to implement something different. And now 
you say yourself that it is not what was asked for.

Developers working with multiple versions of Qt 5 are by far the minority. 
Most users of Qt development packages actually just want to compile software 
somebody else wrote. And even those that actually are developers are usually 
happy with our regularly-updated builds of the latest stable Qt release. To 
all those users, different major versions are the ONLY coinstallation case 
that matters.

> build systems which target specific (major) qt versions are simply out of
> scope.

Says who? That is by far the common case. Very few programs support more 
than one major version of Qt.

> your problem is a self-made one: the attempt to co-install major
> versions of everything.

As long as there are new major versions of Qt (i.e., new versions that are 
not 100% drop-in replacements for the previous version), there WILL be a 
need for coinstallation. Programs do not magically port themselves 
instantly. Even the upstream developers themselves need time to port things. 
Distribution packagers are usually not qualified to do such a port, so we 
need to wait for upstream to do it (and even if we were to attempt porting 
the software ourselves, it would probably take even longer). And then, as I 
wrote in the first paragraph, there is also software compiled by end users 
on their own. And finally, there is some software that never gets ported. It 
is stuck on an obsolete Qt version, but it works and is useful to our users, 
so dropping it would be a disservice to our users.

So, as Sune Vuorela also explained, having multiple major versions of Qt in 
parallel is always going to be a fact of life.

> this is a linux distro specific problem,

Only because we are the only operating system to actually support building 
software without messing with path settings all over the place.

I'll also add that even for those operating systems (such as Windows) where 
you do have to tweak PATH, having non-conflicting executable names allows 
setting the PATH once in the user-wide or system-wide settings in the 
control panel and not having to run a setpaths.bat once for every single 
build.

> and demanding x-platform upstreams to accept trade-offs to adjust to it is
> *unreasonable*.

What trade-offs do they have to accept? They just need to add "-qt5" to the 
name of the binary / .EXE file / whatever that they run in their build 
scripts, once. (And only if they do not simply use a third-party build tool 
that does the right thing for them already.) In exchange, the program will 
always compile fine even if there is also a Qt 4 in the systemwide PATH, a 
situation that can occur on ALL operating systems (including ones not 
supported by qtchooser), as I explained.

> now, you will say that most users under linux use qt via distro
> packages. that's right. and you know what? it's *your* task to make it
> work for them.

And we are. But Thiago is complaining about it.

> if upstreams of qt-using applications choose to support distro-packaged
> qt (via having preference lists of suffixed qmakes, for example), that's
> a perfectly reasonable thing to do. if distros among themselves want to
> standardize on a pattern to ease this, i'm all for it. it's still not
> something *we* (qt upstream) need to be concerned with.

Now this is really funny. We wanted to do the renaming upstream. You were 
one of those people who shot it down. Now you are saying we should just do 
it downstream. On the other hand, Thiago also wanted to do the renaming 
upstream, he was told not to, so he implemented qtchooser instead, and now 
says that everybody should use qtchooser and that anything else is broken.

Since it is clear even to you that qtchooser is not what we want, why did 
you force Thiago to implement it, and why are you still not willing to allow 
the proper solution to be implemented upstream?

I'll also point out that, while Debian currently does use qtchooser by 
default, Lisandro from Debian also stated that he would prefer suffixed 
binaries. I am not sure there is even ONE distro that is happy with 
qtchooser.

> i consider this discussion closed, including for qt6.

And I think that this is a mistake. There is a real problem here, one that 
affects ALL your downstreams (not just GNU/Linux distributions). In Qt 4, 
upstream's answer was to ignore the issue. In Qt 5, qtchooser was 
introduced, which solves a different problem from the one we are having 
(namely, letting the USER choose between different Qt versions that ARE 
drop-in replacements, i.e., different variants of the same major version). 
Coaxing it into solving our problem introduces more issues than it solves. 
Why can we not finally get the right thing to happen for Qt 6, or even (with 
the soft migration path I described elsewhere in this thread) upcoming Qt 
5.n releases? The right thing can be done, see e.g. KF5.

        Kevin Kofler




More information about the Development mailing list