summaryrefslogtreecommitdiffstats
path: root/.travis-functions.sh
diff options
context:
space:
mode:
Diffstat (limited to '.travis-functions.sh')
-rwxr-xr-x.travis-functions.sh128
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
+}