Skip to content

Commit c91441d

Browse files
committed
Refactor CI script
* Cache Homebrew taps * Colorize stage messages * Simplify if_xxx tests * Improve if_ruby build config * Make build stages to separate build and deploy jobs
1 parent ee73f16 commit c91441d

1 file changed

Lines changed: 93 additions & 66 deletions

File tree

.travis.yml

Lines changed: 93 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,111 @@
11
language: c
2-
dist: trusty
32

4-
os:
5-
- osx
3+
os: osx
64

7-
osx_image:
8-
- xcode11.2
9-
- xcode10.3
10-
- xcode7.3
11-
- xcode9.4
12-
13-
compiler:
14-
- clang
15-
16-
addons:
17-
homebrew:
18-
packages:
19-
- lua
20-
- ruby
21-
- python3
22-
update: true
5+
compiler: clang
236

247
env:
25-
- MACOSX_DEPLOYMENT_TARGET=10.9
26-
VERSIONER_PERL_VERSION=5.18
27-
VERSIONER_PYTHON_VERSION=2.7
28-
vi_cv_path_python=/usr/bin/python
29-
vi_cv_path_python3=/usr/local/bin/python3
30-
vi_cv_path_plain_lua=/usr/local/bin/lua
31-
vi_cv_dll_name_perl=/System/Library/Perl/5.18/darwin-thread-multi-2level/CORE/libperl.dylib
32-
vi_cv_dll_name_python=/System/Library/Frameworks/Python.framework/Versions/2.7/Python
33-
vi_cv_dll_name_python3=/usr/local/Frameworks/Python.framework/Versions/3.7/Python
34-
VIMCMD=src/MacVim/build/Release/MacVim.app/Contents/MacOS/Vim
35-
"CONFOPT='--with-features=huge --enable-multibyte --enable-terminal --enable-netbeans --with-tlib=ncurses --enable-cscope --enable-perlinterp=dynamic --enable-pythoninterp=dynamic --enable-python3interp=dynamic --enable-rubyinterp=dynamic --with-ruby-command=/usr/local/opt/ruby/bin/ruby --enable-luainterp=dynamic --with-lua-prefix=/usr/local --enable-gui=macvim'"
36-
DYLD_LIBRARY_PATH=/usr/local/opt/ruby/lib:$DYLD_LIBRARY_PATH # Ruby is keg-only in Homebrew, so need to manually link in the path so Vim will know where to look for the binaries.
8+
global:
9+
- MACOSX_DEPLOYMENT_TARGET=10.9
10+
VERSIONER_PERL_VERSION=5.18
11+
VERSIONER_PYTHON_VERSION=2.7
12+
vi_cv_path_python=/usr/bin/python
13+
vi_cv_path_python3=/usr/local/bin/python3
14+
vi_cv_path_plain_lua=/usr/local/bin/lua
15+
vi_cv_path_ruby=/usr/local/opt/ruby/bin/ruby
16+
vi_cv_dll_name_perl=/System/Library/Perl/5.18/darwin-thread-multi-2level/CORE/libperl.dylib
17+
vi_cv_dll_name_python=/System/Library/Frameworks/Python.framework/Versions/2.7/Python
18+
vi_cv_dll_name_python3=/usr/local/Frameworks/Python.framework/Versions/3.7/Python
19+
vi_cv_dll_name_ruby=/usr/local/opt/ruby/lib/libruby.dylib
20+
VIMCMD=src/MacVim/build/Release/MacVim.app/Contents/MacOS/Vim
21+
"CONFOPT='--with-features=huge --enable-multibyte --enable-terminal --enable-netbeans --with-tlib=ncurses --enable-cscope --enable-gui=macvim'"
22+
23+
anchors:
24+
- &homebrew
25+
addons:
26+
homebrew:
27+
packages:
28+
- lua
29+
- python
30+
- ruby
31+
update: true
32+
- &caches
33+
cache:
34+
directories:
35+
- /usr/local/Homebrew/Library/Homebrew/vendor/
36+
- /usr/local/Homebrew/Library/Taps/
37+
- ${TRAVIS_BUILD_DIR}/src/MacVim/build/Release/MacVim.app/
38+
before_cache:
39+
- brew cleanup
3740

3841
sudo: false
3942

4043
script:
41-
- set -e
42-
- if [ "$TRAVIS_OSX_IMAGE" = "xcode8.3" ]; then brew reinstall --build-from-source ruby; fi
43-
- echo "Configuring MacVim" && echo -en "travis_fold:start:config\\r"
44+
- set -o errexit
45+
- echo -e "\\033[33;1mConfiguring MacVim\\033[0m" && echo -en "travis_fold:start:configure\\r\\033[0K"
4446
- NPROC=$(getconf _NPROCESSORS_ONLN)
45-
- ./configure $CONFOPT --enable-fail-if-missing
47+
- make distclean
48+
- ./configure ${CONFOPT} ${LANGOPT} --enable-fail-if-missing
49+
# Ruby is keg-only in Homebrew, so need to manually link in the path so Vim will know where to look for the binaries.
50+
- perl -p -i -e "s#(?<=-DDYNAMIC_RUBY_DLL=\\\\\").*?(?=\\\\\")#${vi_cv_dll_name_ruby}#" src/auto/config.mk
4651
- cat src/auto/config.mk
4752
- cat src/auto/config.h
48-
- grep -q -- "-DDYNAMIC_PERL_DLL=\\\\\"$vi_cv_dll_name_perl\\\\\"" src/auto/config.mk
49-
- grep -q -- "-DDYNAMIC_PYTHON_DLL=\\\\\"$vi_cv_dll_name_python\\\\\"" src/auto/config.mk
50-
- grep -q -- "-DDYNAMIC_PYTHON3_DLL=\\\\\"$vi_cv_dll_name_python3\\\\\"" src/auto/config.mk
51-
- echo -en "travis_fold:end:config\\r"
52-
- echo "Building MacVim" && echo -en "travis_fold:start:build\\r"
53-
- make -j$NPROC
54-
- echo -en "travis_fold:end:build\\r"
55-
- echo "Testing MacVim" && echo -en "travis_fold:start:test\\r"
56-
- rm -f result; $VIMCMD -g -f -c "redir>result" -c "lua print(\"Test\")" -c "redir END" -c q; cat result; echo; grep -q -w Test result
57-
- rm -f result; $VIMCMD -g -f -c "redir>result" -c "perl VIM::Msg(\"Test\")" -c "redir END" -c q; cat result; echo; grep -q -w Test result
58-
- rm -f result; $VIMCMD -g -f -c "redir>result" -c "py import sys; print(\"Test\")" -c "redir END" -c q; cat result; echo; grep -q -w Test result
59-
- rm -f result; $VIMCMD -g -f -c "redir>result" -c "py3 import sys; print(\"Test\")" -c "redir END" -c q; cat result; echo; grep -q -w Test result
60-
- rm -f result; $VIMCMD -g -f -c "redir>result" -c "ruby puts(\"Test\")" -c "redir END" -c q; cat result; echo; grep -q -w Test result
61-
- rm -f result;
53+
- |
54+
if [[ -n "${LANGOPT}" ]]; then
55+
grep -q -- "-DDYNAMIC_PERL_DLL=\\\\\"${vi_cv_dll_name_perl}\\\\\"" src/auto/config.mk
56+
grep -q -- "-DDYNAMIC_PYTHON_DLL=\\\\\"${vi_cv_dll_name_python}\\\\\"" src/auto/config.mk
57+
grep -q -- "-DDYNAMIC_PYTHON3_DLL=\\\\\"${vi_cv_dll_name_python3}\\\\\"" src/auto/config.mk
58+
grep -q -- "-DDYNAMIC_RUBY_DLL=\\\\\"${vi_cv_dll_name_ruby}\\\\\"" src/auto/config.mk
59+
fi
60+
- echo -en "travis_fold:end:configure\\r\\033[0K"
61+
- echo -e "\\033[33;1mBuilding MacVim\\033[0m" && echo -en "travis_fold:start:build\\r\\033[0K"
62+
- make -j${NPROC}
63+
- echo -en "travis_fold:end:build\\r\\033[0K"
64+
- set +o errexit
65+
- echo -e "\\033[33;1mTesting MacVim\\033[0m" && echo -en "travis_fold:start:test\\r\\033[0K"
66+
- |
67+
macvim_excmd() {
68+
if [[ -n "${LANGOPT}" ]]; then
69+
${VIMCMD} -u NONE -i NONE -g -f -X -V1 -es "$@" -c 'echo ""' -c quit 2>&1
70+
fi
71+
}
72+
- macvim_excmd -c 'lua print("Test")'
73+
- macvim_excmd -c 'perl VIM::Msg("Test")'
74+
- macvim_excmd -c 'py import sys; print("Test")'
75+
- macvim_excmd -c 'py3 import sys; print("Test")'
76+
- macvim_excmd -c 'ruby puts("Test")'
6277
- make test
63-
- echo -en "travis_fold:end:test\\r"
64-
- echo "Testing MacVim (GUI)" && echo -en "travis_fold:start:test_gui\\r"
78+
- echo -en "travis_fold:end:test\\r\\033[0K"
79+
- echo -e "\\033[33;1mTesting MacVim (GUI)\\033[0m" && echo -en "travis_fold:start:test_gui\\r\\033[0K"
6580
- make -C src/testdir clean
6681
- make -C src testgui
67-
- echo -en "travis_fold:end:test_gui\\r"
82+
- echo -en "travis_fold:end:test_gui\\r\\033[0K"
6883

69-
before_deploy:
70-
- make -C src macvim-dmg
71-
deploy:
72-
provider: releases
73-
api_key:
74-
secure: ukjm+qbuNiTli25Ut2BoVpeBCV+JyVbRUwPqjTKrJxfHz34bpr38eSbryIB8BgKBItgzE876Yoqa3CD0k8mqGClis1+98MtrYFpAkO97juJmHpcZZZB7ausbHGf7Z7VdMT4jBjjVGcBeaNj0mio0hwem0/S4WyJK3M/3Fym995CltCUtJKRfMvRiGkWZqUs8K7EZf53DFR6CXUn38rq/3B88SeK51OZuCkMsiDWLGYCdayH19vJfFrTF8MYMQYDYxz16Q/Kf21PVhwia7HEhOzqnXS8RXS+vLkZw8mzIxowX+w6NT90q7Sj0ENdR7YaS27QPfDdhZEnOgpgqj+za63lpiyIdRcgSBkGxNYrM6B5KhiwC1VocBxCBdCxT5WXlx9rA9+k4CASdsxAW/MtQOK6PRMfZEnAB+ShFvshM2H/iE5Jch+o/SIjCXhdkeASD5qov2x6eXcsEVu8PIxvEUptCpHeqJTN5/26nfKsvOdrsqbwJbDluwISOKfEPhohb8Hn7JqOJNTS2aJr3jfvU+egE1NS0eLqKPXecu7MOOsOq1CQL6WxblphG2JCCmAOuNMYrJx9+w28ekMDRDAbI9r5nWcPLZtBqjFUyuBXXM7UknMar0FZ2fd7YTi/Gki3n56UN0lKaSAKaJB9EXlneDSKp/1ogsETr9/b7jz0s6lI=
75-
file: src/MacVim/build/Release/MacVim.dmg
76-
skip_cleanup: true
77-
draft: true
78-
on:
79-
condition: $TRAVIS_OSX_IMAGE = xcode11.2
80-
all_branches: true
81-
tags: true
82-
repo: macvim-dev/macvim
84+
jobs:
85+
include:
86+
- osx_image: xcode11.2
87+
env: "LANGOPT='--enable-perlinterp=dynamic --enable-pythoninterp=dynamic --enable-python3interp=dynamic --enable-rubyinterp=dynamic --enable-luainterp=dynamic --with-lua-prefix=/usr/local'"
88+
<<: *homebrew
89+
<<: *caches
90+
- osx_image: xcode10.3
91+
- osx_image: xcode9.4
92+
- osx_image: xcode7.3
93+
- stage: deploy
94+
osx_image: xcode11.2
95+
<<: *caches
96+
script: skip
97+
before_deploy:
98+
- make -C src macvim-dmg
99+
deploy:
100+
provider: releases
101+
api_key:
102+
secure: ukjm+qbuNiTli25Ut2BoVpeBCV+JyVbRUwPqjTKrJxfHz34bpr38eSbryIB8BgKBItgzE876Yoqa3CD0k8mqGClis1+98MtrYFpAkO97juJmHpcZZZB7ausbHGf7Z7VdMT4jBjjVGcBeaNj0mio0hwem0/S4WyJK3M/3Fym995CltCUtJKRfMvRiGkWZqUs8K7EZf53DFR6CXUn38rq/3B88SeK51OZuCkMsiDWLGYCdayH19vJfFrTF8MYMQYDYxz16Q/Kf21PVhwia7HEhOzqnXS8RXS+vLkZw8mzIxowX+w6NT90q7Sj0ENdR7YaS27QPfDdhZEnOgpgqj+za63lpiyIdRcgSBkGxNYrM6B5KhiwC1VocBxCBdCxT5WXlx9rA9+k4CASdsxAW/MtQOK6PRMfZEnAB+ShFvshM2H/iE5Jch+o/SIjCXhdkeASD5qov2x6eXcsEVu8PIxvEUptCpHeqJTN5/26nfKsvOdrsqbwJbDluwISOKfEPhohb8Hn7JqOJNTS2aJr3jfvU+egE1NS0eLqKPXecu7MOOsOq1CQL6WxblphG2JCCmAOuNMYrJx9+w28ekMDRDAbI9r5nWcPLZtBqjFUyuBXXM7UknMar0FZ2fd7YTi/Gki3n56UN0lKaSAKaJB9EXlneDSKp/1ogsETr9/b7jz0s6lI=
103+
file: src/MacVim/build/Release/MacVim.dmg
104+
skip_cleanup: true
105+
draft: true
106+
on:
107+
all_branches: true
108+
tags: true
109+
repo: macvim-dev/macvim
83110

84111
# vim:set sts=2 sw=2 tw=0 et:

0 commit comments

Comments
 (0)