Fix second-order self-hosting.
[jackhill/mal.git] / .travis_test.sh
CommitLineData
7755014c
JM
1#!/bin/bash
2
3set -ex
4
531a98a9
JM
5ACTION=${1}
6IMPL=${2}
531a98a9 7
108d07a2 8# Environment variable configuration
a003046c 9BUILD_IMPL=${BUILD_IMPL:-${IMPL}}
108d07a2 10TEST_OPTS="${TEST_OPTS} --debug-file ../${ACTION}.err"
a003046c 11
108d07a2 12if [ "${DO_SELF_HOST}" ]; then
7864f19b
JM
13 MAL_IMPL=${IMPL}
14 IMPL=mal
108d07a2
JM
15fi
16if [ "${DO_HARD}" ]; then
17 TEST_OPTS="${TEST_OPTS} --hard"
18fi
2d76e877 19
531a98a9
JM
20echo "ACTION: ${ACTION}"
21echo "IMPL: ${IMPL}"
a003046c 22echo "BUILD_IMPL: ${BUILD_IMPL}"
531a98a9
JM
23echo "MAL_IMPL: ${MAL_IMPL}"
24
108d07a2 25if [ "${DO_SELF_HOST}" ]; then
7864f19b 26 if [ "${NO_SELF_HOST}" ]; then
a003046c 27 echo "Skipping ${ACTION} of ${MAL_IMPL} self-host"
7864f19b
JM
28 exit 0
29 fi
30 if [ "${ACTION}" = "perf" -a "${NO_SELF_HOST_PERF}" ]; then
a003046c 31 echo "Skipping only perf test for ${MAL_IMPL} self-host"
7864f19b
JM
32 exit 0
33 fi
34fi
35
108d07a2
JM
36mode_var=${MAL_IMPL:-${IMPL}}_MODE
37mode_val=${!mode_var}
38
a003046c
JM
39MAKE="make ${mode_val:+${mode_var}=${mode_val}}"
40
6ce7b0ed
JM
41# If NO_DOCKER is blank then launch use a docker image, otherwise use
42# the Travis image/tools directly.
a003046c 43if [ -z "${NO_DOCKER}" ]; then
7864f19b
JM
44 img_impl=$(echo "${MAL_IMPL:-${IMPL}}" | tr '[:upper:]' '[:lower:]')
45 # We could just use make DOCKERIZE=1 instead but that does add
46 # non-trivial startup overhead for each step.
ff4e5f16 47 MAKE="docker run -it -u $(id -u) -v `pwd`:/mal kanaka/mal-test-${img_impl%%-mal} ${MAKE}"
c727d1c8 48fi
6ce7b0ed 49
a003046c
JM
50case "${ACTION}" in
51build)
52 # rpython often fails on step9 in compute_vars_longevity
53 # so build step9, then continue wit the full build
54 if [ "${BUILD_IMPL}" = "rpython" ]; then
55 ${MAKE} -C "${BUILD_IMPL}" step9_try || true
56 fi
57 ${MAKE} -C ${BUILD_IMPL}
58 ;;
59test|perf)
108d07a2
JM
60 [ "${ACTION}" = "perf" ] && STEP=
61 if ! ${MAKE} TEST_OPTS="${TEST_OPTS}" \
a003046c 62 ${MAL_IMPL:+MAL_IMPL=${MAL_IMPL}} \
108d07a2 63 ${REGRESS:+REGRESS=${REGRESS}} \
77fd710c
JM
64 ${HARD:+HARD=${HARD}} \
65 ${DEFERRABLE:+DEFERRABLE=${DEFERRABLE}} \
66 ${OPTIONAL:+OPTIONAL=${OPTIONAL}} \
108d07a2 67 ${ACTION}^${IMPL}${STEP:+^${STEP}}; then
a003046c
JM
68 # print debug-file on error
69 cat ${ACTION}.err
70 false
71 fi
72 ;;
73esac