Qt/FAQ
This is Article description::a list of frequently asked questions about the Qt framework.
Why do I get blockers when trying to emerge Qt?
Gentoo uses split ebuilds of the various components of Qt to allow finer-grained control of dependencies from other packages and reduced compilation time for revision bumps or USE changes. However, despite there being separate ebuilds all those components must be of the same version, which means they must all be upgraded together.
If some of the updated version packages are keyworded but others are not, you get those blockers.
Another source of Qt blocks is incompatible USE flag combinations; the portage output should tell you which those are.
Solving the block
After you have checked your keywords and USE flags are set correctly, if you still get unresolvable blocks, then the easiest (not necessarily the best, but the one with the least headaches) way to get the blocks out of the way for a Qt upgrade is to uninstall all Qt components, and then emerge the new version:
This obviously will break everything using the Qt libraries until they have finished emerging.
List all installed Qt packages:
root #
export INSTALLED_QT_PACKAGES=$(qlist -IC "dev-qt/*")
Alternatively, eix can be used:
root #
export INSTALLED_QT_PACKAGES=$(eix --only-names -IC dev-qt)
Save tarballs of the old versions should we have to roll back:
root #
quickpkg ${INSTALLED_QT_PACKAGES}
Unmerge old version and emerge new version:
root #
emerge -Ca ${INSTALLED_QT_PACKAGES} && emerge -av1 ${INSTALLED_QT_PACKAGES}
Should we need to roll back, then we can emerge the packaged versions:
root #
emerge -av1 --usepkgonly ${INSTALLED_QT_PACKAGES}