summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@gmail.com>2014-09-11 13:08:24 +0000
committerRichard Maw <richard.maw@gmail.com>2014-09-19 12:43:26 +0000
commita013626cf32e8f07be16590e3caa4d5f9839b426 (patch)
treeaa656b67b46263a66f64085d1dc24251c81a4db5
parent5329c28a1de4ec0662344b78e744a2bd1affac99 (diff)
downloadmorph-a013626cf32e8f07be16590e3caa4d5f9839b426.tar.gz
FIXUP: Add compatibility methods to Artifact for fields that moved to Source
This means we can avoid having to rewrite everything immediately after the fields moved.
-rw-r--r--morphlib/artifact.py36
-rw-r--r--morphlib/source.py2
2 files changed, 36 insertions, 2 deletions
diff --git a/morphlib/artifact.py b/morphlib/artifact.py
index aea82357..4fac69c7 100644
--- a/morphlib/artifact.py
+++ b/morphlib/artifact.py
@@ -32,7 +32,8 @@ class Artifact(object):
def __init__(self, source, name):
self.source = source
self.name = name
- self.dependents = []
+ # TODO: Rename to dependents when callers are changed
+ self.dependent_sources = []
def basename(self): # pragma: no cover
return '%s.%s' % (self.source.basename(), str(self.name))
@@ -60,6 +61,39 @@ class Artifact(object):
def __repr__(self): # pragma: no cover
return 'Artifact(%s)' % str(self)
+ # TODO: Remove after build code stops using me
+ def add_dependency(self, artifact): # pragma: no cover
+ return self.source.add_dependency(artifact)
+ def depends_on(self, artifact): # pragma: no cover
+ return self.source.depends_on(artifact)
+ @property
+ def dependencies(self): # pragma: no cover
+ return self.source.dependencies
+ @property
+ def dependents(self): # pragma: no cover
+ seen = set()
+ res = []
+ for s in self.dependent_sources:
+ for a in s.artifacts.itervalues():
+ if a not in seen:
+ seen.add(a)
+ res.append(a)
+ return res
+ @property
+ def cache_id(self): # pragma: no cover
+ return self.source.cache_id
+ @cache_id.setter
+ def cache_id(self, v): # pragma: no cover
+ assert self.source.cache_id is None or v == self.source.cache_id
+ self.source.cache_id = v
+ @property
+ def cache_key(self): # pragma: no cover
+ return self.source.cache_key
+ @cache_key.setter
+ def cache_key(self, v): # pragma: no cover
+ assert (self.source.cache_key is None) or (v == self.source.cache_key)
+ self.source.cache_key = v
+
def walk(self): # pragma: no cover
'''Return list of an artifact and its build dependencies.
diff --git a/morphlib/source.py b/morphlib/source.py
index 86249452..ae46f0c0 100644
--- a/morphlib/source.py
+++ b/morphlib/source.py
@@ -70,7 +70,7 @@ class Source(object):
def add_dependency(self, artifact): # pragma: no cover
if artifact not in self.dependencies:
self.dependencies.append(artifact)
- if self not in artifact.dependents:
+ if self not in artifact.dependent_sources:
artifact.dependent_sources.append(self)
def depends_on(self, artifact): # pragma: no cover