From 42b2a27da193ecc409b811c530e1faf3f1e342c8 Mon Sep 17 00:00:00 2001 From: Richard Maw Date: Tue, 13 Mar 2012 15:19:54 +0000 Subject: morphlib.builder.Builder: fix sharing env Previous change would share the same environment between all Builders this may not have broken anything yet, but this change in behaviour was unintentional. The relevant cache keys are not altered by Builders and they are set at the time the Builder is created, so the build string can be cached rather than generated every time a cache key is needed --- morphlib/builder.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'morphlib/builder.py') diff --git a/morphlib/builder.py b/morphlib/builder.py index a0805e06..c35d0c41 100644 --- a/morphlib/builder.py +++ b/morphlib/builder.py @@ -542,7 +542,11 @@ class Builder(object): # pragma: no cover self.source_manager = source_manager self.factory = factory self.indent = 0 - self.env = app.clean_env() + # create build environment string in advance + env_names = ("USER", "USERNAME", "LOGNAME", + "TOOLCHAIN_TARGET", "BOOTSTRAP") + env = app.clean_env() + self.build_env = ''.join(k + env[k] for k in env_names) def msg(self, text): spaces = ' ' * self.indent @@ -660,7 +664,8 @@ class Builder(object): # pragma: no cover (str(blob), type(blob))) builder = klass(blob, self.factory, self.app.settings, self.cachedir, - self.get_cache_id(blob), self.tempdir, self.env) + self.get_cache_id(blob), self.tempdir, + self.app.clean_env()) builder.real_msg = self.msg builder.dump_memory_profile = self.dump_memory_profile @@ -697,14 +702,12 @@ class Builder(object): # pragma: no cover raise NotImplementedError('unknown morph kind %s' % blob.morph.kind) - build_env = ("USER", "USERNAME", "LOGNAME", - "TOOLCHAIN_TARGET", "BOOTSTRAP") dict_key = { 'name': blob.morph.name, 'arch': morphlib.util.arch(), 'ref': blob.morph.treeish.sha1, 'kids': ''.join(self.cachedir.key(k) for k in kids), - 'env': ''.join(k + self.env[k] for k in build_env), + 'env': self.build_env, } return dict_key -- cgit v1.2.1