Exemplo n.º 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
    })
Exemplo n.º 2
0
def main():
    parser = argparse.ArgumentParser(
        description='catapult project build generator')
    parser.add_argument('--disposition',
                        help='type of image to create',
                        choices=('tests', 'private', 'public'),
                        required=True)
    parser.add_argument('--dry-run',
                        help='outputs desired commands without running them',
                        action='store_true')
    args = parser.parse_args()

    print('preparing {} image'.format(args.disposition))

    process_manager = ProcessManager(args.dry_run)
    environment_manager = EnvironmentManager(args.dry_run)

    is_dev_build = 'tests' == args.disposition
    if is_dev_build:
        for name in ['seed', 'scripts', 'resources']:
            environment_manager.copy_tree_with_symlinks(
                DATA_VOLUME / name, USER_HOME / name)

    bin_folder_names = ['bin', 'deps', 'lib']
    if is_dev_build:
        bin_folder_names.append('tests')

    for name in bin_folder_names:
        environment_manager.copy_tree_with_symlinks(
            DATA_VOLUME / 'binaries' / name, USER_HOME / name)

    # LD_LIBRARY_PATH is not passed when llvm-symbolizer is started via asan, so move libs to system location
    if is_dev_build:
        system_bin_path = environment_manager.system_bin_path
        environment_manager.move_glob_with_symlinks(USER_HOME / 'deps',
                                                    'libLLVM*',
                                                    system_bin_path)
        process_manager.dispatch_subprocess(['ls', '-laF', system_bin_path])

    process_manager.dispatch_subprocess(['ls', '-laF', USER_HOME])

    ls_folder_names = ['bin', 'deps', 'lib']
    if is_dev_build:
        ls_folder_names.extend(['seed', 'scripts', 'resources', 'tests'])

    for name in ls_folder_names:
        process_manager.dispatch_subprocess(['ls', '-laF', USER_HOME / name])