From: Zac Medico Date: Thu, 12 Jul 2012 20:58:30 +0000 (-0700) Subject: vardbapi: use float mtime for aux cache X-Git-Tag: v2.2.0_alpha117 X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=4f1558ec085d4d1716faf8558741aad2e542463f;p=portage.git vardbapi: use float mtime for aux cache --- diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index fbf2e747c..dddc094d2 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -647,7 +647,8 @@ class vardbapi(dbapi): if e.errno != errno.ENOENT: raise raise KeyError(mycpv) - mydir_mtime = mydir_stat[stat.ST_MTIME] + # Use float mtime when available. + mydir_mtime = mydir_stat.st_mtime pkg_data = self._aux_cache["packages"].get(mycpv) pull_me = cache_these.union(wants) mydata = {"_mtime_" : mydir_mtime} @@ -660,13 +661,18 @@ class vardbapi(dbapi): pkg_data = None else: cache_mtime, metadata = pkg_data - if not isinstance(cache_mtime, (long, int)) or \ + if not isinstance(cache_mtime, (float, long, int)) or \ not isinstance(metadata, dict): pkg_data = None if pkg_data: cache_mtime, metadata = pkg_data - cache_valid = cache_mtime == mydir_mtime + if isinstance(cache_mtime, float): + cache_valid = cache_mtime == mydir_stat.st_mtime + else: + # Cache may contain integer mtime. + cache_valid = cache_mtime == mydir_stat[stat.ST_MTIME] + if cache_valid: # Migrate old metadata to unicode. for k, v in metadata.items():