diff --git a/slapos/recipe/publish.py b/slapos/recipe/publish.py index 520388cff7d736b4b84ac952ead85c0f7e55f749..bd1cf70958d93250602373975caab6a529d99c26 100644 --- a/slapos/recipe/publish.py +++ b/slapos/recipe/publish.py @@ -31,19 +31,22 @@ from slapos.recipe.librecipe import GenericSlapRecipe CONNECTION_PARAMETER_STRING = 'connection-' class Recipe(GenericSlapRecipe): - def _install(self): - publish_dict = {} - done = set() + def __init__(self, buildout, name, options): + super(Recipe, self).__init__(buildout, name, options) + # Tell buildout about the sections we will access during install. + self._extend_set = done = set() extends = [self.name] while extends: - name = extends.pop() - done.add(name) - for k, v in self.buildout[name].iteritems(): - if k[:1] == '-': - if k == '-extends': - extends += set(v.split()) - done - elif k != 'recipe': - publish_dict[k] = v + name = extends.pop() + done.add(name) + extends += set(self.buildout[name].get('-extends', '').split()) - done + + def _install(self): + publish_dict = {} + for name in self._extend_set: + for k, v in self.buildout[name].iteritems(): + if k != 'recipe' and not k.startswith('-'): + publish_dict[k] = v self._setConnectionDict(publish_dict, self.options.get('-slave-reference')) return []