buildman: Allow showing the list of boards with -n

As well as showing the number of boards, allow showing the actual list of
boards that would be built, if -v is provided.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2017-01-23 05:38:56 -07:00
parent 147f785f67
commit 8d7523c55c
3 changed files with 17 additions and 14 deletions

View File

@ -141,7 +141,7 @@ means to build all arm boards except nvidia, freescale and anything ending
with 'ball'.
It is convenient to use the -n option to see what will be built based on
the subset given.
the subset given. Use -v as well to get an actual list of boards.
Buildman does not store intermediate object files. It optionally copies
the binary output into a directory when a build is successful. Size

View File

@ -249,15 +249,15 @@ class Boards:
exclude: List of boards to exclude, regardless of 'args'
Returns:
Dictionary which holds the number of boards which were selected
Dictionary which holds the list of boards which were selected
due to each argument, arranged by argument.
"""
result = {}
terms = self._BuildTerms(args)
result['all'] = 0
result['all'] = []
for term in terms:
result[str(term)] = 0
result[str(term)] = []
exclude_list = []
for expr in exclude:
@ -285,7 +285,7 @@ class Boards:
if build_it:
board.build_it = True
if matching_term:
result[matching_term] += 1
result['all'] += 1
result[matching_term].append(board.target)
result['all'].append(board.target)
return result

View File

@ -48,9 +48,9 @@ def ShowActions(series, why_selected, boards_selected, builder, options):
Args:
series: Series object
why_selected: Dictionary where each key is a buildman argument
provided by the user, and the value is the boards brought
in by that argument. For example, 'arm' might bring in
400 boards, so in this case the key would be 'arm' and
provided by the user, and the value is the list of boards
brought in by that argument. For example, 'arm' might bring
in 400 boards, so in this case the key would be 'arm' and
the value would be a list of board names.
boards_selected: Dict of selected boards, key is target name,
value is Board object
@ -75,9 +75,11 @@ def ShowActions(series, why_selected, boards_selected, builder, options):
print
for arg in why_selected:
if arg != 'all':
print arg, ': %d boards' % why_selected[arg]
print arg, ': %d boards' % len(why_selected[arg])
if options.verbose:
print ' %s' % ' '.join(why_selected[arg])
print ('Total boards to build for each commit: %d\n' %
why_selected['all'])
len(why_selected['all']))
def DoBuildman(options, args, toolchains=None, make_func=None, boards=None,
clean_dir=False):
@ -221,9 +223,10 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None,
options.git_dir, count, series=None, allow_overwrite=True)
else:
series = None
options.verbose = True
if not options.summary:
options.show_errors = True
if not options.dry_run:
options.verbose = True
if not options.summary:
options.show_errors = True
# By default we have one thread per CPU. But if there are not enough jobs
# we can have fewer threads and use a high '-j' value for make.