UPDATE: All <qt-*-4.5.3:4 ebuilds were removed on Nov 11th, 2009, so this problem is now fixed
So…… you’re trying to emerge kde 4 on your fresh ~ gentoo installation but strange blocks show up… stuff like
[blocks B ] >x11-libs/qt-opengl-4.5.1-r9999 (">x11-libs/qt-opengl-4.5.1-r9999" is blocking x11-libs/qt-gui-4.5.1-r2, x11-libs/qt-dbus-4.5.1)
[blocks B ] >x11-libs/qt-webkit-4.5.1-r9999 (">x11-libs/qt-webkit-4.5.1-r9999" is blocking x11-libs/qt-gui-4.5.1-r2, x11-libs/qt-dbus-4.5.1)
[blocks B ] >x11-libs/qt-svg-4.5.1-r9999 (">x11-libs/qt-svg-4.5.1-r9999" is blocking x11-libs/qt-gui-4.5.1-r2, x11-libs/qt-dbus-4.5.1)
[blocks B ] >x11-libs/qt-core-4.5.1-r9999 (">x11-libs/qt-core-4.5.1-r9999" is blocking x11-libs/qt-gui-4.5.1-r2, x11-libs/qt-dbus-4.5.1)
[blocks B ] >x11-libs/qt-qt3support-4.5.1-r9999 (">x11-libs/qt-qt3support-4.5.1-r9999" is blocking x11-libs/qt-gui-4.5.1-r2, x11-libs/qt-dbus-4.5.1)
[blocks B ]
[blocks B ] x11-libs/qt-sql-4.5.1-r9999 (">x11-libs/qt-sql-4.5.1-r9999" is blocking x11-libs/qt-gui-4.5.1-r2, x11-libs/qt-dbus-4.5.1)
[blocks B ] >x11-libs/qt-script-4.5.1-r9999 (">x11-libs/qt-script-4.5.1-r9999" is blocking x11-libs/qt-gui-4.5.1-r2, x11-libs/qt-dbus-4.5.1)
[blocks B ] >x11-libs/qt-test-4.5.1-r9999 (">x11-libs/qt-test-4.5.1-r9999" is blocking x11-libs/qt-gui-4.5.1-r2, x11-libs/qt-dbus-4.5.1)
All this is happening because of recent changes to gentoo’s Qt ebuilds. In Qt Team’s last meeting it was decided to make most USE flags disabled by default, to allow the user to choose which ones he wants to enable, rather than disable.
However, in portage’s current state, the stable Qt packages (4.5.1 version) use the old USE flags with lots of them enabled by default.
Now comes the tricky part. KDE depends on qt-gui with dbus USE flag enabled. Normally, when portage sees that dependency, it checks your USE flags. If dbus is enabled, all is good. If not, it breaks with an error telling you to enable it.
In reality this never happens. Portage first checks qt-gui-4.5.2, which doesn’t have dbus enabled by default. No go. But wait, qt-gui-4.5.1 has it enabled and portage falls back to it. So now portage tries to mix all the other qt-*-4.5.2 packages with qt-gui-4.5.1 (and its 4.5.1 dependencies) and as I’ve mentioned before, this is not allowed.
Boom, blockers.
SOLUTION
Ok maybe you didn’t feel like reading all of the above, so I’ve titled this so you can find it easily
The solution to this problem is suprizingly easy.
Add “dbus” and “qt3support” to your make.conf USE (dbus can also go in package.keywords for qt-gui).
OR
Switch to the Desktop Profile.
Its that easy (thankfully)
WHY DID IT HAVE TO BREAK?
Thats a good question. The real reason this broke is because the stable version has +dbus (which we can’t change now cause its stable – too much hassle) and the testing version has -dbus (which is better since the idea is you get a package and “add” to it with USE flags). Since the Qt Team decided to go through with this change and Portage falls back to the older version without a warning, there’s nothing we can do about this, at least until a new Qt version goes stable with -dbus or portage’s behavior changes.
Thats all folks =] Questions welcome in the comment system below