#!/usr/bin/python from sys import stdout import yamlconfig import configsearch import gitcache import yamldoctree import brdefinitions # Generates a config file parser parser = yamlconfig.load(join(dirname(m.__file__), 'config-schema.yaml') for m in (gitcache, yamldoctree, brdefinitions) if exists(join(dirname(m.__file__), 'config-schema.yaml')) # Generates a command-line parser parser = parser.parse_files(configsearch.find_config('byod')) options = parser.parse_argv() with brdefinitions.load_file_tree(options) as filetree: yaml_tree = yamldoctree.YAMLTree(filetree) defs = brdefinitions.Definitions(yaml_tree) # Resolve refs and generate instructions, # including cache IDs for produced artifacts. with gitcache.load(options.gitcache) as git_cache: build_graph = defs.resolve_build_graph(options.targets, git_cache) build_graph.serialize(stdout)
flatten = chain.from_iterable from multiprocessing import Pool, cpu_count from os.path import dirname, exists, join from sys import stdin import yamlconfig # partly configargparse import configsearch # xdg.BaseDirectory.load_config_paths('byod') import gitcache import yamldoctree import brdefinitions import artifactcache import sandboxlib # Generates a config file parser parser = yamlconfig.load(join(dirname(m.__file__), 'config-schema.yaml') for m in (gitcache, artifactcache, sandboxlib) if exists(join(dirname(m.__file__), 'config-schema.yaml')) # Generates a command-line parser parser = parser.parse_files(configsearch.find_config('byod')) options = parser.parse_argv() build_graph = brdefinitions.deserialize_build_graph(stdin) assert set(build_graph.find_leaves()) >= set(build_graph.find_targets()) def determine_parallelism(options): nprocs = floor(cpu_count() / options.localbuild.cpus_per_process) or 1 maxjobs = cpu_count() / nprocs return nprocs, maxjobs