summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Van Berkom <tristan.vanberkom@codethink.co.uk>2018-03-20 18:54:26 +0900
committerTristan Van Berkom <tristan.vanberkom@codethink.co.uk>2018-03-20 18:56:40 +0900
commita3cb8199f2bbf3642efcba18cc7c8430e40a7e2a (patch)
tree3e702614d933034a25722abb62fe3d255e670574
parent3c3e9f79d0b626f61bee34c42b27c36cd114a4d6 (diff)
downloadbuildstream-a3cb8199f2bbf3642efcba18cc7c8430e40a7e2a.tar.gz
source.py and loading: Refactoring of origin handles
The Source object previously stored the __origin_node, __origin_toplevel and __origin_filename, this is from a time when we did not hold on to the plugin's Provenance object explicitly. Since this information comes from the same place, let's just use Plugin._get_provenance() to derive these values, instead of redundantly carrying them along separately.
-rw-r--r--buildstream/_loader.py6
-rw-r--r--buildstream/_metasource.py9
-rw-r--r--buildstream/source.py14
3 files changed, 7 insertions, 22 deletions
diff --git a/buildstream/_loader.py b/buildstream/_loader.py
index 9793581e0..dc092dd0e 100644
--- a/buildstream/_loader.py
+++ b/buildstream/_loader.py
@@ -572,11 +572,7 @@ class Loader():
directory = None
index = sources.index(source)
- meta_source = MetaSource(element_name, index,
- kind, source, directory,
- provenance.node,
- provenance.toplevel,
- provenance.filename)
+ meta_source = MetaSource(element_name, index, kind, source, directory)
meta_sources.append(meta_source)
kind = _yaml.node_get(data, str, Symbol.KIND)
diff --git a/buildstream/_metasource.py b/buildstream/_metasource.py
index 9681b98f2..5f3fa3608 100644
--- a/buildstream/_metasource.py
+++ b/buildstream/_metasource.py
@@ -30,17 +30,10 @@ class MetaSource():
# element_index: The index of the source in the owning element's source list
# kind: The kind of the source
# config: The configuration data for the source
- # origin_node: The original YAML dictionary node defining this source
- # origin_toplevel: The toplevel YAML loaded from the original file
- # origin_filename: The filename in which the node was loaded from
#
- def __init__(self, element_name, element_index, kind, config, directory,
- origin_node, origin_toplevel, origin_filename):
+ def __init__(self, element_name, element_index, kind, config, directory):
self.element_name = element_name
self.element_index = element_index
self.kind = kind
self.config = config
self.directory = directory
- self.origin_node = origin_node
- self.origin_toplevel = origin_toplevel
- self.origin_filename = origin_filename
diff --git a/buildstream/source.py b/buildstream/source.py
index 25476bc08..bf7fa45f3 100644
--- a/buildstream/source.py
+++ b/buildstream/source.py
@@ -87,9 +87,6 @@ class Source(Plugin):
self.__element_name = meta.element_name # The name of the element owning this source
self.__element_index = meta.element_index # The index of the source in the owning element's source list
self.__directory = meta.directory # Staging relative directory
- self.__origin_node = meta.origin_node # YAML node this Source was loaded from
- self.__origin_toplevel = meta.origin_toplevel # Toplevel YAML node for the file
- self.__origin_filename = meta.origin_filename # Filename of the file the source was loaded from
self.__consistency = Consistency.INCONSISTENT # Cached consistency state
self.__tracking = False # Source is scheduled to be tracked
self.__assemble_scheduled = False # Source is scheduled to be assembled
@@ -540,6 +537,7 @@ class Source(Plugin):
context = self._get_context()
project = self._get_project()
toplevel = context._get_toplevel_project()
+ provenance = self._get_provenance()
element_name = self.__element_name
element_idx = self.__element_index
@@ -551,7 +549,7 @@ class Source(Plugin):
if toplevel._ref_storage == ProjectRefStorage.PROJECT_REFS:
node = toplevel.refs.lookup_ref(project.name, element_name, element_idx, write=True)
else:
- node = self.__origin_node
+ node = provenance.node
else:
if toplevel._ref_storage == ProjectRefStorage.PROJECT_REFS:
node = toplevel.refs.lookup_ref(project.name, element_name, element_idx, write=True)
@@ -580,14 +578,12 @@ class Source(Plugin):
else:
# Save the ref in the originating file
#
- toplevel_node = self.__origin_toplevel
- filename = self.__origin_filename
- fullname = os.path.join(toplevel.element_path, filename)
+ fullname = os.path.join(toplevel.element_path, provenance.filename)
try:
- _yaml.dump(toplevel_node, fullname)
+ _yaml.dump(provenance.toplevel, fullname)
except OSError as e:
raise SourceError("{}: Error saving source reference to '{}': {}"
- .format(self, filename, e),
+ .format(self, provenance.filename, e),
reason="save-ref-error") from e
else:
if toplevel._ref_storage == ProjectRefStorage.PROJECT_REFS: