dist: bionic language: c env: global: # 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= # 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" # 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="-DUSE_BUNDLED_GPERF=OFF" # 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_NVIM_DEPS_DIR="$HOME/.cache/nvim-deps" # If this file exists, the cache is valid (compile was successful). - CACHE_MARKER="$CACHE_NVIM_DEPS_DIR/.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" # Default since 3.3, but Travis (Xenial) has 3.2.4; required with newer gcc/clang. - CCACHE_CPP2=1 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=v1-$TRAVIS_BRANCH addons: apt: packages: &common-apt-packages - apport - autoconf - automake - build-essential - clang - cmake - cpanminus - cscope - gcc-multilib - gdb - gperf - language-pack-tr - libtool-bin - locales - ninja-build - pkg-config - unzip - valgrind - xclip homebrew: update: true casks: - powershell packages: - ccache - cpanminus - ninja - perl jobs: include: - stage: baseline name: clang-asan os: linux compiler: clang-11 # Use Lua so that ASAN can test our embedded Lua support. 8fec4d53d0f6 env: - CLANG_SANITIZER=ASAN_UBSAN - CMAKE_FLAGS="$CMAKE_FLAGS -DPREFER_LUA=ON" - SYMBOLIZER=asan_symbolize-11 - *common-job-env addons: apt: sources: - sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-11 main' key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key' packages: - *common-apt-packages - clang-11 - name: gcc-coverage (gcc 9) os: linux compiler: gcc-9 env: - GCOV=gcov-9 - CMAKE_FLAGS="$CMAKE_FLAGS -DUSE_GCOV=ON" - GCOV_ERROR_FILE="/tmp/libgcov-errors.log" - USE_LUACOV=1 - BUSTED_ARGS="--coverage" - *common-job-env addons: snaps: - name: powershell confinement: classic apt: sources: - sourceline: 'ppa:ubuntu-toolchain-r/test' packages: - *common-apt-packages - gcc-9 - if: branch = master AND commit_message !~ /\[skip.lint\]/ name: lint os: linux env: - CI_TARGET=lint - *common-job-env - stage: second stage name: "macOS: clang" os: osx compiler: clang osx_image: xcode10.2 # macOS 10.14 env: - *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 - 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" # Minimum required CMake. - CMAKE_URL=https://cmake.org/files/v2.8/cmake-2.8.12-Linux-i386.sh - *common-job-env - name: big-endian os: linux arch: s390x 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 addons: apt: packages: - *common-apt-packages - gettext - python-pip - python3-pip - python-setuptools - python3-setuptools - python-dev - python3-dev - name: clang-tsan os: linux compiler: clang env: - CLANG_SANITIZER=TSAN - *common-job-env - if: type != pull_request name: snap os: linux env: - LC_ALL: C.UTF-8 - LANG: C.UTF-8 - SNAPCRAFT_ENABLE_SILENT_REPORT: y - SNAPCRAFT_ENABLE_DEVELOPER_DEBUG: y - SNAPCRAFT_BUILD_ENVIRONMENT: lxd addons: snaps: - name: snapcraft channel: stable classic: true - name: http - name: transfer - name: lxd channel: stable # Override default before_install, before_cache. before_install: /bin/true before_cache: /bin/true 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 on: branch: master allow_failures: - env: - LC_ALL: C.UTF-8 - LANG: C.UTF-8 - SNAPCRAFT_ENABLE_SILENT_REPORT: y - SNAPCRAFT_ENABLE_DEVELOPER_DEBUG: y - SNAPCRAFT_BUILD_ENVIRONMENT: lxd 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 branches: only: - master - /^release-\d+\.\d+$/ cache: apt: true ccache: true directories: - "$CACHE_NVIM_DEPS_DIR" git: quiet: true notifications: webhooks: urls: - https://webhooks.gitter.im/e/b5c38c99f9677aa3d031