2015-10-09 20:13:05 +03:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
set -ex
|
|
|
|
|
2015-10-10 18:54:08 +03:00
|
|
|
ACTION=${1}
|
|
|
|
IMPL=${2}
|
|
|
|
|
2021-04-26 02:48:01 +03:00
|
|
|
die() { local ret=$1; shift; echo >&2 "${*}"; exit $ret; }
|
|
|
|
|
2019-05-31 05:37:47 +03:00
|
|
|
# Environment variable configuration
|
2019-05-30 06:41:35 +03:00
|
|
|
BUILD_IMPL=${BUILD_IMPL:-${IMPL}}
|
|
|
|
|
2019-05-31 05:37:47 +03:00
|
|
|
if [ "${DO_SELF_HOST}" ]; then
|
2019-05-28 07:21:57 +03:00
|
|
|
MAL_IMPL=${IMPL}
|
|
|
|
IMPL=mal
|
2019-05-31 05:37:47 +03:00
|
|
|
fi
|
2021-04-26 02:48:01 +03:00
|
|
|
|
2019-05-31 05:37:47 +03:00
|
|
|
if [ "${DO_HARD}" ]; then
|
|
|
|
TEST_OPTS="${TEST_OPTS} --hard"
|
|
|
|
fi
|
2017-09-12 01:49:26 +03:00
|
|
|
|
2019-10-17 17:27:17 +03:00
|
|
|
raw_mode_var=${MAL_IMPL:-${IMPL}}_MODE
|
2021-02-14 15:41:15 +03:00
|
|
|
mode_var=${raw_mode_var/-/__}
|
|
|
|
mode_var=${mode_var/./__}
|
2019-05-31 05:37:47 +03:00
|
|
|
mode_val=${!mode_var}
|
|
|
|
|
2021-04-26 02:48:01 +03:00
|
|
|
MAKE="make ${mode_val:+${mode_var}=${mode_val}}"
|
|
|
|
|
2021-05-04 05:22:08 +03:00
|
|
|
log_prefix="${ACTION}${REGRESS:+-regress}-${IMPL}${mode_val:+-${mode_val}}${MAL_IMPL:+-${MAL_IMPL}}"
|
2021-04-24 01:03:09 +03:00
|
|
|
TEST_OPTS="${TEST_OPTS} --debug-file ../../${log_prefix}.debug"
|
|
|
|
|
|
|
|
# Log everything below this point:
|
|
|
|
exec &> >(tee ./${log_prefix}.log)
|
|
|
|
|
2021-04-26 02:48:01 +03:00
|
|
|
if [ "${NO_PERF}" -a "${ACTION}" = "perf" ]; then
|
|
|
|
die 0 "Skipping perf test"
|
|
|
|
fi
|
|
|
|
if [ "${NO_SELF_HOST}" -a "${DO_SELF_HOST}" ]; then
|
|
|
|
die 0 "Skipping ${ACTION} of ${MAL_IMPL} self-host"
|
|
|
|
fi
|
|
|
|
if [ "${NO_SELF_HOST_PERF}" -a "${DO_SELF_HOST}" -a "${ACTION}" = "perf" ]; then
|
|
|
|
die 0 "Skipping only perf test for ${MAL_IMPL} self-host"
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "ACTION: ${ACTION}"
|
|
|
|
echo "IMPL: ${IMPL}"
|
|
|
|
echo "BUILD_IMPL: ${BUILD_IMPL}"
|
|
|
|
echo "MAL_IMPL: ${MAL_IMPL}"
|
|
|
|
echo "TEST_OPTS: ${TEST_OPTS}"
|
2019-05-30 06:41:35 +03:00
|
|
|
|
2015-10-26 00:17:09 +03:00
|
|
|
# If NO_DOCKER is blank then launch use a docker image, otherwise use
|
2021-04-20 02:39:03 +03:00
|
|
|
# the Travis/Github Actions image/tools directly.
|
2019-05-30 06:41:35 +03:00
|
|
|
if [ -z "${NO_DOCKER}" ]; then
|
2019-05-28 07:21:57 +03:00
|
|
|
img_impl=$(echo "${MAL_IMPL:-${IMPL}}" | tr '[:upper:]' '[:lower:]')
|
|
|
|
# We could just use make DOCKERIZE=1 instead but that does add
|
|
|
|
# non-trivial startup overhead for each step.
|
2021-02-14 15:41:15 +03:00
|
|
|
MAKE="docker run -i -u $(id -u) -v `pwd`:/mal kanaka/mal-test-${img_impl%%-mal} ${MAKE}"
|
2015-10-10 06:45:48 +03:00
|
|
|
fi
|
2015-10-26 00:17:09 +03:00
|
|
|
|
2019-05-30 06:41:35 +03:00
|
|
|
case "${ACTION}" in
|
|
|
|
build)
|
|
|
|
# rpython often fails on step9 in compute_vars_longevity
|
2019-08-11 01:30:56 +03:00
|
|
|
# so build step9, then continue with the full build
|
2019-05-30 06:41:35 +03:00
|
|
|
if [ "${BUILD_IMPL}" = "rpython" ]; then
|
2020-02-11 08:50:16 +03:00
|
|
|
${MAKE} -C "impls/${BUILD_IMPL}" step9_try || true
|
2019-05-30 06:41:35 +03:00
|
|
|
fi
|
2020-02-11 08:50:16 +03:00
|
|
|
${MAKE} -C "impls/${BUILD_IMPL}"
|
2019-05-30 06:41:35 +03:00
|
|
|
;;
|
|
|
|
test|perf)
|
2019-05-31 05:37:47 +03:00
|
|
|
[ "${ACTION}" = "perf" ] && STEP=
|
|
|
|
if ! ${MAKE} TEST_OPTS="${TEST_OPTS}" \
|
2019-05-30 06:41:35 +03:00
|
|
|
${MAL_IMPL:+MAL_IMPL=${MAL_IMPL}} \
|
2019-05-31 05:37:47 +03:00
|
|
|
${REGRESS:+REGRESS=${REGRESS}} \
|
2019-07-24 09:29:40 +03:00
|
|
|
${HARD:+HARD=${HARD}} \
|
|
|
|
${DEFERRABLE:+DEFERRABLE=${DEFERRABLE}} \
|
|
|
|
${OPTIONAL:+OPTIONAL=${OPTIONAL}} \
|
2019-05-31 05:37:47 +03:00
|
|
|
${ACTION}^${IMPL}${STEP:+^${STEP}}; then
|
2019-05-30 06:41:35 +03:00
|
|
|
# print debug-file on error
|
2021-04-23 22:29:27 +03:00
|
|
|
cat ${log_prefix}.debug
|
2019-05-30 06:41:35 +03:00
|
|
|
false
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|