diff options
author | Jürg Billeter <j@bitron.ch> | 2017-11-13 11:15:15 +0100 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2018-02-08 14:04:04 +0100 |
commit | 6eeb25876cc533e8f02f63a221864fe1a3207b35 (patch) | |
tree | 64945bdbd0054cc05d7a80e2ea479f9561ec6b88 | |
parent | b74919501fa65feb4494a44fddc7180a92ad2991 (diff) | |
download | buildstream-6eeb25876cc533e8f02f63a221864fe1a3207b35.tar.gz |
Add project attribute to MetaElement
With junctions, elements may be loaded from multiple projects.
-rw-r--r-- | buildstream/_loader.py | 3 | ||||
-rw-r--r-- | buildstream/_metaelement.py | 4 | ||||
-rw-r--r-- | buildstream/_pipeline.py | 10 |
3 files changed, 10 insertions, 7 deletions
diff --git a/buildstream/_loader.py b/buildstream/_loader.py index 95ee525dd..b7fad2c1b 100644 --- a/buildstream/_loader.py +++ b/buildstream/_loader.py @@ -196,6 +196,7 @@ class Loader(): "path to the base project directory: {}" .format(filename, basedir)) + self.project = project self.options = project._options # Project options (OptionPool) self.basedir = basedir # Base project directory self.targets = filenames # Target bst elements @@ -421,7 +422,7 @@ class Loader(): meta_sources.append(meta_source) kind = _yaml.node_get(data, str, Symbol.KIND) - meta_element = MetaElement(element_name, kind, + meta_element = MetaElement(self.project, element_name, kind, elt_provenance, meta_sources, _yaml.node_get(data, Mapping, Symbol.CONFIG, default_value={}), _yaml.node_get(data, Mapping, Symbol.VARIABLES, default_value={}), diff --git a/buildstream/_metaelement.py b/buildstream/_metaelement.py index bc8f36a71..f9d95a3ce 100644 --- a/buildstream/_metaelement.py +++ b/buildstream/_metaelement.py @@ -26,6 +26,7 @@ class MetaElement(): # An abstract object holding data suitable for constructing an Element # # Args: + # project: The project that contains the element # name: The resolved element name # kind: The element kind # provenance: The provenance of the element @@ -36,7 +37,8 @@ class MetaElement(): # env_nocache: List of environment vars which should not be considered in cache keys # public: Public domain data dictionary # - def __init__(self, name, kind, provenance, sources, config, variables, environment, env_nocache, public): + def __init__(self, project, name, kind, provenance, sources, config, variables, environment, env_nocache, public): + self.project = project self.name = name self.kind = kind self.provenance = provenance diff --git a/buildstream/_pipeline.py b/buildstream/_pipeline.py index 87f634cd6..0eb460d34 100644 --- a/buildstream/_pipeline.py +++ b/buildstream/_pipeline.py @@ -273,9 +273,9 @@ class Pipeline(): if meta_element in self._resolved_elements: return self._resolved_elements[meta_element] - element = self.project._create_element(meta_element.kind, - self.artifacts, - meta_element) + element = meta_element.project._create_element(meta_element.kind, + self.artifacts, + meta_element) self._resolved_elements[meta_element] = element @@ -288,8 +288,8 @@ class Pipeline(): # resolve sources for meta_source in meta_element.sources: element._add_source( - self.project._create_source(meta_source.kind, - meta_source) + meta_element.project._create_source(meta_source.kind, + meta_source) ) return element |