diff options
author | Martin Nowack <m.nowack@imperial.ac.uk> | 2020-09-14 12:10:14 +0100 |
---|---|---|
committer | Cristian Cadar <c.cadar@imperial.ac.uk> | 2020-09-30 16:34:47 +0100 |
commit | d5845873276f142f785cab0d3489209b3a4980ab (patch) | |
tree | 62bcbb442abac3ba34016011ba9d2e842d58d27d /scripts/build/build-travis-container.py | |
parent | 3983b23eac93b0e6f28ffba4b626401c5280c10f (diff) | |
download | klee-d5845873276f142f785cab0d3489209b3a4980ab.tar.gz |
Replace travis container build script with python-based version
Diffstat (limited to 'scripts/build/build-travis-container.py')
-rwxr-xr-x | scripts/build/build-travis-container.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/scripts/build/build-travis-container.py b/scripts/build/build-travis-container.py new file mode 100755 index 00000000..d2baf4a9 --- /dev/null +++ b/scripts/build/build-travis-container.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python3 + +import yaml +import subprocess +import os + +(abs_path, _) = os.path.split(os.path.abspath(__file__)) + +with open(os.path.join(abs_path,"../../.travis.yml"), 'r') as stream: + try: + travis_config = yaml.safe_load(stream) + global_env = travis_config['env']['global'] + for job in travis_config['jobs']['include']: + if job['name'] in ["Docker", "macOS"]: + print("Skip: {}".format(job['name'])) + continue + print("Building: {}".format(job['name'])) + + + # Copy current environment + build_env = os.environ.copy() + + build_vars = {} + # Setup global build variables + for e in global_env: + (k,v) = e.split("=") + build_vars[k] = v + + # Override with job specific values + for e in job['env'].strip("").split(" "): + (k,v) = e.split("=") + build_vars[k] = v + + for k,v in build_vars.items(): + build_env[k] = v + + cmd = [os.path.join(abs_path, 'build.sh'), + 'klee', # build KLEE and all its dependencies + '--docker', # using docker containers + '--push-docker-deps', # push containers if possible + '--debug', # print debug output + '--create-final-image', # assume KLEE is the final image + ] + + env_str = [k+"="+v for (k,v) in build_vars.items()] + print("{} {}".format(" ".join(env_str)," ".join(cmd)) ) + + process = subprocess.Popen(cmd, # Assume KLEE is the final image + stdout=subprocess.PIPE, + universal_newlines=True, + env = build_env) + + while True: + output = process.stdout.readline() + print(output.strip()) + return_code = process.poll() + if return_code is not None: + print('Building image failed: {}'.format(return_code)) + for output in process.stdout.readlines(): + print(output.strip()) + break + + except yaml.YAMLError as exc: + print(exc) \ No newline at end of file |