#!/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 }