summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-12-20 10:54:52 +0000
committerZac Medico <zmedico@gentoo.org>2007-12-20 10:54:52 +0000
commit0a0188d22823d494220af5a65d37ce0003a78145 (patch)
tree91e64fce817071beb7ddd4f39c4d1a82147ea4c0
parentddce621c0f3e7c974e818fe5a8d4a7bce450370e (diff)
downloadportage-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.py15
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