diff options
author | Richard Maw <richard.maw@gmail.com> | 2014-09-10 16:03:42 +0000 |
---|---|---|
committer | Richard Maw <richard.maw@gmail.com> | 2014-09-19 12:43:26 +0000 |
commit | 5329c28a1de4ec0662344b78e744a2bd1affac99 (patch) | |
tree | eeb8f01047b37cd244d3b922a71de1e87fc52391 /morphlib/source.py | |
parent | 56ea3690df433ec1224676ca08170ee6c638649d (diff) | |
download | morph-5329c28a1de4ec0662344b78e744a2bd1affac99.tar.gz |
Move dependencies and cache keys to Sources
Diffstat (limited to 'morphlib/source.py')
-rw-r--r-- | morphlib/source.py | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/morphlib/source.py b/morphlib/source.py index 3d7e5a0f..86249452 100644 --- a/morphlib/source.py +++ b/morphlib/source.py @@ -30,8 +30,11 @@ class Source(object): * ``tree`` -- the SHA1 of the tree corresponding to the commit * ``morphology`` -- the in-memory representation of the morphology we use * ``filename`` -- basename of the morphology filename - * ``artifacts`` -- the set of artifacts this source produces. + * ``cache_id`` -- a dict describing the components of the cache key + * ``cache_key`` -- a cache key to uniquely identify the artifact + * ``dependencies`` -- list of Artifacts that need to be built beforehand * ``split_rules`` -- rules for splitting the source's produced artifacts + * ``artifacts`` -- the set of artifacts this source produces. ''' @@ -45,6 +48,9 @@ class Source(object): self.tree = tree self.morphology = morphology self.filename = filename + self.cache_id = None + self.cache_key = None + self.dependencies = [] self.split_rules = split_rules self.artifacts = None @@ -58,6 +64,19 @@ class Source(object): def __repr__(self): # pragma: no cover return 'Source(%s)' % str(self) + def basename(self): # pragma: no cover + return '%s.%s' % (self.cache_key, str(self.morphology['kind'])) + + def add_dependency(self, artifact): # pragma: no cover + if artifact not in self.dependencies: + self.dependencies.append(artifact) + if self not in artifact.dependents: + artifact.dependent_sources.append(self) + + def depends_on(self, artifact): # pragma: no cover + '''Do we depend on ``artifact``?''' + return artifact in self.dependencies + def make_sources(reponame, ref, filename, absref, tree, morphology): kind = morphology['kind'] |