Exemplo n.º 1
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('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
Exemplo n.º 2
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
Exemplo n.º 3
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
Exemplo n.º 4
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
Exemplo n.º 5
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