1 |
Author: zmedico |
2 |
Date: 2009-08-22 23:11:23 +0000 (Sat, 22 Aug 2009) |
3 |
New Revision: 14128 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/_emerge/Scheduler.py |
7 |
Log: |
8 |
Make Scheduler._choose_pkg() prefer uninstall operations when available. |
9 |
|
10 |
|
11 |
Modified: main/trunk/pym/_emerge/Scheduler.py |
12 |
=================================================================== |
13 |
--- main/trunk/pym/_emerge/Scheduler.py 2009-08-22 19:41:37 UTC (rev 14127) |
14 |
+++ main/trunk/pym/_emerge/Scheduler.py 2009-08-22 23:11:23 UTC (rev 14128) |
15 |
@@ -1164,13 +1164,23 @@ |
16 |
self._prune_digraph() |
17 |
|
18 |
chosen_pkg = None |
19 |
- later = set(self._pkg_queue) |
20 |
+ |
21 |
+ # Prefer uninstall operations when available. |
22 |
+ graph = self._digraph |
23 |
for pkg in self._pkg_queue: |
24 |
- later.remove(pkg) |
25 |
- if not self._dependent_on_scheduled_merges(pkg, later): |
26 |
+ if pkg.operation == 'uninstall' and \ |
27 |
+ not graph.child_nodes(pkg): |
28 |
chosen_pkg = pkg |
29 |
break |
30 |
|
31 |
+ if chosen_pkg is None: |
32 |
+ later = set(self._pkg_queue) |
33 |
+ for pkg in self._pkg_queue: |
34 |
+ later.remove(pkg) |
35 |
+ if not self._dependent_on_scheduled_merges(pkg, later): |
36 |
+ chosen_pkg = pkg |
37 |
+ break |
38 |
+ |
39 |
if chosen_pkg is not None: |
40 |
self._pkg_queue.remove(chosen_pkg) |