From 4422c4c0a2d1b5ffa52c771bc094385782fdb151 Mon Sep 17 00:00:00 2001 From: Sam Thursfield Date: Wed, 15 Apr 2015 17:13:13 +0000 Subject: 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 --- distbuild/initiator.py | 26 +++++++++++++++++--------- 1 file 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 -- cgit v1.2.1