util-linux/.travis-functions.sh

222 lines
4.2 KiB
Bash
Raw Normal View History

travis-ci: refactor and add .travis-functions.sh Travis yaml syntax, where we can only use shell one-liners, is awful and ugly. We add a real shell script and source it from .travis.yml. This commit squashes a lot changes because we don't want to pollute history with this meta CI stuff. Highlights of this commit: - enable make distcheck - cleanup configure options (enable all progs, with python and docs) - shorter config.log dump - out-of-tree build supported - workaround broken libtool on travis host - now it's easy to add temporary debugging stuff - testing locally is possible now What are we testing now: - gcc and clang compiler - configure mostly with --enable-all-programs, --with-python and --enable-gtk-doc - make check with and without root permissions - make distcheck - make install (with and without --prefix as well as DESTDIR=...) - usually we always build in-tree but distcheck does out-of-tree What do we want/expect at all: - This travis setup is intended to always work without fixing or updating this build script all the time. Thats why we only use a few configure flags. - We want to avoid predictable failures on travis host to not make developers tired of this machinery. Any tested feature which is known to be (sometimes) broken should be fixed or skipped as soon as possible. - If this works like wanted then in future almost any point in master commit history should at least survive the build and common tests on this reference host/arch. Moreover we will have a comparable, deterministic build log history. This could make bisecting real bugs easier. - It's not our goal to test any kind of config flags, host setup and arch combination. This would be done better by external build scripts which do not live within the project itself. - Of course this machinery can be also used to reproduce bugs with more exotic config and host setup by pushing a debug branch with modified travis script to github. Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
2014-06-01 17:58:01 -05:00
#!/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
# travis docs say we get 1.5 CPUs
MAKE="make -j2"
travis-ci: refactor and add .travis-functions.sh Travis yaml syntax, where we can only use shell one-liners, is awful and ugly. We add a real shell script and source it from .travis.yml. This commit squashes a lot changes because we don't want to pollute history with this meta CI stuff. Highlights of this commit: - enable make distcheck - cleanup configure options (enable all progs, with python and docs) - shorter config.log dump - out-of-tree build supported - workaround broken libtool on travis host - now it's easy to add temporary debugging stuff - testing locally is possible now What are we testing now: - gcc and clang compiler - configure mostly with --enable-all-programs, --with-python and --enable-gtk-doc - make check with and without root permissions - make distcheck - make install (with and without --prefix as well as DESTDIR=...) - usually we always build in-tree but distcheck does out-of-tree What do we want/expect at all: - This travis setup is intended to always work without fixing or updating this build script all the time. Thats why we only use a few configure flags. - We want to avoid predictable failures on travis host to not make developers tired of this machinery. Any tested feature which is known to be (sometimes) broken should be fixed or skipped as soon as possible. - If this works like wanted then in future almost any point in master commit history should at least survive the build and common tests on this reference host/arch. Moreover we will have a comparable, deterministic build log history. This could make bisecting real bugs easier. - It's not our goal to test any kind of config flags, host setup and arch combination. This would be done better by external build scripts which do not live within the project itself. - Of course this machinery can be also used to reproduce bugs with more exotic config and host setup by pushing a debug branch with modified travis script to github. Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
2014-06-01 17:58:01 -05:00
DUMP_CONFIG_LOG="short"
export TS_OPT_parsable="yes"
travis-ci: refactor and add .travis-functions.sh Travis yaml syntax, where we can only use shell one-liners, is awful and ugly. We add a real shell script and source it from .travis.yml. This commit squashes a lot changes because we don't want to pollute history with this meta CI stuff. Highlights of this commit: - enable make distcheck - cleanup configure options (enable all progs, with python and docs) - shorter config.log dump - out-of-tree build supported - workaround broken libtool on travis host - now it's easy to add temporary debugging stuff - testing locally is possible now What are we testing now: - gcc and clang compiler - configure mostly with --enable-all-programs, --with-python and --enable-gtk-doc - make check with and without root permissions - make distcheck - make install (with and without --prefix as well as DESTDIR=...) - usually we always build in-tree but distcheck does out-of-tree What do we want/expect at all: - This travis setup is intended to always work without fixing or updating this build script all the time. Thats why we only use a few configure flags. - We want to avoid predictable failures on travis host to not make developers tired of this machinery. Any tested feature which is known to be (sometimes) broken should be fixed or skipped as soon as possible. - If this works like wanted then in future almost any point in master commit history should at least survive the build and common tests on this reference host/arch. Moreover we will have a comparable, deterministic build log history. This could make bisecting real bugs easier. - It's not our goal to test any kind of config flags, host setup and arch combination. This would be done better by external build scripts which do not live within the project itself. - Of course this machinery can be also used to reproduce bugs with more exotic config and host setup by pushing a debug branch with modified travis script to github. Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
2014-06-01 17:58:01 -05:00
# workaround ugly warning on travis OSX,
# see https://github.com/direnv/direnv/issues/210
shell_session_update() { :; }
function xconfigure
travis-ci: refactor and add .travis-functions.sh Travis yaml syntax, where we can only use shell one-liners, is awful and ugly. We add a real shell script and source it from .travis.yml. This commit squashes a lot changes because we don't want to pollute history with this meta CI stuff. Highlights of this commit: - enable make distcheck - cleanup configure options (enable all progs, with python and docs) - shorter config.log dump - out-of-tree build supported - workaround broken libtool on travis host - now it's easy to add temporary debugging stuff - testing locally is possible now What are we testing now: - gcc and clang compiler - configure mostly with --enable-all-programs, --with-python and --enable-gtk-doc - make check with and without root permissions - make distcheck - make install (with and without --prefix as well as DESTDIR=...) - usually we always build in-tree but distcheck does out-of-tree What do we want/expect at all: - This travis setup is intended to always work without fixing or updating this build script all the time. Thats why we only use a few configure flags. - We want to avoid predictable failures on travis host to not make developers tired of this machinery. Any tested feature which is known to be (sometimes) broken should be fixed or skipped as soon as possible. - If this works like wanted then in future almost any point in master commit history should at least survive the build and common tests on this reference host/arch. Moreover we will have a comparable, deterministic build log history. This could make bisecting real bugs easier. - It's not our goal to test any kind of config flags, host setup and arch combination. This would be done better by external build scripts which do not live within the project itself. - Of course this machinery can be also used to reproduce bugs with more exotic config and host setup by pushing a debug branch with modified travis script to github. Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
2014-06-01 17:58:01 -05:00
{
which "$CC"
"$CC" --version
./configure "$@" $OSX_CONFOPTS
travis-ci: refactor and add .travis-functions.sh Travis yaml syntax, where we can only use shell one-liners, is awful and ugly. We add a real shell script and source it from .travis.yml. This commit squashes a lot changes because we don't want to pollute history with this meta CI stuff. Highlights of this commit: - enable make distcheck - cleanup configure options (enable all progs, with python and docs) - shorter config.log dump - out-of-tree build supported - workaround broken libtool on travis host - now it's easy to add temporary debugging stuff - testing locally is possible now What are we testing now: - gcc and clang compiler - configure mostly with --enable-all-programs, --with-python and --enable-gtk-doc - make check with and without root permissions - make distcheck - make install (with and without --prefix as well as DESTDIR=...) - usually we always build in-tree but distcheck does out-of-tree What do we want/expect at all: - This travis setup is intended to always work without fixing or updating this build script all the time. Thats why we only use a few configure flags. - We want to avoid predictable failures on travis host to not make developers tired of this machinery. Any tested feature which is known to be (sometimes) broken should be fixed or skipped as soon as possible. - If this works like wanted then in future almost any point in master commit history should at least survive the build and common tests on this reference host/arch. Moreover we will have a comparable, deterministic build log history. This could make bisecting real bugs easier. - It's not our goal to test any kind of config flags, host setup and arch combination. This would be done better by external build scripts which do not live within the project itself. - Of course this machinery can be also used to reproduce bugs with more exotic config and host setup by pushing a debug branch with modified travis script to github. Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
2014-06-01 17:58:01 -05:00
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
}
# 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
}
travis-ci: refactor and add .travis-functions.sh Travis yaml syntax, where we can only use shell one-liners, is awful and ugly. We add a real shell script and source it from .travis.yml. This commit squashes a lot changes because we don't want to pollute history with this meta CI stuff. Highlights of this commit: - enable make distcheck - cleanup configure options (enable all progs, with python and docs) - shorter config.log dump - out-of-tree build supported - workaround broken libtool on travis host - now it's easy to add temporary debugging stuff - testing locally is possible now What are we testing now: - gcc and clang compiler - configure mostly with --enable-all-programs, --with-python and --enable-gtk-doc - make check with and without root permissions - make distcheck - make install (with and without --prefix as well as DESTDIR=...) - usually we always build in-tree but distcheck does out-of-tree What do we want/expect at all: - This travis setup is intended to always work without fixing or updating this build script all the time. Thats why we only use a few configure flags. - We want to avoid predictable failures on travis host to not make developers tired of this machinery. Any tested feature which is known to be (sometimes) broken should be fixed or skipped as soon as possible. - If this works like wanted then in future almost any point in master commit history should at least survive the build and common tests on this reference host/arch. Moreover we will have a comparable, deterministic build log history. This could make bisecting real bugs easier. - It's not our goal to test any kind of config flags, host setup and arch combination. This would be done better by external build scripts which do not live within the project itself. - Of course this machinery can be also used to reproduce bugs with more exotic config and host setup by pushing a debug branch with modified travis script to github. Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
2014-06-01 17:58:01 -05:00
function check_nonroot
{
local make_opts="$MAKE_CHECK_OPTS --show-diff"
local conf_opts="\
travis-ci: refactor and add .travis-functions.sh Travis yaml syntax, where we can only use shell one-liners, is awful and ugly. We add a real shell script and source it from .travis.yml. This commit squashes a lot changes because we don't want to pollute history with this meta CI stuff. Highlights of this commit: - enable make distcheck - cleanup configure options (enable all progs, with python and docs) - shorter config.log dump - out-of-tree build supported - workaround broken libtool on travis host - now it's easy to add temporary debugging stuff - testing locally is possible now What are we testing now: - gcc and clang compiler - configure mostly with --enable-all-programs, --with-python and --enable-gtk-doc - make check with and without root permissions - make distcheck - make install (with and without --prefix as well as DESTDIR=...) - usually we always build in-tree but distcheck does out-of-tree What do we want/expect at all: - This travis setup is intended to always work without fixing or updating this build script all the time. Thats why we only use a few configure flags. - We want to avoid predictable failures on travis host to not make developers tired of this machinery. Any tested feature which is known to be (sometimes) broken should be fixed or skipped as soon as possible. - If this works like wanted then in future almost any point in master commit history should at least survive the build and common tests on this reference host/arch. Moreover we will have a comparable, deterministic build log history. This could make bisecting real bugs easier. - It's not our goal to test any kind of config flags, host setup and arch combination. This would be done better by external build scripts which do not live within the project itself. - Of course this machinery can be also used to reproduce bugs with more exotic config and host setup by pushing a debug branch with modified travis script to github. Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
2014-06-01 17:58:01 -05:00
--disable-use-tty-group \
--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
travis-ci: refactor and add .travis-functions.sh Travis yaml syntax, where we can only use shell one-liners, is awful and ugly. We add a real shell script and source it from .travis.yml. This commit squashes a lot changes because we don't want to pollute history with this meta CI stuff. Highlights of this commit: - enable make distcheck - cleanup configure options (enable all progs, with python and docs) - shorter config.log dump - out-of-tree build supported - workaround broken libtool on travis host - now it's easy to add temporary debugging stuff - testing locally is possible now What are we testing now: - gcc and clang compiler - configure mostly with --enable-all-programs, --with-python and --enable-gtk-doc - make check with and without root permissions - make distcheck - make install (with and without --prefix as well as DESTDIR=...) - usually we always build in-tree but distcheck does out-of-tree What do we want/expect at all: - This travis setup is intended to always work without fixing or updating this build script all the time. Thats why we only use a few configure flags. - We want to avoid predictable failures on travis host to not make developers tired of this machinery. Any tested feature which is known to be (sometimes) broken should be fixed or skipped as soon as possible. - If this works like wanted then in future almost any point in master commit history should at least survive the build and common tests on this reference host/arch. Moreover we will have a comparable, deterministic build log history. This could make bisecting real bugs easier. - It's not our goal to test any kind of config flags, host setup and arch combination. This would be done better by external build scripts which do not live within the project itself. - Of course this machinery can be also used to reproduce bugs with more exotic config and host setup by pushing a debug branch with modified travis script to github. Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
2014-06-01 17:58:01 -05:00
$MAKE || return
osx_prepare_check
$MAKE check TS_OPTS="$make_opts" || return
make_checkusage || return
travis-ci: refactor and add .travis-functions.sh Travis yaml syntax, where we can only use shell one-liners, is awful and ugly. We add a real shell script and source it from .travis.yml. This commit squashes a lot changes because we don't want to pollute history with this meta CI stuff. Highlights of this commit: - enable make distcheck - cleanup configure options (enable all progs, with python and docs) - shorter config.log dump - out-of-tree build supported - workaround broken libtool on travis host - now it's easy to add temporary debugging stuff - testing locally is possible now What are we testing now: - gcc and clang compiler - configure mostly with --enable-all-programs, --with-python and --enable-gtk-doc - make check with and without root permissions - make distcheck - make install (with and without --prefix as well as DESTDIR=...) - usually we always build in-tree but distcheck does out-of-tree What do we want/expect at all: - This travis setup is intended to always work without fixing or updating this build script all the time. Thats why we only use a few configure flags. - We want to avoid predictable failures on travis host to not make developers tired of this machinery. Any tested feature which is known to be (sometimes) broken should be fixed or skipped as soon as possible. - If this works like wanted then in future almost any point in master commit history should at least survive the build and common tests on this reference host/arch. Moreover we will have a comparable, deterministic build log history. This could make bisecting real bugs easier. - It's not our goal to test any kind of config flags, host setup and arch combination. This would be done better by external build scripts which do not live within the project itself. - Of course this machinery can be also used to reproduce bugs with more exotic config and host setup by pushing a debug branch with modified travis script to github. Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
2014-06-01 17:58:01 -05:00
$MAKE install DESTDIR=/tmp/dest || return
}
function check_root
{
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
travis-ci: refactor and add .travis-functions.sh Travis yaml syntax, where we can only use shell one-liners, is awful and ugly. We add a real shell script and source it from .travis.yml. This commit squashes a lot changes because we don't want to pollute history with this meta CI stuff. Highlights of this commit: - enable make distcheck - cleanup configure options (enable all progs, with python and docs) - shorter config.log dump - out-of-tree build supported - workaround broken libtool on travis host - now it's easy to add temporary debugging stuff - testing locally is possible now What are we testing now: - gcc and clang compiler - configure mostly with --enable-all-programs, --with-python and --enable-gtk-doc - make check with and without root permissions - make distcheck - make install (with and without --prefix as well as DESTDIR=...) - usually we always build in-tree but distcheck does out-of-tree What do we want/expect at all: - This travis setup is intended to always work without fixing or updating this build script all the time. Thats why we only use a few configure flags. - We want to avoid predictable failures on travis host to not make developers tired of this machinery. Any tested feature which is known to be (sometimes) broken should be fixed or skipped as soon as possible. - If this works like wanted then in future almost any point in master commit history should at least survive the build and common tests on this reference host/arch. Moreover we will have a comparable, deterministic build log history. This could make bisecting real bugs easier. - It's not our goal to test any kind of config flags, host setup and arch combination. This would be done better by external build scripts which do not live within the project itself. - Of course this machinery can be also used to reproduce bugs with more exotic config and host setup by pushing a debug branch with modified travis script to github. Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
2014-06-01 17:58:01 -05:00
$MAKE || return
travis-ci: refactor and add .travis-functions.sh Travis yaml syntax, where we can only use shell one-liners, is awful and ugly. We add a real shell script and source it from .travis.yml. This commit squashes a lot changes because we don't want to pollute history with this meta CI stuff. Highlights of this commit: - enable make distcheck - cleanup configure options (enable all progs, with python and docs) - shorter config.log dump - out-of-tree build supported - workaround broken libtool on travis host - now it's easy to add temporary debugging stuff - testing locally is possible now What are we testing now: - gcc and clang compiler - configure mostly with --enable-all-programs, --with-python and --enable-gtk-doc - make check with and without root permissions - make distcheck - make install (with and without --prefix as well as DESTDIR=...) - usually we always build in-tree but distcheck does out-of-tree What do we want/expect at all: - This travis setup is intended to always work without fixing or updating this build script all the time. Thats why we only use a few configure flags. - We want to avoid predictable failures on travis host to not make developers tired of this machinery. Any tested feature which is known to be (sometimes) broken should be fixed or skipped as soon as possible. - If this works like wanted then in future almost any point in master commit history should at least survive the build and common tests on this reference host/arch. Moreover we will have a comparable, deterministic build log history. This could make bisecting real bugs easier. - It's not our goal to test any kind of config flags, host setup and arch combination. This would be done better by external build scripts which do not live within the project itself. - Of course this machinery can be also used to reproduce bugs with more exotic config and host setup by pushing a debug branch with modified travis script to github. Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
2014-06-01 17:58:01 -05:00
$MAKE check TS_COMMAND="true" || 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
travis-ci: refactor and add .travis-functions.sh Travis yaml syntax, where we can only use shell one-liners, is awful and ugly. We add a real shell script and source it from .travis.yml. This commit squashes a lot changes because we don't want to pollute history with this meta CI stuff. Highlights of this commit: - enable make distcheck - cleanup configure options (enable all progs, with python and docs) - shorter config.log dump - out-of-tree build supported - workaround broken libtool on travis host - now it's easy to add temporary debugging stuff - testing locally is possible now What are we testing now: - gcc and clang compiler - configure mostly with --enable-all-programs, --with-python and --enable-gtk-doc - make check with and without root permissions - make distcheck - make install (with and without --prefix as well as DESTDIR=...) - usually we always build in-tree but distcheck does out-of-tree What do we want/expect at all: - This travis setup is intended to always work without fixing or updating this build script all the time. Thats why we only use a few configure flags. - We want to avoid predictable failures on travis host to not make developers tired of this machinery. Any tested feature which is known to be (sometimes) broken should be fixed or skipped as soon as possible. - If this works like wanted then in future almost any point in master commit history should at least survive the build and common tests on this reference host/arch. Moreover we will have a comparable, deterministic build log history. This could make bisecting real bugs easier. - It's not our goal to test any kind of config flags, host setup and arch combination. This would be done better by external build scripts which do not live within the project itself. - Of course this machinery can be also used to reproduce bugs with more exotic config and host setup by pushing a debug branch with modified travis script to github. Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
2014-06-01 17:58:01 -05:00
}
function check_dist
{
xconfigure \
travis-ci: refactor and add .travis-functions.sh Travis yaml syntax, where we can only use shell one-liners, is awful and ugly. We add a real shell script and source it from .travis.yml. This commit squashes a lot changes because we don't want to pollute history with this meta CI stuff. Highlights of this commit: - enable make distcheck - cleanup configure options (enable all progs, with python and docs) - shorter config.log dump - out-of-tree build supported - workaround broken libtool on travis host - now it's easy to add temporary debugging stuff - testing locally is possible now What are we testing now: - gcc and clang compiler - configure mostly with --enable-all-programs, --with-python and --enable-gtk-doc - make check with and without root permissions - make distcheck - make install (with and without --prefix as well as DESTDIR=...) - usually we always build in-tree but distcheck does out-of-tree What do we want/expect at all: - This travis setup is intended to always work without fixing or updating this build script all the time. Thats why we only use a few configure flags. - We want to avoid predictable failures on travis host to not make developers tired of this machinery. Any tested feature which is known to be (sometimes) broken should be fixed or skipped as soon as possible. - If this works like wanted then in future almost any point in master commit history should at least survive the build and common tests on this reference host/arch. Moreover we will have a comparable, deterministic build log history. This could make bisecting real bugs easier. - It's not our goal to test any kind of config flags, host setup and arch combination. This would be done better by external build scripts which do not live within the project itself. - Of course this machinery can be also used to reproduce bugs with more exotic config and host setup by pushing a debug branch with modified travis script to github. Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
2014-06-01 17:58:01 -05:00
|| 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
}
travis-ci: refactor and add .travis-functions.sh Travis yaml syntax, where we can only use shell one-liners, is awful and ugly. We add a real shell script and source it from .travis.yml. This commit squashes a lot changes because we don't want to pollute history with this meta CI stuff. Highlights of this commit: - enable make distcheck - cleanup configure options (enable all progs, with python and docs) - shorter config.log dump - out-of-tree build supported - workaround broken libtool on travis host - now it's easy to add temporary debugging stuff - testing locally is possible now What are we testing now: - gcc and clang compiler - configure mostly with --enable-all-programs, --with-python and --enable-gtk-doc - make check with and without root permissions - make distcheck - make install (with and without --prefix as well as DESTDIR=...) - usually we always build in-tree but distcheck does out-of-tree What do we want/expect at all: - This travis setup is intended to always work without fixing or updating this build script all the time. Thats why we only use a few configure flags. - We want to avoid predictable failures on travis host to not make developers tired of this machinery. Any tested feature which is known to be (sometimes) broken should be fixed or skipped as soon as possible. - If this works like wanted then in future almost any point in master commit history should at least survive the build and common tests on this reference host/arch. Moreover we will have a comparable, deterministic build log history. This could make bisecting real bugs easier. - It's not our goal to test any kind of config flags, host setup and arch combination. This would be done better by external build scripts which do not live within the project itself. - Of course this machinery can be also used to reproduce bugs with more exotic config and host setup by pushing a debug branch with modified travis script to github. Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
2014-06-01 17:58:01 -05:00
function travis_before_script
{
set -o xtrace
./autogen.sh
ret=$?
set +o xtrace
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 -name "diff" | grep "tests/diff" | head -n 1)
travis-ci: refactor and add .travis-functions.sh Travis yaml syntax, where we can only use shell one-liners, is awful and ugly. We add a real shell script and source it from .travis.yml. This commit squashes a lot changes because we don't want to pollute history with this meta CI stuff. Highlights of this commit: - enable make distcheck - cleanup configure options (enable all progs, with python and docs) - shorter config.log dump - out-of-tree build supported - workaround broken libtool on travis host - now it's easy to add temporary debugging stuff - testing locally is possible now What are we testing now: - gcc and clang compiler - configure mostly with --enable-all-programs, --with-python and --enable-gtk-doc - make check with and without root permissions - make distcheck - make install (with and without --prefix as well as DESTDIR=...) - usually we always build in-tree but distcheck does out-of-tree What do we want/expect at all: - This travis setup is intended to always work without fixing or updating this build script all the time. Thats why we only use a few configure flags. - We want to avoid predictable failures on travis host to not make developers tired of this machinery. Any tested feature which is known to be (sometimes) broken should be fixed or skipped as soon as possible. - If this works like wanted then in future almost any point in master commit history should at least survive the build and common tests on this reference host/arch. Moreover we will have a comparable, deterministic build log history. This could make bisecting real bugs easier. - It's not our goal to test any kind of config flags, host setup and arch combination. This would be done better by external build scripts which do not live within the project itself. - Of course this machinery can be also used to reproduce bugs with more exotic config and host setup by pushing a debug branch with modified travis script to github. Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
2014-06-01 17:58:01 -05:00
if [ -d "$diff_dir" ]; then
tmp=$(find "$diff_dir" -type f | sort)
echo -en "dump test diffs:\n${tmp}\n"
echo "$tmp" | xargs cat
travis-ci: refactor and add .travis-functions.sh Travis yaml syntax, where we can only use shell one-liners, is awful and ugly. We add a real shell script and source it from .travis.yml. This commit squashes a lot changes because we don't want to pollute history with this meta CI stuff. Highlights of this commit: - enable make distcheck - cleanup configure options (enable all progs, with python and docs) - shorter config.log dump - out-of-tree build supported - workaround broken libtool on travis host - now it's easy to add temporary debugging stuff - testing locally is possible now What are we testing now: - gcc and clang compiler - configure mostly with --enable-all-programs, --with-python and --enable-gtk-doc - make check with and without root permissions - make distcheck - make install (with and without --prefix as well as DESTDIR=...) - usually we always build in-tree but distcheck does out-of-tree What do we want/expect at all: - This travis setup is intended to always work without fixing or updating this build script all the time. Thats why we only use a few configure flags. - We want to avoid predictable failures on travis host to not make developers tired of this machinery. Any tested feature which is known to be (sometimes) broken should be fixed or skipped as soon as possible. - If this works like wanted then in future almost any point in master commit history should at least survive the build and common tests on this reference host/arch. Moreover we will have a comparable, deterministic build log history. This could make bisecting real bugs easier. - It's not our goal to test any kind of config flags, host setup and arch combination. This would be done better by external build scripts which do not live within the project itself. - Of course this machinery can be also used to reproduce bugs with more exotic config and host setup by pushing a debug branch with modified travis script to github. Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
2014-06-01 17:58:01 -05:00
fi
}