]> git.ipfire.org Git - thirdparty/util-linux.git/blob - .travis-functions.sh
fincore: check rc from smartcols stuff [coverity scan]
[thirdparty/util-linux.git] / .travis-functions.sh
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
14 ## some config settings
15 # travis docs say we get 1.5 CPUs
16 MAKE="make -j2"
17 DUMP_CONFIG_LOG="short"
18 export TS_OPT_parsable="yes"
19
20 function xconfigure
21 {
22 ./configure "$@" $OSX_CONFOPTS
23 err=$?
24 if [ "$DUMP_CONFIG_LOG" = "short" ]; then
25 grep -B1 -A10000 "^## Output variables" config.log | grep -v "_FALSE="
26 elif [ "$DUMP_CONFIG_LOG" = "full" ]; then
27 cat config.log
28 fi
29 return $err
30 }
31
32 function check_nonroot
33 {
34 local opts="$MAKE_CHECK_OPTS --show-diff"
35
36 xconfigure \
37 --disable-use-tty-group \
38 --enable-all-programs \
39 || return
40 $MAKE || return
41
42 osx_prepare_check
43 $MAKE check TS_OPTS="$opts" || return
44
45 $MAKE install DESTDIR=/tmp/dest || return
46 }
47
48 function check_root
49 {
50 local opts="$MAKE_CHECK_OPTS --parallel=1 --show-diff"
51
52 xconfigure \
53 --enable-all-programs \
54 || return
55 $MAKE || return
56
57 $MAKE check TS_COMMAND="true" || return
58 osx_prepare_check
59 sudo -E $MAKE check TS_OPTS="$opts" || return
60
61 sudo $MAKE install || return
62 }
63
64 function check_dist
65 {
66 xconfigure \
67 || return
68 $MAKE distcheck || return
69 }
70
71 function travis_install_script
72 {
73 if [ "$TRAVIS_OS_NAME" = "osx" ]; then
74 osx_install_script
75 return
76 fi
77
78 # install some packages from Ubuntu's default sources
79 sudo apt-get -qq update
80 sudo apt-get install -qq >/dev/null \
81 bc \
82 btrfs-tools \
83 dnsutils \
84 libcap-ng-dev \
85 libncursesw5-dev \
86 libpam-dev \
87 libudev-dev \
88 gtk-doc-tools \
89 mdadm \
90 ntp \
91 socat \
92 || return
93
94 # install only if available (e.g. Ubuntu Trusty)
95 sudo apt-get install -qq >/dev/null \
96 libsystemd-daemon-dev \
97 libsystemd-journal-dev \
98 || true
99 }
100
101 function osx_install_script
102 {
103 brew update >/dev/null
104 brew tap homebrew/dupes
105
106 brew install gettext ncurses socat xz
107 brew link --force gettext
108 brew link --force ncurses
109
110 OSX_CONFOPTS="
111 --disable-ipcrm \
112 --disable-ipcs \
113 "
114
115 # workaround: glibtoolize could not find sed
116 export SED="sed"
117 }
118
119 function osx_prepare_check
120 {
121 [ "$TRAVIS_OS_NAME" = "osx" ] || return 0
122
123 # these ones only need to be gnu for our test-suite
124 brew install coreutils findutils gnu-tar gnu-sed
125
126 # symlink minimally needed gnu commands into PATH
127 mkdir ~/bin
128 for cmd in readlink seq truncate find xargs tar sed; do
129 ln -s /usr/local/bin/g$cmd $HOME/bin/$cmd
130 done
131 hash -r
132
133 export TS_OPT_col_multibyte_known_fail=yes
134 export TS_OPT_colcrt_regressions_known_fail=yes
135 export TS_OPT_column_invalid_multibyte_known_fail=yes
136 }
137
138 function travis_before_script
139 {
140 set -o xtrace
141
142 ./autogen.sh
143 ret=$?
144
145 set +o xtrace
146 return $ret
147 }
148
149 function travis_script
150 {
151 local ret
152 set -o xtrace
153
154 case "$MAKE_CHECK" in
155 nonroot)
156 check_nonroot
157 ;;
158 root)
159 check_root
160 ;;
161 dist)
162 check_dist
163 ;;
164 *)
165 echo "error, check environment (travis.yml)" >&2
166 false
167 ;;
168 esac
169
170 # We exit here with case-switch return value!
171 ret=$?
172 set +o xtrace
173 return $ret
174 }
175
176 function travis_after_script
177 {
178 local diff_dir
179 local tmp
180
181 # find diff dir from check as well as from distcheck
182 diff_dir=$(find . -type d -name "diff" | grep "tests/diff" | head -n 1)
183 if [ -d "$diff_dir" ]; then
184 tmp=$(find "$diff_dir" -type f | sort)
185 echo -en "dump test diffs:\n${tmp}\n"
186 echo "$tmp" | xargs cat
187 fi
188 }