summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2015-04-15 17:13:13 +0000
committerSam Thursfield <sam.thursfield@codethink.co.uk>2015-04-15 17:13:13 +0000
commit4422c4c0a2d1b5ffa52c771bc094385782fdb151 (patch)
tree0799122ca2bed14470591ce7eae43374246e0f9a
parent1c125ade7e19d1f92b49ad010ff4a9ec3faa36e4 (diff)
downloadmorph-4422c4c0a2d1b5ffa52c771bc094385782fdb151.tar.gz
distbuild: Don't create a directory for build output until we get some
Currently, it leaves around empty directories called build-00, build-01, etc. when you run a distbuild that fails to get as far as building something, which is annoying. Change-Id: Id3466e248c327dedaf973bc2fe22d42e5c5570d4
-rw-r--r--distbuild/initiator.py26
1 files changed, 17 insertions, 9 deletions
diff --git a/distbuild/initiator.py b/distbuild/initiator.py
index 48299a3d..35d10147 100644
--- a/distbuild/initiator.py
+++ b/distbuild/initiator.py
@@ -70,10 +70,10 @@ class Initiator(distbuild.StateMachine):
self._step_outputs = {}
self.debug_transitions = False
- if app.settings['initiator-step-output-dir'] == '':
- self._step_output_dir = create_build_directory()
- else:
- self._step_output_dir = app.settings['initiator-step-output-dir']
+ # The build-log output dir is set up in _open_output() when we
+ # receive the first log message. Thus if we never get that far, we
+ # don't leave an empty build-00/ directory lying around.
+ self._step_output_dir = None
def setup(self):
distbuild.crash_point()
@@ -140,13 +140,21 @@ class Initiator(distbuild.StateMachine):
def _handle_build_progress_message(self, msg):
self._app.status(msg='Progress: %(msgtext)s', msgtext=msg['message'])
+ def _get_step_output_dir(self):
+ if self._step_output_dir is None:
+ configured_dir = self._app.settings['initiator-step-output-dir']
+ if configured_dir == '':
+ self._step_output_dir = create_build_directory()
+ else:
+ self._step_output_dir = configured_dir
+ return self._step_output_dir
+
def _open_output(self, msg):
assert msg['step_name'] not in self._step_outputs
- if self._step_output_dir:
- filename = os.path.join(self._step_output_dir,
- 'build-step-%s.log' % msg['step_name'])
- else:
- filename = '/dev/null'
+
+ path = self._get_step_output_dir()
+ filename = os.path.join(path,
+ 'build-step-%s.log' % msg['step_name'])
f = open(filename, 'a')
self._step_outputs[msg['step_name']] = f