1 |
Author: zmedico |
2 |
Date: 2008-04-28 22:23:32 +0000 (Mon, 28 Apr 2008) |
3 |
New Revision: 10033 |
4 |
|
5 |
Modified: |
6 |
main/branches/2.1.2/bin/emerge |
7 |
Log: |
8 |
Handle a potential KeyError in depgraph.display() when in --resume mode |
9 |
and a package scheduled for uninstall is no longer installed. (trunk r10032) |
10 |
|
11 |
|
12 |
Modified: main/branches/2.1.2/bin/emerge |
13 |
=================================================================== |
14 |
--- main/branches/2.1.2/bin/emerge 2008-04-28 22:22:52 UTC (rev 10032) |
15 |
+++ main/branches/2.1.2/bin/emerge 2008-04-28 22:23:32 UTC (rev 10033) |
16 |
@@ -4191,16 +4191,27 @@ |
17 |
else: |
18 |
blockers.append(addl) |
19 |
else: |
20 |
- pkg = self._pkg_cache[tuple(x)] |
21 |
- metadata = pkg.metadata |
22 |
pkg_status = x[3] |
23 |
pkg_merge = ordered and pkg_status == "merge" |
24 |
if not pkg_merge and pkg_status == "merge": |
25 |
pkg_status = "nomerge" |
26 |
+ built = pkg_type != "ebuild" |
27 |
+ installed = pkg_type == "installed" |
28 |
+ try: |
29 |
+ pkg = self._pkg_cache[tuple(x)] |
30 |
+ except KeyError: |
31 |
+ if pkg_status != "uninstall": |
32 |
+ raise |
33 |
+ # A package scheduled for uninstall apparently |
34 |
+ # isn't installed anymore. Since it's already |
35 |
+ # been uninstalled, move on to the next task. |
36 |
+ # This case should only be reachable in --resume |
37 |
+ # mode, since otherwise the package would have |
38 |
+ # been cached. |
39 |
+ continue |
40 |
+ metadata = pkg.metadata |
41 |
ebuild_path = None |
42 |
repo_name = metadata["repository"] |
43 |
- built = pkg_type != "ebuild" |
44 |
- installed = pkg_type == "installed" |
45 |
if pkg_type == "ebuild": |
46 |
ebuild_path = portdb.findname(pkg_key) |
47 |
if not ebuild_path: # shouldn't happen |
48 |
|
49 |
-- |
50 |
gentoo-commits@l.g.o mailing list |