Commit | Line | Data |
---|---|---|
7755014c JM |
1 | #!/bin/bash |
2 | ||
3 | set -ex | |
4 | ||
531a98a9 JM |
5 | ACTION=${1} |
6 | IMPL=${2} | |
531a98a9 | 7 | |
108d07a2 | 8 | # Environment variable configuration |
a003046c | 9 | BUILD_IMPL=${BUILD_IMPL:-${IMPL}} |
108d07a2 | 10 | TEST_OPTS="${TEST_OPTS} --debug-file ../${ACTION}.err" |
a003046c | 11 | |
108d07a2 | 12 | if [ "${DO_SELF_HOST}" ]; then |
7864f19b JM |
13 | MAL_IMPL=${IMPL} |
14 | IMPL=mal | |
108d07a2 JM |
15 | fi |
16 | if [ "${DO_HARD}" ]; then | |
17 | TEST_OPTS="${TEST_OPTS} --hard" | |
18 | fi | |
2d76e877 | 19 | |
531a98a9 JM |
20 | echo "ACTION: ${ACTION}" |
21 | echo "IMPL: ${IMPL}" | |
a003046c | 22 | echo "BUILD_IMPL: ${BUILD_IMPL}" |
531a98a9 JM |
23 | echo "MAL_IMPL: ${MAL_IMPL}" |
24 | ||
108d07a2 | 25 | if [ "${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 | |
34 | fi | |
35 | ||
108d07a2 JM |
36 | mode_var=${MAL_IMPL:-${IMPL}}_MODE |
37 | mode_val=${!mode_var} | |
38 | ||
a003046c JM |
39 | MAKE="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 | 43 | if [ -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 | 48 | fi |
6ce7b0ed | 49 | |
a003046c JM |
50 | case "${ACTION}" in |
51 | build) | |
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 | ;; | |
59 | test|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 | ;; | |
73 | esac |