Gentoo Archives: gentoo-commits

From: "Fabian Groffen (grobian)" <grobian@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r10170 - main/branches/prefix/pym/_emerge
Date: Sun, 04 May 2008 07:53:01
Message-Id: E1JsZ1m-0008JU-V1@stork.gentoo.org
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