diff options
Diffstat (limited to '.travis-functions.sh')
-rwxr-xr-x | .travis-functions.sh | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/.travis-functions.sh b/.travis-functions.sh new file mode 100755 index 000000000..ed491f417 --- /dev/null +++ b/.travis-functions.sh @@ -0,0 +1,128 @@ +#!/bin/bash + +# +# .travis-functions.sh: +# - helper functions to be sourced from .travis.yml +# - designed to respect travis' environment but testing locally is possible +# + +if [ ! -f "configure.ac" ]; then + echo ".travis-functions.sh must be sourced from source dir" >&2 + return 1 || exit 1 +fi + +# some config settings +MAKE="make -j4" +DUMP_CONFIG_LOG="short" + +# We could test (exotic) out-of-tree build dirs using relative or abs paths. +# After sourcing this script we are living in build dir. Tasks for source dir +# have to use $SOURCE_DIR. +SOURCE_DIR="." +BUILD_DIR="." +CONFIGURE="$SOURCE_DIR/configure" + +mkdir -p "$BUILD_DIR" +cd "$BUILD_DIR" || return 1 || exit 1 + +function configure_travis +{ + "$CONFIGURE" "$@" + err=$? + if [ "$DUMP_CONFIG_LOG" = "short" ]; then + grep -B1 -A10000 "^## Output variables" config.log | grep -v "_FALSE=" + elif [ "$DUMP_CONFIG_LOG" = "full" ]; then + cat config.log + fi + return $err +} + +function check_nonroot +{ + configure_travis \ + --disable-use-tty-group \ + --with-python \ + --enable-all-programs \ + --enable-gtk-doc \ + || return + $MAKE || return + $MAKE check || return + $MAKE install DESTDIR=/tmp/dest || return +} + +function check_root +{ + configure_travis \ + --with-python \ + --enable-all-programs \ + || return + $MAKE || return + $MAKE check TS_COMMAND="true" || return + sudo -E $MAKE check TS_OPTS='--parallel=1' || return + sudo $MAKE install || return +} + +function check_dist +{ + configure_travis \ + || return + $MAKE distcheck || return +} + +function travis_before_script +{ + pushd "$SOURCE_DIR" || return + set -o xtrace + + ./autogen.sh + ret=$? + + # workaround for broken pylibmount install relink + [ $ret -eq 0 ] && \ + sed -i 's/\(link_all_deplibs\)=no/\1=unknown/' ./configure + + set +o xtrace + popd + return $ret +} + +function travis_script +{ + local ret + set -o xtrace + + case "$MAKE_CHECK" in + nonroot) + check_nonroot + ;; + root) + check_root + ;; + dist) + check_dist + ;; + *) + echo "error, check environment (travis.yml)" >&2 + false + ;; + esac + + # We exit here with case-switch return value! + ret=$? + set +o xtrace + return $ret +} + +function travis_after_script +{ + local diff_dir + local tmp + + # find diff dir from check as well as from distcheck + diff_dir=$(find -type d -a -name "diff" | grep "tests/diff" | head -n 1) + if [ -d "$diff_dir" ]; then + tmp=$(find "$diff_dir" -type f | sort) + echo -en "dump test diffs:\n${tmp}\n" + echo "$tmp" | xargs -r cat + fi +} |