summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-12-20 14:07:48 +0000
committerZac Medico <zmedico@gentoo.org>2007-12-20 14:07:48 +0000
commit77376663481712ce7ebf5fb0d13bc55ec37e0299 (patch)
tree5258266c495d96ba5afb776638dd49e311b71ddc /pym
parentde97d4dd76f4e1039a648bd092443cf41d363c3f (diff)
downloadportage-77376663481712ce7ebf5fb0d13bc55ec37e0299.tar.gz
portage-77376663481712ce7ebf5fb0d13bc55ec37e0299.tar.bz2
portage-77376663481712ce7ebf5fb0d13bc55ec37e0299.zip
For simplicity and consistency, always use a regular expression
for category validation instead of using a list. svn path=/main/trunk/; revision=8992
Diffstat (limited to 'pym')
-rw-r--r--pym/portage/dbapi/porttree.py11
-rw-r--r--pym/portage/dbapi/vartree.py21
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