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