4 # .travis-functions.sh:
5 # - helper functions to be sourced from .travis.yml
6 # - designed to respect travis' environment but testing locally is possible
10 # TS_OPT_<name>_<something>=yes
11 # - forces tests/functions.sh:ts_has_option() to return "yes" for
12 # variable <something> in test <name>
17 # - overwrites default from tests/Makemodule.am
19 # Do not use TS_* prefix for any travis or build-system stuff. This prefix is
20 # exclusively used by tests/ stuff.
23 if [ ! -f "configure.ac" ]; then
24 echo ".travis-functions.sh must be sourced from source dir" >&2
28 ## some config settings
29 # travis docs say we get 1.5 CPUs
31 DUMP_CONFIG_LOG
="short"
33 # workaround ugly warning on travis OSX,
34 # see https://github.com/direnv/direnv/issues/210
35 shell_session_update
() { :; }
42 .
/configure
"$@" $OSX_CONFOPTS
44 if [ "$DUMP_CONFIG_LOG" = "short" ]; then
45 grep -B1 -A10000 "^## Output variables" config.log |
grep -v "_FALSE="
46 elif [ "$DUMP_CONFIG_LOG" = "full" ]; then
52 # TODO: integrate checkusage into our regular tests and remove this function
53 function make_checkusage
56 # memory leaks are ignored here. See https://github.com/karelzak/util-linux/issues/1077
57 if ! tmp
=$
(ASAN_OPTIONS
="$ASAN_OPTIONS:detect_leaks=0" $MAKE checkusage
2>&1) ||
test -n "$tmp"; then
59 echo "make checkusage failed" >&2
64 function check_nonroot
66 local make_opts
="$MAKE_CHECK_OPTS --show-diff --parsable"
68 --disable-use-tty-group \
69 --disable-makeinstall-chown \
70 --enable-all-programs"
72 if [ "$TRAVIS_OS_NAME" != "osx" ]; then
73 conf_opts
="$conf_opts --enable-asan --enable-ubsan"
74 make_opts
="$make_opts --memcheck-asan --memcheck-ubsan"
77 xconfigure
$conf_opts ||
return
82 # TESTS_* overwrites default from tests/Makemodule.am
83 $MAKE check TESTS_OPTIONS
="$make_opts" ||
return
85 make_checkusage ||
return
87 $MAKE install DESTDIR
=/tmp
/dest ||
return
92 local make_opts
="$MAKE_CHECK_OPTS --show-diff"
93 local conf_opts
="--enable-all-programs"
95 if [ "$TRAVIS_OS_NAME" != "osx" ]; then
96 conf_opts
="$conf_opts --enable-asan --enable-ubsan"
97 make_opts
="$make_opts --memcheck-asan --memcheck-ubsan"
100 xconfigure
$conf_opts ||
return
104 $MAKE check-programs ||
return
106 # Modify environment for OSX
109 # TESTS_* overwrites default from tests/Makemodule.am
110 sudo
-E $MAKE check TESTS_PARALLEL
="" TESTS_OPTIONS
="$make_opts" ||
return
112 # root on osx has not enough permission for make install ;)
113 [ "$TRAVIS_OS_NAME" = "osx" ] && return
115 # keep PATH to make sure sudo would find $CC
116 sudo env
"PATH=$PATH" $MAKE install ||
return
123 $MAKE distcheck ||
return
126 function travis_install_script
128 local ubuntu_release
=$
(lsb_release
-cs)
129 local additional_packages
=()
130 local clang_version gcc_version
132 if [ "$TRAVIS_OS_NAME" = "osx" ]; then
137 # install required packages
138 sudo bash
-c "echo 'deb-src http://archive.ubuntu.com/ubuntu/ $ubuntu_release main restricted universe multiverse' >>/etc/apt/sources.list"
140 if [[ "$CC" =~ ^clang-
([0-9]+)$
]]; then
141 clang_version
=${BASH_REMATCH[1]}
142 # the following snippet was borrowed from https://apt.llvm.org/llvm.sh
143 wget
-O - https
://apt.llvm.org
/llvm-snapshot.gpg.key | sudo apt-key add
-
144 sudo add-apt-repository
-y "deb http://apt.llvm.org/$ubuntu_release/ llvm-toolchain-$ubuntu_release-$clang_version main"
145 additional_packages
+=(clang-
$clang_version llvm-
$clang_version)
146 elif [[ "$CC" =~ ^gcc-
([0-9]+)$
]]; then
147 gcc_version
=${BASH_REMATCH[1]}
148 sudo add-apt-repository
-y ppa
:ubuntu-toolchain-r
/test
149 additional_packages
+=(gcc-
$gcc_version)
152 sudo apt-get
-qq update
--fix-missing
153 sudo apt-get build-dep
-y util-linux
154 sudo apt-get
install -qq >/dev
/null \
166 "${additional_packages[@]}" \
169 # install only if available (e.g. Ubuntu Trusty)
170 sudo apt-get
install -qq >/dev
/null \
171 libsystemd-daemon-dev \
172 libsystemd-journal-dev \
176 function osx_install_script
178 brew update
>/dev
/null
180 brew
install gettext ncurses socat xz
181 brew link
--force gettext
182 brew link
--force ncurses
189 # workaround: glibtoolize could not find sed
193 function osx_prepare_check
195 [ "$TRAVIS_OS_NAME" = "osx" ] ||
return 0
197 # these ones only need to be gnu for our test-suite
198 brew
install coreutils findutils gnu-tar gnu-sed
200 # symlink minimally needed gnu commands into PATH
202 for cmd
in readlink
seq timeout truncate
find xargs tar sed; do
203 ln -s /usr
/local
/bin
/g
$cmd $HOME/bin
/$cmd
207 export TS_OPT_col_multibyte_known_fail
=yes
208 export TS_OPT_colcrt_regressions_known_fail
=yes
209 export TS_OPT_column_invalid_multibyte_known_fail
=yes
212 function travis_before_script
223 function travis_script
228 case "$MAKE_CHECK" in
239 echo "error, check environment (travis.yml)" >&2
244 # We exit here with case-switch return value!
250 function travis_after_script
255 # find diff dir from check as well as from distcheck
256 diff_dir
=$
(find .
-type d
-name "diff" |
grep "tests/diff" |
head -n 1)
257 if [ -d "$diff_dir" ]; then
258 tmp
=$
(find "$diff_dir" -type f |
sort)
259 echo -en "dump test diffs:\n${tmp}\n"
260 echo "$tmp" |
xargs cat