blob: 3f55cc90bdd155ec021b6acf7d5dddfb6f590f08 [file] [log] [blame]
Bram Moolenaar0600f352015-09-15 19:18:18 +02001language: c
2
Bram Moolenaarf42397c2019-06-14 20:47:49 +02003anchors:
4 envs:
5 - &tiny-nogui
6 BUILD=yes TEST=test COVERAGE=no FEATURES=tiny "CONFOPT='--disable-gui'" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
7 - &tiny
8 BUILD=yes TEST=test COVERAGE=no FEATURES=tiny CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
9 - &small
10 BUILD=yes TEST=test COVERAGE=no FEATURES=small CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
11 - &normal
Bram Moolenaar23877732020-01-21 22:13:42 +010012 BUILD=yes TEST=test COVERAGE=no FEATURES=normal CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
Bram Moolenaarf42397c2019-06-14 20:47:49 +020013 - &linux-huge
14 BUILD=yes TEST="scripttests test_libvterm" COVERAGE=yes CFLAGS=--coverage LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
15 "CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp'"
16 - &osx-huge # macOS build
17 BUILD=yes TEST=test COVERAGE=no FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
18 "CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-rubyinterp --enable-luainterp --enable-tclinterp'"
19 - &unittests
20 BUILD=no TEST=unittests COVERAGE=yes CFLAGS=--coverage LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=yes
21 - &asan # ASAN build
22 SANITIZER_CFLAGS="-g -O1 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize=address -fno-omit-frame-pointer"
23 ASAN_OPTIONS="print_stacktrace=1 log_path=asan" LSAN_OPTIONS="suppressions=$TRAVIS_BUILD_DIR/src/testdir/lsan-suppress.txt"
Bram Moolenaar23877732020-01-21 22:13:42 +010024 - &shadowopt
25 SHADOWOPT="-C src/shadow" SRCDIR=./src/shadow
Bram Moolenaarb20617b2016-07-30 17:41:49 +020026
Bram Moolenaarf42397c2019-06-14 20:47:49 +020027 linux: &linux
28 os: linux
29 dist: trusty
30 addons:
31 apt:
32 sources:
33 # Need msgfmt 0.19.8 to be able to generate .desktop files
34 - sourceline: 'ppa:ricotz/toolchain'
Bram Moolenaard47e6f02020-03-13 15:44:49 +010035 packages: &linux-packages
Bram Moolenaarf42397c2019-06-14 20:47:49 +020036 - autoconf
37 - clang
38 - lcov
39 - gettext
40 - libcanberra-dev
41 - libperl-dev
42 - python-dev
43 - python3-dev
44 - liblua5.2-dev
45 - lua5.2
46 - ruby-dev
47 - tcl-dev
48 - cscope
49 - libgtk2.0-dev
50 - desktop-file-utils
51 before_install:
52 - rvm reset
53 # Remove /opt/python/3.x.x/bin from $PATH for using system python3.
54 # ("pyenv global system" doesn't seem to work.)
55 - |
56 if [[ "$(which python3)" =~ ^/opt/python/ ]]; then
57 export PATH=$(py3=$(which python3); echo ${PATH//${py3%/python3}:/})
58 fi
59 - |
60 if [[ "${COVERAGE}" = "yes" ]]; then
61 pip install --user cpp-coveralls
62 fi
63 # needed for https support for coveralls
64 # building cffi only works with gcc, not with clang
65 - |
66 if [[ "${COVERAGE}" = "yes" ]]; then
67 CC=gcc pip install --user pyopenssl ndg-httpsclient pyasn1
68 fi
69 # Use llvm-cov instead of gcov when compiler is clang.
70 - |
71 if [[ "${CC}" = "clang" ]]; then
72 ln -sf "$(which llvm-cov)" /home/travis/bin/gcov
73 fi
74 before_script:
75 # Start virtual framebuffer to be able to test the GUI. Does not work on OS X.
Bram Moolenaard47e6f02020-03-13 15:44:49 +010076 - |
77 if [[ "${TEST}" =~ gui ]]; then
78 export DISPLAY=:99.0
79 sh -e /etc/init.d/xvfb start && sleep 3
80 fi
81 - |
82 [ "${TRAVIS_CPU_ARCH}" = s390x ] || sudo modprobe snd-dummy
Bram Moolenaarf42397c2019-06-14 20:47:49 +020083 - sudo usermod -a -G audio $USER
Bram Moolenaar5b19e5b2019-07-07 15:12:12 +020084 - do_test() { sg audio "sg $(id -gn) '$*'"; }
Bram Moolenaar0600f352015-09-15 19:18:18 +020085
Bram Moolenaarf42397c2019-06-14 20:47:49 +020086 osx: &osx
87 os: osx
88 addons:
89 homebrew:
90 packages:
91 - lua
92 update: true
93 cache:
94 directories:
95 - /usr/local/Homebrew/Library/Homebrew/vendor/
96 - /usr/local/Homebrew/Library/Taps/
97 before_install:
98 - rvm reset
99 # Lua is not installed on Travis OSX
100 - export LUA_PREFIX=/usr/local
Bram Moolenaar5b19e5b2019-07-07 15:12:12 +0200101 before_script:
102 - do_test() { "$@"; }
Bram Moolenaarf42397c2019-06-14 20:47:49 +0200103
104 coverage: &coverage
Bram Moolenaar41193092019-08-24 21:53:31 +0200105 - ~/.local/bin/coveralls -b "${SRCDIR}" -x .xs -e "${SRCDIR}"/if_perl.c -e "${SRCDIR}"/xxd -e "${SRCDIR}"/libvterm --encodings utf-8
Bram Moolenaarf42397c2019-06-14 20:47:49 +0200106 - (cd "${SRCDIR}" && bash <(curl -s https://codecov.io/bash))
107
108 asan_symbolize: &asan_symbolize
109 - |
110 while read log; do
111 asan_symbolize < "${log}"
112 done < <(find . -type f -name 'asan.*' -size +0)
Bram Moolenaar0600f352015-09-15 19:18:18 +0200113
114sudo: false
115
Bram Moolenaarc1d20992015-09-25 20:30:58 +0200116branches:
117 except:
118 - /^v[0-9]/
119
Bram Moolenaar0600f352015-09-15 19:18:18 +0200120script:
121 - NPROC=$(getconf _NPROCESSORS_ONLN)
Bram Moolenaardc9f9e92019-05-11 14:34:13 +0200122 - set -o errexit
123 - echo -e "\\033[33;1mConfiguring Vim\\033[0m" && echo -en "travis_fold:start:configure\\r\\033[0K"
Bram Moolenaar01a6c212019-02-03 13:13:18 +0100124 - |
125 if [[ "${CHECK_AUTOCONF}" = "yes" ]] && [[ "${CC}" = "gcc" ]]; then
126 make -C src autoconf
127 fi
128 - |
129 if [[ -n "${SHADOWOPT}" ]]; then
130 make -C src shadow
131 fi
Bram Moolenaardc9f9e92019-05-11 14:34:13 +0200132 # "./configure" changes its working directory into "$SRCDIR".
133 - ./configure --with-features=${FEATURES} ${CONFOPT} --enable-fail-if-missing
134 - echo -en "travis_fold:end:configure\\r\\033[0K"
135 - echo -e "\\033[33;1mBuilding Vim\\033[0m" && echo -en "travis_fold:start:build\\r\\033[0K"
Bram Moolenaar01a6c212019-02-03 13:13:18 +0100136 - |
Bram Moolenaardc9f9e92019-05-11 14:34:13 +0200137 if [[ "${BUILD}" = "yes" ]]; then
Bram Moolenaar01a6c212019-02-03 13:13:18 +0100138 make ${SHADOWOPT} -j${NPROC}
139 fi
Bram Moolenaardc9f9e92019-05-11 14:34:13 +0200140 - echo -en "travis_fold:end:build\\r\\033[0K"
141 - set +o errexit
Bram Moolenaar01a6c212019-02-03 13:13:18 +0100142 # Show Vim version and also if_xx versions.
143 - |
144 if [[ "${BUILD}" = "yes" ]]; then
145 "${SRCDIR}"/vim --version
Bram Moolenaarb3de5112020-01-26 18:56:34 +0100146 "${SRCDIR}"/vim -u NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit
147 "${SRCDIR}"/vim -u NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
Bram Moolenaar01a6c212019-02-03 13:13:18 +0100148 fi
Bram Moolenaar23877732020-01-21 22:13:42 +0100149 - echo -e "\\033[33;1mTesting Vim\\033[0m" && echo -en "travis_fold:start:test\\r\\033[0K"
150 - do_test make ${SHADOWOPT} ${TEST} && FOLD_MARKER=travis_fold
Bram Moolenaar2b43f7f2019-09-04 14:11:16 +0200151 - echo -en "${FOLD_MARKER}:end:test\\r\\033[0K"
Bram Moolenaarefef9fe2019-07-12 18:45:40 +0200152
Bram Moolenaar0600f352015-09-15 19:18:18 +0200153
Bram Moolenaarf42397c2019-06-14 20:47:49 +0200154# instead of a 2*2*8 matrix (2*os + 2*compiler + 8*env),
155# exclude some builds on mac os x and linux
156# on mac os x "tiny" is always without GUI
157# linux: 2*compiler + 5*env + mac: 2*compiler + 2*env
158matrix:
159 include:
160 - <<: *osx
161 name: tiny-nogui/clang
162 compiler: clang
163 env: *tiny-nogui
164 - <<: *osx
165 name: tiny-nogui/gcc
166 compiler: gcc
167 env: *tiny-nogui
168 - <<: *osx
169 name: huge/clang
170 compiler: clang
171 env: *osx-huge
172 - <<: *osx
173 name: huge/gcc
174 compiler: gcc
175 env: *osx-huge
176 - <<: *linux
177 name: tiny-nogui/clang
178 compiler: clang
179 env: *tiny-nogui
180 - <<: *linux
181 name: tiny-nogui/gcc
182 compiler: gcc
183 env: *tiny-nogui
184 - <<: *linux
185 name: tiny/clang
186 compiler: clang
187 env: *tiny
188 - <<: *linux
189 name: tiny/gcc
190 compiler: gcc
191 env: *tiny
192 - <<: *linux
193 name: small/gcc
194 compiler: gcc
195 env: *small
196 - <<: *linux
197 name: normal/clang
198 compiler: clang
Bram Moolenaar23877732020-01-21 22:13:42 +0100199 env:
200 - *normal
201 - *shadowopt
Bram Moolenaarf42397c2019-06-14 20:47:49 +0200202 - <<: *linux
203 name: normal/gcc
204 compiler: gcc
Bram Moolenaar23877732020-01-21 22:13:42 +0100205 env:
206 - *normal
207 - *shadowopt
Bram Moolenaarf42397c2019-06-14 20:47:49 +0200208 - <<: *linux
Bram Moolenaard47e6f02020-03-13 15:44:49 +0100209 arch: s390x
210 name: huge/gcc-s390x
211 compiler: gcc
212 env:
213 - *linux-huge
214 addons:
215 apt:
216 packages:
217 - *linux-packages
218 - libtool-bin
219 - <<: *linux
Bram Moolenaarf42397c2019-06-14 20:47:49 +0200220 name: huge+coverage/clang
221 compiler: clang
222 env: *linux-huge
223 after_success: *coverage
224 - <<: *linux
225 name: huge+coverage/gcc
226 compiler: gcc
227 env: *linux-huge
228 after_success: *coverage
229 - <<: *linux
230 name: unittests+coverage/gcc
231 compiler: gcc
232 env: *unittests
233 after_success: *coverage
234 - <<: *linux # ASAN
235 name: huge+asan/gcc
236 compiler: gcc
237 env:
238 - *linux-huge
239 - *asan
240 after_failure: *asan_symbolize
Bram Moolenaar435f9f02019-07-03 21:40:16 +0200241 - <<: *linux
242 name: huge-testgui+coverage/gcc
243 compiler: gcc
244 env:
245 - *linux-huge
246 - TEST="-C src testgui"
247 after_success: *coverage
Bram Moolenaar23877732020-01-21 22:13:42 +0100248 - <<: *linux
249 name: vimtags/gcc
250 compiler: gcc
251 env:
252 - *normal
253 - TEST="-C runtime/doc vimtags VIMEXE=../../${SRCDIR}/vim"
Bram Moolenaar0600f352015-09-15 19:18:18 +0200254
255# vim:set sts=2 sw=2 tw=0 et: