From dc920de658294965e2bc6c0df1585f69fc143335 Mon Sep 17 00:00:00 2001 From: Andre Anjos <andre.dos.anjos@gmail.com> Date: Wed, 13 Feb 2019 17:04:01 +0100 Subject: [PATCH] [scripts][ci] Add base-build subcommand for bob.conda --- bob/devtools/scripts/ci.py | 51 ++++++++++++++++++++++++++++++++++++++ setup.py | 1 + 2 files changed, 52 insertions(+) diff --git a/bob/devtools/scripts/ci.py b/bob/devtools/scripts/ci.py index ced32008..05cd57d5 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 f1dd0ff7..3b9dca20 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', -- GitLab