sudo: false language: c env: global: # To build third-party dependencies, set this to 'true'. # TODO: Change deps caching to detect updated dependencies automatically, but # still don't rebuild deps every time. - 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 and MinGW. - PATH="$(python -c 'import site; print(site.getuserbase())')/bin:$HOME/.local/mingw32/bin:$PATH" # LLVM symbolizer path. - LLVM_SYMBOLIZER="$(which llvm-symbolizer-3.6)" # Force verification of DLOG macros. - CFLAGS="-DMIN_LOG_LEVEL=0" # Build directory for Neovim. - BUILD_DIR="$TRAVIS_BUILD_DIR/build" # Build directory for third-party dependencies. - DEPS_BUILD_DIR="$TRAVIS_BUILD_DIR/deps-build" # Directory where compiled third-party dependencies are stored. - DEPS_INSTALL_PREFIX="$HOME/nvim-deps-install" # Install directory for Neovim. - INSTALL_PREFIX="$HOME/nvim-install" # Log directory for Clang sanitizers and Valgrind. - LOG_DIR="$BUILD_DIR/log" # Default CMake flags. - CMAKE_FLAGS="-DTRAVIS_CI_BUILD=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_PREFIX -DUSE_GCOV=ON -DBUSTED_OUTPUT_TYPE=plainTerminal -DDEPS_PREFIX=$DEPS_INSTALL_PREFIX" - DEPS_CMAKE_FLAGS="-DDEPS_INSTALL_DIR:PATH=$DEPS_INSTALL_PREFIX" # 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" # Additional CMake flags for MinGW builds. - CMAKE_FLAGS_MINGW="-DCMAKE_TOOLCHAIN_FILE=$TRAVIS_BUILD_DIR/cmake/mingw32-w64-cross-travis.toolchain.cmake" # Environment variables for Clang sanitizers. - ASAN_OPTIONS="detect_leaks=1:check_initialization_order=1:log_path=$LOG_DIR/asan" - ASAN_SYMBOLIZER_PATH="$LLVM_SYMBOLIZER" - MSAN_SYMBOLIZER_PATH="$LLVM_SYMBOLIZER" - TSAN_OPTIONS="external_symbolizer_path=$LLVM_SYMBOLIZER log_path=$LOG_DIR/tsan" - UBSAN_OPTIONS="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" # Test success marker. If this file exists, we know that all tests # were successful. Required because we only want to update the cache # if the tests were successful, but don't have this information # available in before_cache (which is run before after_success). - SUCCESS_MARKER="$BUILD_DIR/.tests_successful" matrix: include: - os: linux env: CI_TARGET=clint - os: linux compiler: gcc-5 env: GCOV=gcov-5 - os: linux # Travis creates a cache per compiler. # Set a different value here to store 32-bit # dependencies in a separate cache. compiler: gcc-5 -m32 env: GCOV=gcov-5 BUILD_32BIT=ON - os: linux compiler: clang-3.6 env: GCOV=llvm-cov-3.6 CLANG_SANITIZER=ASAN_UBSAN - os: linux compiler: clang-3.6 env: GCOV=llvm-cov-3.6 CLANG_SANITIZER=MSAN # FIXME (tarruda): Uncomment when TSan tests don't hang anymore. #- os: linux # compiler: clang-3.6 # env: GCOV=llvm-cov-3.6 CLANG_SANITIZER=TSAN - os: osx compiler: clang env: GCOV=gcov - os: osx compiler: gcc-4.9 env: GCOV=gcov-4.9 - os: linux env: BUILD_MINGW=ON fast_finish: true allow_failures: # TODO: Remove when all MSan errors have been fixed. - env: GCOV=llvm-cov-3.6 CLANG_SANITIZER=MSAN 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: sources: - llvm-toolchain-precise-3.6 - ubuntu-toolchain-r-test packages: # Basic Neovim/test dependencies. - autoconf - automake - build-essential - cmake - gdb - libtool - pkg-config - unzip - xclip # Additional compilers/tools. - clang-3.6 - g++-5-multilib - g++-multilib - gcc-5-multilib - gcc-multilib - libc6-dev-i386 - llvm-3.6-dev - valgrind branches: except: - nightly cache: apt: true directories: - "$HOME/.cache/pip" - "$HOME/.cache/nvim-deps" notifications: webhooks: urls: - https://webhooks.gitter.im/e/b5c38c99f9677aa3d031