Add an option to make.py to dump build metadata

pull/4110/head
Jimmy Brisson 2017-04-04 11:35:37 -05:00
parent da9c10be48
commit 035ddfb057
1 changed files with 22 additions and 0 deletions

View File

@ -23,6 +23,7 @@ import json
from time import sleep from time import sleep
from shutil import copy from shutil import copy
from os.path import join, abspath, dirname from os.path import join, abspath, dirname
from json import load, dump
# Be sure that the tools directory is in the search path # Be sure that the tools directory is in the search path
ROOT = abspath(join(dirname(__file__), "..")) ROOT = abspath(join(dirname(__file__), ".."))
@ -54,6 +55,18 @@ from utils import argparse_dir_not_parent
from tools.toolchains import mbedToolchain, TOOLCHAIN_CLASSES, TOOLCHAIN_PATHS from tools.toolchains import mbedToolchain, TOOLCHAIN_CLASSES, TOOLCHAIN_PATHS
from tools.settings import CLI_COLOR_MAP from tools.settings import CLI_COLOR_MAP
def merge_metadata(filename, toolchain_report):
try:
metadata = load(open(filename))
except (IOError, ValueError):
metadata = {'builds': []}
for tgt in toolchain_report.values():
for tc in tgt.values():
for project in tc.values():
for build in project:
metadata['builds'].append(build[0])
dump(metadata, open(filename, "wb"), indent=4, separators=(',', ': '))
if __name__ == '__main__': if __name__ == '__main__':
# Parse Options # Parse Options
parser = get_default_options_parser(add_app_config=True) parser = get_default_options_parser(add_app_config=True)
@ -177,6 +190,11 @@ if __name__ == '__main__':
default=False, default=False,
help="Link with mbed test library") help="Link with mbed test library")
parser.add_argument("--metadata",
dest="metadata",
default=None,
help="Dump metadata to this file")
# Specify a different linker script # Specify a different linker script
parser.add_argument("-l", "--linker", dest="linker_script", parser.add_argument("-l", "--linker", dest="linker_script",
type=argparse_filestring_type, type=argparse_filestring_type,
@ -249,6 +267,7 @@ if __name__ == '__main__':
%(toolchain,search_path)) %(toolchain,search_path))
# Test # Test
metadata_blob = {} if options.metadata else None
for test_no in p: for test_no in p:
test = Test(test_no) test = Test(test_no)
if options.automated is not None: test.automated = options.automated if options.automated is not None: test.automated = options.automated
@ -287,6 +306,7 @@ if __name__ == '__main__':
clean=options.clean, clean=options.clean,
verbose=options.verbose, verbose=options.verbose,
notify=notify, notify=notify,
report=metadata_blob,
silent=options.silent, silent=options.silent,
macros=options.macros, macros=options.macros,
jobs=options.jobs, jobs=options.jobs,
@ -342,3 +362,5 @@ if __name__ == '__main__':
print "[ERROR] %s" % str(e) print "[ERROR] %s" % str(e)
sys.exit(1) sys.exit(1)
if options.metadata:
merge_metadata(options.metadata, metadata_blob)