def cp_all(self):
"returns a list of all keys in our tree"
d = {}
- for x in self.mysettings.categories:
- for oroot in self.porttrees:
+ for oroot in self.porttrees:
+ for x in listdir(oroot, EmptyOnError=1, ignorecvs=1, dirsonly=1):
+ if not self._category_re.match(x):
+ continue
for y in listdir(oroot+"/"+x, EmptyOnError=1, ignorecvs=1, dirsonly=1):
d[x+"/"+y] = None
l = d.keys()
self.xcache["match-all"][mycp] = cachelist
return cachelist[:]
mysplit = mycp.split("/")
- if self.mysettings.profile_path:
- invalid_category = mysplit[0] not in self._categories
- else:
- invalid_category = not self._category_re.match(mysplit[0])
+ invalid_category = not self._category_re.match(mysplit[0])
d={}
if mytree:
mytrees = [mytree]
if settings is None:
from portage import settings
self.settings = settings
- if categories is None:
- categories = settings.categories
- self.categories = categories[:]
- # If it seems like the profiles directory is missing, don't
- # trust the categories list and try to work without it so
- # that we can install binary packages without a profile or
- # a portage tree.
- if not self.settings.profile_path:
- self.categories = None
+ # The categories list is now automatically generated
+ # from a regular expression.
+ self.categories = None
if vartree is None:
from portage import db
vartree = db[root]["vartree"]
def cpv_all(self, use_cache=1):
returnme = []
basepath = os.path.join(self.root, VDB_PATH) + os.path.sep
- categories = self.categories
- if not categories:
- categories = [cat for cat in listdir(basepath, dirsonly=True) \
- if self._category_re.match(cat)]
- self.categories = categories
- for x in categories:
+ for x in listdir(basepath, EmptyOnError=1, ignorecvs=1, dirsonly=1):
+ if not self._category_re.match(x):
+ continue
for y in listdir(basepath + x, EmptyOnError=1):
if y.startswith("."):
continue