portage-2.2_rc51 and portage-2.2_rc52 is broken when dealing with blockers. On my ~amd64 system, with portage-2.2_rc50, when installing deluge, I get the following blockers report: # emerge -vtp deluge These are the packages that would be merged, in reverse order: Calculating dependencies... done! [ebuild N ] net-p2p/deluge-1.2.0_rc3 USE="gtk libnotify -webinterface" 1,242 kB [ebuild N ] net-libs/rb_libtorrent-0.14.6 USE="python -debug -doc -examples -test" 1,950 kB [ebuild N ] dev-python/pygame-1.9.1 USE="X -doc -examples" 2,085 kB [ebuild N ] media-libs/sdl-ttf-2.0.9 USE="X" 3,071 kB [ebuild N ] dev-python/notify-python-0.1.1-r1 210 kB [blocks B ] net-libs/libtorrent ("net-libs/libtorrent" is blocking net-libs/rb_libtorrent-0.14.6) Total: 5 packages (5 new), Size of downloads: 8,555 kB Conflict: 1 block (1 unsatisfied) * Error: The above package list contains packages which cannot be * installed at the same time on the same system. ('installed', '/', 'net-libs/libtorrent-0.12.5', 'nomerge') pulled in by >=net-libs/libtorrent-0.12.5 required by ('installed', '/', 'net-p2p/rtorrent-0.8.5', 'nomerge') ('ebuild', '/', 'net-libs/rb_libtorrent-0.14.6', 'merge') pulled in by >=net-libs/rb_libtorrent-0.14.5[python] required by ('ebuild', '/', 'net-p2p/deluge-1.2.0_rc3', 'merge') For more information about Blocked Packages, please refer to the following section of the Gentoo Linux x86 Handbook (architecture is irrelevant): http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?full=1#blocked But with portage-2.2_rc51 and portage-2.2_rc52 I get the follwing: # emerge -vtp deluge These are the packages that would be merged, in reverse order: Calculating dependencies... done! Traceback (most recent call last): File "/usr/bin/emerge", line 42, in <module> retval = emerge_main() File "/usr/lib64/portage/pym/_emerge/main.py", line 1523, in emerge_main myopts, myaction, myfiles, spinner) File "/usr/lib64/portage/pym/_emerge/actions.py", line 283, in action_build mydepgraph.display_problems() File "/usr/lib64/portage/pym/_emerge/depgraph.py", line 4769, in display_problems self._display_problems() File "/usr/lib64/portage/pym/_emerge/depgraph.py", line 4788, in _display_problems self._dynamic_config._unsatisfied_blockers_for_display) File "/usr/lib64/portage/pym/_emerge/depgraph.py", line 3860, in _show_unsatisfied_blockers self._show_merge_list() File "/usr/lib64/portage/pym/_emerge/depgraph.py", line 3857, in _show_merge_list self.display(display_list) File "/usr/lib64/portage/pym/_emerge/depgraph.py", line 4061, in display display_list = self._tree_display(ordered_nodes) File "/usr/lib64/portage/pym/_emerge/depgraph.py", line 4631, in _tree_display display_list = self._ordered_tree_display(mygraph, mylist) File "/usr/lib64/portage/pym/_emerge/depgraph.py", line 4720, in _ordered_tree_display add_parents(x, True) File "/usr/lib64/portage/pym/_emerge/depgraph.py", line 4686, in add_parents parent_nodes = mygraph.parent_nodes(current_node) File "/usr/lib64/portage/pym/portage/__init__.py", line 802, in parent_nodes return list(self.nodes[node][1]) KeyError: <_emerge.Blocker.Blocker object at 0x3e08980> Reproducible: Always Steps to Reproduce:
The KeyError is handled in 2.2_rc53, but I'm still not sure why it happened.
Created attachment 211408 [details, diff] fix the KeyError Save this patch as /tmp/blocker_keyerror.patch and apply as follows: patch /usr/lib/portage/pym/_emerge/depgraph.py /tmp/blocker_keyerror.patch
This is fixed in 2.1.7.9 and 2.2_rc54.