buildman: Provide an internal option to clean the outpur dir

For testing it is useful to clean the output directory before running a
test. This avoids a test interfering with the results of a subsequent
test by leaving data around.

Add this feature as an optional parameter to the control logic.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2014-09-05 19:00:18 -06:00
parent fb3954f9ea
commit 883a321a4b
1 changed files with 10 additions and 1 deletions

View File

@ -5,6 +5,7 @@
import multiprocessing import multiprocessing
import os import os
import shutil
import sys import sys
import board import board
@ -78,7 +79,8 @@ def ShowActions(series, why_selected, boards_selected, builder, options):
print ('Total boards to build for each commit: %d\n' % print ('Total boards to build for each commit: %d\n' %
why_selected['all']) why_selected['all'])
def DoBuildman(options, args, toolchains=None, make_func=None, boards=None): def DoBuildman(options, args, toolchains=None, make_func=None, boards=None,
clean_dir=False):
"""The main control code for buildman """The main control code for buildman
Args: Args:
@ -93,6 +95,8 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None):
board: Boards() object to use, containing a list of available board: Boards() object to use, containing a list of available
boards. If this is None it will be created and scanned. boards. If this is None it will be created and scanned.
""" """
global builder
if options.full_help: if options.full_help:
pager = os.getenv('PAGER') pager = os.getenv('PAGER')
if not pager: if not pager:
@ -209,6 +213,8 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None):
else: else:
dirname = 'current' dirname = 'current'
output_dir = os.path.join(options.output_dir, dirname) output_dir = os.path.join(options.output_dir, dirname)
if clean_dir and os.path.exists(output_dir):
shutil.rmtree(output_dir)
builder = Builder(toolchains, output_dir, options.git_dir, builder = Builder(toolchains, output_dir, options.git_dir,
options.threads, options.jobs, gnu_make=gnu_make, checkout=True, options.threads, options.jobs, gnu_make=gnu_make, checkout=True,
show_unknown=options.show_unknown, step=options.step) show_unknown=options.show_unknown, step=options.step)
@ -230,6 +236,9 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None):
if series: if series:
commits = series.commits commits = series.commits
# Number the commits for test purposes
for commit in range(len(commits)):
commits[commit].sequence = commit
else: else:
commits = None commits = None