mirror of
https://github.com/neovim/neovim.git
synced 2024-12-25 21:55:17 -07:00
8b9f6103bd
Install gperf using package manager instead of building it from source. When building/installing gperf from source, its install step requires `texi2pdf` which randomly goes missing on Travis: cd doc; /usr/bin/make install make[1]: Entering directory '/home/travis/nvim-deps/build/src/gperf/doc' cd . && rm -f gperf.aux gperf.toc gperf.cp gperf.fn gperf.ky gperf.pg gperf.tp gperf.vr gperf.log gperf.cps cd . && texi2pdf gperf.texi /bin/sh: 1: texi2pdf: not found It's nice to test the "bundled" deps on Travis, but that gets enough exercise on Windows and macOS, which are the platforms that actually need "bundled" gperf.
137 lines
4.1 KiB
YAML
137 lines
4.1 KiB
YAML
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"
|
|
|
|
jobs:
|
|
include:
|
|
- stage: normal builds
|
|
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
|
|
- 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"
|
|
- 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
|
|
- os: osx
|
|
compiler: clang
|
|
osx_image: xcode9.4 # macOS 10.13
|
|
- os: osx
|
|
compiler: gcc
|
|
osx_image: xcode9.4 # macOS 10.13
|
|
- 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
|
|
|
|
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
|
|
|
|
branches:
|
|
except:
|
|
- nightly
|
|
|
|
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
|