In portage-2.1.6.7, emerge output for unresolved blockers now includes information about how conflicting packages got pulled into the dependency graph. This information helps users understand the reason why a particular blocker hasn’t been resolved automatically. Here is some sample output from bug 234907:
Calculating dependencies... done!
[ebuild N ] sys-libs/e2fsprogs-libs-1.41.3-r1 USE="nls"
[ebuild U ] sys-fs/e2fsprogs-1.41.3 [1.40.9]
[blocks b ] <sys-fs/e2fsprogs-1.41 ("<sys-fs/e2fsprogs-1.41" is blocking sys-libs/e2fsprogs-libs-1.41.3-r1)
[blocks B ] sys-libs/com_err ("sys-libs/com_err" is blocking sys-libs/e2fsprogs-libs-1.41.3-r1)
[blocks B ] sys-libs/ss ("sys-libs/ss" is blocking sys-libs/e2fsprogs-libs-1.41.3-r1)
[blocks B ] sys-libs/e2fsprogs-libs ("sys-libs/e2fsprogs-libs" is blocking sys-libs/com_err-1.40.9, sys-libs/ss-1.40.9)
* Error: The above package list contains packages which cannot be
* installed at the same time on the same system.
('installed', '/', 'sys-libs/com_err-1.40.9', 'nomerge') pulled in by
~sys-libs/com_err-1.40.9 required by ('installed', '/', 'sys-libs/ss-1.40.9', 'nomerge')
('installed', '/', 'sys-libs/ss-1.40.9', 'nomerge') pulled in by
sys-libs/ss required by world
('ebuild', '/', 'sys-libs/e2fsprogs-libs-1.41.3-r1', 'merge') pulled in by
>=sys-libs/e2fsprogs-libs-1.41 required by ('installed', '/', 'sys-apps/util-linux-2.14.1', 'nomerge')
~sys-libs/e2fsprogs-libs-1.41.3 required by ('ebuild', '/', 'sys-fs/e2fsprogs-1.41.3', 'merge')
The above output shows that the sys-libs/ss package got pulled into the dependency graph by the world set. This package is obsolete, so the user should remove it from /var/lib/portage/world. In the future, I plan to add support for emerge to ask the user if they’d like to have the obsolete package automatically removed from the world file (bug 257009).