def main(): """Entry point""" toolchainlist = ["iar", "uvision", "uvision5"] default_tests = [test_name_known("MBED_BLINKY")] targetnames = TARGET_NAMES targetnames.sort() parser = argparse.ArgumentParser( description="Test progen builders. Leave any flag off" " to run with all possible options.") parser.add_argument("-i", dest="ides", default=toolchainlist, type=argparse_many( argparse_force_lowercase_type( toolchainlist, "toolchain")), help="The target IDE: %s" % str(toolchainlist)) parser.add_argument("-p", type=argparse_many(test_name_known), dest="programs", help="The index of the desired test program: [0-%d]" % (len(TESTS) - 1), default=default_tests) parser.add_argument("-n", type=argparse_many(test_name_known), dest="programs", help="The name of the desired test program", default=default_tests) parser.add_argument("-m", "--mcu", metavar="MCU", default='LPC1768', nargs="+", type=argparse_force_uppercase_type(targetnames, "MCU"), help="generate project for the given MCU (%s)" % ', '.join(targetnames)) parser.add_argument("-c", "--clean", dest="clean", action="store_true", help="clean up the exported project files", default=False) options = parser.parse_args() test = ProgenBuildTest(options.ides, options.mcu, options.programs) successes, failures, skips = test.generate_and_build(clean=options.clean) print_results(successes, failures, skips) sys.exit(len(failures))
def main(): """Entry point""" # Parse Options parser = ArgumentParser() targetnames = TARGET_NAMES targetnames.sort() toolchainlist = EXPORTERS.keys() toolchainlist.sort() parser.add_argument("-m", "--mcu", metavar="MCU", default='LPC1768', type=argparse_force_uppercase_type(targetnames, "MCU"), help="generate project for the given MCU ({})".format( ', '.join(targetnames))) parser.add_argument("-i", dest="ide", default='uvision', type=argparse_force_lowercase_type( toolchainlist, "toolchain"), help="The target IDE: %s" % str(toolchainlist)) parser.add_argument("-c", "--clean", action="store_true", default=False, help="clean the export directory") group = parser.add_mutually_exclusive_group(required=False) group.add_argument("-p", type=test_known, dest="program", help="The index of the desired test program: [0-%s]" % (len(TESTS) - 1)) group.add_argument("-n", type=test_name_known, dest="program", help="The name of the desired test program") parser.add_argument( "-b", dest="build", default=False, action="store_true", help="use the mbed library build, instead of the sources") group.add_argument("-L", "--list-tests", action="store_true", dest="list_tests", default=False, help="list available programs in order and exit") group.add_argument("-S", "--list-matrix", action="store_true", dest="supported_ides", default=False, help="displays supported matrix of MCUs and IDEs") parser.add_argument("-E", action="store_true", dest="supported_ides_html", default=False, help="writes tools/export/README.md") parser.add_argument("--source", action="append", type=argparse_filestring_type, dest="source_dir", default=[], help="The source (input) directory") parser.add_argument("-D", action="append", dest="macros", help="Add a macro definition") parser.add_argument("-o", type=argparse_many(str), dest="opts", default=["debug-info"], help="Toolchain options") options = parser.parse_args() # Print available tests in order and exit if options.list_tests is True: print '\n'.join([str(test) for test in sorted(TEST_MAP.values())]) sys.exit() # Only prints matrix of supported IDEs if options.supported_ides: print mcu_ide_matrix() exit(0) # Only prints matrix of supported IDEs if options.supported_ides_html: html = mcu_ide_matrix(verbose_html=True) try: with open("./export/README.md", "w") as readme: readme.write("Exporter IDE/Platform Support\n") readme.write("-----------------------------------\n") readme.write("\n") readme.write(html) except IOError as exc: print "I/O error({0}): {1}".format(exc.errno, exc.strerror) except: print "Unexpected error:", sys.exc_info()[0] raise exit(0) # Clean Export Directory if options.clean: if exists(EXPORT_DIR): rmtree(EXPORT_DIR) for mcu in options.mcu: zip_proj = not bool(options.source_dir) # Target if not options.mcu: args_error(parser, "argument -m/--mcu is required") # Toolchain if not options.ide: args_error(parser, "argument -i is required") if (options.program is None) and (not options.source_dir): args_error(parser, "one of -p, -n, or --source is required") # Export to selected toolchain """modified by lex 20161103, add ", export_path=EXPORT_UVISION_DIR" to move uvision project file into IoT-OS/projects""" export(options.mcu, options.ide, build=options.build, src=options.source_dir, macros=options.macros, project_id=options.program, clean=options.clean, zip_proj=zip_proj, options=options.opts, export_path=EXPORT_UVISION_DIR)
def main(): """Entry point""" # Parse Options parser = ArgumentParser() targetnames = TARGET_NAMES targetnames.sort() toolchainlist = EXPORTERS.keys() toolchainlist.sort() parser.add_argument("-m", "--mcu", metavar="MCU", type=str.upper, help="generate project for the given MCU ({})".format( ', '.join(targetnames))) parser.add_argument("-i", dest="ide", type=argparse_force_lowercase_type( toolchainlist, "toolchain"), help="The target IDE: %s" % str(toolchainlist)) parser.add_argument("-c", "--clean", action="store_true", default=False, help="clean the export directory") group = parser.add_mutually_exclusive_group(required=False) group.add_argument("-p", type=test_known, dest="program", help="The index of the desired test program: [0-%s]" % (len(TESTS) - 1)) group.add_argument("-n", type=test_name_known, dest="program", help="The name of the desired test program") parser.add_argument( "-b", dest="build", default=False, action="store_true", help="use the mbed library build, instead of the sources") group.add_argument("-L", "--list-tests", action="store_true", dest="list_tests", default=False, help="list available programs in order and exit") group.add_argument("-S", "--list-matrix", dest="supported_ides", default=False, const="matrix", choices=["matrix", "ides"], nargs="?", help="displays supported matrix of MCUs and IDEs") parser.add_argument("-E", action="store_true", dest="supported_ides_html", default=False, help="writes tools/export/README.md") parser.add_argument("--source", action="append", type=argparse_filestring_type, dest="source_dir", default=[], help="The source (input) directory") parser.add_argument("-D", action="append", dest="macros", help="Add a macro definition") parser.add_argument("--profile", dest="profile", action="append", type=argparse_profile_filestring_type, help="Build profile to use. Can be either path to json" \ "file or one of the default one ({})".format(", ".join(list_profiles())), default=[]) parser.add_argument("--update-packs", dest="update_packs", action="store_true", default=False) parser.add_argument("--app-config", dest="app_config", default=None) options = parser.parse_args() # Print available tests in order and exit if options.list_tests is True: print '\n'.join([str(test) for test in sorted(TEST_MAP.values())]) sys.exit() # Only prints matrix of supported IDEs if options.supported_ides: if options.supported_ides == "matrix": print_large_string(mcu_ide_matrix()) elif options.supported_ides == "ides": print mcu_ide_list() exit(0) # Only prints matrix of supported IDEs if options.supported_ides_html: html = mcu_ide_matrix(verbose_html=True) try: with open("./export/README.md", "w") as readme: readme.write("Exporter IDE/Platform Support\n") readme.write("-----------------------------------\n") readme.write("\n") readme.write(html) except IOError as exc: print "I/O error({0}): {1}".format(exc.errno, exc.strerror) except: print "Unexpected error:", sys.exc_info()[0] raise exit(0) if options.update_packs: from tools.arm_pack_manager import Cache cache = Cache(True, True) cache.cache_everything() # Target if not options.mcu: args_error(parser, "argument -m/--mcu is required") # Toolchain if not options.ide: args_error(parser, "argument -i is required") # Clean Export Directory if options.clean: if exists(EXPORT_DIR): rmtree(EXPORT_DIR) zip_proj = not bool(options.source_dir) if (options.program is None) and (not options.source_dir): args_error(parser, "one of -p, -n, or --source is required") exporter, toolchain_name = get_exporter_toolchain(options.ide) mcu = extract_mcus(parser, options)[0] if not exporter.is_target_supported(mcu): args_error(parser, "%s not supported by %s" % (mcu, options.ide)) profile = extract_profile(parser, options, toolchain_name, fallback="debug") if options.clean: rmtree(BUILD_DIR) try: export(mcu, options.ide, build=options.build, src=options.source_dir, macros=options.macros, project_id=options.program, zip_proj=zip_proj, build_profile=profile, app_config=options.app_config) except NotSupportedException as exc: print "[ERROR] %s" % str(exc)
def get_args(argv): parser = ArgumentParser() targetnames = TARGET_NAMES targetnames.sort() toolchainlist = list(EXPORTERS.keys()) + list(EXPORTER_ALIASES.keys()) toolchainlist.sort() parser.add_argument("-m", "--mcu", metavar="MCU", help="generate project for the given MCU ({})".format( ', '.join(targetnames))) parser.add_argument("-i", dest="ide", type=argparse_force_lowercase_type( toolchainlist, "toolchain"), help="The target IDE: %s" % str(toolchainlist)) parser.add_argument("-c", "--clean", action="store_true", default=False, help="clean the export directory") group = parser.add_mutually_exclusive_group(required=False) group.add_argument("-p", type=test_known, dest="program", help="The index of the desired test program: [0-%s]" % (len(TESTS) - 1)) group.add_argument("-n", type=test_name_known, dest="program", help="The name of the desired test program") parser.add_argument( "-b", dest="build", default=False, action="store_true", help="use the mbed library build, instead of the sources") group.add_argument("-L", "--list-tests", action="store_true", dest="list_tests", default=False, help="list available programs in order and exit") group.add_argument("-S", "--list-matrix", dest="supported_ides", default=False, const="matrix", choices=["matrix", "ides"], nargs="?", help="displays supported matrix of MCUs and IDEs") group.add_argument("--update-packs", dest="update_packs", action="store_true", default=False) parser.add_argument( "-E", action="store_true", dest="supported_ides_html", default=False, help="Generate a markdown version of the results of -S in README.md") parser.add_argument("--build", type=argparse_filestring_type, dest="build_dir", default=None, help="Directory for the exported project files") parser.add_argument("--source", action="append", type=argparse_filestring_type, dest="source_dir", default=[], help="The source (input) directory") parser.add_argument("-D", action="append", dest="macros", help="Add a macro definition") parser.add_argument( "--profile", dest="profile", action="append", type=argparse_profile_filestring_type, help=("Build profile to use. Can be either path to json" "file or one of the default one ({})".format(", ".join( list_profiles()))), default=[]) parser.add_argument("--app-config", dest="app_config", default=None) parser.add_argument( "-z", action="store_true", default=None, dest="zip", ) parser.add_argument( "--ignore", dest="ignore", type=argparse_many(str), default=None, help=("Comma separated list of patterns to add to mbedignore " "(eg. ./main.cpp)")) return parser.parse_args(argv), parser
def main(): """Entry point""" # Parse Options parser = ArgumentParser() targetnames = TARGET_NAMES targetnames.sort() toolchainlist = EXPORTERS.keys() toolchainlist.sort() parser.add_argument("-m", "--mcu", metavar="MCU", default='LPC1768', type=argparse_force_uppercase_type(targetnames, "MCU"), help="generate project for the given MCU ({})".format( ', '.join(targetnames))) parser.add_argument("-i", dest="ide", default='uvision', type=argparse_force_lowercase_type( toolchainlist, "toolchain"), help="The target IDE: %s"% str(toolchainlist)) parser.add_argument("-c", "--clean", action="store_true", default=False, help="clean the export directory") group = parser.add_mutually_exclusive_group(required=False) group.add_argument( "-p", type=test_known, dest="program", help="The index of the desired test program: [0-%s]"% (len(TESTS)-1)) group.add_argument("-n", type=test_name_known, dest="program", help="The name of the desired test program") parser.add_argument("-b", dest="build", default=False, action="store_true", help="use the mbed library build, instead of the sources") group.add_argument("-L", "--list-tests", action="store_true", dest="list_tests", default=False, help="list available programs in order and exit") group.add_argument("-S", "--list-matrix", action="store_true", dest="supported_ides", default=False, help="displays supported matrix of MCUs and IDEs") parser.add_argument("-E", action="store_true", dest="supported_ides_html", default=False, help="writes tools/export/README.md") parser.add_argument("--source", action="append", type=argparse_filestring_type, dest="source_dir", default=[], help="The source (input) directory") parser.add_argument("-D", action="append", dest="macros", help="Add a macro definition") parser.add_argument("--profile", type=argparse_filestring_type, default=[], help="Toolchain profile") parser.add_argument("--update-packs", dest="update_packs", action="store_true", default=False) options = parser.parse_args() # Print available tests in order and exit if options.list_tests is True: print '\n'.join([str(test) for test in sorted(TEST_MAP.values())]) sys.exit() # Only prints matrix of supported IDEs if options.supported_ides: print_large_string(mcu_ide_matrix()) exit(0) # Only prints matrix of supported IDEs if options.supported_ides_html: html = mcu_ide_matrix(verbose_html=True) try: with open("./export/README.md", "w") as readme: readme.write("Exporter IDE/Platform Support\n") readme.write("-----------------------------------\n") readme.write("\n") readme.write(html) except IOError as exc: print "I/O error({0}): {1}".format(exc.errno, exc.strerror) except: print "Unexpected error:", sys.exc_info()[0] raise exit(0) if options.update_packs: from tools.arm_pack_manager import Cache cache = Cache(True, True) cache.cache_descriptors() # Clean Export Directory if options.clean: if exists(EXPORT_DIR): rmtree(EXPORT_DIR) for mcu in options.mcu: zip_proj = not bool(options.source_dir) # Target if not options.mcu: args_error(parser, "argument -m/--mcu is required") # Toolchain if not options.ide: args_error(parser, "argument -i is required") if (options.program is None) and (not options.source_dir): args_error(parser, "one of -p, -n, or --source is required") # Export to selected toolchain exporter, toolchain_name = get_exporter_toolchain(options.ide) if options.mcu not in exporter.TARGETS: args_error(parser, "%s not supported by %s"%(options.mcu,options.ide)) profile = extract_profile(parser, options, toolchain_name) export(options.mcu, options.ide, build=options.build, src=options.source_dir, macros=options.macros, project_id=options.program, clean=options.clean, zip_proj=zip_proj, build_profile=profile)
def main(): """Entry point""" ide_list = ["iar", "uvision"] default_v2 = [test_name_known("MBED_BLINKY")] default_v5 = [check_valid_mbed_os('tests-mbedmicro-rtos-mbed-basic')] parser = argparse.ArgumentParser( description="Test progen builders. Leave any flag off" " to run with all possible options.") parser.add_argument("-i", dest="ides", default=ide_list, type=argparse_many( argparse_force_lowercase_type( ide_list, "toolchain")), help="The target IDE: %s" % str(ide_list)) parser.add_argument("-p", type=argparse_many(test_known), dest="programs", help="The index of the desired test program: [0-%d]" % (len(TESTS) - 1)) parser.add_argument("-n", type=argparse_many(test_name_known), dest="programs", help="The name of the desired test program") parser.add_argument("-m", "--mcu", help=("Generate projects for the given MCUs"), metavar="MCU", type=argparse_many(str.upper)) parser.add_argument("-os-tests", type=argparse_many(check_valid_mbed_os), dest="os_tests", help="Mbed-os tests") parser.add_argument("-c", "--clean", dest="clean", action="store_true", help="clean up the exported project files", default=False) parser.add_argument("--release", dest="release", type=check_version, help="Which version of mbed to test", default=RELEASE_VERSIONS[-1]) parser.add_argument("--profile", dest="profile", action="append", type=argparse_filestring_type, default=[]) options = parser.parse_args() # targets in chosen release targetnames = [ target[0] for target in get_mbed_official_release(options.release) ] # all targets in release are default test_targets = options.mcu or targetnames if not all([t in targetnames for t in test_targets]): args_error( parser, "Only specify targets in release %s:\n%s" % (options.release, columnate(sorted(targetnames)))) v2_tests, v5_tests = [], [] if options.release == '5': v5_tests = options.os_tests or default_v5 elif options.release == '2': v2_tests = options.programs or default_v2 tests = [] default_test = { key: None for key in ['ide', 'mcu', 'name', 'id', 'src', 'log'] } for mcu in test_targets: for ide in options.ides: log = "build_log.txt" if ide == 'iar' \ else join('build', 'build_log.txt') # add each test case to the tests array default_test.update({'mcu': mcu, 'ide': ide, 'log': log}) for test in v2_tests: default_test.update({'name': TESTS[test]["id"], 'id': test}) tests.append(copy(default_test)) for test in v5_tests: default_test.update({'name': test[0], 'src': [test[1], ROOT]}) tests.append(copy(default_test)) test = ExportBuildTest(tests, parser, options) test.batch_tests(clean=options.clean) print_results(test.successes, test.failures, test.skips) sys.exit(len(test.failures))
def main(): """Entry point""" ide_list = ["iar", "uvision"] default_v2 = [test_name_known("MBED_BLINKY")] default_v5 = [check_valid_mbed_os('tests-mbedmicro-rtos-mbed-basic')] parser = argparse.ArgumentParser(description= "Test progen builders. Leave any flag off" " to run with all possible options.") parser.add_argument("-i", dest="ides", default=ide_list, type=argparse_many(argparse_force_lowercase_type( ide_list, "toolchain")), help="The target IDE: %s"% str(ide_list)) parser.add_argument( "-p", type=argparse_many(test_known), dest="programs", help="The index of the desired test program: [0-%d]" % (len(TESTS) - 1)) parser.add_argument("-n", type=argparse_many(test_name_known), dest="programs", help="The name of the desired test program") parser.add_argument("-m", "--mcu", help=("Generate projects for the given MCUs"), metavar="MCU", type=argparse_many(str.upper)) parser.add_argument("-os-tests", type=argparse_many(check_valid_mbed_os), dest="os_tests", help="Mbed-os tests") parser.add_argument("-c", "--clean", dest="clean", action="store_true", help="clean up the exported project files", default=False) parser.add_argument("--release", dest="release", type=check_version, help="Which version of mbed to test", default=RELEASE_VERSIONS[-1]) parser.add_argument("--profile", dest="profile", action="append", type=argparse_filestring_type, default=[]) options = parser.parse_args() # targets in chosen release targetnames = [target[0] for target in get_mbed_official_release(options.release)] # all targets in release are default test_targets = options.mcu or targetnames if not all([t in targetnames for t in test_targets]): args_error(parser, "Only specify targets in release %s:\n%s" %(options.release, columnate(sorted(targetnames)))) v2_tests, v5_tests = [],[] if options.release == '5': v5_tests = options.os_tests or default_v5 elif options.release == '2': v2_tests = options.programs or default_v2 tests = [] default_test = {key:None for key in ['ide', 'mcu', 'name', 'id', 'src', 'log']} for mcu in test_targets: for ide in options.ides: log = "build_log.txt" if ide == 'iar' \ else join('build', 'build_log.txt') # add each test case to the tests array default_test.update({'mcu': mcu, 'ide': ide, 'log':log}) for test in v2_tests: default_test.update({'name':TESTS[test]["id"], 'id':test}) tests.append(copy(default_test)) for test in v5_tests: default_test.update({'name':test[0],'src':[test[1],ROOT]}) tests.append(copy(default_test)) test = ExportBuildTest(tests, parser, options) test.batch_tests(clean=options.clean) print_results(test.successes, test.failures, test.skips) sys.exit(len(test.failures))
def main(): """Entry point""" # Parse Options parser = ArgumentParser() targetnames = TARGET_NAMES targetnames.sort() toolchainlist = list(EXPORTERS.keys()) toolchainlist.sort() parser.add_argument("-m", "--mcu", metavar="MCU", help="generate project for the given MCU ({})".format( ', '.join(targetnames))) parser.add_argument("-i", dest="ide", type=argparse_force_lowercase_type( toolchainlist, "toolchain"), help="The target IDE: %s"% str(toolchainlist)) parser.add_argument("-c", "--clean", action="store_true", default=False, help="clean the export directory") group = parser.add_mutually_exclusive_group(required=False) group.add_argument( "-p", type=test_known, dest="program", help="The index of the desired test program: [0-%s]"% (len(TESTS)-1)) group.add_argument("-n", type=test_name_known, dest="program", help="The name of the desired test program") parser.add_argument("-b", dest="build", default=False, action="store_true", help="use the mbed library build, instead of the sources") group.add_argument("-L", "--list-tests", action="store_true", dest="list_tests", default=False, help="list available programs in order and exit") group.add_argument("-S", "--list-matrix", dest="supported_ides", default=False, const="matrix", choices=["matrix", "ides"], nargs="?", help="displays supported matrix of MCUs and IDEs") parser.add_argument("-E", action="store_true", dest="supported_ides_html", default=False, help="writes tools/export/README.md") parser.add_argument("--build", type=argparse_filestring_type, dest="build_dir", default=None, help="Directory for the exported project files") parser.add_argument("--source", action="append", type=argparse_filestring_type, dest="source_dir", default=[], help="The source (input) directory") parser.add_argument("-D", action="append", dest="macros", help="Add a macro definition") parser.add_argument("--profile", dest="profile", action="append", type=argparse_profile_filestring_type, help="Build profile to use. Can be either path to json" \ "file or one of the default one ({})".format(", ".join(list_profiles())), default=[]) parser.add_argument("--update-packs", dest="update_packs", action="store_true", default=False) parser.add_argument("--app-config", dest="app_config", default=None) parser.add_argument("--ignore", dest="ignore", type=argparse_many(str), default=None, help="Comma separated list of patterns to add to mbedignore (eg. ./main.cpp)") options = parser.parse_args() # Print available tests in order and exit if options.list_tests is True: print('\n'.join([str(test) for test in sorted(TEST_MAP.values())])) sys.exit() # Only prints matrix of supported IDEs if options.supported_ides: if options.supported_ides == "matrix": print_large_string(mcu_ide_matrix()) elif options.supported_ides == "ides": print(mcu_ide_list()) exit(0) # Only prints matrix of supported IDEs if options.supported_ides_html: html = mcu_ide_matrix(verbose_html=True) try: with open("./export/README.md", "w") as readme: readme.write("Exporter IDE/Platform Support\n") readme.write("-----------------------------------\n") readme.write("\n") readme.write(html) except IOError as exc: print("I/O error({0}): {1}".format(exc.errno, exc.strerror)) except: print("Unexpected error:", sys.exc_info()[0]) raise exit(0) if options.update_packs: from tools.arm_pack_manager import Cache cache = Cache(True, True) cache.cache_everything() # Target if not options.mcu: args_error(parser, "argument -m/--mcu is required") # Toolchain if not options.ide: args_error(parser, "argument -i is required") # Clean Export Directory if options.clean: if exists(EXPORT_DIR): rmtree(EXPORT_DIR) zip_proj = not bool(options.source_dir) notify = TerminalNotifier() if (options.program is None) and (not options.source_dir): args_error(parser, "one of -p, -n, or --source is required") exporter, toolchain_name = get_exporter_toolchain(options.ide) mcu = extract_mcus(parser, options)[0] if not exporter.is_target_supported(mcu): args_error(parser, "%s not supported by %s"%(mcu,options.ide)) profile = extract_profile(parser, options, toolchain_name, fallback="debug") if options.clean: for cls in EXPORTERS.values(): try: cls.clean(basename(abspath(options.source_dir[0]))) except (NotImplementedError, IOError, OSError): pass for f in list(EXPORTERS.values())[0].CLEAN_FILES: try: remove(f) except (IOError, OSError): pass try: export(mcu, options.ide, build=options.build, src=options.source_dir, macros=options.macros, project_id=options.program, zip_proj=zip_proj, build_profile=profile, app_config=options.app_config, export_path=options.build_dir, notify=notify, ignore=options.ignore) except NotSupportedException as exc: print("[ERROR] %s" % str(exc))