When a package scheduled for uninstall isn't installed anymore, move
authorZac Medico <zmedico@gentoo.org>
Mon, 28 Apr 2008 21:15:27 +0000 (21:15 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 28 Apr 2008 21:15:27 +0000 (21:15 -0000)
on to the next task.

svn path=/main/trunk/; revision=10030

pym/_emerge/__init__.py

index b03c2102b1ccbf7da38b716d6c2f66071e1738c9..616a4fb69d30a119ceab2273ca6187c37b6e9c0a 100644 (file)
@@ -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: