mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 11:15:14 -07:00
d162815ca9
Separating the non-flaky builds (asan, normal builds, lint) into separate stages simply slowed down overall CI turnaround. Since none of the builds rely on the output of others, reducing the stages increases the opportunities for parallel builds.
132 lines
4.0 KiB
YAML
132 lines
4.0 KiB
YAML
dist: trusty
|
|
sudo: false
|
|
language: c
|
|
|
|
env:
|
|
global:
|
|
# To force rebuilding of third-party dependencies, set this to 'true'.
|
|
- BUILD_NVIM_DEPS=false
|
|
# Travis has 1.5 virtual cores according to
|
|
# http://docs.travis-ci.com/user/speeding-up-the-build/#Paralellizing-your-build-on-one-VM
|
|
- MAKE_CMD="make -j2"
|
|
# Update PATH for pip.
|
|
- PATH="$(python2.7 -c 'import site; print(site.getuserbase())')/bin:$PATH"
|
|
# Build directory for Neovim.
|
|
- BUILD_DIR="$TRAVIS_BUILD_DIR/build"
|
|
# Build directory for third-party dependencies.
|
|
- DEPS_BUILD_DIR="$HOME/nvim-deps"
|
|
# Directory where third-party dependency sources are downloaded to.
|
|
- DEPS_DOWNLOAD_DIR="$TRAVIS_BUILD_DIR/deps-downloads"
|
|
# Install directory for Neovim.
|
|
- INSTALL_PREFIX="$HOME/nvim-install"
|
|
# Log directory for Clang sanitizers and Valgrind.
|
|
- LOG_DIR="$BUILD_DIR/log"
|
|
# Nvim log file.
|
|
- NVIM_LOG_FILE="$BUILD_DIR/.nvimlog"
|
|
# Default CMake flags.
|
|
- CMAKE_FLAGS="-DTRAVIS_CI_BUILD=ON
|
|
-DCMAKE_BUILD_TYPE=Debug
|
|
-DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_PREFIX
|
|
-DBUSTED_OUTPUT_TYPE=nvim
|
|
-DDEPS_PREFIX=$DEPS_BUILD_DIR/usr
|
|
-DMIN_LOG_LEVEL=3"
|
|
- DEPS_CMAKE_FLAGS="-DDEPS_DOWNLOAD_DIR:PATH=$DEPS_DOWNLOAD_DIR"
|
|
# Additional CMake flags for 32-bit builds.
|
|
- CMAKE_FLAGS_32BIT="-DCMAKE_SYSTEM_LIBRARY_PATH=/lib32:/usr/lib32:/usr/local/lib32
|
|
-DCMAKE_IGNORE_PATH=/lib:/usr/lib:/usr/local/lib
|
|
-DCMAKE_TOOLCHAIN_FILE=$TRAVIS_BUILD_DIR/cmake/i386-linux-gnu.toolchain.cmake"
|
|
# Environment variables for Clang sanitizers.
|
|
- ASAN_OPTIONS="detect_leaks=1:check_initialization_order=1:log_path=$LOG_DIR/asan"
|
|
- TSAN_OPTIONS="log_path=$LOG_DIR/tsan"
|
|
- UBSAN_OPTIONS="print_stacktrace=1 log_path=$LOG_DIR/ubsan"
|
|
# Environment variables for Valgrind.
|
|
- VALGRIND_LOG="$LOG_DIR/valgrind-%p.log"
|
|
# Cache marker for third-party dependencies cache.
|
|
# If this file exists, we know that the cache contains compiled
|
|
# dependencies and we can use it.
|
|
- CACHE_MARKER="$HOME/.cache/nvim-deps/.travis_cache_marker"
|
|
# default target name for functional tests
|
|
- FUNCTIONALTEST=functionaltest
|
|
- CI_TARGET=tests
|
|
|
|
jobs:
|
|
include:
|
|
- stage: normal builds
|
|
os: linux
|
|
compiler: clang
|
|
env: >
|
|
CLANG_SANITIZER=ASAN_UBSAN
|
|
CMAKE_FLAGS="$CMAKE_FLAGS -DPREFER_LUA=ON"
|
|
- os: linux
|
|
compiler: gcc
|
|
env: FUNCTIONALTEST=functionaltest-lua
|
|
- os: linux
|
|
# Travis creates a cache per compiler.
|
|
# Set a different value here to store 32-bit
|
|
# dependencies in a separate cache.
|
|
compiler: gcc -m32
|
|
env: BUILD_32BIT=ON
|
|
- os: osx
|
|
compiler: clang
|
|
osx_image: xcode7.3 # macOS 10.11
|
|
- os: osx
|
|
compiler: gcc
|
|
osx_image: xcode7.3 # macOS 10.11
|
|
- os: linux
|
|
env: CI_TARGET=lint
|
|
- stage: Flaky builds
|
|
os: linux
|
|
compiler: gcc
|
|
env: GCOV=gcov CMAKE_FLAGS="$CMAKE_FLAGS -DUSE_GCOV=ON"
|
|
- os: linux
|
|
compiler: clang
|
|
env: CLANG_SANITIZER=TSAN
|
|
allow_failures:
|
|
- env: GCOV=gcov CMAKE_FLAGS="$CMAKE_FLAGS -DUSE_GCOV=ON"
|
|
- env: CLANG_SANITIZER=TSAN
|
|
fast_finish: true
|
|
|
|
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
|
|
after_success: ci/after_success.sh
|
|
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- autoconf
|
|
- automake
|
|
- apport
|
|
- build-essential
|
|
- clang
|
|
- cmake
|
|
- cscope
|
|
- g++-multilib
|
|
- gcc-multilib
|
|
- gdb
|
|
- language-pack-tr
|
|
- libc6-dev-i386
|
|
- libtool
|
|
- locales
|
|
- pkg-config
|
|
- unzip
|
|
- valgrind
|
|
- xclip
|
|
|
|
branches:
|
|
except:
|
|
- nightly
|
|
|
|
cache:
|
|
apt: true
|
|
directories:
|
|
- "$HOME/.cache/pip"
|
|
- "$HOME/.cache/nvim-deps"
|
|
|
|
notifications:
|
|
webhooks:
|
|
urls:
|
|
- https://webhooks.gitter.im/e/b5c38c99f9677aa3d031
|