1 |
Author: grobian |
2 |
Date: 2008-05-04 07:52:57 +0000 (Sun, 04 May 2008) |
3 |
New Revision: 10170 |
4 |
|
5 |
Modified: |
6 |
main/branches/prefix/pym/_emerge/__init__.py |
7 |
Log: |
8 |
Merged from trunk 10149:10165 |
9 |
|
10 |
| 10151 | Fix spelling of _show_unsatisfied_blockers(). | |
11 |
| zmedico | | |
12 |
|
13 |
| 10153 | Remove obsolete tuple() usage inside depgraph.display(). | |
14 |
| zmedico | | |
15 |
|
16 |
| 10155 | Fix some unwanted interaction between --tree display and | |
17 |
| zmedico | unsatisfied blockers in depgraph.display(). | |
18 |
|
19 |
| 10157 | Fix package counters in depgraph.display() so they're only | |
20 |
| zmedico | incremented for "ordered" display nodes. | |
21 |
|
22 |
| 10160 | Fix misplaced variable used as parameter to | |
23 |
| zmedico | _load_favorites(). | |
24 |
|
25 |
| 10162 | In order to fix --tree display behave normally in --resume | |
26 |
| zmedico | mode, properly add to the digraph all packages matched by | |
27 |
| | arguments. | |
28 |
|
29 |
| 10165 | Do more validation of resume data from the mtimedb. | |
30 |
| zmedico | | |
31 |
|
32 |
|
33 |
Modified: main/branches/prefix/pym/_emerge/__init__.py |
34 |
=================================================================== |
35 |
--- main/branches/prefix/pym/_emerge/__init__.py 2008-05-04 07:51:38 UTC (rev 10169) |
36 |
+++ main/branches/prefix/pym/_emerge/__init__.py 2008-05-04 07:52:57 UTC (rev 10170) |
37 |
@@ -3931,7 +3931,7 @@ |
38 |
display_list.reverse() |
39 |
self.display(display_list) |
40 |
|
41 |
- def _show_unsatisied_blockers(self, blockers): |
42 |
+ def _show_unsatisfied_blockers(self, blockers): |
43 |
self._show_merge_list() |
44 |
msg = "Error: The above package list contains " + \ |
45 |
"packages which cannot be installed " + \ |
46 |
@@ -4070,13 +4070,15 @@ |
47 |
if parent != inst_pkg: |
48 |
mygraph.add(blocker, parent) |
49 |
|
50 |
+ unsatisfied_blockers = [] |
51 |
i = 0 |
52 |
depth = 0 |
53 |
shown_edges = set() |
54 |
for x in mylist: |
55 |
+ if isinstance(x, Blocker) and not x.satisfied: |
56 |
+ unsatisfied_blockers.append(x) |
57 |
+ continue |
58 |
graph_key = x |
59 |
- if isinstance(graph_key, list): |
60 |
- graph_key = tuple(graph_key) |
61 |
if "--tree" in self.myopts: |
62 |
depth = len(tree_nodes) |
63 |
while depth and graph_key not in \ |
64 |
@@ -4134,6 +4136,8 @@ |
65 |
else: |
66 |
display_list.append((x, depth, True)) |
67 |
mylist = display_list |
68 |
+ for x in unsatisfied_blockers: |
69 |
+ mylist.append((x, 0, True)) |
70 |
|
71 |
last_merge_depth = 0 |
72 |
for i in xrange(len(mylist)-1,-1,-1): |
73 |
@@ -4183,7 +4187,7 @@ |
74 |
addl = addl + " " + red(resolved) |
75 |
else: |
76 |
addl = "[blocks " + addl + "] " + indent + red(resolved) |
77 |
- block_parents = self._blocker_parents.parent_nodes(tuple(x)) |
78 |
+ block_parents = self._blocker_parents.parent_nodes(x) |
79 |
block_parents = set([pnode[2] for pnode in block_parents]) |
80 |
block_parents = ", ".join(block_parents) |
81 |
if resolved!=x[2]: |
82 |
@@ -4247,10 +4251,11 @@ |
83 |
installed_versions = vardb.match(portage.cpv_getkey(pkg_key)) |
84 |
if vardb.cpv_exists(pkg_key): |
85 |
addl=" "+yellow("R")+fetch+" " |
86 |
- if pkg_merge: |
87 |
- counters.reinst += 1 |
88 |
- elif pkg_status == "uninstall": |
89 |
- counters.uninst += 1 |
90 |
+ if ordered: |
91 |
+ if pkg_merge: |
92 |
+ counters.reinst += 1 |
93 |
+ elif pkg_status == "uninstall": |
94 |
+ counters.uninst += 1 |
95 |
# filter out old-style virtual matches |
96 |
elif installed_versions and \ |
97 |
portage.cpv_getkey(installed_versions[0]) == \ |
98 |
@@ -4417,7 +4422,8 @@ |
99 |
if myfetchfile not in myfetchlist: |
100 |
mysize+=myfilesdict[myfetchfile] |
101 |
myfetchlist.append(myfetchfile) |
102 |
- counters.totalsize += mysize |
103 |
+ if ordered: |
104 |
+ counters.totalsize += mysize |
105 |
verboseadd+=format_size(mysize)+" " |
106 |
|
107 |
# overlay verbose |
108 |
@@ -4639,7 +4645,7 @@ |
109 |
# The user is only notified of a slot conflict if |
110 |
# there are no unresolvable blocker conflicts. |
111 |
if self._unsatisfied_blockers_for_display is not None: |
112 |
- self._show_unsatisied_blockers( |
113 |
+ self._show_unsatisfied_blockers( |
114 |
self._unsatisfied_blockers_for_display) |
115 |
else: |
116 |
self._show_slot_collision_notice() |
117 |
@@ -4835,9 +4841,7 @@ |
118 |
|
119 |
if not isinstance(resume_data, dict): |
120 |
return False |
121 |
- favorites = resume_data.get("favorites") |
122 |
- if isinstance(favorites, list): |
123 |
- self._load_favorites(resume_data) |
124 |
+ |
125 |
mergelist = resume_data.get("mergelist") |
126 |
if not isinstance(mergelist, list): |
127 |
mergelist = [] |
128 |
@@ -4900,11 +4904,30 @@ |
129 |
self._select_package = self._select_pkg_from_graph |
130 |
self.myparams.add("selective") |
131 |
|
132 |
+ favorites = resume_data.get("favorites") |
133 |
+ if isinstance(favorites, list): |
134 |
+ args = self._load_favorites(favorites) |
135 |
+ else: |
136 |
+ args = [] |
137 |
+ |
138 |
for task in serialized_tasks: |
139 |
if isinstance(task, Package) and \ |
140 |
task.operation == "merge": |
141 |
- self._add_pkg(task, None) |
142 |
+ if not self._add_pkg(task, None): |
143 |
+ return False |
144 |
|
145 |
+ # Packages for argument atoms need to be explicitly |
146 |
+ # added via _add_pkg() so that they are included in the |
147 |
+ # digraph (needed at least for --tree display). |
148 |
+ for arg in args: |
149 |
+ for atom in arg.set: |
150 |
+ pkg, existing_node = self._select_package( |
151 |
+ arg.root_config.root, atom) |
152 |
+ if existing_node is None and \ |
153 |
+ pkg is not None: |
154 |
+ if not self._add_pkg(pkg, arg): |
155 |
+ return False |
156 |
+ |
157 |
# Allow unsatisfied deps here to avoid showing a masking |
158 |
# message for an unsatisfied dep that isn't necessarily |
159 |
# masked. |
160 |
@@ -4984,6 +5007,7 @@ |
161 |
atom_arg_map[atom_key] = refs |
162 |
if arg not in refs: |
163 |
refs.append(arg) |
164 |
+ return args |
165 |
|
166 |
class UnsatisfiedResumeDep(portage.exception.PortageException): |
167 |
""" |
168 |
@@ -7802,12 +7826,24 @@ |
169 |
# validate the state of the resume data |
170 |
# so that we can make assumptions later. |
171 |
for k in ("resume", "resume_backup"): |
172 |
- if k in mtimedb: |
173 |
- if "mergelist" in mtimedb[k]: |
174 |
- if not mtimedb[k]["mergelist"]: |
175 |
- del mtimedb[k] |
176 |
- else: |
177 |
- del mtimedb[k] |
178 |
+ if k not in mtimedb: |
179 |
+ continue |
180 |
+ resume_data = mtimedb[k] |
181 |
+ if not isinstance(resume_data, dict): |
182 |
+ del mtimedb[k] |
183 |
+ continue |
184 |
+ mergelist = resume_data.get("mergelist") |
185 |
+ if not isinstance(mergelist, list): |
186 |
+ del mtimedb[k] |
187 |
+ continue |
188 |
+ resume_opts = resume_data.get("myopts") |
189 |
+ if not isinstance(resume_opts, (dict, list)): |
190 |
+ del mtimedb[k] |
191 |
+ continue |
192 |
+ favorites = resume_data.get("favorites") |
193 |
+ if not isinstance(resume_opts, list): |
194 |
+ del mtimedb[k] |
195 |
+ continue |
196 |
|
197 |
resume = False |
198 |
if "--resume" in myopts and \ |
199 |
|
200 |
-- |
201 |
gentoo-commits@l.g.o mailing list |