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).