1 |
Author: zmedico |
2 |
Date: 2008-04-29 18:33:35 +0000 (Tue, 29 Apr 2008) |
3 |
New Revision: 10038 |
4 |
|
5 |
Modified: |
6 |
main/branches/2.1.2/bin/emerge |
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. (trunk r10037) |
10 |
|
11 |
|
12 |
Modified: main/branches/2.1.2/bin/emerge |
13 |
=================================================================== |
14 |
--- main/branches/2.1.2/bin/emerge 2008-04-29 18:02:09 UTC (rev 10037) |
15 |
+++ main/branches/2.1.2/bin/emerge 2008-04-29 18:33:35 UTC (rev 10038) |
16 |
@@ -5706,7 +5706,7 @@ |
17 |
return os.EX_OK |
18 |
|
19 |
def unmerge(settings, myopts, vartree, unmerge_action, unmerge_files, |
20 |
- ldpath_mtimes, autoclean=0, clean_world=1): |
21 |
+ ldpath_mtimes, autoclean=0, clean_world=1, ordered=0): |
22 |
candidate_catpkgs=[] |
23 |
global_unmerge=0 |
24 |
xterm_titles = "notitles" not in settings.features |
25 |
@@ -5933,6 +5933,25 @@ |
26 |
finally: |
27 |
if vdb_lock: |
28 |
portage_locks.unlockdir(vdb_lock) |
29 |
+ |
30 |
+ # Unmerge order only matters in some cases |
31 |
+ if not ordered: |
32 |
+ unordered = {} |
33 |
+ for d in pkgmap: |
34 |
+ selected = d["selected"] |
35 |
+ if not selected: |
36 |
+ continue |
37 |
+ cp = portage.cpv_getkey(iter(selected).next()) |
38 |
+ cp_dict = unordered.get(cp) |
39 |
+ if cp_dict is None: |
40 |
+ cp_dict = {} |
41 |
+ unordered[cp] = cp_dict |
42 |
+ for k in d: |
43 |
+ cp_dict[k] = set() |
44 |
+ for k, v in d.iteritems(): |
45 |
+ cp_dict[k].update(v) |
46 |
+ pkgmap = [unordered[cp] for cp in sorted(unordered)] |
47 |
+ |
48 |
for x in xrange(len(pkgmap)): |
49 |
selected = pkgmap[x]["selected"] |
50 |
if not selected: |
51 |
@@ -7449,11 +7468,12 @@ |
52 |
if cpv in clean_set: |
53 |
graph.add(cpv, node, priority=priority) |
54 |
|
55 |
+ ordered = True |
56 |
if len(graph.order) == len(graph.root_nodes()): |
57 |
# If there are no dependencies between packages |
58 |
- # then just unmerge them alphabetically. |
59 |
- cleanlist = graph.order[:] |
60 |
- cleanlist.sort() |
61 |
+ # let unmerge() group them by cat/pn. |
62 |
+ ordered = False |
63 |
+ cleanlist = graph.all_nodes() |
64 |
else: |
65 |
# Order nodes from lowest to highest overall reference count for |
66 |
# optimal root node selection. |
67 |
@@ -7484,7 +7504,7 @@ |
68 |
cleanlist.append(node) |
69 |
|
70 |
unmerge(settings, myopts, trees[settings["ROOT"]]["vartree"], |
71 |
- "unmerge", cleanlist, ldpath_mtimes) |
72 |
+ "unmerge", cleanlist, ldpath_mtimes, ordered=ordered) |
73 |
|
74 |
if action == "prune": |
75 |
return |
76 |
@@ -8369,8 +8389,11 @@ |
77 |
(myaction == "prune" and "--nodeps" in myopts): |
78 |
validate_ebuild_environment(trees) |
79 |
vartree = trees[settings["ROOT"]]["vartree"] |
80 |
+ # When given a list of atoms, unmerge |
81 |
+ # them in the order given. |
82 |
+ ordered = myaction == "unmerge" |
83 |
if 1 == unmerge(settings, myopts, vartree, myaction, myfiles, |
84 |
- mtimedb["ldpath"]): |
85 |
+ mtimedb["ldpath"], ordered=ordered): |
86 |
if not (buildpkgonly or fetchonly or pretend): |
87 |
post_emerge(settings, mtimedb, 0) |
88 |
|
89 |
|
90 |
-- |
91 |
gentoo-commits@l.g.o mailing list |