Scheduler: fix reposyntax uninstall hash breakage
authorZac Medico <zmedico@gentoo.org>
Thu, 6 Jan 2011 03:51:58 +0000 (19:51 -0800)
committerZac Medico <zmedico@gentoo.org>
Thu, 6 Jan 2011 03:51:58 +0000 (19:51 -0800)
pym/_emerge/Scheduler.py

index f237a0205bcc33c2d6a04ee8848a7784965aea3d..312a7a30e20c8b49d7161a355a9f021daac4f468 100644 (file)
@@ -1410,9 +1410,7 @@ class Scheduler(PollScheduler):
                if pkg_to_replace is not None:
                        # When a package is replaced, mark it's uninstall
                        # task complete (if any).
-                       uninst_hash_key = \
-                               ("installed", pkg.root, pkg_to_replace.cpv, "uninstall")
-                       self._task_complete(uninst_hash_key)
+                       self._task_complete(pkg_to_replace)
 
                if pkg.installed:
                        return
@@ -1752,7 +1750,8 @@ class Scheduler(PollScheduler):
                        if previous_cpv:
                                previous_cpv = previous_cpv.pop()
                                pkg_to_replace = self._pkg(previous_cpv,
-                                       "installed", pkg.root_config, installed=True)
+                                       "installed", pkg.root_config, installed=True,
+                                       operation="uninstall")
 
                task = MergeListItem(args_set=self._args_set,
                        background=self._background, binpkg_opts=self._binpkg_opts,
@@ -1983,7 +1982,8 @@ class Scheduler(PollScheduler):
                        if world_locked:
                                world_set.unlock()
 
-       def _pkg(self, cpv, type_name, root_config, installed=False, myrepo=None):
+       def _pkg(self, cpv, type_name, root_config, installed=False,
+               operation=None, myrepo=None):
                """
                Get a package instance from the cache, or create a new
                one if necessary. Raises KeyError from aux_get if it
@@ -2003,9 +2003,11 @@ class Scheduler(PollScheduler):
                else:
                        repo_key = myrepo
 
-               operation = "merge"
-               if installed:
-                       operation = "nomerge"
+               if operation is None:
+                       if installed:
+                               operation = "nomerge"
+                       else:
+                               operation = "merge"
 
                # Reuse existing instance when available.
                pkg = self._pkg_cache.get(