about summary refs log tree commit diff homepage
diff options
context:
space:
mode:
authorMartin Nowack <m.nowack@imperial.ac.uk>2020-11-30 17:08:06 +0000
committerMartinNowack <2443641+MartinNowack@users.noreply.github.com>2020-12-02 15:11:39 +0000
commit96ce9feee0c05275cc2dae9fb0e2f9f42b035c91 (patch)
treec987c8dcc0464aa5b254a8a0e0546f0bb6097dfb
parentd450b92e6faa361dae7f425e285b42b6792691d0 (diff)
downloadklee-96ce9feee0c05275cc2dae9fb0e2f9f42b035c91.tar.gz
Add Github Actions for KLEE CI based @jordr
Add support for Github Actions to use as new CI.
This builds all the components as the original Travis CI script.
-rw-r--r--.github/workflows/build.yaml185
-rw-r--r--README.md1
-rw-r--r--scripts/build/v-clang.inc15
-rw-r--r--scripts/build/v-llvm.inc4
4 files changed, 200 insertions, 5 deletions
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
new file mode 100644
index 00000000..bebba374
--- /dev/null
+++ b/.github/workflows/build.yaml
@@ -0,0 +1,185 @@
+name: CI
+
+on:
+  pull_request:
+    branches: master
+  push:
+    branches: master
+
+# Defaults for building KLEE
+env:
+  BASE_IMAGE: ubuntu:bionic-20200807
+  REPOSITORY: klee
+  COVERAGE: 0
+  DISABLE_ASSERTIONS: 0
+  ENABLE_DOXYGEN: 0
+  ENABLE_OPTIMIZED: 1
+  ENABLE_DEBUG: 1
+  GTEST_VERSION: 1.7.0
+  KLEE_RUNTIME_BUILD: "Debug+Asserts"
+  LLVM_VERSION: 9
+  METASMT_VERSION: qf_abv
+  MINISAT_VERSION: "master"
+  REQUIRES_RTTI: 0
+  SANITIZER_BUILD:
+  SOLVERS: STP:Z3
+  STP_VERSION: 2.3.3
+  TCMALLOC_VERSION: 2.7
+  UCLIBC_VERSION: klee_uclibc_v1.2
+  USE_TCMALLOC: 1
+  USE_LIBCXX: 1
+  Z3_VERSION: 4.8.4
+
+jobs:
+  Linux:
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        name: [
+                "LLVM 10",
+                "LLVM 9",
+                "LLVM 8",
+                "LLVM 7",
+                "LLVM 6",
+                "LLVM 5",
+                "LLVM 4",
+                "LLVM 3.9",
+                "LLVM 3.8",
+                "ASan",
+                "UBSan",
+                "MSan",
+                "Z3 only",
+                "metaSMT STP",
+                "metaSMT Boolector",
+                "STP master",
+                "Latest klee-uclibc",
+                "Asserts enabled",
+                "No TCMalloc, optimised runtime",
+            ]
+        include:
+          - name: "LLVM 10"
+            env:
+              LLVM_VERSION: 10
+          - name: "LLVM 9"
+            env:
+              LLVM_VERSION: 9
+          - name: "LLVM 8"
+            env:
+              LLVM_VERSION: 8
+          - name: "LLVM 7"
+            env:
+              LLVM_VERSION: 7
+          - name: "LLVM 6"
+            env:
+              LLVM_VERSION: 6
+          - name: "LLVM 5"
+            env:
+              LLVM_VERSION: 5
+          - name: "LLVM 4"
+            env:
+              LLVM_VERSION: 4
+          - name: "LLVM 3.9"
+            env:
+              LLVM_VERSION: 3.9
+          - name: "LLVM 3.8"
+            env:
+              LLVM_VERSION: 3.8
+              USE_LIBCXX: 0
+          # Sanitizer builds. Do unoptimized build otherwise the optimizer might remove problematic code
+          - name: "ASan"
+            env:
+              SANITIZER_BUILD: address
+              ENABLE_OPTIMIZED: 0
+              USE_TCMALLOC: 0
+          - name: "UBSan"
+            env:
+              SANITIZER_BUILD: undefined
+              ENABLE_OPTIMIZED: 0
+              USE_TCMALLOC: 0
+          - name: "MSan"
+            env:
+              SANITIZER_BUILD: memory
+              ENABLE_OPTIMIZED: 0
+              USE_TCMALLOC: 0
+              SOLVERS: STP
+            # Test just using Z3 only
+          - name: "Z3 only"
+            env:
+              SOLVERS: Z3
+          # Test just using metaSMT
+          - name: "metaSMT STP"
+            env:
+              SOLVERS: metaSMT
+              METASMT_DEFAULT: STP
+              REQUIRES_RTTI: 1
+          - name: "metaSMT Boolector"
+            env:
+              SOLVERS: metaSMT
+              METASMT_DEFAULT: BTOR
+              REQUIRES_RTTI: 1
+          # Test we can build against STP master
+          - name: "STP master"
+            env:
+              SOLVERS: STP
+              STP_VERSION: master
+          # Check we can build latest klee-uclibc branch
+          - name: "Latest klee-uclibc"
+            env:
+              UCLIBC_VERSION: klee_0_9_29
+          # Check at least one build with Asserts disabled.
+          - name: "Asserts enabled"
+            env:
+              SOLVERS: STP
+              DISABLE_ASSERTIONS: 1
+          # Check without TCMALLOC and with an optimised runtime library
+          - name: "No TCMalloc, optimised runtime"
+            env:
+              USE_TCMALLOC: 0
+              KLEE_RUNTIME_BUILD: "Release+Debug+Asserts"
+    steps:
+      - name: Checkout KLEE source code
+        uses: actions/checkout@v2
+      - name: Build KLEE
+        env: ${{ matrix.env }}
+        run: scripts/build/build.sh klee --docker --create-final-image
+      - name: Run tests
+        run: sudo scripts/build/run-tests.sh --run-docker --debug
+
+  macOS:
+    runs-on: macos-latest
+    env:
+      BASE: /tmp
+      SOLVERS: STP
+      UCLIBC_VERSION: 0
+      USE_TCMALLOC: 0
+      USE_LIBCXX: 0
+    steps:
+      - name: Install newer version of Bash
+        run: brew install bash
+      - name: Checkout KLEE source code
+        uses: actions/checkout@v2
+      - name: Build KLEE
+        run: scripts/build/build.sh klee --debug --install-system-deps
+      - name: Run tests
+        run: scripts/build/run-tests.sh /tmp/klee_build* --debug
+
+  Docker:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout KLEE Code
+        uses: actions/checkout@v2
+      - name: Build Docker image
+        run: docker build .
+
+  Coverage:
+    runs-on: ubuntu-latest
+    env:
+      ENABLE_OPTIMIZED: 0
+      COVERAGE: 1
+    steps:
+      - name: Checkout KLEE source code
+        uses: actions/checkout@v2
+      - name: Build KLEE
+        run: scripts/build/build.sh klee --docker --create-final-image
+      - name: Run tests
+        run: sudo scripts/build/run-tests.sh --coverage --upload-coverage --run-docker --debug
\ No newline at end of file
diff --git a/README.md b/README.md
index d1b18c57..bbadb242 100644
--- a/README.md
+++ b/README.md
@@ -2,6 +2,7 @@ KLEE Symbolic Virtual Machine
 =============================
 
 [![Build Status](https://travis-ci.com/klee/klee.svg?branch=master)](https://travis-ci.com/klee/klee)
+[![Build Status](https://github.com/klee/klee/workflows/CI/badge.svg)](https://github.com/klee/klee/actions?query=workflow%3ACI)
 [![Build Status](https://api.cirrus-ci.com/github/klee/klee.svg)](https://cirrus-ci.com/github/klee/klee)
 [![Coverage](https://codecov.io/gh/klee/klee/branch/master/graph/badge.svg)](https://codecov.io/gh/klee/klee)
 
diff --git a/scripts/build/v-clang.inc b/scripts/build/v-clang.inc
index 29dce9cb..c6a2cf58 100644
--- a/scripts/build/v-clang.inc
+++ b/scripts/build/v-clang.inc
@@ -5,7 +5,20 @@ required_variables_clang=(
 artifact_dependency_clang=("")
 
 setup_variables_clang() {
-  LLVM_VERSION_SHORT="${LLVM_VERSION/./}"
+  local v_a
+  v_a=(${LLVM_VERSION//./ })
+
+  LLVM_VERSION_MAJOR="0"
+  LLVM_VERSION_MINOR="0"
+
+  if [[ "${#v_a[@]}" -ge 1 ]]; then
+    LLVM_VERSION_MAJOR="${v_a[0]}"
+  fi
+  if [[ "${#v_a[@]}" -ge 2 ]]; then
+    LLVM_VERSION_MINOR="${v_a[1]}"
+  fi
+
+  LLVM_VERSION_SHORT="${LLVM_VERSION_MAJOR}${LLVM_VERSION_MINOR}"
 }
 
 export_variables_clang=(
diff --git a/scripts/build/v-llvm.inc b/scripts/build/v-llvm.inc
index 9d84f6c2..7c3ade0a 100644
--- a/scripts/build/v-llvm.inc
+++ b/scripts/build/v-llvm.inc
@@ -27,7 +27,6 @@ setup_variables_llvm() {
 
   LLVM_VERSION_MAJOR="0"
   LLVM_VERSION_MINOR="0"
-  LLVM_VERSION_PATCH="0"
 
   if [[ "${#v_a[@]}" -ge 1 ]]; then
     LLVM_VERSION_MAJOR="${v_a[0]}"
@@ -35,9 +34,6 @@ setup_variables_llvm() {
   if [[ "${#v_a[@]}" -ge 2 ]]; then
     LLVM_VERSION_MINOR="${v_a[1]}"
   fi
-  if [[ "${#v_a[@]}" -ge 3 ]]; then
-    LLVM_VERSION_PATCH="${v_a[2]}"
-  fi
 
   LLVM_VERSION_SHORT="${LLVM_VERSION_MAJOR}${LLVM_VERSION_MINOR}"
 }