From a3a836d3a2ad8905e50755bfddcd3e7245f69167 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Mon, 28 Apr 2008 22:23:32 +0000 Subject: [PATCH] Handle a potential KeyError in depgraph.display() when in --resume mode and a package scheduled for uninstall is no longer installed. (trunk r10032) svn path=/main/branches/2.1.2/; revision=10033 --- bin/emerge | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/bin/emerge b/bin/emerge index 20bb8dd7e..34b57fde3 100755 --- a/bin/emerge +++ b/bin/emerge @@ -4191,16 +4191,27 @@ class depgraph(object): else: blockers.append(addl) else: - pkg = self._pkg_cache[tuple(x)] - metadata = pkg.metadata pkg_status = x[3] pkg_merge = ordered and pkg_status == "merge" if not pkg_merge and pkg_status == "merge": pkg_status = "nomerge" - ebuild_path = None - repo_name = metadata["repository"] built = pkg_type != "ebuild" installed = pkg_type == "installed" + try: + pkg = self._pkg_cache[tuple(x)] + except KeyError: + if pkg_status != "uninstall": + raise + # A package scheduled for uninstall apparently + # isn't installed anymore. Since it's already + # been uninstalled, move on to the next task. + # This case should only be reachable in --resume + # mode, since otherwise the package would have + # been cached. + continue + metadata = pkg.metadata + ebuild_path = None + repo_name = metadata["repository"] if pkg_type == "ebuild": ebuild_path = portdb.findname(pkg_key) if not ebuild_path: # shouldn't happen -- 2.26.2