return 1 || exit 1
fi
-# some config settings
-MAKE="make -j4"
+## some config settings
+# travis docs say we get 1.5 CPUs
+MAKE="make -j2"
DUMP_CONFIG_LOG="short"
+export TS_OPT_parsable="yes"
-# 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"
+# workaround ugly warning on travis OSX,
+# see https://github.com/direnv/direnv/issues/210
+shell_session_update() { :; }
-mkdir -p "$BUILD_DIR"
-cd "$BUILD_DIR" || return 1 || exit 1
-
-function configure_travis
+function xconfigure
{
- "$CONFIGURE" "$@"
+ which "$CC"
+ "$CC" --version
+
+ ./configure "$@" $OSX_CONFOPTS
err=$?
if [ "$DUMP_CONFIG_LOG" = "short" ]; then
grep -B1 -A10000 "^## Output variables" config.log | grep -v "_FALSE="
return $err
}
+# TODO: integrate checkusage into our regular tests and remove this function
+function make_checkusage
+{
+ local tmp
+ if ! tmp=$($MAKE checkusage 2>&1) || test -n "$tmp"; then
+ echo "$tmp"
+ echo "make checkusage failed" >&2
+ return 1
+ fi
+}
+
function check_nonroot
{
- configure_travis \
+ local make_opts="$MAKE_CHECK_OPTS --show-diff"
+ local conf_opts="\
--disable-use-tty-group \
- --with-python \
- --enable-all-programs \
- --enable-gtk-doc \
- || return
+ --disable-makeinstall-chown \
+ --enable-all-programs"
+
+ if [ "$TRAVIS_OS_NAME" != "osx" ]; then
+ conf_opts="$conf_opts --enable-asan"
+ make_opts="$make_opts --memcheck-asan"
+ fi
+
+ xconfigure $conf_opts || return
$MAKE || return
- $MAKE check || return
+
+ osx_prepare_check
+ $MAKE check TS_OPTS="$make_opts" || return
+
+ make_checkusage || return
+
$MAKE install DESTDIR=/tmp/dest || return
}
function check_root
{
- configure_travis \
- --with-python \
- --enable-all-programs \
- || return
+ local make_opts="$MAKE_CHECK_OPTS --show-diff"
+ local conf_opts="--enable-all-programs"
+
+ if [ "$TRAVIS_OS_NAME" != "osx" ]; then
+ conf_opts="$conf_opts --enable-asan"
+ make_opts="$make_opts --memcheck-asan"
+ fi
+
+ xconfigure $conf_opts || return
$MAKE || return
+
$MAKE check TS_COMMAND="true" || return
- sudo -E $MAKE check TS_OPTS='--parallel=1' || return
- sudo $MAKE install || return
+ osx_prepare_check
+ sudo -E $MAKE check TS_OPTS="$make_opts" || return
+
+ # root on osx has not enough permission for make install ;)
+ [ "$TRAVIS_OS_NAME" = "osx" ] && return
+
+ # keep PATH to make sure sudo would find $CC
+ sudo env "PATH=$PATH" $MAKE install || return
}
function check_dist
{
- configure_travis \
+ xconfigure \
|| return
$MAKE distcheck || return
}
+function travis_install_script
+{
+ if [ "$TRAVIS_OS_NAME" = "osx" ]; then
+ osx_install_script
+ return
+ fi
+
+ # install required packages
+ sudo apt-get -qq update --fix-missing
+ sudo apt-get install -qq >/dev/null \
+ bc \
+ btrfs-tools \
+ dnsutils \
+ libcap-ng-dev \
+ libncursesw5-dev \
+ libpam-dev \
+ libudev-dev \
+ gtk-doc-tools \
+ mdadm \
+ ntp \
+ socat \
+ || return
+
+ # install only if available (e.g. Ubuntu Trusty)
+ sudo apt-get install -qq >/dev/null \
+ libsystemd-daemon-dev \
+ libsystemd-journal-dev \
+ || true
+}
+
+function osx_install_script
+{
+ brew update >/dev/null
+
+ brew install gettext ncurses socat xz
+ brew link --force gettext
+ brew link --force ncurses
+
+ OSX_CONFOPTS="
+ --disable-ipcrm \
+ --disable-ipcs \
+ "
+
+ # workaround: glibtoolize could not find sed
+ export SED="sed"
+}
+
+function osx_prepare_check
+{
+ [ "$TRAVIS_OS_NAME" = "osx" ] || return 0
+
+ # these ones only need to be gnu for our test-suite
+ brew install coreutils findutils gnu-tar gnu-sed
+
+ # symlink minimally needed gnu commands into PATH
+ mkdir ~/bin
+ for cmd in readlink seq timeout truncate find xargs tar sed; do
+ ln -s /usr/local/bin/g$cmd $HOME/bin/$cmd
+ done
+ hash -r
+
+ export TS_OPT_col_multibyte_known_fail=yes
+ export TS_OPT_colcrt_regressions_known_fail=yes
+ export TS_OPT_column_invalid_multibyte_known_fail=yes
+}
+
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
}
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)
+ diff_dir=$(find . -type d -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
+ echo "$tmp" | xargs cat
fi
}