diff options
-rw-r--r-- | debian/changelog | 3 | ||||
-rw-r--r-- | src/lib/Server/Plugins/Packages/Portage.py | 47 |
2 files changed, 26 insertions, 24 deletions
diff --git a/debian/changelog b/debian/changelog index b24862310..0a2e652c9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,6 @@ bcfg2 (1.2.3-11) UNRELEASED; urgency=low + * Plugins/Packages/Portage: use keywords/use config everywhere * Plugins/Packages/Layman: add support for layman overlays * Plugins/Packages/Portage: add support for per-package flags * Plugins/PkgVars: support multiple values per package @@ -11,7 +12,7 @@ bcfg2 (1.2.3-11) UNRELEASED; urgency=low * Plugins/Packages: backported packages_form_entry/_to_entry * Plugins/PkgVars: new plugin to set various vars per package - -- Alexander Sulfrian <alex@spline.inf.fu-berlin.de> Tue, 12 Mar 2013 03:30:04 +0100 + -- Alexander Sulfrian <alex@spline.inf.fu-berlin.de> Wed, 13 Mar 2013 01:21:10 +0100 bcfg2 (1.2.3-9) unstable; urgency=low diff --git a/src/lib/Server/Plugins/Packages/Portage.py b/src/lib/Server/Plugins/Packages/Portage.py index 02bcfa5a2..8629699ca 100644 --- a/src/lib/Server/Plugins/Packages/Portage.py +++ b/src/lib/Server/Plugins/Packages/Portage.py @@ -62,28 +62,6 @@ class PortageCollection(Collection): if not self.portage: _import_portage(self) - # get global use flags - self.portage.settings.unlock() - self.portage.settings['USE'] = '' - if 'gentoo-use-flags' in self.metadata.Probes: - self.portage.settings['USE'] = \ - self.metadata.Probes['gentoo-use-flags'] - - # add package flags (accept_keywords, use) - if hasattr(self.metadata, 'PkgVars'): - for k in self.metadata.PkgVars['keywords']: - keyword = metadata.PkgVars['keywords'][k] - self.portage.settings._keywords_manager.pkeywordsdict[k] = \ - {k: tuple(keyword)} - - - for u in self.metadata.PkgVars['use']: - use = metadata.PkgVars['use'][u] - self.portage.settings._use_manager._pusedict[u] = \ - {u: tuple(use)} - - self.portage.settings.lock() - # calculate deps setconfig = self.portage._sets.load_default_config( self.portage.settings, @@ -126,7 +104,6 @@ class PortageCollection(Collection): try: name = entry.get('name') - # TODO: handle package specific accept keywords pkgs = self.porttree.dep_bestmatch(name) except self.portage.exception.AmbiguousPackageName as e: self.logger.error("Packages: AmbiguousPackageName: %s" % e) @@ -192,10 +169,34 @@ class PortageCollection(Collection): portage.db[portage.root]['vartree'].settings = portage.settings portage.db[portage.root]['vartree'].dbapi.settings = portage.settings + def _set_portage_config(self): + # get global use flags + self.portage.settings.unlock() + self.portage.settings['USE'] = '' + if 'gentoo-use-flags' in self.metadata.Probes: + self.portage.settings['USE'] = \ + self.metadata.Probes['gentoo-use-flags'] + + # add package flags (accept_keywords, use) + if hasattr(self.metadata, 'PkgVars'): + for k in self.metadata.PkgVars['keywords']: + keyword = metadata.PkgVars['keywords'][k] + self.portage.settings._keywords_manager.pkeywordsdict[k] = \ + {k: tuple(keyword)} + + + for u in self.metadata.PkgVars['use']: + use = metadata.PkgVars['use'][u] + self.portage.settings._use_manager._pusedict[u] = \ + {u: tuple(use)} + + self.portage.settings.lock() + def _import_portage(self, portage, emerge, porttree): self.portage = portage self.emerge = emerge self.porttree = porttree + self._set_portage_config() for s in self.sources: if isinstance(s, PortageSource): |