2018-11-20 02:05:07 -07:00
|
|
|
dist: xenial
|
|
|
|
|
2014-02-22 10:29:21 -07:00
|
|
|
language: c
|
2015-07-05 00:52:36 -07:00
|
|
|
|
2014-04-22 10:40:19 -07:00
|
|
|
env:
|
2014-05-31 07:19:14 -07:00
|
|
|
global:
|
2019-11-28 18:23:43 -07:00
|
|
|
# Encrypted environment variables, see
|
|
|
|
# http://docs.travis-ci.com/user/encryption-keys/
|
|
|
|
#
|
|
|
|
# SNAP_SECRET_KEY: generated by:
|
|
|
|
# travis encrypt SNAP_SECRET_KEY=xx --add
|
|
|
|
# https://github.com/neovim/neovim/pull/11428
|
|
|
|
# snapcraft key expires after 1 year. Steps to refresh it:
|
|
|
|
# 1. snapcraft enable-ci travis --refresh
|
|
|
|
# 2. mv .snapcraft/travis_snapcraft.cfg ci/snap/travis_snapcraft.cfg
|
|
|
|
# 3. Copy after_success command to ci/snap/deploy.sh from .travis.yml
|
|
|
|
# 4. Undo changes to .travis.yml
|
|
|
|
- secure: hd0qn2u8ABbJg5Bx4pBRcUQbKYFmcSHoecyHIPTCnGJT+NI41Bvm/IkN/N5DhBF+LbD3Q2nmR/dzI5H/dqS7RxMFvEx1DuFLendFHHX3MYf0AuKpXYY3gwgMTmqx8p/v6srlU7RBGWNGzHCWqksAem+EIWCe3I7WvfdKo1/DV/Y=
|
|
|
|
|
2018-03-11 05:31:10 -07:00
|
|
|
# Set "false" to force rebuild of third-party dependencies.
|
|
|
|
- CACHE_ENABLE=true
|
2015-07-05 00:52:36 -07:00
|
|
|
# Build directory for Neovim.
|
|
|
|
- BUILD_DIR="$TRAVIS_BUILD_DIR/build"
|
|
|
|
# Build directory for third-party dependencies.
|
2015-09-08 03:48:04 -07:00
|
|
|
- DEPS_BUILD_DIR="$HOME/nvim-deps"
|
2015-07-05 00:52:36 -07:00
|
|
|
# Install directory for Neovim.
|
|
|
|
- INSTALL_PREFIX="$HOME/nvim-install"
|
|
|
|
# Log directory for Clang sanitizers and Valgrind.
|
|
|
|
- LOG_DIR="$BUILD_DIR/log"
|
2017-05-30 05:54:09 -07:00
|
|
|
# Nvim log file.
|
|
|
|
- NVIM_LOG_FILE="$BUILD_DIR/.nvimlog"
|
2015-07-05 00:52:36 -07:00
|
|
|
# Default CMake flags.
|
|
|
|
- CMAKE_FLAGS="-DTRAVIS_CI_BUILD=ON
|
|
|
|
-DCMAKE_BUILD_TYPE=Debug
|
|
|
|
-DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_PREFIX
|
2017-04-09 17:33:00 -07:00
|
|
|
-DBUSTED_OUTPUT_TYPE=nvim
|
2014-12-08 13:00:54 -07:00
|
|
|
-DDEPS_PREFIX=$DEPS_BUILD_DIR/usr
|
2017-05-29 17:03:08 -07:00
|
|
|
-DMIN_LOG_LEVEL=3"
|
2019-07-30 14:21:12 -07:00
|
|
|
- DEPS_CMAKE_FLAGS="-DUSE_BUNDLED_GPERF=OFF"
|
2015-07-05 00:52:36 -07:00
|
|
|
# Environment variables for Clang sanitizers.
|
|
|
|
- ASAN_OPTIONS="detect_leaks=1:check_initialization_order=1:log_path=$LOG_DIR/asan"
|
2019-08-15 12:58:22 -07:00
|
|
|
- TSAN_OPTIONS="log_path=$LOG_DIR/tsan"
|
2016-11-12 20:28:59 -07:00
|
|
|
- UBSAN_OPTIONS="print_stacktrace=1 log_path=$LOG_DIR/ubsan"
|
2015-07-05 00:52:36 -07:00
|
|
|
# Environment variables for Valgrind.
|
|
|
|
- VALGRIND_LOG="$LOG_DIR/valgrind-%p.log"
|
2019-07-30 14:21:12 -07:00
|
|
|
- CACHE_NVIM_DEPS_DIR="$HOME/.cache/nvim-deps"
|
2018-03-11 05:31:10 -07:00
|
|
|
# If this file exists, the cache is valid (compile was successful).
|
2019-07-30 14:21:12 -07:00
|
|
|
- CACHE_MARKER="$CACHE_NVIM_DEPS_DIR/.travis_cache_marker"
|
2016-03-06 22:18:44 -07:00
|
|
|
# default target name for functional tests
|
|
|
|
- FUNCTIONALTEST=functionaltest
|
2017-03-31 06:02:53 -07:00
|
|
|
- CI_TARGET=tests
|
2018-05-01 04:02:11 -07:00
|
|
|
# Environment variables for ccache
|
|
|
|
- CCACHE_COMPRESS=1
|
|
|
|
- CCACHE_SLOPPINESS=time_macros,file_macro
|
|
|
|
- CCACHE_BASEDIR="$TRAVIS_BUILD_DIR"
|
2019-07-17 16:27:05 -07:00
|
|
|
# Default since 3.3, but Travis (Xenial) has 3.2.4; required with newer gcc/clang.
|
|
|
|
- CCACHE_CPP2=1
|
2015-07-05 00:52:36 -07:00
|
|
|
|
2019-07-07 09:07:01 -07:00
|
|
|
anchors:
|
|
|
|
envs: &common-job-env
|
|
|
|
# Do not fall back to cache for "master" for PR on "release" branch:
|
|
|
|
# adds the target branch to the cache key.
|
2019-07-30 14:21:12 -07:00
|
|
|
FOR_TRAVIS_CACHE=v1-$TRAVIS_BRANCH
|
2019-07-07 09:07:01 -07:00
|
|
|
|
2019-07-17 16:27:05 -07:00
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
packages: &common-apt-packages
|
|
|
|
- apport
|
|
|
|
- autoconf
|
|
|
|
- automake
|
|
|
|
- build-essential
|
2019-07-17 23:49:37 -07:00
|
|
|
- clang
|
2019-07-17 16:27:05 -07:00
|
|
|
- cmake
|
2020-01-11 11:04:35 -07:00
|
|
|
- cpanminus
|
2019-07-17 16:27:05 -07:00
|
|
|
- cscope
|
|
|
|
- gcc-multilib
|
|
|
|
- gdb
|
|
|
|
- gperf
|
|
|
|
- language-pack-tr
|
|
|
|
- libc6-dev-i386
|
|
|
|
- libtool-bin
|
|
|
|
- locales
|
|
|
|
- ninja-build
|
|
|
|
- pkg-config
|
|
|
|
- unzip
|
|
|
|
- valgrind
|
|
|
|
- xclip
|
|
|
|
homebrew:
|
2019-08-14 12:59:28 -07:00
|
|
|
update: false
|
2019-12-31 19:15:58 -07:00
|
|
|
casks:
|
|
|
|
- powershell
|
2019-07-17 16:27:05 -07:00
|
|
|
packages:
|
|
|
|
- ccache
|
2020-01-11 11:04:35 -07:00
|
|
|
- cpanminus
|
2019-07-17 16:27:05 -07:00
|
|
|
- ninja
|
2020-01-11 11:04:35 -07:00
|
|
|
- perl
|
2019-07-17 16:27:05 -07:00
|
|
|
|
2017-05-13 21:46:30 -07:00
|
|
|
jobs:
|
2014-11-27 07:10:36 -07:00
|
|
|
include:
|
2019-07-23 17:16:09 -07:00
|
|
|
- stage: baseline
|
|
|
|
name: clang-asan
|
|
|
|
os: linux
|
|
|
|
compiler: clang
|
|
|
|
# Use Lua so that ASAN can test our embedded Lua support. 8fec4d53d0f6
|
|
|
|
env:
|
|
|
|
- CLANG_SANITIZER=ASAN_UBSAN
|
|
|
|
- CMAKE_FLAGS="$CMAKE_FLAGS -DPREFER_LUA=ON"
|
|
|
|
- *common-job-env
|
2019-08-02 06:48:32 -07:00
|
|
|
- name: gcc-coverage (gcc 9)
|
2019-07-23 17:16:09 -07:00
|
|
|
os: linux
|
2019-08-02 06:48:32 -07:00
|
|
|
compiler: gcc-9
|
2019-07-23 17:16:09 -07:00
|
|
|
env:
|
2019-08-02 06:48:32 -07:00
|
|
|
- GCOV=gcov-9
|
|
|
|
- CMAKE_FLAGS="$CMAKE_FLAGS -DUSE_GCOV=ON"
|
|
|
|
- GCOV_ERROR_FILE="/tmp/libgcov-errors.log"
|
2019-10-04 07:09:42 -07:00
|
|
|
- USE_LUACOV=1
|
|
|
|
- BUSTED_ARGS="--coverage"
|
2019-07-23 17:16:09 -07:00
|
|
|
- *common-job-env
|
2019-08-02 06:48:32 -07:00
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
sources:
|
|
|
|
- sourceline: 'ppa:ubuntu-toolchain-r/test'
|
2019-12-31 12:21:57 -07:00
|
|
|
- sourceline: 'deb [arch=amd64] https://packages.microsoft.com/ubuntu/16.04/prod xenial main'
|
|
|
|
key_url: 'https://packages.microsoft.com/keys/microsoft.asc'
|
2019-08-02 06:48:32 -07:00
|
|
|
packages:
|
|
|
|
- *common-apt-packages
|
|
|
|
- gcc-9
|
2019-12-31 12:21:57 -07:00
|
|
|
- powershell
|
2019-07-23 17:16:09 -07:00
|
|
|
- if: branch = master AND commit_message !~ /\[skip.lint\]/
|
|
|
|
name: lint
|
|
|
|
os: linux
|
|
|
|
env:
|
|
|
|
- CI_TARGET=lint
|
|
|
|
- *common-job-env
|
|
|
|
|
2019-06-19 16:51:42 -07:00
|
|
|
- stage: second stage
|
2019-07-07 09:07:01 -07:00
|
|
|
name: "macOS: clang"
|
2019-06-15 09:46:51 -07:00
|
|
|
os: osx
|
2014-11-30 03:27:08 -07:00
|
|
|
compiler: clang
|
2019-06-26 11:06:40 -07:00
|
|
|
osx_image: xcode10.2 # macOS 10.14
|
2019-07-07 09:07:01 -07:00
|
|
|
env:
|
|
|
|
- *common-job-env
|
2019-08-03 05:55:27 -07:00
|
|
|
- name: gcc-functionaltest-lua
|
|
|
|
os: linux
|
|
|
|
compiler: gcc
|
|
|
|
env:
|
|
|
|
- FUNCTIONALTEST=functionaltest-lua
|
|
|
|
- CMAKE_FLAGS="$CMAKE_FLAGS -DPREFER_LUA=ON"
|
|
|
|
- DEPS_CMAKE_FLAGS="$DEPS_CMAKE_FLAGS -DUSE_BUNDLED_LUAJIT=OFF"
|
|
|
|
- *common-job-env
|
2019-08-02 06:48:32 -07:00
|
|
|
- name: gcc-32bit
|
2019-07-23 17:16:09 -07:00
|
|
|
os: linux
|
2019-08-02 06:48:32 -07:00
|
|
|
# Travis creates a cache per compiler. Set a different value here to
|
|
|
|
# store 32-bit dependencies in a separate cache.
|
|
|
|
compiler: gcc
|
2019-07-23 17:16:09 -07:00
|
|
|
env:
|
2019-08-02 06:48:32 -07:00
|
|
|
- BUILD_32BIT=ON
|
2019-10-02 20:40:25 -07:00
|
|
|
- CMAKE_FLAGS="$CMAKE_FLAGS -m32 -DCMAKE_TOOLCHAIN_FILE=$TRAVIS_BUILD_DIR/cmake/i386-linux-gnu.toolchain.cmake"
|
|
|
|
- DEPS_CMAKE_FLAGS="$DEPS_CMAKE_FLAGS -m32 -DCMAKE_TOOLCHAIN_FILE=$TRAVIS_BUILD_DIR/cmake/i386-linux-gnu.toolchain.cmake"
|
2019-08-02 06:48:32 -07:00
|
|
|
# Minimum required CMake.
|
|
|
|
- CMAKE_URL=https://cmake.org/files/v2.8/cmake-2.8.12-Linux-i386.sh
|
2019-07-23 17:16:09 -07:00
|
|
|
- *common-job-env
|
2019-07-07 09:07:01 -07:00
|
|
|
- name: clang-tsan
|
|
|
|
os: linux
|
2018-01-01 19:00:07 -07:00
|
|
|
compiler: clang
|
2019-07-07 09:07:01 -07:00
|
|
|
env:
|
2019-07-23 17:16:09 -07:00
|
|
|
- CLANG_SANITIZER=TSAN
|
2019-07-07 09:07:01 -07:00
|
|
|
- *common-job-env
|
2019-12-11 03:26:45 -07:00
|
|
|
- if: type != pull_request
|
2019-11-20 13:23:25 -07:00
|
|
|
name: snap
|
|
|
|
os: linux
|
|
|
|
env:
|
|
|
|
- LC_ALL: C.UTF-8
|
|
|
|
- LANG: C.UTF-8
|
|
|
|
- SNAPCRAFT_ENABLE_SILENT_REPORT: y
|
|
|
|
- SNAPCRAFT_ENABLE_DEVELOPER_DEBUG: y
|
|
|
|
addons:
|
|
|
|
snaps:
|
|
|
|
- name: snapcraft
|
|
|
|
channel: stable
|
|
|
|
classic: true
|
|
|
|
- name: http
|
|
|
|
- name: transfer
|
|
|
|
- name: lxd
|
|
|
|
channel: stable
|
2019-11-28 18:23:43 -07:00
|
|
|
# Override default before_install, before_cache.
|
2019-11-20 13:23:25 -07:00
|
|
|
before_install: /bin/true
|
2019-11-28 18:23:43 -07:00
|
|
|
before_cache: /bin/true
|
2019-11-20 13:23:25 -07:00
|
|
|
install: ci/snap/install.sh
|
|
|
|
before_script: echo "Building snap..."
|
|
|
|
script: ci/snap/script.sh
|
|
|
|
after_success: ci/snap/after_success.sh
|
|
|
|
deploy:
|
|
|
|
skip_cleanup: true
|
|
|
|
provider: script
|
|
|
|
script: ci/snap/deploy.sh
|
2019-11-28 18:23:43 -07:00
|
|
|
on:
|
|
|
|
branch: master
|
2019-12-12 01:44:16 -07:00
|
|
|
allow_failures:
|
|
|
|
- env:
|
|
|
|
- LC_ALL: C.UTF-8
|
|
|
|
- LANG: C.UTF-8
|
|
|
|
- SNAPCRAFT_ENABLE_SILENT_REPORT: y
|
|
|
|
- SNAPCRAFT_ENABLE_DEVELOPER_DEBUG: y
|
2015-02-02 09:19:12 -07:00
|
|
|
fast_finish: true
|
2015-07-05 00:52:36 -07:00
|
|
|
|
2017-03-31 05:32:58 -07:00
|
|
|
before_install: ci/before_install.sh
|
|
|
|
install: ci/install.sh
|
|
|
|
before_script: ci/before_script.sh
|
|
|
|
script: ci/script.sh
|
|
|
|
before_cache: ci/before_cache.sh
|
2015-07-05 00:52:36 -07:00
|
|
|
|
|
|
|
branches:
|
2018-12-21 03:48:32 -07:00
|
|
|
only:
|
|
|
|
- master
|
2019-01-01 06:06:02 -07:00
|
|
|
- /^release-\d+\.\d+$/
|
2015-07-05 00:52:36 -07:00
|
|
|
|
|
|
|
cache:
|
|
|
|
apt: true
|
2018-05-01 04:02:11 -07:00
|
|
|
ccache: true
|
2015-07-05 00:52:36 -07:00
|
|
|
directories:
|
2019-07-30 14:21:12 -07:00
|
|
|
- "$CACHE_NVIM_DEPS_DIR"
|
2015-07-05 00:52:36 -07:00
|
|
|
|
2019-08-14 23:55:22 -07:00
|
|
|
git:
|
|
|
|
quiet: true
|
|
|
|
|
2015-03-17 16:36:45 -07:00
|
|
|
notifications:
|
|
|
|
webhooks:
|
|
|
|
urls:
|
|
|
|
- https://webhooks.gitter.im/e/b5c38c99f9677aa3d031
|