1 |
Author: zmedico |
2 |
Date: 2008-05-05 03:27:58 +0000 (Mon, 05 May 2008) |
3 |
New Revision: 10189 |
4 |
|
5 |
Modified: |
6 |
main/branches/2.1.2/bin/emerge |
7 |
Log: |
8 |
Use a separate digraph to preserve irrelevant blocker relationships that |
9 |
are removed from depgraph._blocker_parents since the irrelevant blockers |
10 |
are still needed for the blocker cache. (trunk r10188) |
11 |
|
12 |
|
13 |
Modified: main/branches/2.1.2/bin/emerge |
14 |
=================================================================== |
15 |
--- main/branches/2.1.2/bin/emerge 2008-05-05 03:27:30 UTC (rev 10188) |
16 |
+++ main/branches/2.1.2/bin/emerge 2008-05-05 03:27:58 UTC (rev 10189) |
17 |
@@ -1934,6 +1934,8 @@ |
18 |
self._blocker_uninstalls = digraph() |
19 |
# Contains only Package -> Blocker edges |
20 |
self._blocker_parents = digraph() |
21 |
+ # Contains only irrelevant Package -> Blocker edges |
22 |
+ self._irrelevant_blockers = digraph() |
23 |
# Contains only unsolvable Package -> Blocker edges |
24 |
self._unsolvable_blockers = digraph() |
25 |
self._slot_collision_info = set() |
26 |
@@ -3325,10 +3327,17 @@ |
27 |
blocker_atoms = None |
28 |
blockers = None |
29 |
if self.digraph.contains(pkg): |
30 |
+ blockers = [] |
31 |
try: |
32 |
- blockers = self._blocker_parents.child_nodes(pkg) |
33 |
+ blockers.extend( |
34 |
+ self._blocker_parents.child_nodes(pkg)) |
35 |
except KeyError: |
36 |
- blockers = [] |
37 |
+ pass |
38 |
+ try: |
39 |
+ blockers.extend( |
40 |
+ self._irrelevant_blockers.child_nodes(pkg)) |
41 |
+ except KeyError: |
42 |
+ pass |
43 |
if blockers is not None: |
44 |
blockers = set("!" + blocker.atom \ |
45 |
for blocker in blockers) |
46 |
@@ -3460,6 +3469,7 @@ |
47 |
self._blocker_parents.remove(blocker) |
48 |
# Discard any parents that don't have any more blockers. |
49 |
for pkg in parent_pkgs: |
50 |
+ self._irrelevant_blockers.add(blocker, pkg) |
51 |
if not self._blocker_parents.child_nodes(pkg): |
52 |
self._blocker_parents.remove(pkg) |
53 |
continue |
54 |
@@ -3534,6 +3544,7 @@ |
55 |
# merged. |
56 |
self._blocker_uninstalls.addnode(uninst_task, blocker) |
57 |
if not unresolved_blocks and not depends_on_order: |
58 |
+ self._irrelevant_blockers.add(blocker, parent) |
59 |
self._blocker_parents.remove_edge(blocker, parent) |
60 |
if not self._blocker_parents.parent_nodes(blocker): |
61 |
self._blocker_parents.remove(blocker) |
62 |
|
63 |
-- |
64 |
gentoo-commits@l.g.o mailing list |