--- doc/config/sets.docbook (révision 14872)
+++ doc/config/sets.docbook (copie de travail)
@@ -124,6 +124,7 @@
[installed category packages]
class = portage.sets.dbapi.CategorySet
multiset = true
+ repository = vartree
name_pattern = $category/*
@@ -438,6 +439,13 @@
category: Required. The name of an existing ebuild
category which should be used to create the package set.
+ repository: Optional, defaults to
+ porttree. It determines which repository class should
+ be used to create the package set. Valid values for this option are:
+ porttree (normal ebuild repository),
+ vartree (installed package repository)
+ and bintree (local binary package repository).
+
only_visible: Optional, defaults to true.
When set to true the set will only include visible packages,
when set to false it will also include masked packages.
--- pym/portage/sets/dbapi.py (révision 14872)
+++ pym/portage/sets/dbapi.py (copie de travail)
@@ -232,6 +232,13 @@
myatoms.append(cp)
self._setAtoms(myatoms)
+ def _builderGetRepository(cls, options, repositories):
+ repository = options.get("repository", "porttree")
+ if not repository in repositories:
+ raise SetConfigError(_("invalid repository class '%s'") % repository)
+ return repository
+ _builderGetRepository = classmethod(_builderGetRepository)
+
def _builderGetVisible(cls, options):
return get_boolean(options, "only_visible", True)
_builderGetVisible = classmethod(_builderGetVisible)
@@ -244,9 +251,10 @@
if not category in settings.categories:
raise SetConfigError(_("invalid category name '%s'") % category)
+ repository = cls._builderGetRepository(options, trees.keys())
visible = cls._builderGetVisible(options)
- return CategorySet(category, dbapi=trees["porttree"].dbapi, only_visible=visible)
+ return CategorySet(category, dbapi=trees[repository].dbapi, only_visible=visible)
singleBuilder = classmethod(singleBuilder)
def multiBuilder(cls, options, settings, trees):
@@ -260,6 +268,7 @@
else:
categories = settings.categories
+ repository = cls._builderGetRepository(options, trees.keys())
visible = cls._builderGetVisible(options)
name_pattern = options.get("name_pattern", "$category/*")
@@ -267,7 +276,7 @@
raise SetConfigError(_("name_pattern doesn't include $category placeholder"))
for cat in categories:
- myset = CategorySet(cat, trees["porttree"].dbapi, only_visible=visible)
+ myset = CategorySet(cat, trees[repository].dbapi, only_visible=visible)
myname = name_pattern.replace("$category", cat)
myname = myname.replace("${category}", cat)
rValue[myname] = myset