#!/usr/bin/env python3 # # Copyright (c) 2024 Raspberry Pi (Trading) Ltd. # # SPDX-License-Identifier: BSD-3-Clause # # Runs all Bazel checks. import argparse import sys from bazel_build import build_all_configurations from bazel_common import ( setup_logging, print_framed_string, print_to_stderr, add_common_args, ) from compare_build_systems import compare_build_systems from check_source_files_in_bazel_build import check_sources_in_bazel_build def main(): setup_logging() failed_steps = [] parser = argparse.ArgumentParser() add_common_args(parser) parser.add_argument( "--program", help="A program to run", choices = [ "all", "build", "other", ], default="all", ) args = parser.parse_args() build_steps = ( { "step_name": "build", "description": "Bazel build", "action": lambda : build_all_configurations(args.picotool_dir), }, ) other_steps = ( { "description": "Ensure build system configurations options match", "action": compare_build_systems, }, { "step_name": "check_srcs_in_build", "description": "Ensure source files are present in Bazel build", "action": lambda : check_sources_in_bazel_build(args.picotool_dir), }, ) steps_to_run = [] run_all_steps = args.program == "all" if args.program == "build" or run_all_steps: steps_to_run.extend(build_steps) if args.program == "other" or run_all_steps: steps_to_run.extend(other_steps) for step in steps_to_run: print_framed_string(f"{step['description']}...") returncode = step["action"]() if returncode != 0: failed_steps.append(step["description"]) print_to_stderr() if failed_steps: print_framed_string("ERROR: One or more steps failed.") for build in failed_steps: print_to_stderr(f" * FAILED: {build}") return 1 print_framed_string("All checks successfully passed!") if __name__ == "__main__": sys.exit(main())