]> git.ipfire.org Git - thirdparty/util-linux.git/blame - .travis-functions.sh
hwclock: exit bug fix and single test mode message
[thirdparty/util-linux.git] / .travis-functions.sh
CommitLineData
dd68764c
RM
1#!/bin/bash
2
3#
4# .travis-functions.sh:
5# - helper functions to be sourced from .travis.yml
6# - designed to respect travis' environment but testing locally is possible
7#
8
9if [ ! -f "configure.ac" ]; then
10 echo ".travis-functions.sh must be sourced from source dir" >&2
11 return 1 || exit 1
12fi
13
1091e83e
RM
14## some config settings
15# travis docs say we get 1.5 CPUs
16MAKE="make -j2"
dd68764c 17DUMP_CONFIG_LOG="short"
855f7f06 18export TS_OPT_parsable="yes"
dd68764c 19
cf76bbae
RM
20# workaround ugly warning on travis OSX,
21# see https://github.com/direnv/direnv/issues/210
22shell_session_update() { :; }
23
1091e83e 24function xconfigure
dd68764c 25{
cf76bbae
RM
26 which "$CC"
27 "$CC" --version
28
668d6d2e 29 ./configure "$@" $OSX_CONFOPTS
dd68764c
RM
30 err=$?
31 if [ "$DUMP_CONFIG_LOG" = "short" ]; then
32 grep -B1 -A10000 "^## Output variables" config.log | grep -v "_FALSE="
33 elif [ "$DUMP_CONFIG_LOG" = "full" ]; then
34 cat config.log
35 fi
36 return $err
37}
38
d1a7c00e
RM
39# TODO: integrate checkusage into our regular tests and remove this function
40function make_checkusage
41{
42 local tmp
43 if ! tmp=$($MAKE checkusage 2>&1) || test -n "$tmp"; then
44 echo "$tmp"
45 echo "make checkusage failed" >&2
46 return 1
47 fi
48}
49
dd68764c
RM
50function check_nonroot
51{
74fe554a 52 local opts="$MAKE_CHECK_OPTS --show-diff"
266f8562 53
1091e83e 54 xconfigure \
dd68764c 55 --disable-use-tty-group \
a65041b5 56 --disable-makeinstall-chown \
dd68764c 57 --enable-all-programs \
dd68764c
RM
58 || return
59 $MAKE || return
668d6d2e
RM
60
61 osx_prepare_check
266f8562 62 $MAKE check TS_OPTS="$opts" || return
668d6d2e 63
d1a7c00e
RM
64 make_checkusage || return
65
dd68764c
RM
66 $MAKE install DESTDIR=/tmp/dest || return
67}
68
69function check_root
70{
74fe554a 71 local opts="$MAKE_CHECK_OPTS --parallel=1 --show-diff"
266f8562 72
1091e83e 73 xconfigure \
dd68764c
RM
74 --enable-all-programs \
75 || return
76 $MAKE || return
668d6d2e 77
dd68764c 78 $MAKE check TS_COMMAND="true" || return
668d6d2e 79 osx_prepare_check
266f8562 80 sudo -E $MAKE check TS_OPTS="$opts" || return
668d6d2e 81
cf76bbae
RM
82 # keep PATH to make sure sudo would find $CC
83 sudo env "PATH=$PATH" $MAKE install || return
dd68764c
RM
84}
85
86function check_dist
87{
22174021 88 xconfigure \
dd68764c
RM
89 || return
90 $MAKE distcheck || return
91}
92
5ddcc32a
RM
93function travis_install_script
94{
668d6d2e
RM
95 if [ "$TRAVIS_OS_NAME" = "osx" ]; then
96 osx_install_script
97 return
98 fi
99
cf76bbae
RM
100 # install required packages
101 sudo apt-get -qq update --fix-missing
5ddcc32a
RM
102 sudo apt-get install -qq >/dev/null \
103 bc \
fc412fe4 104 btrfs-tools \
5ddcc32a
RM
105 dnsutils \
106 libcap-ng-dev \
91891979 107 libncursesw5-dev \
5ddcc32a
RM
108 libpam-dev \
109 libudev-dev \
110 gtk-doc-tools \
f81faffa 111 mdadm \
5ddcc32a 112 ntp \
fc412fe4 113 socat \
5ddcc32a 114 || return
432439a4 115
fc412fe4 116 # install only if available (e.g. Ubuntu Trusty)
432439a4 117 sudo apt-get install -qq >/dev/null \
fc412fe4
RM
118 libsystemd-daemon-dev \
119 libsystemd-journal-dev \
120 || true
5ddcc32a
RM
121}
122
668d6d2e
RM
123function osx_install_script
124{
125 brew update >/dev/null
126 brew tap homebrew/dupes
127
128 brew install gettext ncurses socat xz
129 brew link --force gettext
130 brew link --force ncurses
131
132 OSX_CONFOPTS="
668d6d2e
RM
133 --disable-ipcrm \
134 --disable-ipcs \
668d6d2e 135 "
160eef81
RM
136
137 # workaround: glibtoolize could not find sed
138 export SED="sed"
668d6d2e
RM
139}
140
141function osx_prepare_check
142{
143 [ "$TRAVIS_OS_NAME" = "osx" ] || return 0
144
145 # these ones only need to be gnu for our test-suite
146 brew install coreutils findutils gnu-tar gnu-sed
147
148 # symlink minimally needed gnu commands into PATH
149 mkdir ~/bin
4fb3fe39 150 for cmd in readlink seq timeout truncate find xargs tar sed; do
668d6d2e
RM
151 ln -s /usr/local/bin/g$cmd $HOME/bin/$cmd
152 done
153 hash -r
154
155 export TS_OPT_col_multibyte_known_fail=yes
156 export TS_OPT_colcrt_regressions_known_fail=yes
157 export TS_OPT_column_invalid_multibyte_known_fail=yes
158}
159
dd68764c
RM
160function travis_before_script
161{
dd68764c
RM
162 set -o xtrace
163
164 ./autogen.sh
165 ret=$?
166
dd68764c 167 set +o xtrace
dd68764c
RM
168 return $ret
169}
170
171function travis_script
172{
173 local ret
174 set -o xtrace
175
176 case "$MAKE_CHECK" in
177 nonroot)
178 check_nonroot
179 ;;
180 root)
181 check_root
182 ;;
183 dist)
184 check_dist
185 ;;
186 *)
187 echo "error, check environment (travis.yml)" >&2
188 false
189 ;;
190 esac
191
192 # We exit here with case-switch return value!
193 ret=$?
194 set +o xtrace
195 return $ret
196}
197
198function travis_after_script
199{
200 local diff_dir
201 local tmp
202
203 # find diff dir from check as well as from distcheck
1091e83e 204 diff_dir=$(find . -type d -name "diff" | grep "tests/diff" | head -n 1)
dd68764c
RM
205 if [ -d "$diff_dir" ]; then
206 tmp=$(find "$diff_dir" -type f | sort)
207 echo -en "dump test diffs:\n${tmp}\n"
1091e83e 208 echo "$tmp" | xargs cat
dd68764c
RM
209 fi
210}