dist: xenial language: c env: global: # Set "false" to force rebuild of third-party dependencies. - CACHE_ENABLE=true # 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 -DUSE_BUNDLED_GPERF=OFF" # 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" - ASAN_SYMBOLIZE=asan_symbolize # Environment variables for Valgrind. - VALGRIND_LOG="$LOG_DIR/valgrind-%p.log" # If this file exists, the cache is valid (compile was successful). - CACHE_MARKER="$HOME/.cache/nvim-deps/.travis_cache_marker" # default target name for functional tests - FUNCTIONALTEST=functionaltest - CI_TARGET=tests # Environment variables for ccache - CCACHE_COMPRESS=1 - CCACHE_SLOPPINESS=time_macros,file_macro - CCACHE_BASEDIR="$TRAVIS_BUILD_DIR" 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. __FOR_TRAVIS_CACHE__=$TRAVIS_BRANCH jobs: include: - stage: normal builds name: clang-asan os: linux compiler: clang-4.0 # Use Lua so that ASAN can test our embedded Lua support. 8fec4d53d0f6 env: - CLANG_SANITIZER=ASAN_UBSAN - CMAKE_FLAGS="$CMAKE_FLAGS -DPREFER_LUA=ON" - ASAN_SYMBOLIZE=asan_symbolize-4.0 - *common-job-env - 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 - name: gcc-32bit os: linux # Travis creates a cache per compiler. Set a different value here to # store 32-bit dependencies in a separate cache. compiler: gcc env: - BUILD_32BIT: ON - *common-job-env - name: "OSX: clang" os: osx compiler: clang osx_image: xcode9.4 # macOS 10.13 env: *common-job-env - name: "OSX: gcc" os: osx compiler: gcc osx_image: xcode9.4 # macOS 10.13 env: *common-job-env - if: branch = master name: lint os: linux env: - CI_TARGET=lint - *common-job-env - stage: Flaky builds name: gcc-coverage os: linux compiler: gcc env: - GCOV=gcov - CMAKE_FLAGS="$CMAKE_FLAGS -DUSE_GCOV=ON" - *common-job-env - os: linux name: clang-tsan compiler: clang env: - CLANG_SANITIZER=TSAN - *common-job-env allow_failures: - name: gcc-coverage - name: clang-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 addons: apt: packages: - apport - autoconf - automake - build-essential - clang-4.0 - cmake - cscope - g++-multilib - gcc-multilib - gdb - gperf - language-pack-tr - libc6-dev-i386 - libtool-bin - locales - ninja-build - pkg-config - unzip - valgrind - xclip homebrew: update: true packages: - ccache - ninja branches: only: - master - /^release-\d+\.\d+$/ cache: apt: true ccache: true directories: - "$HOME/.cache/pip" - "$HOME/.cache/nvim-deps" - "$HOME/.cache/nvim-deps-downloads" notifications: webhooks: urls: - https://webhooks.gitter.im/e/b5c38c99f9677aa3d031