diff options
Diffstat (limited to 'morphlib/artifact.py')
-rw-r--r-- | morphlib/artifact.py | 51 |
1 files changed, 8 insertions, 43 deletions
diff --git a/morphlib/artifact.py b/morphlib/artifact.py index da6d3763..8b4ce65e 100644 --- a/morphlib/artifact.py +++ b/morphlib/artifact.py @@ -22,13 +22,7 @@ class Artifact(object): * ``source`` -- the source from which the artifact is built * ``name`` -- the name of the artifact - * ``cache_key`` -- a cache key to uniquely identify the artifact - * ``cache_id`` -- a dict describing the components of the cache key - * ``dependencies`` -- list of Artifacts that need to be built beforehand - * ``dependents`` -- list of Artifacts that need this Artifact to be built - * ``metadata_version`` -- When the format of the artifact metadata - changes, this version number is raised causing - any existing cached artifacts to be invalidated + * ``dependents`` -- list of Sources that need this Artifact to be built The ``dependencies`` and ``dependents`` lists MUST be modified by the ``add_dependencies`` and ``add_dependent`` methods only. @@ -38,50 +32,21 @@ class Artifact(object): def __init__(self, source, name): self.source = source self.name = name - self.cache_id = None - self.cache_key = None - self.dependencies = [] self.dependents = [] - self.metadata_version = 1 - - def add_dependency(self, artifact): - '''Add ``artifact`` to the dependency list.''' - if artifact not in self.dependencies: - self.dependencies.append(artifact) - artifact.dependents.append(self) - - def depends_on(self, artifact): - '''Do we depend on ``artifact``?''' - return artifact in self.dependencies def basename(self): # pragma: no cover - return '%s.%s.%s' % (self.cache_key, - str(self.source.morphology['kind']), - str(self.name)) + return '%s.%s' % (self.source.basename(), str(self.name)) def metadata_basename(self, metadata_name): # pragma: no cover - return '%s.%s.%s.%s' % (self.cache_key, - str(self.source.morphology['kind']), - str(self.name), - metadata_name) - - def get_dependency_prefix_set(self): - '''Collects all install prefixes of this artifact's build dependencies - - If any of the build dependencies of a chunk artifact are installed - to non-standard prefixes, we need to add those prefixes to the - PATH of the current artifact. - - ''' - result = set() - for d in self.dependencies: - if d.source.morphology['kind'] == 'chunk': - result.add(d.source.prefix) - return result + return '%s.%s' % (self.basename(), metadata_name) def __str__(self): # pragma: no cover return '%s|%s' % (self.source, self.name) + def __repr__(self): # pragma: no cover + return 'Artifact(%s)' % str(self) + + def walk(self): # pragma: no cover '''Return list of an artifact and its build dependencies. @@ -95,7 +60,7 @@ class Artifact(object): def depth_first(a): if a not in done: done.add(a) - for dep in a.dependencies: + for dep in a.source.dependencies: for ret in depth_first(dep): yield ret yield a |