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

svn path=/main/branches/2.1.2/; revision=10031

bin/emerge

index 70cadb8aadfd4ffdb22dc79d54c688eb687099c6..20bb8dd7eeed0f5225799cb6ba5ab33cd7f7e74f 100755 (executable)
@@ -5325,6 +5325,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"]
@@ -5347,10 +5349,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: