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 if [ "$TRAVIS_OS_NAME" != "osx" -a "$TRAVIS_DIST" != "precise" ]; then
78 conf_opts
="$conf_opts --enable-werror"
81 xconfigure
$conf_opts ||
return
86 # TESTS_* overwrites default from tests/Makemodule.am
87 $MAKE check TESTS_OPTIONS
="$make_opts" ||
return
89 make_checkusage ||
return
91 $MAKE install DESTDIR
=/tmp
/dest ||
return
96 local make_opts
="$MAKE_CHECK_OPTS --show-diff"
97 local conf_opts
="--enable-all-programs"
99 if [ "$TRAVIS_OS_NAME" != "osx" ]; then
100 conf_opts
="$conf_opts --enable-asan --enable-ubsan"
101 make_opts
="$make_opts --memcheck-asan --memcheck-ubsan"
104 if [ "$TRAVIS_OS_NAME" != "osx" -a "$TRAVIS_DIST" != "precise" ]; then
105 conf_opts
="$conf_opts --enable-werror"
108 xconfigure
$conf_opts ||
return
112 $MAKE check-programs ||
return
114 # Modify environment for OSX
117 # TESTS_* overwrites default from tests/Makemodule.am
118 sudo
-E $MAKE check TESTS_PARALLEL
="" TESTS_OPTIONS
="$make_opts" ||
return
120 # root on osx has not enough permission for make install ;)
121 [ "$TRAVIS_OS_NAME" = "osx" ] && return
123 # keep PATH to make sure sudo would find $CC
124 sudo env
"PATH=$PATH" $MAKE install ||
return
131 $MAKE distcheck ||
return
134 function travis_install_script
137 local additional_packages
=()
138 local clang_version gcc_version
140 if [ "$TRAVIS_OS_NAME" = "osx" ]; then
145 ubuntu_release
=$
(lsb_release
-cs)
147 # install required packages
148 sudo bash
-c "echo 'deb-src http://archive.ubuntu.com/ubuntu/ $ubuntu_release main restricted universe multiverse' >>/etc/apt/sources.list"
150 if [[ "$CC" =~ ^clang-
([0-9]+)$
]]; then
151 clang_version
=${BASH_REMATCH[1]}
152 # the following snippet was borrowed from https://apt.llvm.org/llvm.sh
153 wget
-O - https
://apt.llvm.org
/llvm-snapshot.gpg.key | sudo apt-key add
-
154 sudo add-apt-repository
-y "deb http://apt.llvm.org/$ubuntu_release/ llvm-toolchain-$ubuntu_release-$clang_version main"
155 additional_packages
+=(clang-
$clang_version llvm-
$clang_version)
156 elif [[ "$CC" =~ ^gcc-
([0-9]+)$
]]; then
157 gcc_version
=${BASH_REMATCH[1]}
158 sudo add-apt-repository
-y ppa
:ubuntu-toolchain-r
/test
159 additional_packages
+=(gcc-
$gcc_version)
162 sudo apt-get
-qq update
--fix-missing
163 sudo apt-get build-dep
-y util-linux
164 sudo apt-get
install -qq >/dev
/null \
176 "${additional_packages[@]}" \
179 # install only if available (e.g. Ubuntu Trusty)
180 sudo apt-get
install -qq >/dev
/null \
181 libsystemd-daemon-dev \
182 libsystemd-journal-dev \
186 function osx_install_script
188 brew update
>/dev
/null
190 brew
install gettext ncurses socat xz
191 brew link
--force gettext
192 brew link
--force ncurses
199 # workaround: glibtoolize could not find sed
203 function osx_prepare_check
205 [ "$TRAVIS_OS_NAME" = "osx" ] ||
return 0
207 # these ones only need to be gnu for our test-suite
208 brew
install coreutils findutils gnu-tar gnu-sed
210 # symlink minimally needed gnu commands into PATH
212 for cmd
in readlink
seq timeout truncate
find xargs tar sed; do
213 ln -s /usr
/local
/bin
/g
$cmd $HOME/bin
/$cmd
217 export TS_OPT_col_multibyte_known_fail
=yes
218 export TS_OPT_colcrt_regressions_known_fail
=yes
219 export TS_OPT_column_invalid_multibyte_known_fail
=yes
222 function travis_before_script
233 function travis_script
238 case "$MAKE_CHECK" in
249 echo "error, check environment (travis.yml)" >&2
254 # We exit here with case-switch return value!
260 function travis_after_script
265 # find diff dir from check as well as from distcheck
266 diff_dir
=$
(find .
-type d
-name "diff" |
grep "tests/diff" |
head -n 1)
267 if [ -d "$diff_dir" ]; then
268 tmp
=$
(find "$diff_dir" -type f |
sort)
269 echo -en "dump test diffs:\n${tmp}\n"
270 echo "$tmp" |
xargs cat