Browse Source

Merge pull request #315 from libtom/improve/travis_build

Improve/travis build
Steffen Jaeckel 8 years ago
parent
commit
c8edd3c2e9
14 changed files with 233 additions and 103 deletions
  1. 1 1
      .ci/build.sh
  2. 1 1
      .ci/check_source.sh
  3. 5 5
      .ci/coverage.sh
  4. 4 0
      .ci/coverage_more.sh
  5. 97 0
      .ci/meta_builds.sh
  6. 0 0
      .ci/printinfo.sh
  7. 5 5
      .ci/run.sh
  8. 22 0
      .ci/testbuild.sh
  9. 33 0
      .ci/valgrind.sh
  10. 22 34
      .travis.yml
  11. 22 2
      demos/tv_gen.c
  12. 0 19
      scan_build.sh
  13. 0 15
      testbuild.sh
  14. 21 21
      testme.sh

+ 1 - 1
build.sh → .ci/build.sh

@@ -45,7 +45,7 @@ fi
 
 if [ -a testok.txt ] && [ -f testok.txt ]; then
    if [ "$LTC_COVERAGE" != "" ]; then
-      ./coverage_more.sh > test_coverage_more.txt || exit 1
+      bash .ci/coverage_more.sh > test_coverage_more.txt || exit 1
       lcov_opts="--capture --no-external --directory src -q"
       lcov_out=$(echo coverage_$1_$2_$3 | tr ' -=+' '_')".info"
       lcov $lcov_opts --output-file $lcov_out

+ 1 - 1
check_source.sh → .ci/check_source.sh

@@ -1,7 +1,7 @@
 #!/bin/bash
 
 # output version
-bash printinfo.sh
+bash .ci/printinfo.sh
 
 make clean > /dev/null
 

+ 5 - 5
coverage.sh → .ci/coverage.sh

@@ -23,9 +23,9 @@ if [ "$(echo $3 | grep -v 'makefile[.]')" == "" ]; then
 fi
 
 # output version
-bash printinfo.sh
+bash .ci/printinfo.sh
 
-bash build.sh " $1" " $2" " $3 COVERAGE=1" "$4" "$5"
+bash .ci/build.sh " $1" " $2" " $3 COVERAGE=1" "$4" "$5"
 if [ -a testok.txt ] && [ -f testok.txt ]; then
    echo
 else
@@ -34,11 +34,11 @@ else
    exit 1
 fi
 
-./coverage_more.sh > test_coverage_more.txt || { rm -f testok.txt && exit 1 ; }
+bash .ci/coverage_more.sh "$5" > test_coverage_more.txt || { rm -f testok.txt && exit 1 ; }
 
 make lcov-single
-# if this was executed as './coverage.sh ...' create coverage locally
-if [[ "${0%% *}" == "./${0##*/}" ]]; then
+# if this isn't run on Travis CI create coverage locally
+if [ "$TRAVIS" == "" ]; then
    make lcov-html
 else
    coveralls-lcov coverage.info

+ 4 - 0
coverage_more.sh → .ci/coverage_more.sh

@@ -2,6 +2,10 @@
 
 set -e
 
+if [ "$#" = "1" -a "$(echo $1 | grep 'gmp')" != "" ]; then
+   ./test t gmp
+fi
+
 ./sizes
 ./constants
 

+ 97 - 0
.ci/meta_builds.sh

@@ -0,0 +1,97 @@
+#!/bin/bash
+#
+# This builds different stuff depending on the compiler:
+# gcc - valgrind, coverage
+# clang - asan, ubsan, scan-build
+# both - the two testbuild's NOTEST and NOFILE
+
+set -e
+
+if [ "$#" = "5" -a "$(echo $3 | grep -v 'makefile[.]')" = "" ]; then
+   echo "only run $0 for the regular makefile, early exit success"
+   exit 0
+fi
+
+if [ -f /proc/cpuinfo ]
+then
+   MAKE_JOBS=$(( ($(cat /proc/cpuinfo | grep -E '^processor[[:space:]]*:' | tail -n -1 | cut -d':' -f2) + 1) * 2 + 1 ))
+else
+   MAKE_JOBS=8
+fi
+
+function run_gcc() {
+   bash .ci/check_source.sh "CHECK_SOURCES" "$2" "$3" "$4" "$5"
+
+   make clean &>/dev/null
+
+   echo
+   echo "Build for ASAN..."
+
+   make -j$MAKE_JOBS CFLAGS="-fsanitize=address -fno-omit-frame-pointer -static-libasan $2 $CFLAGS $4" EXTRALIBS="-lasan $5" test LTC_DEBUG=1 1>gcc_1.txt 2>gcc_2.txt
+
+   echo
+   echo "Run ASAN tests with LTM..."
+
+   ASAN_OPTIONS=verbosity=1 ./test t ltm 1>test_std.txt 2> test_err.txt || exit 1
+
+   if echo $2 | grep -q GMP ; then
+      echo
+      echo "Run ASAN tests with GMP..."
+
+      ASAN_OPTIONS=verbosity=1 ./test t gmp 1>test_std.txt 2> test_err.txt || exit 1
+   fi
+
+   make clean &>/dev/null
+
+   echo
+   echo "Create code coverage"
+
+   bash .ci/coverage.sh "COVERAGE" "$2" "$3" "$4" "$5"
+}
+
+function run_clang() {
+   # output version
+   bash .ci/printinfo.sh
+
+   scan_build=$(which scan-build)
+   [ -z "$scan_build" ] && scan_build=$(find /usr/bin/ -name 'scan-build-*' | sort -nr | head -n1) || true
+   [ -z "$scan_build" ] && { echo "couldn't find clang scan-build"; exit 1; } || echo "run $scan_build"
+   $scan_build --status-bugs make -j$MAKE_JOBS all CFLAGS="$2 $CFLAGS $4" EXTRALIBS="$5"
+
+   make clean &>/dev/null
+
+   echo
+   echo "Build for UBSAN..."
+
+   make -j$MAKE_JOBS LDFLAGS="-fsanitize=undefined" CFLAGS="$2 $CFLAGS $4" EXTRALIBS="$5" all LTC_DEBUG=1 1>gcc_1.txt 2>gcc_2.txt
+
+   echo "Run UBSAN tests with LTM..."
+   UBSAN_OPTIONS=verbosity=1 ./test t ltm 1>test_std.txt 2> test_err.txt || exit 1
+
+   if echo $2 | grep -q GMP ; then
+      echo
+      echo "Run UBSAN tests with GMP..."
+
+      UBSAN_OPTIONS=verbosity=1 ./test t gmp 1>test_std.txt 2> test_err.txt || exit 1
+   fi
+}
+
+make clean &>/dev/null
+
+EXTRALIBS="$5"
+
+echo $2 | grep -q GMP && EXTRALIBS="$EXTRALIBS -lgmp"
+
+if [ -z "$(echo $CC | grep "clang")" ]; then
+   run_gcc "$1" "$2" "$3" "$4" "$EXTRALIBS"
+else
+   run_clang "$1" "$2" "$3" "$4" "$EXTRALIBS"
+fi
+
+make clean &>/dev/null
+
+bash .ci/testbuild.sh "NOTEST" "-DLTC_NO_TEST" "$3" "$4" "$5"
+
+make clean &>/dev/null
+
+bash .ci/testbuild.sh "NOFILE" "-DLTC_NO_FILE" "$3" "$4" "$5"

+ 0 - 0
printinfo.sh → .ci/printinfo.sh


+ 5 - 5
run.sh → .ci/run.sh

@@ -1,9 +1,9 @@
 #!/bin/bash
 
 # output version
-bash printinfo.sh
+bash .ci/printinfo.sh
 
-bash build.sh " $1" "$2 -O2" "$3 IGNORE_SPEED=1" "$4" "$5"
+bash .ci/build.sh " $1" "$2 -O2" "$3 IGNORE_SPEED=1" "$4" "$5"
 if [ -a testok.txt ] && [ -f testok.txt ]; then
    echo
 else
@@ -13,7 +13,7 @@ else
 fi
 
 rm -f testok.txt
-bash build.sh " $1" "$2 -Os" "$3 IGNORE_SPEED=1 LTC_SMALL=1" "$4" "$5"
+bash .ci/build.sh " $1" "$2 -Os" "$3 IGNORE_SPEED=1 LTC_SMALL=1" "$4" "$5"
 if [ -a testok.txt ] && [ -f testok.txt ]; then
    echo
 else
@@ -23,7 +23,7 @@ else
 fi
 
 rm -f testok.txt
-bash build.sh " $1" "$2" "$3 LTC_DEBUG=1" "$4" "$5"
+bash .ci/build.sh " $1" "$2" "$3 LTC_DEBUG=1" "$4" "$5"
 if [ -a testok.txt ] && [ -f testok.txt ]; then
    echo
 else
@@ -33,7 +33,7 @@ else
 fi
 
 rm -f testok.txt
-bash build.sh " $1" "$2" "$3" "$4" "$5"
+bash .ci/build.sh " $1" "$2" "$3" "$4" "$5"
 if [ -a testok.txt ] && [ -f testok.txt ]; then
    echo
 else

+ 22 - 0
.ci/testbuild.sh

@@ -0,0 +1,22 @@
+#!/bin/bash
+
+# output version
+bash .ci/printinfo.sh
+
+if [ -f /proc/cpuinfo ]
+then
+   MAKE_JOBS=$(( ($(cat /proc/cpuinfo | grep -E '^processor[[:space:]]*:' | tail -n -1 | cut -d':' -f2) + 1) * 2 + 1 ))
+else
+   MAKE_JOBS=8
+fi
+
+echo "$1 (Build Only, $2, $3)..."
+make clean 1>/dev/null 2>/dev/null
+echo -n "building..."
+touch testok.txt
+CFLAGS="$2 $CFLAGS $4" EXTRALIBS="$5" make -j$MAKE_JOBS -f $3 test tv_gen 1>gcc_1.txt 2>gcc_2.txt || (echo "build $1 failed see gcc_2.txt for more information" && cat gcc_2.txt && rm -f testok.txt && exit 1)
+if find testok.txt -type f 1>/dev/null 2>/dev/null ; then
+   echo "successful"
+   exit 0
+fi
+exit 1

+ 33 - 0
.ci/valgrind.sh

@@ -0,0 +1,33 @@
+#!/bin/bash
+
+set -e
+
+if [ "$#" = "5" -a "$(echo $3 | grep -v 'makefile[.]')" = "" ]; then
+   echo "only run $0 for the regular makefile, early exit success"
+   exit 0
+fi
+
+if [ -f /proc/cpuinfo ]
+then
+   MAKE_JOBS=$(( ($(cat /proc/cpuinfo | grep -E '^processor[[:space:]]*:' | tail -n -1 | cut -d':' -f2) + 1) * 2 + 1 ))
+else
+   MAKE_JOBS=8
+fi
+
+# output version
+bash .ci/printinfo.sh
+
+make clean &>/dev/null
+
+echo "Build for valgrind..."
+
+make -j$MAKE_JOBS CFLAGS="$2 $CFLAGS $4" EXTRALIBS="$5" test LTC_DEBUG=1 1>gcc_1.txt 2>gcc_2.txt
+
+echo "Run tests with valgrind..."
+
+for i in `seq 1 10` ; do sleep 300 && echo "Valgrind tests in Progress..."; done &
+alive_pid=$!
+
+valgrind --error-exitcode=666 --leak-check=full --show-leak-kinds=all --errors-for-leak-kinds=all ./test >test_std.txt 2> >(tee -a test_err.txt >&2) || { kill $alive_pid; echo "Valgrind failed"; exit 1; }
+
+kill $alive_pid

+ 22 - 34
.travis.yml

@@ -13,7 +13,7 @@ addons:
 
 install:
     - sudo apt-get update -qq
-    - sudo apt-get install libtommath-dev
+    - sudo apt-get install libtommath-dev libgmp-dev valgrind
 
 before_script:
   - gem install coveralls-lcov
@@ -38,89 +38,77 @@ script:
   - bash "${BUILDSCRIPT}" "${BUILDNAME}" "${BUILDOPTIONS}" "makefile.shared V=1" "-DUSE_TFM -DTFM_DESC" "-ltfm"
 env:
   - |
-    BUILDSCRIPT="check_source.sh"
-    BUILDNAME="CHECK_SOURCES"
-    BUILDOPTIONS=" "
-  - |
-    BUILDSCRIPT="scan_build.sh"
-    BUILDNAME="SCAN_BUILD"
-    BUILDOPTIONS=" "
+    BUILDSCRIPT=".ci/meta_builds.sh"
+    BUILDNAME="META_BUILS"
+    BUILDOPTIONS="-DGMP_DESC"
   - |
-    BUILDSCRIPT="coverage.sh"
-    BUILDNAME="COVERAGE"
+    BUILDSCRIPT=".ci/valgrind.sh"
+    BUILDNAME="VALGRIND"
     BUILDOPTIONS=" "
   - |
-    BUILDSCRIPT="run.sh"
+    BUILDSCRIPT=".ci/run.sh"
     BUILDNAME="STOCK"
     BUILDOPTIONS=" "
   - |
-    BUILDSCRIPT="run.sh"
+    BUILDSCRIPT=".ci/run.sh"
     BUILDNAME="EASY"
     BUILDOPTIONS="-DLTC_EASY"
   - |
-    BUILDSCRIPT="run.sh"
+    BUILDSCRIPT=".ci/run.sh"
     BUILDNAME="SMALL"
     BUILDOPTIONS="-DLTC_SMALL_CODE"
   - |
-    BUILDSCRIPT="run.sh"
+    BUILDSCRIPT=".ci/run.sh"
     BUILDNAME="NOTABLES"
     BUILDOPTIONS="-DLTC_NO_TABLES"
   - |
-    BUILDSCRIPT="run.sh"
+    BUILDSCRIPT=".ci/run.sh"
     BUILDNAME="SMALL+NOTABLES"
     BUILDOPTIONS="-DLTC_SMALL_CODE -DLTC_NO_TABLES"
   - |
-    BUILDSCRIPT="run.sh"
+    BUILDSCRIPT=".ci/run.sh"
     BUILDNAME="CLEANSTACK"
     BUILDOPTIONS="-DLTC_CLEAN_STACK"
   - |
-    BUILDSCRIPT="run.sh"
+    BUILDSCRIPT=".ci/run.sh"
     BUILDNAME="CLEANSTACK+SMALL"
     BUILDOPTIONS="-DLTC_SMALL_CODE -DLTC_CLEAN_STACK"
   - |
-    BUILDSCRIPT="run.sh"
+    BUILDSCRIPT=".ci/run.sh"
     BUILDNAME="CLEANSTACK+NOTABLES"
     BUILDOPTIONS="-DLTC_NO_TABLES -DLTC_CLEAN_STACK"
   - |
-    BUILDSCRIPT="run.sh"
+    BUILDSCRIPT=".ci/run.sh"
     BUILDNAME="CLEANSTACK+NOTABLES+SMALL"
     BUILDOPTIONS="-DLTC_NO_TABLES -DLTC_CLEAN_STACK -DLTC_SMALL_CODE"
   - |
-    BUILDSCRIPT="run.sh"
+    BUILDSCRIPT=".ci/run.sh"
     BUILDNAME="NO_FAST"
     BUILDOPTIONS="-DLTC_NO_FAST"
   - |
-    BUILDSCRIPT="run.sh"
+    BUILDSCRIPT=".ci/run.sh"
     BUILDNAME="NO_FAST+NOTABLES"
     BUILDOPTIONS="-DLTC_NO_FAST -DLTC_NO_TABLES"
   - |
-    BUILDSCRIPT="run.sh"
+    BUILDSCRIPT=".ci/run.sh"
     BUILDNAME="NO_ASM"
     BUILDOPTIONS="-DLTC_NO_ASM"
   - |
-    BUILDSCRIPT="run.sh"
+    BUILDSCRIPT=".ci/run.sh"
     BUILDNAME="NO_TIMING_RESISTANCE"
     BUILDOPTIONS="-DLTC_NO_ECC_TIMING_RESISTANT -DLTC_NO_RSA_BLINDING"
   - |
-    BUILDSCRIPT="run.sh"
+    BUILDSCRIPT=".ci/run.sh"
     BUILDNAME="CLEANSTACK+NOTABLES+SMALL+NO_ASM+NO_TIMING_RESISTANCE"
     BUILDOPTIONS="-DLTC_CLEAN_STACK -DLTC_NO_TABLES -DLTC_SMALL_CODE -DLTC_NO_ECC_TIMING_RESISTANT -DLTC_NO_RSA_BLINDING"
   - |
-    BUILDSCRIPT="run.sh"
+    BUILDSCRIPT=".ci/run.sh"
     BUILDNAME="PTHREAD"
     BUILDOPTIONS="-DLTC_PTHREAD"
   - |
-    BUILDSCRIPT="run.sh"
+    BUILDSCRIPT=".ci/run.sh"
     BUILDNAME="CLEANSTACK+NOTABLES+SMALL+NO_ASM+NO_TIMING_RESISTANCE+PTHREAD"
     BUILDOPTIONS="-DLTC_CLEAN_STACK -DLTC_NO_TABLES -DLTC_SMALL_CODE -DLTC_NO_ECC_TIMING_RESISTANT -DLTC_NO_RSA_BLINDING -DLTC_PTHREAD"
-  - |
-    BUILDSCRIPT="testbuild.sh"
-    BUILDNAME="NOTEST"
-    BUILDOPTIONS="-DLTC_NO_TEST"
-  - |
-    BUILDSCRIPT="testbuild.sh"
-    BUILDNAME="NOFILE"
-    BUILDOPTIONS="-DLTC_NO_FILE"
 
 after_failure:
   - cat test_std.txt

+ 22 - 2
demos/tv_gen.c

@@ -213,7 +213,11 @@ void omac_gen(void)
          }
          len = sizeof(output);
          if ((err = omac_memory(x, key, kl, input, y, output, &len)) != CRYPT_OK) {
-            printf("Error omacing: %s\n", error_to_string(err));
+            printf("Error OMAC'ing: %s\n", error_to_string(err));
+            exit(EXIT_FAILURE);
+         }
+         if (len == 0) {
+            printf("Error OMAC'ing: zero length\n");
             exit(EXIT_FAILURE);
          }
          fprintf(out, "%3d: ", y);
@@ -270,7 +274,11 @@ void pmac_gen(void)
          }
          len = sizeof(output);
          if ((err = pmac_memory(x, key, kl, input, y, output, &len)) != CRYPT_OK) {
-            printf("Error omacing: %s\n", error_to_string(err));
+            printf("Error PMACing: %s\n", error_to_string(err));
+            exit(EXIT_FAILURE);
+         }
+         if (len == 0) {
+            printf("Error PMAC'ing: zero length\n");
             exit(EXIT_FAILURE);
          }
          fprintf(out, "%3d: ", y);
@@ -331,6 +339,10 @@ void eax_gen(void)
             printf("Error EAX'ing: %s\n", error_to_string(err));
             exit(EXIT_FAILURE);
          }
+         if (len == 0) {
+            printf("Error EAX'ing: zero length\n");
+            exit(EXIT_FAILURE);
+         }
          fprintf(out, "%3d: ", y1);
          for (z = 0; z < y1; z++) {
             fprintf(out, "%02X", plaintext[z]);
@@ -396,6 +408,10 @@ void ocb_gen(void)
             printf("Error OCB'ing: %s\n", error_to_string(err));
             exit(EXIT_FAILURE);
          }
+         if (len == 0) {
+            printf("Error OCB'ing: zero length\n");
+            exit(EXIT_FAILURE);
+         }
          fprintf(out, "%3d: ", y1);
          for (z = 0; z < y1; z++) {
             fprintf(out, "%02X", plaintext[z]);
@@ -462,6 +478,10 @@ void ocb3_gen(void)
             printf("Error OCB3'ing: %s\n", error_to_string(err));
             exit(EXIT_FAILURE);
          }
+         if (len == 0) {
+            printf("Error OCB3'ing: zero length\n");
+            exit(EXIT_FAILURE);
+         }
          fprintf(out, "%3d: ", y1);
          for (z = 0; z < y1; z++) {
             fprintf(out, "%02X", plaintext[z]);

+ 0 - 19
scan_build.sh

@@ -1,19 +0,0 @@
-#!/bin/bash
-[ "$TRAVIS_CI" != "" ] && { [ -z "$(which scan-build)" ] && { echo "installing clang"; sudo apt-get install clang -y -qq; }; } || true
-
-if [ "$#" = "5" -a "$(echo $3 | grep -v 'makefile[.]')" = "" ]; then
-    echo "only run $0 for the regular makefile, early exit success"
-    exit 0
-fi
-
-# output version
-bash printinfo.sh
-
-make clean > /dev/null
-
-scan_build=$(which scan-build)
-[ -z "$scan_build" ] && scan_build=$(find /usr/bin/ -name 'scan-build-*' | sort -nr | head -n1) || true
-[ -z "$scan_build" ] && { echo "couldn't find clang scan-build"; exit 1; } || echo "run $scan_build"
-export CFLAGS="-DUSE_LTM -DLTM_DESC -I/usr/include"
-export EXTRALIBS="-ltommath"
-$scan_build --status-bugs make -f makefile.unix all CFLAGS="$CFLAGS" EXTRALIBS="$EXTRALIBS"

+ 0 - 15
testbuild.sh

@@ -1,15 +0,0 @@
-#!/bin/bash
-
-# output version
-bash printinfo.sh
-
-echo "$1 (Build Only, $2, $3)..."
-make clean 1>/dev/null 2>/dev/null
-echo -n "building..."
-touch testok.txt
-CFLAGS="$2 $CFLAGS $4" EXTRALIBS="$5" make -f $3 test tv_gen 1>gcc_1.txt 2>gcc_2.txt || (echo "build $1 failed see gcc_2.txt for more information" && cat gcc_2.txt && rm -f testok.txt && exit 1)
-if find testok.txt -type f 1>/dev/null 2>/dev/null ; then
-   echo "successful"
-   exit 0
-fi
-exit 1

+ 21 - 21
testme.sh

@@ -12,59 +12,59 @@ fi
 echo "date="`date`
 
 # check sources
-bash check_source.sh "CHECK_SOURCES" " " "$1" "$2" "$3" || exit 1
+bash .ci/check_source.sh "CHECK_SOURCES" " " "$1" "$2" "$3" || exit 1
 
 mk="$1"
 
 [ "$LTC_COVERAGE" != "" ] && mk="$mk COVERAGE=1"
 
+# meta builds
+bash .ci/meta_builds.sh "META_BUILS" " " "$mk" "$2" "$3" || exit 1
+
+# valgrind build
+bash .ci/valgrind.sh "VALGRIND" " " "$mk" "$2" "$3" || exit 1
+
 # stock build
-bash run.sh "STOCK" " " "$mk" "$2" "$3" || exit 1
+bash .ci/run.sh "STOCK" " " "$mk" "$2" "$3" || exit 1
 
 # EASY build
-bash run.sh "EASY" "-DLTC_EASY" "$mk" "$2" "$3" || exit 1
+bash .ci/run.sh "EASY" "-DLTC_EASY" "$mk" "$2" "$3" || exit 1
 
 # SMALL code
-bash run.sh "SMALL" "-DLTC_SMALL_CODE" "$mk" "$2" "$3" || exit 1
+bash .ci/run.sh "SMALL" "-DLTC_SMALL_CODE" "$mk" "$2" "$3" || exit 1
 
 # NOTABLES
-bash run.sh "NOTABLES" "-DLTC_NO_TABLES" "$mk" "$2" "$3" || exit 1
+bash .ci/run.sh "NOTABLES" "-DLTC_NO_TABLES" "$mk" "$2" "$3" || exit 1
 
 # SMALL+NOTABLES
-bash run.sh "SMALL+NOTABLES" "-DLTC_SMALL_CODE -DLTC_NO_TABLES" "$mk" "$2" "$3" || exit 1
+bash .ci/run.sh "SMALL+NOTABLES" "-DLTC_SMALL_CODE -DLTC_NO_TABLES" "$mk" "$2" "$3" || exit 1
 
 # CLEANSTACK
-bash run.sh "CLEANSTACK" "-DLTC_CLEAN_STACK" "$mk" "$2" "$3" || exit 1
+bash .ci/run.sh "CLEANSTACK" "-DLTC_CLEAN_STACK" "$mk" "$2" "$3" || exit 1
 
 # CLEANSTACK + SMALL
-bash run.sh "CLEANSTACK+SMALL" "-DLTC_SMALL_CODE -DLTC_CLEAN_STACK" "$mk" "$2" "$3" || exit 1
+bash .ci/run.sh "CLEANSTACK+SMALL" "-DLTC_SMALL_CODE -DLTC_CLEAN_STACK" "$mk" "$2" "$3" || exit 1
 
 # CLEANSTACK + NOTABLES
-bash run.sh "CLEANSTACK+NOTABLES" "-DLTC_NO_TABLES -DLTC_CLEAN_STACK" "$mk" "$2" "$3" || exit 1
+bash .ci/run.sh "CLEANSTACK+NOTABLES" "-DLTC_NO_TABLES -DLTC_CLEAN_STACK" "$mk" "$2" "$3" || exit 1
 
 # CLEANSTACK + NOTABLES + SMALL
-bash run.sh "CLEANSTACK+NOTABLES+SMALL" "-DLTC_NO_TABLES -DLTC_CLEAN_STACK -DLTC_SMALL_CODE" "$mk" "$2" "$3" || exit 1
+bash .ci/run.sh "CLEANSTACK+NOTABLES+SMALL" "-DLTC_NO_TABLES -DLTC_CLEAN_STACK -DLTC_SMALL_CODE" "$mk" "$2" "$3" || exit 1
 
 # NO_FAST
-bash run.sh "NO_FAST" "-DLTC_NO_FAST" "$mk" "$2" "$3" || exit 1
+bash .ci/run.sh "NO_FAST" "-DLTC_NO_FAST" "$mk" "$2" "$3" || exit 1
 
 # NO_FAST + NOTABLES
-bash run.sh "NO_FAST+NOTABLES" "-DLTC_NO_FAST -DLTC_NO_TABLES" "$mk" "$2" "$3" || exit 1
+bash .ci/run.sh "NO_FAST+NOTABLES" "-DLTC_NO_FAST -DLTC_NO_TABLES" "$mk" "$2" "$3" || exit 1
 
 # NO_ASM
-bash run.sh "NO_ASM" "-DLTC_NO_ASM" "$mk" "$2" "$3" || exit 1
+bash .ci/run.sh "NO_ASM" "-DLTC_NO_ASM" "$mk" "$2" "$3" || exit 1
 
 # NO_TIMING_RESISTANCE
-bash run.sh "NO_TIMING_RESISTANCE" "-DLTC_NO_ECC_TIMING_RESISTANT -DLTC_NO_RSA_BLINDING" "$mk" "$2" "$3" || exit 1
+bash .ci/run.sh "NO_TIMING_RESISTANCE" "-DLTC_NO_ECC_TIMING_RESISTANT -DLTC_NO_RSA_BLINDING" "$mk" "$2" "$3" || exit 1
 
 # CLEANSTACK+NOTABLES+SMALL+NO_ASM+NO_TIMING_RESISTANCE
-bash run.sh "CLEANSTACK+NOTABLES+SMALL+NO_ASM+NO_TIMING_RESISTANCE" "-DLTC_CLEAN_STACK -DLTC_NO_TABLES -DLTC_SMALL_CODE -DLTC_NO_ECC_TIMING_RESISTANT -DLTC_NO_RSA_BLINDING" "$mk" "$2" "$3" || exit 1
-
-# test build with no testing
-bash testbuild.sh "NOTEST" "-DLTC_NO_TEST" "$mk" "$2" "$3" || exit 1
-
-# test build with no file routines
-bash testbuild.sh "NOFILE" "-DLTC_NO_FILE" "$mk" "$2" "$3" || exit 1
+bash .ci/run.sh "CLEANSTACK+NOTABLES+SMALL+NO_ASM+NO_TIMING_RESISTANCE" "-DLTC_CLEAN_STACK -DLTC_NO_TABLES -DLTC_SMALL_CODE -DLTC_NO_ECC_TIMING_RESISTANT -DLTC_NO_RSA_BLINDING" "$mk" "$2" "$3" || exit 1
 
 # ref:         $Format:%D$
 # git commit:  $Format:%H$