comparison .travis.yml @ 17061:051a2f640a6e v8.1.1530

patch 8.1.1530: Travis config is not optimal commit https://github.com/vim/vim/commit/f42397c395ec8ff2dffef914805b4d9cbf1d600b Author: Bram Moolenaar <Bram@vim.org> Date: Fri Jun 14 20:47:49 2019 +0200 patch 8.1.1530: Travis config is not optimal Problem: Travis config is not optimal. Solution: Remove system conditions. Do not use excluding matrix. Cache OSX results. (Ozaki Kiichi, closes #4521)
author Bram Moolenaar <Bram@vim.org>
date Fri, 14 Jun 2019 21:00:08 +0200
parents eca47d76ad5a
children fceb0977275a
comparison
equal deleted inserted replaced
17060:98ca6505a354 17061:051a2f640a6e
1 language: c 1 language: c
2 dist: trusty 2
3 3 anchors:
4 os: 4 envs:
5 - osx 5 - &tiny-nogui
6 - linux 6 BUILD=yes TEST=test COVERAGE=no FEATURES=tiny "CONFOPT='--disable-gui'" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
7 7 - &tiny
8 compiler: 8 BUILD=yes TEST=test COVERAGE=no FEATURES=tiny CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
9 - clang 9 - &small
10 - gcc 10 BUILD=yes TEST=test COVERAGE=no FEATURES=small CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
11 11 - &normal
12 env: 12 BUILD=yes TEST=test COVERAGE=no FEATURES=normal CONFOPT= SHADOWOPT="-C src/shadow" SRCDIR=./src/shadow CHECK_AUTOCONF=no
13 - &tiny-nogui 13 - &linux-huge
14 BUILD=yes TEST=test COVERAGE=no FEATURES=tiny "CONFOPT='--disable-gui'" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no 14 BUILD=yes TEST="scripttests test_libvterm" COVERAGE=yes CFLAGS=--coverage LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
15 - &tiny 15 "CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp'"
16 BUILD=yes TEST=test COVERAGE=no FEATURES=tiny CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no 16 - &osx-huge # macOS build
17 - &asan # ASAN build 17 BUILD=yes TEST=test COVERAGE=no FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no
18 BUILD=yes TEST=test SANITIZER_CFLAGS="-g -O1 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize=address -fno-omit-frame-pointer" 18 "CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-rubyinterp --enable-luainterp --enable-tclinterp'"
19 FEATURES=huge SRCDIR=./src CHECK_AUTOCONF=no ASAN_OPTIONS="print_stacktrace=1 log_path=asan" LSAN_OPTIONS="suppressions=$TRAVIS_BUILD_DIR/src/testdir/lsan-suppress.txt" 19 - &unittests
20 "CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-rubyinterp --enable-luainterp --enable-tclinterp'" 20 BUILD=no TEST=unittests COVERAGE=yes CFLAGS=--coverage LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=yes
21 - &linux-huge 21 - &asan # ASAN build
22 BUILD=yes TEST="scripttests test_libvterm" COVERAGE=yes CFLAGS=--coverage LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no 22 SANITIZER_CFLAGS="-g -O1 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize=address -fno-omit-frame-pointer"
23 "CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp'" 23 ASAN_OPTIONS="print_stacktrace=1 log_path=asan" LSAN_OPTIONS="suppressions=$TRAVIS_BUILD_DIR/src/testdir/lsan-suppress.txt"
24 - &unittests 24
25 BUILD=no TEST=unittests COVERAGE=yes CFLAGS=--coverage LDFLAGS=--coverage FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=yes 25 linux: &linux
26 - &normal 26 os: linux
27 BUILD=yes TEST=test COVERAGE=no FEATURES=normal CONFOPT= SHADOWOPT="-C src/shadow" SRCDIR=./src/shadow CHECK_AUTOCONF=no 27 dist: trusty
28 - &small 28 addons:
29 BUILD=yes TEST=test COVERAGE=no FEATURES=small CONFOPT= SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no 29 apt:
30 - &osx-huge # Mac OSX build 30 sources:
31 BUILD=yes TEST=test COVERAGE=no FEATURES=huge SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no 31 # Need msgfmt 0.19.8 to be able to generate .desktop files
32 "CONFOPT='--enable-perlinterp --enable-pythoninterp --enable-rubyinterp --enable-luainterp --enable-tclinterp'" 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
78
79 osx: &osx
80 os: osx
81 addons:
82 homebrew:
83 packages:
84 - lua
85 update: true
86 cache:
87 directories:
88 - /usr/local/Homebrew/Library/Homebrew/vendor/
89 - /usr/local/Homebrew/Library/Taps/
90 before_install:
91 - rvm reset
92 # Lua is not installed on Travis OSX
93 - export LUA_PREFIX=/usr/local
94
95 coverage: &coverage
96 - ~/.local/bin/coveralls -b "${SRCDIR}" -x .xs -e "${SRCDIR}"/if_perl.c -e "${SRCDIR}"/xxd -e "${SRCDIR}"/libvterm --encodings utf-8 latin-1 EUC-KR
97 - (cd "${SRCDIR}" && bash <(curl -s https://codecov.io/bash))
98
99 asan_symbolize: &asan_symbolize
100 - |
101 while read log; do
102 asan_symbolize < "${log}"
103 done < <(find . -type f -name 'asan.*' -size +0)
33 104
34 sudo: false 105 sudo: false
106
107 branches:
108 except:
109 - /^v[0-9]/
110
111 script:
112 - NPROC=$(getconf _NPROCESSORS_ONLN)
113 - set -o errexit
114 - echo -e "\\033[33;1mConfiguring Vim\\033[0m" && echo -en "travis_fold:start:configure\\r\\033[0K"
115 - |
116 if [[ "${CHECK_AUTOCONF}" = "yes" ]] && [[ "${CC}" = "gcc" ]]; then
117 make -C src autoconf
118 fi
119 - |
120 if [[ -n "${SHADOWOPT}" ]]; then
121 make -C src shadow
122 fi
123 # "./configure" changes its working directory into "$SRCDIR".
124 - ./configure --with-features=${FEATURES} ${CONFOPT} --enable-fail-if-missing
125 - echo -en "travis_fold:end:configure\\r\\033[0K"
126 - echo -e "\\033[33;1mBuilding Vim\\033[0m" && echo -en "travis_fold:start:build\\r\\033[0K"
127 - |
128 if [[ "${BUILD}" = "yes" ]]; then
129 make ${SHADOWOPT} -j${NPROC}
130 fi
131 - echo -en "travis_fold:end:build\\r\\033[0K"
132 - set +o errexit
133 - echo -e "\\033[33;1mTesting Vim\\033[0m" && echo -en "travis_fold:start:test\\r\\033[0K"
134 # Show Vim version and also if_xx versions.
135 - |
136 if [[ "${BUILD}" = "yes" ]]; then
137 "${SRCDIR}"/vim --version
138 "${SRCDIR}"/vim --not-a-term -u NONE -S "${SRCDIR}"/testdir/if_ver-1.vim -c quit > /dev/null
139 "${SRCDIR}"/vim --not-a-term -u NONE -S "${SRCDIR}"/testdir/if_ver-2.vim -c quit > /dev/null
140 cat if_ver.txt
141 fi
142 - make ${SHADOWOPT} ${TEST}
143 - echo -en "travis_fold:end:test\\r\\033[0K"
35 144
36 # instead of a 2*2*8 matrix (2*os + 2*compiler + 8*env), 145 # instead of a 2*2*8 matrix (2*os + 2*compiler + 8*env),
37 # exclude some builds on mac os x and linux 146 # exclude some builds on mac os x and linux
38 # on mac os x "tiny" is always without GUI 147 # on mac os x "tiny" is always without GUI
39 # linux: 2*compiler + 5*env + mac: 2*compiler + 2*env 148 # linux: 2*compiler + 5*env + mac: 2*compiler + 2*env
40 matrix: 149 matrix:
41 exclude: 150 include:
42 - os: osx 151 - <<: *osx
152 name: tiny-nogui/clang
153 compiler: clang
154 env: *tiny-nogui
155 - <<: *osx
156 name: tiny-nogui/gcc
157 compiler: gcc
158 env: *tiny-nogui
159 - <<: *osx
160 name: huge/clang
161 compiler: clang
162 env: *osx-huge
163 - <<: *osx
164 name: huge/gcc
165 compiler: gcc
166 env: *osx-huge
167 - <<: *linux
168 name: tiny-nogui/clang
169 compiler: clang
170 env: *tiny-nogui
171 - <<: *linux
172 name: tiny-nogui/gcc
173 compiler: gcc
174 env: *tiny-nogui
175 - <<: *linux
176 name: tiny/clang
177 compiler: clang
43 env: *tiny 178 env: *tiny
44 - os: osx 179 - <<: *linux
180 name: tiny/gcc
181 compiler: gcc
182 env: *tiny
183 - <<: *linux
184 name: small/gcc
185 compiler: gcc
186 env: *small
187 - <<: *linux
188 name: normal/clang
189 compiler: clang
45 env: *normal 190 env: *normal
46 - os: osx 191 - <<: *linux
192 name: normal/gcc
193 compiler: gcc
194 env: *normal
195 - <<: *linux
196 name: huge+coverage/clang
197 compiler: clang
198 env: *linux-huge
199 after_success: *coverage
200 - <<: *linux
201 name: huge+coverage/gcc
202 compiler: gcc
203 env: *linux-huge
204 after_success: *coverage
205 - <<: *linux
206 name: unittests+coverage/gcc
207 compiler: gcc
47 env: *unittests 208 env: *unittests
48 - os: osx 209 after_success: *coverage
49 env: *small 210 - <<: *linux # ASAN
50 - os: osx 211 name: huge+asan/gcc
51 env: *linux-huge 212 compiler: gcc
52 - os: osx 213 env:
53 env: *asan 214 - *linux-huge
54 - os: linux 215 - *asan
55 compiler: clang 216 after_failure: *asan_symbolize
56 env: *asan
57 - os: linux
58 compiler: clang
59 env: *unittests
60 - os: linux
61 compiler: clang
62 env: *small
63 - os: linux
64 env: *osx-huge
65
66 branches:
67 except:
68 - /^v[0-9]/
69
70 addons:
71 apt:
72 sources:
73 # Need msgfmt 0.19.8 to be able to generate .desktop files
74 - sourceline: 'ppa:ricotz/toolchain'
75 packages:
76 - autoconf
77 - clang
78 - lcov
79 - gettext
80 - libcanberra-dev
81 - libperl-dev
82 - python-dev
83 - python3-dev
84 - liblua5.2-dev
85 - lua5.2
86 - ruby-dev
87 - tcl-dev
88 - cscope
89 - libgtk2.0-dev
90 - desktop-file-utils
91 homebrew:
92 packages:
93 - lua
94 update: true
95
96 before_install:
97 - rvm reset
98 # Remove /opt/python/3.x.x/bin from $PATH for using system python3.
99 # ("pyenv global system" doesn't seem to work.)
100 - |
101 if [[ "${TRAVIS_OS_NAME}" = "linux" ]] && [[ "$(which python3)" =~ ^/opt/python/ ]]; then
102 export PATH=$(py3=$(which python3); echo ${PATH//${py3%/python3}:/})
103 fi
104 - |
105 if [[ "${COVERAGE}" = "yes" ]]; then
106 pip install --user cpp-coveralls
107 fi
108 # needed for https support for coveralls
109 # building cffi only works with gcc, not with clang
110 - |
111 if [[ "${COVERAGE}" = "yes" ]]; then
112 CC=gcc pip install --user pyopenssl ndg-httpsclient pyasn1
113 fi
114 # Lua is not installed on Travis OSX
115 - |
116 if [[ "${TRAVIS_OS_NAME}" = "osx" ]]; then
117 export LUA_PREFIX=/usr/local
118 fi
119 # Use llvm-cov instead of gcov when compiler is clang.
120 - |
121 if [[ "${TRAVIS_OS_NAME}" = "linux" ]] && [[ "${CC}" = "clang" ]]; then
122 ln -sf "$(which llvm-cov)" /home/travis/bin/gcov
123 fi
124
125 before_script:
126 # Start virtual framebuffer to be able to test the GUI. Does not work on OS X.
127 # Install dummy device for sound.
128 - |
129 if [[ "${TRAVIS_OS_NAME}" = "linux" ]]; then
130 export DISPLAY=:99.0
131 sh -e /etc/init.d/xvfb start && sleep 3
132 sudo modprobe snd-dummy
133 sudo usermod -a -G audio $USER
134 fi
135
136 script:
137 - NPROC=$(getconf _NPROCESSORS_ONLN)
138 - set -o errexit
139 - echo -e "\\033[33;1mConfiguring Vim\\033[0m" && echo -en "travis_fold:start:configure\\r\\033[0K"
140 - |
141 if [[ "${CHECK_AUTOCONF}" = "yes" ]] && [[ "${CC}" = "gcc" ]]; then
142 make -C src autoconf
143 fi
144 - |
145 if [[ -n "${SHADOWOPT}" ]]; then
146 make -C src shadow
147 fi
148 # "./configure" changes its working directory into "$SRCDIR".
149 - ./configure --with-features=${FEATURES} ${CONFOPT} --enable-fail-if-missing
150 - echo -en "travis_fold:end:configure\\r\\033[0K"
151 - echo -e "\\033[33;1mBuilding Vim\\033[0m" && echo -en "travis_fold:start:build\\r\\033[0K"
152 - |
153 if [[ "${BUILD}" = "yes" ]]; then
154 make ${SHADOWOPT} -j${NPROC}
155 fi
156 - echo -en "travis_fold:end:build\\r\\033[0K"
157 - set +o errexit
158 - echo -e "\\033[33;1mTesting Vim\\033[0m" && echo -en "travis_fold:start:test\\r\\033[0K"
159 # Show Vim version and also if_xx versions.
160 - |
161 if [[ "${BUILD}" = "yes" ]]; then
162 "${SRCDIR}"/vim --version
163 "${SRCDIR}"/vim --not-a-term -u NONE -S "${SRCDIR}"/testdir/if_ver-1.vim -c quit > /dev/null
164 "${SRCDIR}"/vim --not-a-term -u NONE -S "${SRCDIR}"/testdir/if_ver-2.vim -c quit > /dev/null
165 cat if_ver.txt
166 fi
167 - make ${SHADOWOPT} ${TEST}
168 - echo -en "travis_fold:end:test\\r\\033[0K"
169 - |
170 if [[ -n "${ASAN_OPTIONS}" ]]; then
171 while read log; do
172 asan_symbolize < "${log}"
173 false # exit 1 if there are ASAN logs
174 done < <(find . -type f -name 'asan.*' -size +0)
175 fi
176
177 after_success:
178 - |
179 if [[ "${COVERAGE}" = "yes" ]]; then
180 ~/.local/bin/coveralls -b "${SRCDIR}" -x .xs -e "${SRCDIR}"/if_perl.c -e "${SRCDIR}"/xxd -e "${SRCDIR}"/libvterm --encodings utf-8 latin-1 EUC-KR
181 fi
182 - |
183 if [[ "${COVERAGE}" = "yes" ]]; then
184 (cd "${SRCDIR}" && bash <(curl -s https://codecov.io/bash))
185 fi
186 217
187 # vim:set sts=2 sw=2 tw=0 et: 218 # vim:set sts=2 sw=2 tw=0 et: