* remove NEEDED from list of metadata variables (trunk r10180) v2.1.5.2
authorZac Medico <zmedico@gentoo.org>
Tue, 20 May 2008 03:08:36 +0000 (03:08 -0000)
committerZac Medico <zmedico@gentoo.org>
Tue, 20 May 2008 03:08:36 +0000 (03:08 -0000)
* Simplify cache code in vardbapi.aux_get(). (trunk r10377)

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

pym/portage.py

index 14d4dbfc9e77e7a6b8974a572025dd05894d16ef..75301819baf79fdb04bf5b994652e4ac013a6df1 100644 (file)
@@ -6573,7 +6573,7 @@ class vardbapi(dbapi):
                self._aux_cache_keys = set(
                        ["CHOST", "COUNTER", "DEPEND", "DESCRIPTION",
                        "EAPI", "HOMEPAGE", "IUSE", "KEYWORDS",
-                       "LICENSE", "PDEPEND", "PROVIDE", "RDEPEND", "NEEDED",
+                       "LICENSE", "PDEPEND", "PROVIDE", "RDEPEND",
                        "repository", "RESTRICT" , "SLOT", "USE"])
                self._aux_cache = None
                self._aux_cache_version = "1"
@@ -6897,6 +6897,7 @@ class vardbapi(dbapi):
                        raise KeyError(mycpv)
                mydir_mtime = long(mydir_stat.st_mtime)
                pkg_data = self._aux_cache["packages"].get(mycpv)
+               pull_me = cache_these.union(wants)
                mydata = {}
                cache_valid = False
                cache_incomplete = False
@@ -6915,23 +6916,15 @@ class vardbapi(dbapi):
                        cache_mtime, metadata = pkg_data
                        cache_valid = cache_mtime == mydir_mtime
                if cache_valid:
-                       cache_incomplete = cache_these.difference(metadata)
-                       if cache_incomplete:
-                               # Allow self._aux_cache_keys to change without a cache version
-                               # bump and efficiently recycle partial cache whenever possible.
-                               pull_me = cache_incomplete.union(wants)
-                       else:
-                               pull_me = set(wants).difference(cache_these)
                        mydata.update(metadata)
-               else:
-                       pull_me = cache_these.union(wants)
+                       pull_me.difference_update(metadata)
 
                if pull_me:
                        # pull any needed data and cache it
                        aux_keys = list(pull_me)
                        for k, v in izip(aux_keys, self._aux_get(mycpv, aux_keys)):
                                mydata[k] = v
-                       if not cache_valid or cache_incomplete:
+                       if not cache_valid or cache_these.difference(metadata):
                                cache_data = {}
                                if cache_valid and metadata:
                                        cache_data.update(metadata)