Beispiel #1
0
def main():
    parser = argparse.ArgumentParser(description='catapult project build generator')
    parser.add_argument('--compiler-configuration', help='path to compiler configuration yaml', required=True)
    parser.add_argument('--build-configuration', help='path to build configuration yaml', required=True)
    parser.add_argument('--operating-system', help='operating system', required=True)
    parser.add_argument('--user', help='docker user', required=True)
    parser.add_argument('--destination-image-label', help='docker destination image label', required=True)
    parser.add_argument('--dry-run', help='outputs desired commands without runing them', action='store_true')
    parser.add_argument('--base-image-names-only', help='only output the base image names', action='store_true')
    args = parser.parse_args()

    options = OptionsManager(args)

    if args.base_image_names_only:
        print(options.build_base_image_name)
        print(options.prepare_base_image_name)
        return

    docker_run = create_docker_run_command(options, args.compiler_configuration, args.build_configuration, args.user)

    environment_manager = EnvironmentManager(args.dry_run)
    environment_manager.rmtree(OUTPUT_DIR)
    environment_manager.mkdirs(BINARIES_DIR)
    environment_manager.mkdirs(options.ccache_path / 'tmp', exist_ok=True)
    environment_manager.mkdirs(options.conan_path, exist_ok=True)

    print('building project')

    process_manager = ProcessManager(args.dry_run)

    return_code = process_manager.dispatch_subprocess(docker_run)
    if return_code:
        sys.exit(return_code)

    print('copying files')

    environment_manager.chdir(OUTPUT_DIR)

    for folder_name in ['scripts', 'seed', 'resources']:
        environment_manager.copy_tree_with_symlinks(SRC_DIR / folder_name, folder_name)

    environment_manager.chdir(SRC_DIR)

    print('building docker image')

    container_id = '<dry_run_container_id>' if args.dry_run else None
    prepare_docker_image(process_manager, container_id, {
        'base_image_name': options.prepare_base_image_name,
        'destination_image_label': args.destination_image_label,
        'build_disposition': options.build_disposition
    })
Beispiel #2
0
def main():
    parser = argparse.ArgumentParser(description='catapult lint runner')
    parser.add_argument('--out-dir', help='directory in which to store lint output files', required=True)
    parser.add_argument('--dry-run', help='outputs desired commands without runing them', action='store_true')
    args = parser.parse_args()

    process_manager = ProcessManager(args.dry_run)
    environment_manager = EnvironmentManager(args.dry_run)
    environment_manager.set_env_var('HOME', '/tmp')

    run_cpp_linters(process_manager, args.out_dir)

    environment_manager.chdir('scripts')

    linter_runner = LinterRunner(process_manager, args.out_dir, args.dry_run)
    run_shell_linters(linter_runner, find_files_with_extension(environment_manager, '.sh'))
    run_python_linters(linter_runner, find_files_with_extension(environment_manager, '.py'))
def main():
    parser = argparse.ArgumentParser(
        description='download and install catapult dependencies locally')
    parser.add_argument('--target',
                        help='target dependencies directory',
                        required=True)
    parser.add_argument('--versions',
                        help='locked versions file',
                        required=True)
    parser.add_argument('--download',
                        help='download all dependencies',
                        action='store_true')
    parser.add_argument('--build',
                        help='build all dependencies',
                        action='store_true')
    parser.add_argument('--use-clang',
                        help='uses clang compiler instead of gcc',
                        action='store_true')
    parser.add_argument('--dry-run',
                        help='outputs desired commands without running them',
                        action='store_true')
    parser.add_argument('--force',
                        help='purges any existing files',
                        action='store_true')
    args = parser.parse_args()

    versions = load_versions_map(args.versions)

    environment_manager = EnvironmentManager(args.dry_run)
    if args.force:
        environment_manager.rmtree(args.target)

    target_directory = Path(args.target).absolute()

    source_directory = Path(args.target) / SOURCE_DIR_NAME
    environment_manager.mkdirs(source_directory, exist_ok=True)
    environment_manager.chdir(source_directory)

    process_manager = ProcessManager(args.dry_run)

    dependency_repositories = [('google', 'googletest'),
                               ('google', 'benchmark'),
                               ('mongodb', 'mongo-c-driver'),
                               ('mongodb', 'mongo-cxx-driver'),
                               ('zeromq', 'libzmq'), ('zeromq', 'cppzmq'),
                               ('facebook', 'rocksdb')]

    if args.download:
        print('[x] downloading all dependencies')
        downloader = Downloader(versions, process_manager)
        downloader.download_boost()

        for repository in dependency_repositories:
            downloader.download_git_dependency(repository[0], repository[1])

    if args.build:
        print('[x] building all dependencies')
        builder = Builder(target_directory, versions, process_manager,
                          environment_manager)
        if args.use_clang:
            builder.use_clang()

        builder.build_boost()

        for repository in dependency_repositories:
            builder.build_git_dependency(repository[0], repository[1])