aboutsummaryrefslogtreecommitdiffhomepage
path: root/scripts/build
diff options
context:
space:
mode:
authorMartin Nowack <m.nowack@imperial.ac.uk>2020-09-14 12:10:14 +0100
committerCristian Cadar <c.cadar@imperial.ac.uk>2020-09-30 16:34:47 +0100
commitd5845873276f142f785cab0d3489209b3a4980ab (patch)
tree62bcbb442abac3ba34016011ba9d2e842d58d27d /scripts/build
parent3983b23eac93b0e6f28ffba4b626401c5280c10f (diff)
downloadklee-d5845873276f142f785cab0d3489209b3a4980ab.tar.gz
Replace travis container build script with python-based version
Diffstat (limited to 'scripts/build')
-rwxr-xr-xscripts/build/build-travis-container.py64
-rwxr-xr-xscripts/build/build-travis-containers.sh64
2 files changed, 64 insertions, 64 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
diff --git a/scripts/build/build-travis-containers.sh b/scripts/build/build-travis-containers.sh
deleted file mode 100755
index fe80e29f..00000000
--- a/scripts/build/build-travis-containers.sh
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/bin/bash
-# Build all the docker containers utilized, that would be
-# also build by TravisCI.
-#
-# Every line starting with " - LLVM_VERSION=" is a single setup
-
-set -e
-#set -x
-DIR="$(cd "$(dirname "$0")" && pwd)"
-
-trim() {
- local var="$*"
- # remove leading whitespace characters
- var="${var#"${var%%[![:space:]]*}"}"
- # remove trailing whitespace characters
- var="${var%"${var##*[![:space:]]}"}"
- echo -n "$var"
-}
-
-# Build dependencies only
-isGlobal=0
-isEnv=0
-commons=()
-experiments=()
-while read -r line
-do
- [[ "${line}" == "env:"* ]] && isEnv=1 && continue
- [[ "${line}" == "#stop"* ]] && isEnv=0 && break
-
-
- [[ "${isEnv}" -eq 0 ]] && continue
-
- line="$(trim "${line}")"
-
- # Ignore empty lines
- [[ -z "${line}" ]] && continue
- [[ "${line}" == "#"* ]] && continue
-
- [[ "${line}" == "global:"* ]] && isGlobal=1 && continue
- [[ "${line}" == "matrix:"* ]] && isGlobal=0 && continue
-
-
-
- if [[ "${isGlobal}" -eq 1 ]]; then
- tmp="${line#*-}"
- IFS=: read -r key value <<< "${tmp}"
- key=$(trim "${key}")
- [[ "${key}" == "secure" ]] && continue
- [[ -z "${key}" ]] && continue
- commons+=("${key}=$(trim "${value}")")
- continue
- fi
-
- experiment=$(echo "$line"| grep "\- " | xargs -L 1 | cut -d "-" -f 2)
- if [[ "x$experiment" == "x" ]]; then
- continue
- fi
- experiments+=("${experiment}")
-done < "${DIR}/../../.travis.yml"
-
-for experiment in "${experiments[@]}"; do
- [[ -z "${experiment}" ]] && continue
- /bin/bash -c "${commons[*]} ${experiment} ${DIR}/build.sh klee --docker --push-docker-deps --debug --create-final-image"
-done \ No newline at end of file