qtchooser does not properly work with multiarch
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
qt4-x11 (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Raring |
Won't Fix
|
Undecided
|
Unassigned | ||
Saucy |
Won't Fix
|
Undecided
|
Unassigned | ||
qtbase-opensource-src (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Raring |
Won't Fix
|
Undecided
|
Unassigned | ||
Saucy |
Fix Released
|
Undecided
|
Unassigned | ||
qtchooser (Ubuntu) |
Fix Released
|
Critical
|
Timo Jyrinki | ||
Raring |
Won't Fix
|
Critical
|
Unassigned | ||
Saucy |
Fix Released
|
Critical
|
Timo Jyrinki |
Bug Description
qtchooser reads the path to resolve a binary from default.conf which always points to the architecture qtchooser was built for. e.g. /x86_64-
this in particular means that if one is on amd64 and installs qdbus:i386 it will replace (i.e. remove) qdbus:amd64 and from that point on /usr/bin/qdbus (which is backed by qtchooser) will no longer work because it will look in the x86_64 path but not the x86_32 one.
> qdbus: could not exec '/usr/lib/
this has a rather grave impact on users that get their qdbus replaced with qdbus:i386 as large parts of kde software expect qdbus to simply work (such as startkde - bug 827815) and even platform stuff does (such as the power button handler - bug 1124149).
and judging from those bugs this can happen rather easily, and has already happened to a lot of users.
to resolve this qtchooser either needs to also look in the 32bit path OR the package deps need to be adjusted such that one cannot have a mixture of arch packages (which I doubt will be feasible because switching the tooling to i386 will likely cause all of kde/qt to be switched to i386 too...).
Changed in qtchooser (Ubuntu Raring): | |
status: | New → Triaged |
importance: | Undecided → Critical |
milestone: | none → raring-updates |
Changed in qtchooser (Ubuntu Saucy): | |
assignee: | nobody → Timo Jyrinki (timo-jyrinki) |
Changed in qtbase-opensource-src (Ubuntu Raring): | |
status: | Confirmed → Won't Fix |
Changed in qt4-x11 (Ubuntu Raring): | |
status: | Confirmed → Won't Fix |
Hmm, this is a bit complicated. qtchooser shouldn't be installed on non-development machines, so KDE does not currently directly use it anyhow. It seems that for 13.04 some KDE package was patched to forcefully add /usr/lib/ [your-arch] /qt4/bin to PATH which is why it works for most people now (but causes Qt5 to not be easily usable for KDE users since the addition is before /usr/bin).
The root problem within qtchooser itself is that it handles qdbus the same as purely development oriented binaries, so qdbus cannot be installed to /usr/bin as before, so on non-development machines qdbus is not available at all via default PATH, regardless of multi-arch or not.
One more change is that qdbus has now been split to its own qdbus-qt5 package in Debian, so it will come to saucy as well. But I believe this is currently about Qt4's qdbus usage.
So with the current forced PATH the qtchooser side of the story shouldn't affect KDE users, but it will affect if a) qtchooser is started to be used for everyone (requires configuration to be moved to a non-dev package), b) the PATH hack is removed.
I believe the options strictly related on what to do now regarding qdbus usage in KDE are: $(dpkg- architecture -qDEB_HOST_ MULTIARCH) /qt4/bin when calling dbus.
1) Continue to use the PATH hack, whichever package it comes from, but add support for multi-arch
2) Patch KDE to use the deep paths /usr/lib/
And regarding qtchooser itself, I'm not sure. The upstream probably hasn't considered multi-arch so far.