summaryrefslogtreecommitdiff
path: root/morphlib/builder.py
diff options
context:
space:
mode:
authorLars Wirzenius <lars.wirzenius@codethink.co.uk>2012-03-01 17:00:43 +0000
committerLars Wirzenius <lars.wirzenius@codethink.co.uk>2012-03-02 17:13:29 +0000
commitcbaf31686322f86cdb595e35db3ef2915da92c5c (patch)
tree19d04e88ade07c51ee64bccfa2461fb34ba250de /morphlib/builder.py
parentae23aa5f17686977973d7df8b5d4916ca29644a0 (diff)
downloadmorph-cbaf31686322f86cdb595e35db3ef2915da92c5c.tar.gz
Simplify instantiation of BlobBuilder subclasses
Diffstat (limited to 'morphlib/builder.py')
-rw-r--r--morphlib/builder.py48
1 files changed, 21 insertions, 27 deletions
diff --git a/morphlib/builder.py b/morphlib/builder.py
index 0223807e..8d7e946d 100644
--- a/morphlib/builder.py
+++ b/morphlib/builder.py
@@ -144,23 +144,27 @@ class Factory(object):
class BlobBuilder(object): # pragma: no cover
- def __init__(self, blob):
+ def __init__(self, blob, factory, settings, cachedir, cache_key, tempdir,
+ env):
self.blob = blob
+ self.factory = factory
+ self.settings = settings
+ self.cachedir = cachedir
+ self.cache_key = cache_key
+ self.tempdir = tempdir
+ self.env = env
- # The following MUST get set by the caller.
- self.builddir = None
- self.destdir = None
- self.settings = None
- self.real_msg = None
- self.cachedir = None
- self.cache_key = None
- self.tempdir = None
- self.factory = None
+ self.builddir = os.path.join(self.factory.staging,
+ '%s.build' % blob.morph.name)
+
self.logfile = None
self.stage_items = []
+ self.real_msg = lambda s: None
self.dump_memory_profile = lambda msg: None
- # Stopwatch to measure build times
+ self.destdir = os.path.join(self.factory.staging,
+ '%s.inst' % blob.morph.name)
+
self.build_watch = morphlib.stopwatch.Stopwatch()
def msg(self, text):
@@ -730,29 +734,19 @@ class Builder(object): # pragma: no cover
def create_blob_builder(self, blob):
if isinstance(blob, morphlib.blobs.Stratum):
- builder = StratumBuilder(blob)
+ klass = StratumBuilder
elif isinstance(blob, morphlib.blobs.Chunk):
- builder = ChunkBuilder(blob)
+ klass = ChunkBuilder
elif isinstance(blob, morphlib.blobs.System):
- builder = SystemBuilder(blob)
+ klass = SystemBuilder
else:
raise TypeError('Blob %s has unknown type %s' %
(str(blob), type(blob)))
- cache_id = self.get_cache_id(blob)
- logging.debug('cache id: %s' % repr(cache_id))
- self.dump_memory_profile('after computing cache id')
-
- s = self.factory.staging
- assert s is not None, repr(s)
- builder.builddir = os.path.join(s, '%s.build' % blob.morph.name)
- builder.destdir = os.path.join(s, '%s.inst' % blob.morph.name)
- builder.settings = self.settings
+ builder = klass(blob, self.factory, self.app.settings, self.cachedir,
+ self.get_cache_id(blob), self.tempdir,
+ self.app.clean_env())
builder.real_msg = self.msg
- builder.cachedir = self.cachedir
- builder.cache_key = cache_id
- builder.tempdir = self.tempdir
- builder.factory = self.factory
builder.dump_memory_profile = self.dump_memory_profile
return builder