aboutsummaryrefslogtreecommitdiff
path: root/cbcbuild.py
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-06-29 00:29:14 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-06-29 00:29:14 -0400
commitf293e7d7c76f383eae64f224834815f1b14a78e6 (patch)
treeb5759354b46470d25beafccfdeb48eabae03ff83 /cbcbuild.py
parent3f6e82f632027904e2912664cbb1c60cdc79a509 (diff)
downloadcbc-f293e7d7c76f383eae64f224834815f1b14a78e6.tar.gz
Getting closer to the real deal
Diffstat (limited to 'cbcbuild.py')
-rwxr-xr-x[-rw-r--r--]cbcbuild.py103
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