From 51afd2289db20bcf5063ad9512ab1164154ff093 Mon Sep 17 00:00:00 2001 From: Sam Thursfield Date: Wed, 18 Feb 2015 11:19:20 +0000 Subject: distbuild: Create a new directory to store build logs for each build. It gets messy having hundreds of build-step-xx.log files in the current directory, and if two builds are run in parallel from the same directory the logs for a given chunk will be mixed together in one file. Now, a new directory named build-0, build-1, build-2 etc is created for each new build. If the user passes --initiator-step-output-dir the logs will be placed in that directory, instead. This behaviour is the same as before. --- distbuild/initiator.py | 21 ++++++++++++++++++++- morphlib/plugins/distbuild_plugin.py | 1 - 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/distbuild/initiator.py b/distbuild/initiator.py index ddea8cb3..378c2cae 100644 --- a/distbuild/initiator.py +++ b/distbuild/initiator.py @@ -17,6 +17,7 @@ import cliapp +import itertools import logging import os import random @@ -37,6 +38,20 @@ class _Failed(object): self.msg = msg +def create_build_directory(prefix='build'): + '''Create a new directory to store build logs. + + The directory will be named build-0, unless that directory already exists, + in which case it will be named build-1, and so on. + + ''' + for i in itertools.count(): + path = '%s-%02i' % (prefix, i) + if not os.path.exists(path): + os.mkdir(path) + return path + + class Initiator(distbuild.StateMachine): def __init__(self, cm, conn, app, repo_name, ref, morphology, @@ -51,9 +66,13 @@ class Initiator(distbuild.StateMachine): self._original_ref = original_ref self._steps = None self._step_outputs = {} - self._step_output_dir = app.settings['initiator-step-output-dir'] 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'] + def setup(self): distbuild.crash_point() diff --git a/morphlib/plugins/distbuild_plugin.py b/morphlib/plugins/distbuild_plugin.py index a7d69472..24d5584c 100644 --- a/morphlib/plugins/distbuild_plugin.py +++ b/morphlib/plugins/distbuild_plugin.py @@ -180,7 +180,6 @@ class ControllerDaemon(cliapp.Plugin): self.app.settings.string( ['initiator-step-output-dir'], 'write build output to files in DIR', - default='.', group=group_distbuild) self.app.settings.string( -- cgit v1.2.1