From 77376663481712ce7ebf5fb0d13bc55ec37e0299 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Thu, 20 Dec 2007 14:07:48 +0000 Subject: For simplicity and consistency, always use a regular expression for category validation instead of using a list. svn path=/main/trunk/; revision=8992 --- pym/portage/dbapi/porttree.py | 11 +++++------ pym/portage/dbapi/vartree.py | 21 ++++++--------------- 2 files changed, 11 insertions(+), 21 deletions(-) diff --git a/pym/portage/dbapi/porttree.py b/pym/portage/dbapi/porttree.py index 70176c6f7..4b66b6125 100644 --- a/pym/portage/dbapi/porttree.py +++ b/pym/portage/dbapi/porttree.py @@ -485,8 +485,10 @@ class portdbapi(dbapi): 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() @@ -513,10 +515,7 @@ class portdbapi(dbapi): 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] diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index 9c4d99277..8af2bde5d 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -181,15 +181,9 @@ class vardbapi(dbapi): 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"] @@ -385,12 +379,9 @@ class vardbapi(dbapi): 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 -- cgit v1.2.3-1-g7c22