From a013626cf32e8f07be16590e3caa4d5f9839b426 Mon Sep 17 00:00:00 2001 From: Richard Maw Date: Thu, 11 Sep 2014 13:08:24 +0000 Subject: 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. --- morphlib/artifact.py | 36 +++++++++++++++++++++++++++++++++++- morphlib/source.py | 2 +- 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 -- cgit v1.2.1