Index: doc/config/sets.docbook =================================================================== --- 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. Index: pym/portage/sets/dbapi.py =================================================================== --- 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