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 shutil import copy
from os.path import join, abspath, dirname
from json import load, dump
# Be sure that the tools directory is in the search path
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.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__':
# Parse Options
parser = get_default_options_parser(add_app_config=True)
@ -177,6 +190,11 @@ if __name__ == '__main__':
default=False,
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
parser.add_argument("-l", "--linker", dest="linker_script",
type=argparse_filestring_type,
@ -249,6 +267,7 @@ if __name__ == '__main__':
%(toolchain,search_path))
# Test
metadata_blob = {} if options.metadata else None
for test_no in p:
test = Test(test_no)
if options.automated is not None: test.automated = options.automated
@ -287,6 +306,7 @@ if __name__ == '__main__':
clean=options.clean,
verbose=options.verbose,
notify=notify,
report=metadata_blob,
silent=options.silent,
macros=options.macros,
jobs=options.jobs,
@ -342,3 +362,5 @@ if __name__ == '__main__':
print "[ERROR] %s" % str(e)
sys.exit(1)
if options.metadata:
merge_metadata(options.metadata, metadata_blob)