blob: f96564bd3a3ea83d809343ec01ea88d8c53456f9 [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
12 BUILD=yes TEST=test COVERAGE=no FEATURES=normal CONFOPT= SHADOWOPT="-C src/shadow" SRCDIR=./src/shadow CHECK_AUTOCONF=no
13 - &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 Moolenaarb20617b2016-07-30 17:41:49 +020024
Bram Moolenaarf42397c2019-06-14 20:47:49 +020025 linux: &linux
26 os: linux
27 dist: trusty
28 addons:
29 apt:
30 sources:
31 # Need msgfmt 0.19.8 to be able to generate .desktop files
32 - sourceline: 'ppa:ricotz/toolchain'
33 packages:
34 - autoconf
35 - clang
36 - lcov
37 - gettext
38 - libcanberra-dev
39 - libperl-dev
40 - python-dev
41 - python3-dev
42 - liblua5.2-dev
43 - lua5.2
44 - ruby-dev
45 - tcl-dev
46 - cscope
47 - libgtk2.0-dev
48 - desktop-file-utils
49 before_install:
50 - rvm reset
51 # Remove /opt/python/3.x.x/bin from $PATH for using system python3.
52 # ("pyenv global system" doesn't seem to work.)
53 - |
54 if [[ "$(which python3)" =~ ^/opt/python/ ]]; then
55 export PATH=$(py3=$(which python3); echo ${PATH//${py3%/python3}:/})
56 fi
57 - |
58 if [[ "${COVERAGE}" = "yes" ]]; then
59 pip install --user cpp-coveralls
60 fi
61 # needed for https support for coveralls
62 # building cffi only works with gcc, not with clang
63 - |
64 if [[ "${COVERAGE}" = "yes" ]]; then
65 CC=gcc pip install --user pyopenssl ndg-httpsclient pyasn1
66 fi
67 # Use llvm-cov instead of gcov when compiler is clang.
68 - |
69 if [[ "${CC}" = "clang" ]]; then
70 ln -sf "$(which llvm-cov)" /home/travis/bin/gcov
71 fi
72 before_script:
73 # Start virtual framebuffer to be able to test the GUI. Does not work on OS X.
74 - export DISPLAY=:99.0
75 - sh -e /etc/init.d/xvfb start && sleep 3
76 - sudo modprobe snd-dummy
77 - sudo usermod -a -G audio $USER
Bram Moolenaar5b19e5b2019-07-07 15:12:12 +020078 - do_test() { sg audio "sg $(id -gn) '$*'"; }
Bram Moolenaar0600f352015-09-15 19:18:18 +020079
Bram Moolenaarf42397c2019-06-14 20:47:49 +020080 osx: &osx
81 os: osx
82 addons:
83 homebrew:
84 packages:
85 - lua
86 update: true
87 cache:
88 directories:
89 - /usr/local/Homebrew/Library/Homebrew/vendor/
90 - /usr/local/Homebrew/Library/Taps/
91 before_install:
92 - rvm reset
93 # Lua is not installed on Travis OSX
94 - export LUA_PREFIX=/usr/local
Bram Moolenaar5b19e5b2019-07-07 15:12:12 +020095 before_script:
96 - do_test() { "$@"; }
Bram Moolenaarf42397c2019-06-14 20:47:49 +020097
98 coverage: &coverage
Bram Moolenaar41193092019-08-24 21:53:31 +020099 - ~/.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 +0200100 - (cd "${SRCDIR}" && bash <(curl -s https://codecov.io/bash))
101
102 asan_symbolize: &asan_symbolize
103 - |
104 while read log; do
105 asan_symbolize < "${log}"
106 done < <(find . -type f -name 'asan.*' -size +0)
Bram Moolenaar0600f352015-09-15 19:18:18 +0200107
108sudo: false
109
Bram Moolenaarc1d20992015-09-25 20:30:58 +0200110branches:
111 except:
112 - /^v[0-9]/
113
Bram Moolenaar0600f352015-09-15 19:18:18 +0200114script:
115 - NPROC=$(getconf _NPROCESSORS_ONLN)
Bram Moolenaardc9f9e92019-05-11 14:34:13 +0200116 - set -o errexit
117 - echo -e "\\033[33;1mConfiguring Vim\\033[0m" && echo -en "travis_fold:start:configure\\r\\033[0K"
Bram Moolenaar01a6c212019-02-03 13:13:18 +0100118 - |
119 if [[ "${CHECK_AUTOCONF}" = "yes" ]] && [[ "${CC}" = "gcc" ]]; then
120 make -C src autoconf
121 fi
122 - |
123 if [[ -n "${SHADOWOPT}" ]]; then
124 make -C src shadow
125 fi
Bram Moolenaardc9f9e92019-05-11 14:34:13 +0200126 # "./configure" changes its working directory into "$SRCDIR".
127 - ./configure --with-features=${FEATURES} ${CONFOPT} --enable-fail-if-missing
128 - echo -en "travis_fold:end:configure\\r\\033[0K"
129 - echo -e "\\033[33;1mBuilding Vim\\033[0m" && echo -en "travis_fold:start:build\\r\\033[0K"
Bram Moolenaar01a6c212019-02-03 13:13:18 +0100130 - |
Bram Moolenaardc9f9e92019-05-11 14:34:13 +0200131 if [[ "${BUILD}" = "yes" ]]; then
Bram Moolenaar01a6c212019-02-03 13:13:18 +0100132 make ${SHADOWOPT} -j${NPROC}
133 fi
Bram Moolenaardc9f9e92019-05-11 14:34:13 +0200134 - echo -en "travis_fold:end:build\\r\\033[0K"
135 - set +o errexit
136 - echo -e "\\033[33;1mTesting Vim\\033[0m" && echo -en "travis_fold:start:test\\r\\033[0K"
Bram Moolenaar01a6c212019-02-03 13:13:18 +0100137 # Show Vim version and also if_xx versions.
138 - |
139 if [[ "${BUILD}" = "yes" ]]; then
140 "${SRCDIR}"/vim --version
141 "${SRCDIR}"/vim --not-a-term -u NONE -S "${SRCDIR}"/testdir/if_ver-1.vim -c quit > /dev/null
142 "${SRCDIR}"/vim --not-a-term -u NONE -S "${SRCDIR}"/testdir/if_ver-2.vim -c quit > /dev/null
143 cat if_ver.txt
144 fi
Bram Moolenaar757bd2e2019-11-01 19:46:22 +0100145 - >
146 do_test make ${SHADOWOPT} ${TEST} &&
147 make -C runtime/doc vimtags VIMEXE=../../"${SRCDIR}"/vim &&
148 FOLD_MARKER=travis_fold
Bram Moolenaar2b43f7f2019-09-04 14:11:16 +0200149 - echo -en "${FOLD_MARKER}:end:test\\r\\033[0K"
Bram Moolenaarefef9fe2019-07-12 18:45:40 +0200150
Bram Moolenaar0600f352015-09-15 19:18:18 +0200151
Bram Moolenaarf42397c2019-06-14 20:47:49 +0200152# instead of a 2*2*8 matrix (2*os + 2*compiler + 8*env),
153# exclude some builds on mac os x and linux
154# on mac os x "tiny" is always without GUI
155# linux: 2*compiler + 5*env + mac: 2*compiler + 2*env
156matrix:
157 include:
158 - <<: *osx
159 name: tiny-nogui/clang
160 compiler: clang
161 env: *tiny-nogui
162 - <<: *osx
163 name: tiny-nogui/gcc
164 compiler: gcc
165 env: *tiny-nogui
166 - <<: *osx
167 name: huge/clang
168 compiler: clang
169 env: *osx-huge
170 - <<: *osx
171 name: huge/gcc
172 compiler: gcc
173 env: *osx-huge
174 - <<: *linux
175 name: tiny-nogui/clang
176 compiler: clang
177 env: *tiny-nogui
178 - <<: *linux
179 name: tiny-nogui/gcc
180 compiler: gcc
181 env: *tiny-nogui
182 - <<: *linux
183 name: tiny/clang
184 compiler: clang
185 env: *tiny
186 - <<: *linux
187 name: tiny/gcc
188 compiler: gcc
189 env: *tiny
190 - <<: *linux
191 name: small/gcc
192 compiler: gcc
193 env: *small
194 - <<: *linux
195 name: normal/clang
196 compiler: clang
197 env: *normal
198 - <<: *linux
199 name: normal/gcc
200 compiler: gcc
201 env: *normal
202 - <<: *linux
203 name: huge+coverage/clang
204 compiler: clang
205 env: *linux-huge
206 after_success: *coverage
207 - <<: *linux
208 name: huge+coverage/gcc
209 compiler: gcc
210 env: *linux-huge
211 after_success: *coverage
212 - <<: *linux
213 name: unittests+coverage/gcc
214 compiler: gcc
215 env: *unittests
216 after_success: *coverage
217 - <<: *linux # ASAN
218 name: huge+asan/gcc
219 compiler: gcc
220 env:
221 - *linux-huge
222 - *asan
223 after_failure: *asan_symbolize
Bram Moolenaar435f9f02019-07-03 21:40:16 +0200224 - <<: *linux
225 name: huge-testgui+coverage/gcc
226 compiler: gcc
227 env:
228 - *linux-huge
229 - TEST="-C src testgui"
230 after_success: *coverage
Bram Moolenaar0600f352015-09-15 19:18:18 +0200231
232# vim:set sts=2 sw=2 tw=0 et: