Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r12051 - main/trunk/pym/_emerge
Date: Sun, 23 Nov 2008 07:47:01
Message-Id: E1L49gK-0003wu-7H@stork.gentoo.org
1 Author: zmedico
2 Date: 2008-11-23 07:46:59 +0000 (Sun, 23 Nov 2008)
3 New Revision: 12051
4
5 Modified:
6 main/trunk/pym/_emerge/__init__.py
7 Log:
8 Fix the code from bug #245358 so that it's guaranteed to traverse all the
9 way to a root node, even when circular deps are encountered.
10
11
12 Modified: main/trunk/pym/_emerge/__init__.py
13 ===================================================================
14 --- main/trunk/pym/_emerge/__init__.py 2008-11-23 05:50:32 UTC (rev 12050)
15 +++ main/trunk/pym/_emerge/__init__.py 2008-11-23 07:46:59 UTC (rev 12051)
16 @@ -5411,17 +5411,19 @@
17 traversed_nodes.add(node)
18 msg.append('(dependency required by "%s" [%s])' % \
19 (colorize('INFORM', str(node.cpv)), node.type_name))
20 - parent = None
21 + # When traversing to parents, prefer arguments over packages
22 + # since arguments are root nodes. Never traverse the same
23 + # package twice, in order to prevent an infinite loop.
24 + selected_parent = None
25 for parent in self.digraph.parent_nodes(node):
26 - if parent in traversed_nodes:
27 - parent = None
28 - continue
29 if isinstance(parent, DependencyArg):
30 msg.append('(dependency required by "%s" [argument])' % \
31 (colorize('INFORM', str(parent))))
32 - parent = None
33 + selected_parent = None
34 break
35 - node = parent
36 + if parent not in traversed_nodes:
37 + selected_parent = parent
38 + node = selected_parent
39 for line in msg:
40 print line