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