mbed-os for GR-LYCHEE

Dependents:   mbed-os-example-blinky-gr-lychee GR-Boads_Camera_sample GR-Boards_Audio_Recoder GR-Boads_Camera_DisplayApp ... more

Committer:
dkato
Date:
Fri Feb 02 05:42:23 2018 +0000
Revision:
0:f782d9c66c49
mbed-os for GR-LYCHEE

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dkato 0:f782d9c66c49 1 """ import and bulid a bunch of example programs """
dkato 0:f782d9c66c49 2
dkato 0:f782d9c66c49 3 from argparse import ArgumentParser
dkato 0:f782d9c66c49 4 import os
dkato 0:f782d9c66c49 5 from os.path import dirname, abspath, basename
dkato 0:f782d9c66c49 6 import os.path
dkato 0:f782d9c66c49 7 import sys
dkato 0:f782d9c66c49 8 import subprocess
dkato 0:f782d9c66c49 9 import json
dkato 0:f782d9c66c49 10
dkato 0:f782d9c66c49 11 ROOT = abspath(dirname(dirname(dirname(dirname(__file__)))))
dkato 0:f782d9c66c49 12 sys.path.insert(0, ROOT)
dkato 0:f782d9c66c49 13
dkato 0:f782d9c66c49 14 from tools.utils import argparse_force_uppercase_type
dkato 0:f782d9c66c49 15 from tools.utils import argparse_many
dkato 0:f782d9c66c49 16 from tools.build_api import get_mbed_official_release
dkato 0:f782d9c66c49 17 import examples_lib as lib
dkato 0:f782d9c66c49 18 from examples_lib import SUPPORTED_TOOLCHAINS, SUPPORTED_IDES
dkato 0:f782d9c66c49 19
dkato 0:f782d9c66c49 20 def main():
dkato 0:f782d9c66c49 21 """Entry point"""
dkato 0:f782d9c66c49 22
dkato 0:f782d9c66c49 23 official_targets = get_mbed_official_release("5")
dkato 0:f782d9c66c49 24 official_target_names = [x[0] for x in official_targets]
dkato 0:f782d9c66c49 25
dkato 0:f782d9c66c49 26
dkato 0:f782d9c66c49 27 parser = ArgumentParser()
dkato 0:f782d9c66c49 28 parser.add_argument("-c", dest="config", default="examples.json")
dkato 0:f782d9c66c49 29 parser.add_argument("-e", "--example",
dkato 0:f782d9c66c49 30 help=("filter the examples used in the script"),
dkato 0:f782d9c66c49 31 type=argparse_many(lambda x: x),
dkato 0:f782d9c66c49 32 default=[])
dkato 0:f782d9c66c49 33 subparsers = parser.add_subparsers()
dkato 0:f782d9c66c49 34 import_cmd = subparsers.add_parser("import")
dkato 0:f782d9c66c49 35 import_cmd.set_defaults(fn=do_import)
dkato 0:f782d9c66c49 36 clone_cmd = subparsers.add_parser("clone")
dkato 0:f782d9c66c49 37 clone_cmd.set_defaults(fn=do_clone)
dkato 0:f782d9c66c49 38 deploy_cmd = subparsers.add_parser("deploy")
dkato 0:f782d9c66c49 39 deploy_cmd.set_defaults(fn=do_deploy)
dkato 0:f782d9c66c49 40 version_cmd = subparsers.add_parser("tag")
dkato 0:f782d9c66c49 41 version_cmd.add_argument("tag")
dkato 0:f782d9c66c49 42 version_cmd.set_defaults(fn=do_versionning)
dkato 0:f782d9c66c49 43 compile_cmd = subparsers.add_parser("compile")
dkato 0:f782d9c66c49 44 compile_cmd.set_defaults(fn=do_compile),
dkato 0:f782d9c66c49 45 compile_cmd.add_argument(
dkato 0:f782d9c66c49 46 "toolchains", nargs="*", default=SUPPORTED_TOOLCHAINS,
dkato 0:f782d9c66c49 47 type=argparse_force_uppercase_type(SUPPORTED_TOOLCHAINS,
dkato 0:f782d9c66c49 48 "toolchain")),
dkato 0:f782d9c66c49 49 compile_cmd.add_argument("-m", "--mcu",
dkato 0:f782d9c66c49 50 help=("build for the given MCU (%s)" %
dkato 0:f782d9c66c49 51 ', '.join(official_target_names)),
dkato 0:f782d9c66c49 52 metavar="MCU",
dkato 0:f782d9c66c49 53 type=argparse_many(
dkato 0:f782d9c66c49 54 argparse_force_uppercase_type(
dkato 0:f782d9c66c49 55 official_target_names, "MCU")),
dkato 0:f782d9c66c49 56 default=official_target_names)
dkato 0:f782d9c66c49 57 export_cmd = subparsers.add_parser("export")
dkato 0:f782d9c66c49 58 export_cmd.set_defaults(fn=do_export),
dkato 0:f782d9c66c49 59 export_cmd.add_argument(
dkato 0:f782d9c66c49 60 "ide", nargs="*", default=SUPPORTED_IDES,
dkato 0:f782d9c66c49 61 type=argparse_force_uppercase_type(SUPPORTED_IDES,
dkato 0:f782d9c66c49 62 "ide"))
dkato 0:f782d9c66c49 63 export_cmd.add_argument("-m", "--mcu",
dkato 0:f782d9c66c49 64 help=("build for the given MCU (%s)" %
dkato 0:f782d9c66c49 65 ', '.join(official_target_names)),
dkato 0:f782d9c66c49 66 metavar="MCU",
dkato 0:f782d9c66c49 67 type=argparse_many(
dkato 0:f782d9c66c49 68 argparse_force_uppercase_type(
dkato 0:f782d9c66c49 69 official_target_names, "MCU")),
dkato 0:f782d9c66c49 70 default=official_target_names)
dkato 0:f782d9c66c49 71 args = parser.parse_args()
dkato 0:f782d9c66c49 72 config = json.load(open(os.path.join(os.path.dirname(__file__),
dkato 0:f782d9c66c49 73 args.config)))
dkato 0:f782d9c66c49 74
dkato 0:f782d9c66c49 75 all_examples = []
dkato 0:f782d9c66c49 76 for example in config['examples']:
dkato 0:f782d9c66c49 77 all_examples = all_examples + [basename(x['repo']) for x in lib.get_repo_list(example)]
dkato 0:f782d9c66c49 78 examples = [x for x in all_examples if x in args.example] if args.example else all_examples
dkato 0:f782d9c66c49 79 return args.fn(args, config, examples)
dkato 0:f782d9c66c49 80
dkato 0:f782d9c66c49 81
dkato 0:f782d9c66c49 82 def do_export(args, config, examples):
dkato 0:f782d9c66c49 83 """Do export and build step"""
dkato 0:f782d9c66c49 84 results = {}
dkato 0:f782d9c66c49 85 results = lib.export_repos(config, args.ide, args.mcu, examples)
dkato 0:f782d9c66c49 86
dkato 0:f782d9c66c49 87 lib.print_summary(results, export=True)
dkato 0:f782d9c66c49 88 failures = lib.get_num_failures(results, export=True)
dkato 0:f782d9c66c49 89 print("Number of failures = %d" % failures)
dkato 0:f782d9c66c49 90 return failures
dkato 0:f782d9c66c49 91
dkato 0:f782d9c66c49 92
dkato 0:f782d9c66c49 93 def do_import(_, config, examples):
dkato 0:f782d9c66c49 94 """Do the import step of this process"""
dkato 0:f782d9c66c49 95 lib.source_repos(config, examples)
dkato 0:f782d9c66c49 96 return 0
dkato 0:f782d9c66c49 97
dkato 0:f782d9c66c49 98
dkato 0:f782d9c66c49 99 def do_clone(_, config, examples):
dkato 0:f782d9c66c49 100 """Do the clone step of this process"""
dkato 0:f782d9c66c49 101 lib.clone_repos(config, examples)
dkato 0:f782d9c66c49 102 return 0
dkato 0:f782d9c66c49 103
dkato 0:f782d9c66c49 104
dkato 0:f782d9c66c49 105 def do_deploy(_, config, examples):
dkato 0:f782d9c66c49 106 """Do the deploy step of this process"""
dkato 0:f782d9c66c49 107 lib.deploy_repos(config, examples)
dkato 0:f782d9c66c49 108 return 0
dkato 0:f782d9c66c49 109
dkato 0:f782d9c66c49 110
dkato 0:f782d9c66c49 111 def do_compile(args, config, examples):
dkato 0:f782d9c66c49 112 """Do the compile step"""
dkato 0:f782d9c66c49 113 results = {}
dkato 0:f782d9c66c49 114 results = lib.compile_repos(config, args.toolchains, args.mcu, examples)
dkato 0:f782d9c66c49 115
dkato 0:f782d9c66c49 116 lib.print_summary(results)
dkato 0:f782d9c66c49 117 failures = lib.get_num_failures(results)
dkato 0:f782d9c66c49 118 print("Number of failures = %d" % failures)
dkato 0:f782d9c66c49 119 return failures
dkato 0:f782d9c66c49 120
dkato 0:f782d9c66c49 121 def do_versionning(args, config, examples):
dkato 0:f782d9c66c49 122 """ Test update the mbed-os to the version specified by the tag """
dkato 0:f782d9c66c49 123 lib.update_mbedos_version(config, args.tag, examples)
dkato 0:f782d9c66c49 124 return 0
dkato 0:f782d9c66c49 125
dkato 0:f782d9c66c49 126
dkato 0:f782d9c66c49 127 if __name__ == "__main__":
dkato 0:f782d9c66c49 128 sys.exit(main())