Bug #254114 - Fix ValueError triggered by missing COUNTER. Also, fix broken
authorZac Medico <zmedico@gentoo.org>
Wed, 7 Jan 2009 22:37:06 +0000 (22:37 -0000)
committerZac Medico <zmedico@gentoo.org>
Wed, 7 Jan 2009 22:37:06 +0000 (22:37 -0000)
mtime check inside FakeVartree._sync().

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

pym/_emerge/__init__.py

index c5c310b07e0891e70fbfe2df340564cec1a50cee..8b7143c16ec4cba71095a279daf28d842d3627c1 100644 (file)
@@ -1047,6 +1047,9 @@ class FakeVartree(portage.vartree):
                self.root = real_vartree.root
                self.settings = real_vartree.settings
                mykeys = list(real_vartree.dbapi._aux_cache_keys)
+               if "_mtime_" not in mykeys:
+                       mykeys.append("_mtime_")
+               self._db_keys = mykeys
                self._pkg_cache = pkg_cache
                self.dbapi = PackageVirtualDbapi(real_vartree.settings)
                vdb_path = os.path.join(self.root, portage.VDB_PATH)
@@ -1185,8 +1188,12 @@ class FakeVartree(portage.vartree):
                        pkg = pkg_vardb.get(pkg_hash_key)
                        if pkg is not None:
                                counter, mtime = real_vardb.aux_get(cpv, validation_keys)
+                               try:
+                                       counter = long(counter)
+                               except ValueError:
+                                       counter = 0
 
-                               if counter != pkg.metadata["COUNTER"] or \
+                               if counter != pkg.counter or \
                                        mtime != pkg.mtime:
                                        pkg_vardb.cpv_remove(pkg)
                                        aux_get_history.discard(pkg.cpv)
@@ -1208,11 +1215,18 @@ class FakeVartree(portage.vartree):
        def _pkg(self, cpv):
                root_config = self._root_config
                real_vardb = root_config.trees["vartree"].dbapi
-               db_keys = list(real_vardb._aux_cache_keys)
                pkg = Package(cpv=cpv, installed=True,
-                       metadata=izip(db_keys, real_vardb.aux_get(cpv, db_keys)),
+                       metadata=izip(self._db_keys,
+                       real_vardb.aux_get(cpv, self._db_keys)),
                        root_config=root_config,
                        type_name="installed")
+
+               try:
+                       mycounter = long(pkg.metadata["COUNTER"])
+               except ValueError:
+                       mycounter = 0
+                       pkg.metadata["COUNTER"] = str(mycounter)
+
                return pkg
 
 def grab_global_updates(portdir):
@@ -1559,7 +1573,7 @@ class _PackageMetadataWrapper(_PackageMetadataWrapperBase):
        def _set_counter(self, k, v):
                if isinstance(v, basestring):
                        try:
-                               v = int(v.strip())
+                               v = long(v.strip())
                        except ValueError:
                                v = 0
                self._pkg.counter = v