summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pym/_emerge/__init__.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index b03c2102b..616a4fb69 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -5172,6 +5172,8 @@ class MergeTask(object):
myroot=x[1]
pkg_key = x[2]
pkgindex=2
+ built = pkg_type != "ebuild"
+ installed = pkg_type == "installed"
portdb = self.trees[myroot]["porttree"].dbapi
bindb = self.trees[myroot]["bintree"].dbapi
vartree = self.trees[myroot]["vartree"]
@@ -5194,10 +5196,16 @@ class MergeTask(object):
mydbapi = vardb
else:
raise AssertionError("Package type: '%s'" % pkg_type)
- metadata.update(izip(metadata_keys,
- mydbapi.aux_get(pkg_key, metadata_keys)))
- built = pkg_type != "ebuild"
- installed = pkg_type == "installed"
+ try:
+ metadata.update(izip(metadata_keys,
+ mydbapi.aux_get(pkg_key, metadata_keys)))
+ except KeyError:
+ if not installed:
+ raise
+ # A package scheduled for uninstall apparently
+ # isn't installed anymore. Since it's already
+ # been uninstalled, move on to the next task.
+ continue
if installed:
pkg_constructor = Uninstall
else: