diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-06-29 00:29:14 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-06-29 00:29:14 -0400 |
commit | f293e7d7c76f383eae64f224834815f1b14a78e6 (patch) | |
tree | b5759354b46470d25beafccfdeb48eabae03ff83 /cbcbuild.py | |
parent | 3f6e82f632027904e2912664cbb1c60cdc79a509 (diff) | |
download | cbc-f293e7d7c76f383eae64f224834815f1b14a78e6.tar.gz |
Getting closer to the real deal
Diffstat (limited to 'cbcbuild.py')
-rwxr-xr-x[-rw-r--r--] | cbcbuild.py | 103 |
1 files changed, 67 insertions, 36 deletions
diff --git a/cbcbuild.py b/cbcbuild.py index 35453e5..92d3646 100644..100755 --- a/cbcbuild.py +++ b/cbcbuild.py @@ -1,47 +1,78 @@ +#!/usr/bin/env python +import argparse import os +import sys import cbc -import cbc.server -import conda_build import conda_build.metadata -import conda_build.build -import argparse -import time -from cbc.exceptions import CondaBuildError -parser = argparse.ArgumentParser() -parser.add_argument('cbcfile', action='store', nargs='*', help='Build configuration file') -args = parser.parse_args() + + os.environ['CBC_HOME'] = 'tests/data/build' -env = cbc.environment.Environment() +#sys.argv.append('--force-rebuild') +#sys.argv.append('tests/data/aprio.ini') -# Convert cbcfile paths to absolute paths -args.cbcfile = [ os.path.abspath(x) for x in args.cbcfile ] -# Verify we have a file that exists -for cbcfile in args.cbcfile: - if not os.path.exists(cbcfile): - print('{} does not exist.'.format(cbcfile)) - exit(1) - elif not os.path.isfile(cbcfile): - print('{} is not a file.'.format(cbcfile)) - exit(1) - -# Perform build(s) -for cbcfile in args.cbcfile: - # Ensure the working directory remains the same throughout. - os.chdir(env.pwd) - - metadata = cbc.meta.MetaData(cbcfile, env) - metadata.env.mkpkgdir(metadata.local['package']['name']) - metadata.render_scripts() +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--force-rebuild', + action='store_true', + help='Do not stop if package already installed') + parser.add_argument('cbcfile', + nargs='+', + help='CBC metadata') + args = parser.parse_args() - conda_metadata = conda_build.metadata.MetaData(env.pkgdir) + # Initialize internal environment + env = cbc.environment.Environment() - if cbc.utils.conda_search(conda_metadata.name()) == conda_metadata.dist(): - print('{0} metadata matches an installed package; increment the build number to rebuild.'.format(conda_metadata.dist())) - continue + # Convert cbcfile paths to absolute paths + args.cbcfile = [ os.path.abspath(x) for x in args.cbcfile ] - conda_build.build.build(conda_metadata, get_src=True, verbose=True) - cbc.utils.conda_install(conda_metadata.name()) -
\ No newline at end of file + # Verify we have a file that exists + for cbcfile in args.cbcfile: + if not os.path.exists(cbcfile): + print('{} does not exist.'.format(cbcfile)) + exit(1) + elif not os.path.isfile(cbcfile): + print('{} is not a file.'.format(cbcfile)) + exit(1) + + # Perform build(s) + for cbcfile in args.cbcfile: + print('Using cbc build configuration: {0}'.format(cbcfile)) + # Ensure the working directory remains the same throughout. + os.chdir(env.pwd) + + metadata = cbc.meta.MetaData(cbcfile, env) + metadata.env.mkpkgdir(metadata.local['package']['name']) + metadata.render_scripts() + + conda_metadata = conda_build.metadata.MetaData(env.pkgdir) + + if not args.force_rebuild: + if cbc.utils.conda_search(conda_metadata.name()) == conda_metadata.dist(): + print('{0} metadata matches an installed package; increment the build number to rebuild or use --force-rebuild.'.format(conda_metadata.dist())) + continue + + conda_builder_args = {'get_src': True, 'verbose': False} + + try: + built = cbc.utils.conda_builder(metadata, conda_builder_args) + if not built: + print('Failure occurred while building: {0}'.format(conda_metadata.dist())) + continue + except cbc.exceptions.CondaBuildError as cbe: + print(cbe) + continue + + package_exists = cbc.utils.conda_search(conda_metadata.name()) + if not package_exists: + cbc.utils.conda_install(conda_metadata.name()) + elif package_exists and args.force_rebuild: + cbc.utils.conda_reinstall(conda_metadata.name()) + + print('') + + +
\ No newline at end of file |