From 9bdcb111d8d493d18ecf3ef4085cbbcc203ab9a4 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Mon, 12 Jan 2009 08:18:19 +0000 Subject: Bug #254114 - Fix ValueError triggered by missing COUNTER. Also, fix broken mtime check inside FakeVartree._sync(). (trunk r12388) svn path=/main/branches/2.1.6/; revision=12455 --- pym/_emerge/__init__.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'pym/_emerge') diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index f28baffea..373979b23 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -1028,6 +1028,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) @@ -1166,8 +1169,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) @@ -1189,11 +1196,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): @@ -1540,7 +1554,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 -- cgit v1.2.3-1-g7c22