10600f351SBram Moolenaarlanguage: c 20600f351SBram Moolenaar 3de6804d8SBram Moolenaarenv: 4de6804d8SBram Moolenaar global: 55b5aa118SBram Moolenaar - BUILD=yes TEST=test CONFOPT= LEAK_CFLAGS="-DEXITFREE" SHADOWOPT= SRCDIR=./src CHECK_AUTOCONF=no LOG_DIR="$TRAVIS_BUILD_DIR/logs" 6de6804d8SBram Moolenaar 75e4d1ebaSBram Moolenaar_anchors: 8f42397c3SBram Moolenaar envs: 901a6c216SBram Moolenaar - &tiny-nogui 10b96a32efSBram Moolenaar FEATURES=tiny TEST=testtiny CONFOPT="--disable-gui" 1101a6c216SBram Moolenaar - &tiny 12b96a32efSBram Moolenaar FEATURES=tiny TEST=testtiny 13f42397c3SBram Moolenaar - &small 14b96a32efSBram Moolenaar FEATURES=small TEST=testtiny 15f42397c3SBram Moolenaar - &normal 16de6804d8SBram Moolenaar FEATURES=normal 1701a6c216SBram Moolenaar - &linux-huge 18de6804d8SBram Moolenaar FEATURES=huge TEST="scripttests test_libvterm" 1981ea1dfbSBram Moolenaar CONFOPT="--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp" 20f42397c3SBram Moolenaar - &osx-huge # macOS build 21de6804d8SBram Moolenaar FEATURES=huge 22de6804d8SBram Moolenaar CONFOPT="--enable-perlinterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp" 23f42397c3SBram Moolenaar - &unittests 24de6804d8SBram Moolenaar BUILD=no TEST=unittests FEATURES=huge CHECK_AUTOCONF=yes 25de6804d8SBram Moolenaar - &coverage 26de6804d8SBram Moolenaar CFLAGS="--coverage -DUSE_GCOV_FLUSH" LDFLAGS=--coverage 27f42397c3SBram Moolenaar - &asan # ASAN build 285b5aa118SBram Moolenaar SANITIZER_CFLAGS="-g -O1 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize-recover=all -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer" 295b5aa118SBram Moolenaar ASAN_OPTIONS="print_stacktrace=1 log_path=$LOG_DIR/asan" UBSAN_OPTIONS="print_stacktrace=1 log_path=$LOG_DIR/ubsan" LSAN_OPTIONS="suppressions=$TRAVIS_BUILD_DIR/src/testdir/lsan-suppress.txt" 302387773dSBram Moolenaar - &shadowopt 318d5f6af5SBram Moolenaar SHADOWOPT="-C src/shadow" SRCDIR=./src/shadow 320600f351SBram Moolenaar 33f42397c3SBram Moolenaar linux: &linux 34f42397c3SBram Moolenaar os: linux 357d333a90SBram Moolenaar dist: bionic 360600f351SBram Moolenaar addons: 370600f351SBram Moolenaar apt: 385b5aa118SBram Moolenaar packages: &apt-packages 397b5f0a15SBram Moolenaar - autoconf 409e27217cSBram Moolenaar - clang 410600f351SBram Moolenaar - lcov 42496555fdSBram Moolenaar - gettext 43427f5b66SBram Moolenaar - libcanberra-dev 440600f351SBram Moolenaar - libperl-dev 450600f351SBram Moolenaar - python-dev 460600f351SBram Moolenaar - python3-dev 477d333a90SBram Moolenaar - liblua5.3-dev 487d333a90SBram Moolenaar - lua5.3 4902113ed4SBram Moolenaar - ruby-dev 50ade55787SBram Moolenaar - tcl-dev 5147247289SBram Moolenaar - cscope 5202113ed4SBram Moolenaar - libgtk2.0-dev 538e228e21SBram Moolenaar - desktop-file-utils 547d333a90SBram Moolenaar - libtool-bin 557d333a90SBram Moolenaar services: 567d333a90SBram Moolenaar - xvfb 570600f351SBram Moolenaar before_install: 5802113ed4SBram Moolenaar - rvm reset 5902113ed4SBram Moolenaar # Use llvm-cov instead of gcov when compiler is clang. 6001a6c216SBram Moolenaar - | 61f42397c3SBram Moolenaar if [[ "${CC}" = "clang" ]]; then 627d333a90SBram Moolenaar ln -sf "$(command -v llvm-cov)" /home/travis/bin/gcov 637d333a90SBram Moolenaar fi 647d333a90SBram Moolenaar # Setup lua5.3 manually since its package doesn't provide alternative. 657d333a90SBram Moolenaar # https://bugs.launchpad.net/ubuntu/+source/lua5.3/+bug/1707212 667d333a90SBram Moolenaar - | 677d333a90SBram Moolenaar if [[ "${CONFOPT}" =~ luainterp ]]; then 687d333a90SBram Moolenaar sudo update-alternatives --install /usr/bin/lua lua /usr/bin/lua5.3 10 6901a6c216SBram Moolenaar fi 70e3505dfcSBram Moolenaar before_script: 71bfe13cccSBram Moolenaar - sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=0 72a7c4e747SBram Moolenaar # It appears we can load "snd-dummy" on only amd64. 73a7c4e747SBram Moolenaar - | 74a7c4e747SBram Moolenaar if [[ "${TRAVIS_CPU_ARCH}" = amd64 ]]; then 75a7c4e747SBram Moolenaar sudo bash ci/load-snd-dummy.sh || true 76a7c4e747SBram Moolenaar fi 77f42397c3SBram Moolenaar - sudo usermod -a -G audio $USER 785b19e5b9SBram Moolenaar - do_test() { sg audio "sg $(id -gn) '$*'"; } 79f42397c3SBram Moolenaar 80f42397c3SBram Moolenaar osx: &osx 81f42397c3SBram Moolenaar os: osx 825e4d1ebaSBram Moolenaar before_script: 835e4d1ebaSBram Moolenaar - do_test() { "$@"; } 845e4d1ebaSBram Moolenaar 855e4d1ebaSBram Moolenaar homebrew: &osx-homebrew 86f42397c3SBram Moolenaar addons: 87f42397c3SBram Moolenaar homebrew: 88f42397c3SBram Moolenaar packages: 89f42397c3SBram Moolenaar - lua 90f42397c3SBram Moolenaar update: true 91f42397c3SBram Moolenaar cache: 92f42397c3SBram Moolenaar directories: 93f42397c3SBram Moolenaar - /usr/local/Homebrew/Library/Homebrew/vendor/ 945e4d1ebaSBram Moolenaar - /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/ 95f42397c3SBram Moolenaar before_install: 96f42397c3SBram Moolenaar - rvm reset 977d333a90SBram Moolenaar # Lua is not installed on macOS 98f42397c3SBram Moolenaar - export LUA_PREFIX=/usr/local 99f42397c3SBram Moolenaar 100de6804d8SBram Moolenaar coverage: &eval-coverage 10198be7fecSBram Moolenaar # needed for https support for coveralls building cffi only works with gcc, 10298be7fecSBram Moolenaar # not with clang 10398be7fecSBram Moolenaar - CC=gcc pip install --user cpp-coveralls pyopenssl ndg-httpsclient pyasn1 1044119309dSBram Moolenaar - ~/.local/bin/coveralls -b "${SRCDIR}" -x .xs -e "${SRCDIR}"/if_perl.c -e "${SRCDIR}"/xxd -e "${SRCDIR}"/libvterm --encodings utf-8 105f42397c3SBram Moolenaar - (cd "${SRCDIR}" && bash <(curl -s https://codecov.io/bash)) 106f42397c3SBram Moolenaar 107f42397c3SBram Moolenaar asan_symbolize: &asan_symbolize 1087d333a90SBram Moolenaar # Update pyenv to fix the error "/opt/pyenv/libexec/pyenv: line 43: cd: asan_symbolize-6.0: Not a directory". 1097d333a90SBram Moolenaar # https://github.com/pyenv/pyenv/issues/580 1107d333a90SBram Moolenaar - (cd "${PYENV_ROOT}" && git fetch -p origin && git checkout "$(git rev-list --tags -n1)") &>/dev/null || true 1115b5aa118SBram Moolenaar - for f in $(grep -l '#[[:digit:]]* *0x[[:digit:]a-fA-F]*' "$LOG_DIR"/*); do asan_symbolize-11 -l "$f"; done 112f42397c3SBram Moolenaar 113f42397c3SBram Moolenaarbranches: 114f42397c3SBram Moolenaar except: 115f42397c3SBram Moolenaar - /^v[0-9]/ 116e3505dfcSBram Moolenaar 1170600f351SBram Moolenaarscript: 1185b5aa118SBram Moolenaar - mkdir -p "$LOG_DIR" 1190600f351SBram Moolenaar - NPROC=$(getconf _NPROCESSORS_ONLN) 120dc9f9e93SBram Moolenaar - set -o errexit 121dc9f9e93SBram Moolenaar - echo -e "\\033[33;1mConfiguring Vim\\033[0m" && echo -en "travis_fold:start:configure\\r\\033[0K" 12201a6c216SBram Moolenaar - | 12301a6c216SBram Moolenaar if [[ "${CHECK_AUTOCONF}" = "yes" ]] && [[ "${CC}" = "gcc" ]]; then 12401a6c216SBram Moolenaar make -C src autoconf 12501a6c216SBram Moolenaar fi 12601a6c216SBram Moolenaar - | 12701a6c216SBram Moolenaar if [[ -n "${SHADOWOPT}" ]]; then 12801a6c216SBram Moolenaar make -C src shadow 12901a6c216SBram Moolenaar fi 130dc9f9e93SBram Moolenaar # "./configure" changes its working directory into "$SRCDIR". 131dc9f9e93SBram Moolenaar - ./configure --with-features=${FEATURES} ${CONFOPT} --enable-fail-if-missing 132dc9f9e93SBram Moolenaar - echo -en "travis_fold:end:configure\\r\\033[0K" 133dc9f9e93SBram Moolenaar - echo -e "\\033[33;1mBuilding Vim\\033[0m" && echo -en "travis_fold:start:build\\r\\033[0K" 13401a6c216SBram Moolenaar - | 135dc9f9e93SBram Moolenaar if [[ "${BUILD}" = "yes" ]]; then 13681ea1dfbSBram Moolenaar # Append various warning flags to CFLAGS. 13781ea1dfbSBram Moolenaar # BSD sed needs backup extension specified. 13881ea1dfbSBram Moolenaar sed -i.bak -f ci/config.mk.sed ${SRCDIR}/auto/config.mk 1395b5aa118SBram Moolenaar if [[ "${TRAVIS_OS_NAME}" = "osx" ]] || [[ "${CC}" = "clang-11" ]]; then 14092c098d1SBram Moolenaar # On macOS, the entity of gcc is clang. 14192c098d1SBram Moolenaar sed -i.bak -f ci/config.mk.clang.sed ${SRCDIR}/auto/config.mk 14292c098d1SBram Moolenaar else 14381ea1dfbSBram Moolenaar sed -i.bak -f ci/config.mk.${CC}.sed ${SRCDIR}/auto/config.mk 14492c098d1SBram Moolenaar fi 14501a6c216SBram Moolenaar make ${SHADOWOPT} -j${NPROC} 14601a6c216SBram Moolenaar fi 147dc9f9e93SBram Moolenaar - echo -en "travis_fold:end:build\\r\\033[0K" 148dc9f9e93SBram Moolenaar - set +o errexit 14902113ed4SBram Moolenaar # Show Vim version and also if_xx versions. 15001a6c216SBram Moolenaar - | 15101a6c216SBram Moolenaar if [[ "${BUILD}" = "yes" ]]; then 15201a6c216SBram Moolenaar "${SRCDIR}"/vim --version 15398be7fecSBram Moolenaar "${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit 15498be7fecSBram Moolenaar "${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit 15501a6c216SBram Moolenaar fi 1562387773dSBram Moolenaar - echo -e "\\033[33;1mTesting Vim\\033[0m" && echo -en "travis_fold:start:test\\r\\033[0K" 1572387773dSBram Moolenaar - do_test make ${SHADOWOPT} ${TEST} && FOLD_MARKER=travis_fold 1582b43f7f9SBram Moolenaar - echo -en "${FOLD_MARKER}:end:test\\r\\033[0K" 1595b5aa118SBram Moolenaar - | 1605b5aa118SBram Moolenaar # Not all sanitizers will cause the tests to fail. This helps since we can 1615b5aa118SBram Moolenaar # see all the failures instead of just the first one, but we still want the 1625b5aa118SBram Moolenaar # test phase to fail if any sanitizer issues are detected. 1635b5aa118SBram Moolenaar if [[ -n "${ASAN_OPTIONS}" ]]; then 1645b5aa118SBram Moolenaar if grep -q '#[[:digit:]]* *0x[[:digit:]a-fA-F]*' "$LOG_DIR"/*; then 1655b5aa118SBram Moolenaar false 1665b5aa118SBram Moolenaar fi 1675b5aa118SBram Moolenaar fi 168efef9feaSBram Moolenaar 16992c098d1SBram Moolenaar# Instead of using all environments with both compilers on both systems, 17092c098d1SBram Moolenaar# exclude some builds on mac os x and linux. 17192c098d1SBram Moolenaar# On mac os x "tiny" is always without GUI, use 2 compilers in 2 environments. 17292c098d1SBram Moolenaar# Linux: 2 compilers on some of the environments + gcc on os390 1735e4d1ebaSBram Moolenaarjobs: 174f42397c3SBram Moolenaar include: 175*8ea05de6SBram Moolenaar #- <<: *osx 176*8ea05de6SBram Moolenaar # name: tiny-nogui/clang 177*8ea05de6SBram Moolenaar # compiler: clang 178*8ea05de6SBram Moolenaar # env: *tiny-nogui 179*8ea05de6SBram Moolenaar #- <<: *osx 180*8ea05de6SBram Moolenaar # name: tiny-nogui/gcc 181*8ea05de6SBram Moolenaar # compiler: gcc 182*8ea05de6SBram Moolenaar # env: *tiny-nogui 183*8ea05de6SBram Moolenaar #- <<: *osx 184*8ea05de6SBram Moolenaar # <<: *osx-homebrew 185*8ea05de6SBram Moolenaar # name: huge/clang 186*8ea05de6SBram Moolenaar # compiler: clang 187*8ea05de6SBram Moolenaar # env: *osx-huge 188*8ea05de6SBram Moolenaar #- <<: *osx 189*8ea05de6SBram Moolenaar # <<: *osx-homebrew 190*8ea05de6SBram Moolenaar # name: huge/gcc 191*8ea05de6SBram Moolenaar # compiler: gcc 192*8ea05de6SBram Moolenaar # env: *osx-huge 193*8ea05de6SBram Moolenaar #- <<: *linux 194*8ea05de6SBram Moolenaar # name: tiny-nogui/clang 195*8ea05de6SBram Moolenaar # compiler: clang 196*8ea05de6SBram Moolenaar # env: *tiny-nogui 197*8ea05de6SBram Moolenaar #- <<: *linux 198*8ea05de6SBram Moolenaar # name: tiny-nogui/gcc 199*8ea05de6SBram Moolenaar # compiler: gcc 200*8ea05de6SBram Moolenaar # env: *tiny-nogui 201*8ea05de6SBram Moolenaar #- <<: *linux 202*8ea05de6SBram Moolenaar # name: tiny/clang 203*8ea05de6SBram Moolenaar # compiler: clang 204*8ea05de6SBram Moolenaar # env: *tiny 205*8ea05de6SBram Moolenaar #- <<: *linux 206*8ea05de6SBram Moolenaar # name: tiny/gcc 207*8ea05de6SBram Moolenaar # compiler: gcc 208*8ea05de6SBram Moolenaar # env: *tiny 209*8ea05de6SBram Moolenaar #- <<: *linux 210*8ea05de6SBram Moolenaar # name: small/gcc 211*8ea05de6SBram Moolenaar # compiler: gcc 212*8ea05de6SBram Moolenaar # env: *small 213*8ea05de6SBram Moolenaar #- <<: *linux 214*8ea05de6SBram Moolenaar # name: normal+shadow/clang 215*8ea05de6SBram Moolenaar # compiler: clang 216*8ea05de6SBram Moolenaar # env: 217*8ea05de6SBram Moolenaar # - *normal 218*8ea05de6SBram Moolenaar # - *shadowopt 219*8ea05de6SBram Moolenaar #- <<: *linux 220*8ea05de6SBram Moolenaar # name: normal+shadow/gcc 221*8ea05de6SBram Moolenaar # compiler: gcc 222*8ea05de6SBram Moolenaar # env: 223*8ea05de6SBram Moolenaar # - *normal 224*8ea05de6SBram Moolenaar # - *shadowopt 225ca563b9bSBram Moolenaar - <<: *linux 226ca563b9bSBram Moolenaar arch: s390x 227ca563b9bSBram Moolenaar name: huge/gcc-s390x 228ca563b9bSBram Moolenaar compiler: gcc 229ca563b9bSBram Moolenaar env: *linux-huge 230ca563b9bSBram Moolenaar services: [] 231d47e6f0bSBram Moolenaar - <<: *linux 232de6804d8SBram Moolenaar arch: arm64 233de6804d8SBram Moolenaar name: huge/gcc-arm64 234de6804d8SBram Moolenaar compiler: gcc 235de6804d8SBram Moolenaar env: *linux-huge 236de6804d8SBram Moolenaar services: [] 237*8ea05de6SBram Moolenaar #- <<: *linux 238*8ea05de6SBram Moolenaar # name: huge+coverage/clang 239*8ea05de6SBram Moolenaar # compiler: clang 240*8ea05de6SBram Moolenaar # env: 241*8ea05de6SBram Moolenaar # - *linux-huge 242*8ea05de6SBram Moolenaar # - *coverage 243*8ea05de6SBram Moolenaar # after_success: *eval-coverage 244*8ea05de6SBram Moolenaar #- <<: *linux 245*8ea05de6SBram Moolenaar # name: huge+coverage/gcc 246*8ea05de6SBram Moolenaar # compiler: gcc 247*8ea05de6SBram Moolenaar # env: 248*8ea05de6SBram Moolenaar # - *linux-huge 249*8ea05de6SBram Moolenaar # - *coverage 250*8ea05de6SBram Moolenaar # after_success: *eval-coverage 251*8ea05de6SBram Moolenaar #- <<: *linux # ASAN 252*8ea05de6SBram Moolenaar # name: huge+asan/clang 253*8ea05de6SBram Moolenaar # compiler: clang-11 254*8ea05de6SBram Moolenaar # addons: 255*8ea05de6SBram Moolenaar # apt: 256*8ea05de6SBram Moolenaar # sources: 257*8ea05de6SBram Moolenaar # - sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-11 main' 258*8ea05de6SBram Moolenaar # key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key' 259*8ea05de6SBram Moolenaar # packages: 260*8ea05de6SBram Moolenaar # - *apt-packages 261*8ea05de6SBram Moolenaar # - clang-11 262*8ea05de6SBram Moolenaar # env: 263*8ea05de6SBram Moolenaar # - *linux-huge 264*8ea05de6SBram Moolenaar # - *asan 265*8ea05de6SBram Moolenaar # after_failure: *asan_symbolize 266*8ea05de6SBram Moolenaar #- <<: *linux 267*8ea05de6SBram Moolenaar # name: huge-testgui+coverage/gcc 268*8ea05de6SBram Moolenaar # compiler: gcc 269*8ea05de6SBram Moolenaar # env: 270*8ea05de6SBram Moolenaar # - *linux-huge 271*8ea05de6SBram Moolenaar # - *coverage 272*8ea05de6SBram Moolenaar # - TEST="-C src testgui" 273*8ea05de6SBram Moolenaar # after_success: *eval-coverage 274*8ea05de6SBram Moolenaar #- <<: *linux 275*8ea05de6SBram Moolenaar # name: unittests+coverage/gcc 276*8ea05de6SBram Moolenaar # compiler: gcc 277*8ea05de6SBram Moolenaar # env: 278*8ea05de6SBram Moolenaar # - *unittests 279*8ea05de6SBram Moolenaar # - *coverage 280*8ea05de6SBram Moolenaar # after_success: *eval-coverage 281*8ea05de6SBram Moolenaar #- <<: *linux 282*8ea05de6SBram Moolenaar # name: vimtags/gcc 283*8ea05de6SBram Moolenaar # compiler: gcc 284*8ea05de6SBram Moolenaar # env: 285*8ea05de6SBram Moolenaar # - *normal 286*8ea05de6SBram Moolenaar # - TEST="-C runtime/doc vimtags VIMEXE=../../${SRCDIR}/vim" 2870600f351SBram Moolenaar 2880600f351SBram Moolenaar# vim:set sts=2 sw=2 tw=0 et: 289