diff options
-rwxr-xr-x | .travis-functions.sh | 128 | ||||
-rw-r--r-- | .travis.yml | 34 |
2 files changed, 136 insertions, 26 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 +} diff --git a/.travis.yml b/.travis.yml index a4dde3ad2..a1a15e48e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,44 +10,26 @@ compiler: env: - MAKE_CHECK="nonroot" - MAKE_CHECK="root" + - MAKE_CHECK="dist" install: # install some packages from Ubuntu's default sources - sudo apt-get -qq update - sudo apt-get install -qq bc + dnsutils + libcap-ng-dev libpam-dev libudev-dev gtk-doc-tools + ntp before_script: - - ./autogen.sh + - source ./.travis-functions.sh + - travis_before_script script: - - export MAKE="make -j4" - # make distcheck still does not work on travis - - (./configure - --disable-use-tty-group - --enable-chfn-chsh - --enable-line - --enable-mesg - --enable-newgrp - --enable-reset - --enable-tunelp - --enable-vipw - --enable-write - ; err=$?; cat config.log; exit $err) - && $MAKE - && if [ "$MAKE_CHECK" = "nonroot" ]; then - $MAKE check - && $MAKE install DESTDIR=/tmp/dest - && $MAKE dist; - elif [ "$MAKE_CHECK" = "root" ]; then - $MAKE check TS_COMMAND="true" - && sudo -E $MAKE check TS_OPTS='--parallel=1'; - fi + - travis_script after_script: - - test -d tests/diff - && echo "cat test diffs:" - && find tests/diff -type f | xargs -r cat + - travis_after_script |