summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2017-11-13 11:15:15 +0100
committerJürg Billeter <j@bitron.ch>2018-02-08 14:04:04 +0100
commit6eeb25876cc533e8f02f63a221864fe1a3207b35 (patch)
tree64945bdbd0054cc05d7a80e2ea479f9561ec6b88
parentb74919501fa65feb4494a44fddc7180a92ad2991 (diff)
downloadbuildstream-6eeb25876cc533e8f02f63a221864fe1a3207b35.tar.gz
Add project attribute to MetaElement
With junctions, elements may be loaded from multiple projects.
-rw-r--r--buildstream/_loader.py3
-rw-r--r--buildstream/_metaelement.py4
-rw-r--r--buildstream/_pipeline.py10
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