Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r12127 - main/branches/2.1.6/pym/_emerge
Date: Mon, 01 Dec 2008 19:02:38
Message-Id: E1L7E2U-0003aY-QD@stork.gentoo.org
1 Author: zmedico
2 Date: 2008-12-01 19:02:33 +0000 (Mon, 01 Dec 2008)
3 New Revision: 12127
4
5 Modified:
6 main/branches/2.1.6/pym/_emerge/__init__.py
7 Log:
8 Change depgraph._slot_collision_info() from a set to a dict that contains
9 sets of packages pulled into a given slot. This will make the data easier
10 to analyze when implementing a fix for bug #249185. (trunk r12124)
11
12
13 Modified: main/branches/2.1.6/pym/_emerge/__init__.py
14 ===================================================================
15 --- main/branches/2.1.6/pym/_emerge/__init__.py 2008-12-01 18:59:49 UTC (rev 12126)
16 +++ main/branches/2.1.6/pym/_emerge/__init__.py 2008-12-01 19:02:33 UTC (rev 12127)
17 @@ -4303,7 +4303,7 @@
18 self._irrelevant_blockers = digraph()
19 # Contains only unsolvable Package -> Blocker edges
20 self._unsolvable_blockers = digraph()
21 - self._slot_collision_info = set()
22 + self._slot_collision_info = {}
23 # Slot collision nodes are not allowed to block other packages since
24 # blocker validation is only able to account for one package per slot.
25 self._slot_collision_nodes = set()
26 @@ -4345,14 +4345,11 @@
27 indent = " "
28 # Max number of parents shown, to avoid flooding the display.
29 max_parents = 3
30 - for slot_atom, root in self._slot_collision_info:
31 + for (slot_atom, root), slot_nodes \
32 + in self._slot_collision_info.iteritems():
33 msg.append(str(slot_atom))
34 msg.append("\n\n")
35 - slot_nodes = []
36 - for node in self._slot_collision_nodes:
37 - if node.slot_atom == slot_atom:
38 - slot_nodes.append(node)
39 - slot_nodes.append(self._slot_pkg_map[root][slot_atom])
40 +
41 for node in slot_nodes:
42 msg.append(indent)
43 msg.append(str(node))
44 @@ -4612,8 +4609,7 @@
45 # as an unsatisfied dependency.
46 self._unsatisfied_deps_for_display.append(
47 ((dep.root, dep.atom), {"myparent":dep.parent}))
48 - self._slot_collision_info.add((pkg.slot_atom, pkg.root))
49 - self._slot_collision_nodes.add(pkg)
50 + self._add_slot_conflict(pkg)
51 self.digraph.addnode(pkg, myparent, priority=priority)
52 return 0
53
54 @@ -4622,8 +4618,7 @@
55 # A slot collision has occurred. Sometimes this coincides
56 # with unresolvable blockers, so the slot collision will be
57 # shown later if there are no unresolvable blockers.
58 - self._slot_collision_info.add((pkg.slot_atom, pkg.root))
59 - self._slot_collision_nodes.add(pkg)
60 + self._add_slot_conflict(pkg)
61 slot_collision = True
62
63 if slot_collision:
64 @@ -4695,6 +4690,16 @@
65 dep_stack.append(pkg)
66 return 1
67
68 + def _add_slot_conflict(self, pkg):
69 + self._slot_collision_nodes.add(pkg)
70 + slot_key = (pkg.slot_atom, pkg.root)
71 + slot_nodes = self._slot_collision_info.get(slot_key)
72 + if slot_nodes is None:
73 + slot_nodes = set()
74 + slot_nodes.add(self._slot_pkg_map[pkg.root][pkg.slot_atom])
75 + self._slot_collision_info[slot_key] = slot_nodes
76 + slot_nodes.add(pkg)
77 +
78 def _add_pkg_deps(self, pkg, allow_unsatisfied=False):
79
80 mytype = pkg.type_name