summaryrefslogtreecommitdiff
path: root/morphlib/artifact.py
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2014-09-22 09:22:56 +0000
committerRichard Maw <richard.maw@codethink.co.uk>2014-09-22 09:22:56 +0000
commitcb7eed0a589c7b2ea62ca6df789422d09b9dcb43 (patch)
treee6bb5d5c4e06f14de98569298cc00e3fcbbf829f /morphlib/artifact.py
parente62eced3044c2383de3029e9d7ae2b2649704e80 (diff)
parent945c60a1aa0b48f49c08e70206a5ca24f1c710bb (diff)
downloadmorph-cb7eed0a589c7b2ea62ca6df789422d09b9dcb43.tar.gz
Merge branch 'baserock/richardmaw-os/tidy-build-logic-v7'
Reviewed-by: Lars Wirzenius (+2 to misc fixups) Reviewed-by: Sam Thursfield (+1 to per-source building) Reviewed-by: Paul Sherwood (+1 to per-source building)
Diffstat (limited to 'morphlib/artifact.py')
-rw-r--r--morphlib/artifact.py51
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