summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pym/portage.py15
1 files changed, 4 insertions, 11 deletions
diff --git a/pym/portage.py b/pym/portage.py
index 14d4dbfc..75301819 100644
--- a/pym/portage.py
+++ b/pym/portage.py
@@ -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)