are built, it is safe to remove any and all files from this directory since
they will be automatically fetched on demand for a given build. If you would
like to selectively prune obsolete files from this directory, see
-\fBeclean\fR(1) from the gentoolkit package. Note
+\fBeclean\fR(1) from the gentoolkit package.
+
+Use the \fBPORTAGE_RO_DISTDIRS\fR variable to specify one or
+more read-only directories containing distfiles.
+
+Note
that locations under /usr/portage are not necessarily safe for data storage.
See the \fBPORTDIR\fR documentation for more information.
.br
portage.CACHE_PATH.lstrip(os.path.sep), "vdb_blockers.pickle")
self._cache_version = "1"
self._cache_data = None
- self._modified = 0
+ self._modified = set()
self._load()
def _load(self):
self._cache_data = {"version":self._cache_version}
self._cache_data["blockers"] = {}
self._cache_data["virtuals"] = self._virtuals
- self._modified = 0
+ self._modified.clear()
def flush(self):
"""If the current user has permission and the internal blocker cache
"virtuals" : vardb.settings.getvirtuals()
}
"""
- if self._modified >= self._cache_threshold and \
+ if len(self._modified) >= self._cache_threshold and \
secpass >= 2:
try:
f = portage.util.atomic_ofstream(self._cache_filename)
self._cache_filename, gid=portage.portage_gid, mode=0644)
except (IOError, OSError), e:
pass
- self._modified = 0
+ self._modified.clear()
def __setitem__(self, cpv, blocker_data):
"""
"""
self._cache_data["blockers"][cpv] = \
(blocker_data.counter, tuple(str(x) for x in blocker_data.atoms))
- self._modified += 1
+ self._modified.add(cpv)
def __iter__(self):
return iter(self._cache_data["blockers"])
make_conf = getconfig(
os.path.join(config_root, MAKE_CONF_FILE.lstrip(os.path.sep)),
tolerant=tolerant, allow_sourcing=True)
+ if make_conf is None:
+ make_conf = {}
# Allow ROOT setting to come from make.conf if it's not overridden
# by the constructor argument (from the calling environment).
users have read access and benefit from faster metadata lookups (as
long as at least part of the cache is still valid)."""
if self._aux_cache is not None and \
- self._aux_cache["modified"] >= self._aux_cache_threshold and \
+ len(self._aux_cache["modified"]) >= self._aux_cache_threshold and \
secpass >= 2:
valid_nodes = set(self.cpv_all())
for cpv in self._aux_cache["packages"].keys():
self._aux_cache_filename, gid=portage_gid, mode=0644)
except (IOError, OSError), e:
pass
- self._aux_cache["modified"] = 0
+ self._aux_cache["modified"] = set()
def aux_get(self, mycpv, wants):
"""This automatically caches selected keys that are frequently needed
not self._aux_cache.get("packages"):
self._aux_cache = {"version": self._aux_cache_version}
self._aux_cache["packages"] = {}
- self._aux_cache["modified"] = 0
+ self._aux_cache["modified"] = set()
mydir = self.getpath(mycpv)
mydir_stat = None
try:
for aux_key in cache_these:
cache_data[aux_key] = mydata[aux_key]
self._aux_cache["packages"][mycpv] = (mydir_mtime, cache_data)
- self._aux_cache["modified"] += 1
+ self._aux_cache["modified"].add(mycpv)
return [mydata[x] for x in wants]
def _aux_get(self, mycpv, wants):