diff options
author | Zac Medico <zmedico@gentoo.org> | 2007-12-20 10:54:52 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2007-12-20 10:54:52 +0000 |
commit | 0a0188d22823d494220af5a65d37ce0003a78145 (patch) | |
tree | 91e64fce817071beb7ddd4f39c4d1a82147ea4c0 | |
parent | ddce621c0f3e7c974e818fe5a8d4a7bce450370e (diff) | |
download | portage-0a0188d22823d494220af5a65d37ce0003a78145.tar.gz portage-0a0188d22823d494220af5a65d37ce0003a78145.tar.bz2 portage-0a0188d22823d494220af5a65d37ce0003a78145.zip |
Make vartree.cpv_all() stop relying on having a categories
list since it may not be available if there is no portage
tree. (trunk r8982)
svn path=/main/branches/2.1.2/; revision=8983
-rw-r--r-- | pym/portage.py | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/pym/portage.py b/pym/portage.py index 13b71096e..6195e6843 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -6077,6 +6077,7 @@ class bindbapi(fakedbapi): return fakedbapi.cpv_all(self) class vardbapi(dbapi): + _category_re = re.compile(r'^[+\w][-\.+\w]*$') def __init__(self, root, categories=None, settings=None, vartree=None): self.root = root[:] #cache for category directory mtimes @@ -6092,6 +6093,12 @@ class vardbapi(dbapi): 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 if vartree is None: vartree = globals()["db"][root]["vartree"] self.vartree = vartree @@ -6271,8 +6278,12 @@ class vardbapi(dbapi): def cpv_all(self,use_cache=1): returnme=[] basepath = self.root+VDB_PATH+"/" - - for x in self.categories: + 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 y in listdir(basepath+x,EmptyOnError=1): if y.startswith("."): continue |