summaryrefslogtreecommitdiff
path: root/morphlib/artifact.py
diff options
context:
space:
mode:
Diffstat (limited to 'morphlib/artifact.py')
-rw-r--r--morphlib/artifact.py36
1 files changed, 35 insertions, 1 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.