def main(): results = [] banner('Code validation') result = check_copyright.main() results.append(('Check copyright', result)) result = check_spacing.main() results.append(('Check spacing', result)) result = check_tabs.main() results.append(('Check tabs', result)) result = check_doc.main() results.append(('Check doc', result)) result = subprocess.call('pep8 tools/', shell=True) results.append(('PEP8', result)) banner('Build and run framework tests') result = subprocess.call('make clean test', shell=True) results.append(('Framework tests', result)) banner('Test building the framework library') cmd = 'CROSS_COMPILE= BS_FIRMWARE_CPU=host make lib-framework' result = subprocess.call(cmd, shell=True) results.append(('Framework build (host)', result)) cmd = 'CROSS_COMPILE=arm-none-eabi- BS_FIRMWARE_CPU=cortex-m3 make '\ 'lib-framework' result = subprocess.call(cmd, shell=True) results.append(('Framework build (Cortex-M3)', result)) banner('Test building arch library') cmd = 'CROSS_COMPILE=arm-none-eabi- BS_FIRMWARE_CPU=cortex-m3 make '\ 'lib-arch' result = subprocess.call(cmd, shell=True) results.append(('Arch build (Cortex-M3)', result)) banner('Test building host product') cmd = 'CROSS_COMPILE= PRODUCT=host make ' result = subprocess.call(cmd, shell=True) results.append(('Product host build', result)) banner('Test building sgm775 product') cmd = 'CROSS_COMPILE=arm-none-eabi- PRODUCT=sgm775 make' result = subprocess.call(cmd, shell=True) results.append(('Product sgm775 build', result)) banner('Test building msys3 product') cmd = 'CROSS_COMPILE=arm-none-eabi- PRODUCT=msys3 make' result = subprocess.call(cmd, shell=True) results.append(('Product msys3 build', result)) banner('Test building infrasys4 product') cmd = 'CROSS_COMPILE=arm-none-eabi- PRODUCT=infrasys4 make' result = subprocess.call(cmd, shell=True) results.append(('Product infrasys4 build', result)) banner('Tests summary') total_success = 0 for result in results: if result[1] == 0: total_success += 1 verbose_result = 'Success' else: verbose_result = 'Failed' print('{}: {}'.format(result[0], verbose_result)) assert total_success <= len(results) print('{} / {} passed ({}% pass rate)'.format( total_success, len(results), int(total_success * 100 / len(results)))) if total_success < len(results): return 1 else: return 0
def main(): results = [] banner('Code validation') result = check_copyright.main() results.append(('Check copyright', result)) result = check_spacing.main() results.append(('Check spacing', result)) result = check_tabs.main() results.append(('Check tabs', result)) result = check_doc.main() results.append(('Check doc', result)) result = subprocess.call('python -m pycodestyle tools/', shell=True) results.append(('PyCodeStyle', result)) banner('Build and run framework tests') result = subprocess.call('CC=gcc make clean test', shell=True) results.append(('Framework tests', result)) banner('Test building the framework library') cmd = \ 'CC=gcc ' \ 'BS_FIRMWARE_CPU=host ' \ 'make clean lib-framework' result = subprocess.call(cmd, shell=True) results.append(('Framework build (Host, GCC)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'BS_FIRMWARE_CPU=cortex-m3 ' \ 'make clean lib-framework' result = subprocess.call(cmd, shell=True) results.append(('Framework build (Cortex-M3, GCC)', result)) cmd = \ 'CC=armclang ' \ 'BS_FIRMWARE_CPU=cortex-m3 ' \ 'make clean lib-framework' result = subprocess.call(cmd, shell=True) results.append(('Framework build (Cortex-M3, ARM)', result)) banner('Test building arch library') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'BS_FIRMWARE_CPU=cortex-m3 ' \ 'make clean lib-arch' result = subprocess.call(cmd, shell=True) results.append(('Arch build (Cortex-M3, GCC)', result)) cmd = \ 'CC=armclang ' \ 'BS_FIRMWARE_CPU=cortex-m3 ' \ 'make clean lib-arch' result = subprocess.call(cmd, shell=True) results.append(('Arch build (Cortex-M3, ARM)', result)) banner('Test building host product') cmd = \ 'CC=gcc ' \ 'PRODUCT=host ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product host build (GCC)', result)) banner('Test building sgm775 product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=sgm775 ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product sgm775 release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=sgm775 ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product sgm775 release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=sgm775 ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product sgm775 debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=sgm775 ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product sgm775 debug build (ARM)', result)) banner('Test building sgi575 product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=sgi575 ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product sgi575 release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=sgi575 ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product sgi575 release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=sgi575 ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product sgi575 debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=sgi575 ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product sgi575 debug build (ARM)', result)) banner('Test building n1sdp product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=n1sdp ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product n1sdp debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=n1sdp ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product n1sdp debug build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=n1sdp ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product n1sdp release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=n1sdp ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product n1sdp release build (ARM)', result)) banner('Test building rdn1e1 product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=rdn1e1 ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product rdn1e1 release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=rdn1e1 ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product rdn1e1 release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=rdn1e1 ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product rdn1e1 debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=rdn1e1 ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product rdn1e1 debug build (ARM)', result)) banner('Test building juno product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=juno ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product Juno debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=juno ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product Juno debug build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=juno ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product Juno release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=juno ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product Juno release build (ARM)', result)) banner('Test building synquacer product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=synquacer ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product synquacer release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=synquacer ' \ 'MODE=release ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product synquacer release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=synquacer ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product synquacer debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=synquacer ' \ 'MODE=debug ' \ 'make clean all' result = subprocess.call(cmd, shell=True) results.append(('Product synquacer debug build (ARM)', result)) banner('Tests summary') total_success = 0 for result in results: if result[1] == 0: total_success += 1 verbose_result = 'Success' else: verbose_result = 'Failed' print('{}: {}'.format(result[0], verbose_result)) assert total_success <= len(results) print('{} / {} passed ({}% pass rate)'.format( total_success, len(results), int(total_success * 100 / len(results)))) if total_success < len(results): return 1 else: return 0
def main(): results = [] banner('Code validation') result = check_copyright.main() results.append(('Check copyright', result)) result = check_spacing.main() results.append(('Check spacing', result)) result = check_tabs.main() results.append(('Check tabs', result)) result = check_doc.main() results.append(('Check doc', result)) result = subprocess.call('python -m pycodestyle tools/', shell=True) results.append(('PyCodeStyle', result)) banner('Build and run framework tests') result = subprocess.call('CC=gcc make clean test', shell=True) results.append(('Framework tests', result)) banner('Test building host product') subprocess.run('make clean', shell=True) cmd = \ 'CC=gcc ' \ 'PRODUCT=host ' \ 'make all -j' result = subprocess.call(cmd, shell=True) results.append(('Product host build (GCC)', result)) product_build_debug_and_release('sgm775', results) product_build_debug_and_release('sgi575', results) product_build_debug_and_release('n1sdp', results) product_build_debug_and_release('rdn1e1', results) product_build_debug_and_release('juno', results) product_build_debug_and_release('synquacer', results) product_build_debug_and_release('sgm776', results) product_build_debug_and_release('rdv1', results) product_build_debug_and_release('rdv1mc', results) product_build_debug_and_release('rdn2', results) product_build_debug_and_release('tc0', results) product_build_debug_and_release('tc1', results) product_build_debug_and_release('morello', results) banner('Test building rcar product') # We need to set SYSROOT to </path/to/gcc-toolchain>/aarch64-none-elf # to make LLVM work properly SYS_ROOT_PATH = \ os.path.abspath( subprocess.check_output(["which", "aarch64-none-elf-gcc"]).decode() + '/../../aarch64-none-elf' ) subprocess.run('make clean', shell=True) cmd = \ 'CC=aarch64-none-elf-gcc ' \ 'PRODUCT=rcar ' \ 'MODE=debug ' \ 'make all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rcar debug build (GCC-AArch64)', result)) subprocess.run('make clean', shell=True) cmd = \ 'SYSROOT='+SYS_ROOT_PATH+' ' \ 'CC=clang-11 ' \ 'PRODUCT=rcar ' \ 'MODE=debug ' \ 'make all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rcar debug build (LLVM)', result)) subprocess.run('make clean', shell=True) cmd = \ 'CC=aarch64-none-elf-gcc ' \ 'PRODUCT=rcar ' \ 'MODE=release ' \ 'make all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rcar release build (GCC-AArch64)', result)) subprocess.run('make clean', shell=True) cmd = \ 'SYSROOT='+SYS_ROOT_PATH+' ' \ 'CC=clang-11 ' \ 'PRODUCT=rcar ' \ 'MODE=release ' \ 'make all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rcar release build (LLVM)', result)) banner('Tests summary') total_success = 0 for result in results: if result[1] == 0: total_success += 1 verbose_result = 'Success' else: verbose_result = 'Failed' print('{}: {}'.format(result[0], verbose_result)) assert total_success <= len(results) print('{} / {} passed ({}% pass rate)'.format( total_success, len(results), int(total_success * 100 / len(results)))) if total_success < len(results): return 1 else: return 0
def main(): results = [] banner('Code validation') result = check_copyright.main() results.append(('Check copyright', result)) result = check_spacing.main() results.append(('Check spacing', result)) result = check_tabs.main() results.append(('Check tabs', result)) result = check_doc.main() results.append(('Check doc', result)) result = subprocess.call('python -m pycodestyle tools/', shell=True) results.append(('PyCodeStyle', result)) banner('Build and run framework tests') result = subprocess.call('CC=gcc make clean test', shell=True) results.append(('Framework tests', result)) banner('Test building host product') cmd = \ 'CC=gcc ' \ 'PRODUCT=host ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product host build (GCC)', result)) banner('Test building sgm775 product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=sgm775 ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgm775 release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=sgm775 ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgm775 release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=sgm775 ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgm775 debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=sgm775 ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgm775 debug build (ARM)', result)) banner('Test building sgi575 product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=sgi575 ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgi575 release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=sgi575 ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgi575 release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=sgi575 ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgi575 debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=sgi575 ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgi575 debug build (ARM)', result)) banner('Test building n1sdp product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=n1sdp ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product n1sdp debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=n1sdp ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product n1sdp debug build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=n1sdp ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product n1sdp release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=n1sdp ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product n1sdp release build (ARM)', result)) banner('Test building rdn1e1 product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=rdn1e1 ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rdn1e1 release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=rdn1e1 ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rdn1e1 release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=rdn1e1 ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rdn1e1 debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=rdn1e1 ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rdn1e1 debug build (ARM)', result)) banner('Test building juno product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=juno ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product Juno debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=juno ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product Juno debug build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=juno ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product Juno release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=juno ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product Juno release build (ARM)', result)) banner('Test building synquacer product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=synquacer ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product synquacer release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=synquacer ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product synquacer release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=synquacer ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product synquacer debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=synquacer ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product synquacer debug build (ARM)', result)) banner('Test building sgm776 product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=sgm776 ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgm776 release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=sgm776 ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgm776 release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=sgm776 ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgm776 debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=sgm776 ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product sgm776 debug build (ARM)', result)) banner('Test building rddaniel product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=rddaniel ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rddaniel release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=rddaniel ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rddaniel release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=rddaniel ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rddaniel debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=rddaniel ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rddaniel debug build (ARM)', result)) banner('Test building rddanielxlr product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=rddanielxlr ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rddanielxlr release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=rddanielxlr ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rddanielxlr release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=rddanielxlr ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rddanielxlr debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=rddanielxlr ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rddanielxlr debug build (ARM)', result)) banner('Test building tc0 product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=tc0 ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product tc0 release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=tc0 ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product tc0 release build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=tc0 ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product tc0 debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=tc0 ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product tc0 debug build (ARM)', result)) banner('Test building morello product') cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=morello ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product morello debug build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=morello ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product morello debug build (ARM)', result)) cmd = \ 'CC=arm-none-eabi-gcc ' \ 'PRODUCT=morello ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product morello release build (GCC)', result)) cmd = \ 'CC=armclang ' \ 'PRODUCT=morello ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product morello release build (ARM)', result)) banner('Test building rcar product') cmd = \ 'CC=aarch64-none-elf-gcc ' \ 'PRODUCT=rcar ' \ 'MODE=debug ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rcar debug build (ARM)', result)) cmd = \ 'CC=aarch64-none-elf-gcc ' \ 'PRODUCT=rcar ' \ 'MODE=release ' \ 'make clean all -j' result = subprocess.call(cmd, shell=True) results.append(('Product rcar release build (ARM)', result)) banner('Tests summary') total_success = 0 for result in results: if result[1] == 0: total_success += 1 verbose_result = 'Success' else: verbose_result = 'Failed' print('{}: {}'.format(result[0], verbose_result)) assert total_success <= len(results) print('{} / {} passed ({}% pass rate)'.format( total_success, len(results), int(total_success * 100 / len(results)))) if total_success < len(results): return 1 else: return 0
def main(): results = [] try: client = docker.from_env() banner("Spawning container") try: return dockerize(client) except Exception as ex: print(ex) return 1 except DockerException: pass banner("Code validation") result = check_copyright.main() results.append(("Check copyright", result)) result = check_spacing.main() results.append(("Check spacing", result)) result = check_tabs.main() results.append(("Check tabs", result)) result = check_doc.main() results.append(("Check doc", result)) banner("Build and run framework tests") result = subprocess.call("CC=gcc make clean test", shell=True) results.append(("Framework tests", result)) banner("Test building host product") products = ['host', 'juno', 'rdv1', 'sgm775'] build_types = ['debug', 'release'] toolchains = ['GNU', 'ArmClang'] for product in products: banner("Test building {} product".format(product)) for toolchain in toolchains: if product == 'rcar' and toolchain == 'ArmClang': continue for build_type in build_types: cmd = 'make -f Makefile.cmake ' cmd += 'PRODUCT={} TOOLCHAIN={} MODE={}'.format( product, toolchain, build_type) result = subprocess.call(cmd, shell=True) results.append( ("Product {} build ({})".format(product, toolchain), result)) banner('Tests summary') total_success = 0 for result in results: if result[1] == 0: total_success += 1 verbose_result = "Success" else: verbose_result = "Failed" print("{}: {}".format(result[0], verbose_result)) assert total_success <= len(results) print("{} / {} passed ({}% pass rate)".format( total_success, len(results), int(total_success * 100 / len(results)))) if total_success < len(results): return 1 else: return 0