diff --git a/bob/devtools/scripts/ci.py b/bob/devtools/scripts/ci.py index ced320084cae86ffdb8fb24996747f842e509707..05cd57d5b7a54a7d1d8675f1c99b8a5e84ad9449 100644 --- a/bob/devtools/scripts/ci.py +++ b/bob/devtools/scripts/ci.py @@ -300,6 +300,57 @@ def pypi(package, dry_run): logger.info('%s: Deployed to PyPI - OK', k) +@ci.command(epilog=''' +Examples: + + 1. Builds a list of packages (base dependencies) defined in a text file + + $ bdt ci base-build -vv order.txt + +''') +@click.argument('order', required=True, type=click.Path(file_okay=True, + dir_okay=False, exists=True), nargs=1) +@click.option('-d', '--dry-run/--no-dry-run', default=False, + help='Only goes through the actions, but does not execute them ' \ + '(combine with the verbosity flags - e.g. ``-vvv``) to enable ' \ + 'printing to help you understand what will be done') +@verbosity_option() +@bdt.raise_on_error +def base_build(order, dry_run): + """Builds base (dependence) packages + + This command builds dependence packages (packages that are not Bob/BEAT + packages) in the CI infrastructure. It is **not** meant to be used outside + this context. + """ + + from ..constants import CONDA_BUILD_CONFIG + from ..build import base_build as _build + + condarc = os.path.join(os.environ['CONDA_ROOT'], 'condarc') + logger.info('Loading (this build\'s) CONDARC file from %s...', condarc) + with open(condarc, 'rb') as f: + condarc_options = yaml.load(f) + + # dump packages at conda_root + condarc_options['croot'] = os.path.join(os.environ['CONDA_ROOT'], + 'conda-bld') + + # loads dirnames from order file (accepts # comments and empty lines) + recipes = [] + with open(order, 'rt') as f: + for line in f: + line = line.partition('#')[0].strip() + if line: recipes.append(line) + + for recipe in recipes: + if not os.path.exists(os.path.join(recipe, 'meta.yaml')): + # ignore - not a conda package + continue + base_build(SERVER, True, recipe, CONDA_BUILD_CONFIG, + os.environ['PYTHON_VERSION'], args.python_version, condarc_options) + + @ci.command(epilog=''' Examples: diff --git a/setup.py b/setup.py index f1dd0ff7977904896aa53bacc9eb1446571f8395..3b9dca20482d7cfb712aca91f45e39c8b2a0f596 100644 --- a/setup.py +++ b/setup.py @@ -59,6 +59,7 @@ setup( ], 'bdt.ci.cli': [ + 'base-build = bob.devtools.scripts.ci:base_build', 'build = bob.devtools.scripts.ci:build', 'clean = bob.devtools.scripts.ci:clean', 'base-deploy = bob.devtools.scripts.ci:base_deploy',