1 |
Author: zmedico |
2 |
Date: 2008-04-29 18:02:09 +0000 (Tue, 29 Apr 2008) |
3 |
New Revision: 10037 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/_emerge/__init__.py |
7 |
Log: |
8 |
Make unmerge() group packages by cat/pn when the order doesn't matter, so |
9 |
the display appears like earlier versions of portage. |
10 |
|
11 |
|
12 |
Modified: main/trunk/pym/_emerge/__init__.py |
13 |
=================================================================== |
14 |
--- main/trunk/pym/_emerge/__init__.py 2008-04-29 03:33:29 UTC (rev 10036) |
15 |
+++ main/trunk/pym/_emerge/__init__.py 2008-04-29 18:02:09 UTC (rev 10037) |
16 |
@@ -5555,7 +5555,7 @@ |
17 |
return os.EX_OK |
18 |
|
19 |
def unmerge(root_config, myopts, unmerge_action, |
20 |
- unmerge_files, ldpath_mtimes, autoclean=0, clean_world=1): |
21 |
+ unmerge_files, ldpath_mtimes, autoclean=0, clean_world=1, ordered=0): |
22 |
settings = root_config.settings |
23 |
sets = root_config.sets |
24 |
vartree = root_config.trees["vartree"] |
25 |
@@ -5829,7 +5829,25 @@ |
26 |
pkgmap[cp]["protected"].add(cpv) |
27 |
|
28 |
del installed_sets |
29 |
- |
30 |
+ |
31 |
+ # Unmerge order only matters in some cases |
32 |
+ if not ordered: |
33 |
+ unordered = {} |
34 |
+ for d in pkgmap: |
35 |
+ selected = d["selected"] |
36 |
+ if not selected: |
37 |
+ continue |
38 |
+ cp = portage.cpv_getkey(iter(selected).next()) |
39 |
+ cp_dict = unordered.get(cp) |
40 |
+ if cp_dict is None: |
41 |
+ cp_dict = {} |
42 |
+ unordered[cp] = cp_dict |
43 |
+ for k in d: |
44 |
+ cp_dict[k] = set() |
45 |
+ for k, v in d.iteritems(): |
46 |
+ cp_dict[k].update(v) |
47 |
+ pkgmap = [unordered[cp] for cp in sorted(unordered)] |
48 |
+ |
49 |
for x in xrange(len(pkgmap)): |
50 |
selected = pkgmap[x]["selected"] |
51 |
if not selected: |
52 |
@@ -7436,11 +7454,12 @@ |
53 |
if cpv in clean_set: |
54 |
graph.add(cpv, node, priority=priority) |
55 |
|
56 |
+ ordered = True |
57 |
if len(graph.order) == len(graph.root_nodes()): |
58 |
# If there are no dependencies between packages |
59 |
- # then just unmerge them alphabetically. |
60 |
- cleanlist = graph.order[:] |
61 |
- cleanlist.sort() |
62 |
+ # let unmerge() group them by cat/pn. |
63 |
+ ordered = False |
64 |
+ cleanlist = graph.all_nodes() |
65 |
else: |
66 |
# Order nodes from lowest to highest overall reference count for |
67 |
# optimal root node selection. |
68 |
@@ -7470,8 +7489,8 @@ |
69 |
graph.remove(node) |
70 |
cleanlist.append(node) |
71 |
|
72 |
- unmerge(root_config, myopts, |
73 |
- "unmerge", cleanlist, ldpath_mtimes) |
74 |
+ unmerge(root_config, myopts, "unmerge", cleanlist, |
75 |
+ ldpath_mtimes, ordered=ordered) |
76 |
|
77 |
if action == "prune": |
78 |
return |
79 |
@@ -8408,8 +8427,11 @@ |
80 |
(myaction == "prune" and "--nodeps" in myopts): |
81 |
validate_ebuild_environment(trees) |
82 |
root_config = trees[settings["ROOT"]]["root_config"] |
83 |
+ # When given a list of atoms, unmerge |
84 |
+ # them in the order given. |
85 |
+ ordered = myaction == "unmerge" |
86 |
if 1 == unmerge(root_config, myopts, myaction, myfiles, |
87 |
- mtimedb["ldpath"]): |
88 |
+ mtimedb["ldpath"], ordered=ordered): |
89 |
if not (buildpkgonly or fetchonly or pretend): |
90 |
post_emerge(trees, mtimedb, os.EX_OK) |
91 |
|
92 |
|
93 |
-- |
94 |
gentoo-commits@l.g.o mailing list |