# build status appears on https://travis-ci.com/haproxy/haproxy

dist: focal

language: c

branches:
  only:
    - master
    - next

env:
  global:
    - FLAGS="USE_ZLIB=1 USE_PCRE=1 USE_PCRE_JIT=1 USE_LUA=1 USE_OPENSSL=1 USE_SYSTEMD=1 USE_WURFL=1 WURFL_INC=contrib/wurfl WURFL_LIB=contrib/wurfl USE_DEVICEATLAS=1 DEVICEATLAS_SRC=contrib/deviceatlas USE_51DEGREES=1"
    - TMPDIR=/tmp
    - FIFTYONEDEGREES_SRC="contrib/51d/src/pattern"
    - DEBUG_OPTIONS="DEBUG_STRICT=1"

addons:
  apt:
    update: true
    packages: [ liblua5.3-dev, libsystemd-dev, libpcre2-dev, clang-9, socat, ninja-build, libpcre3-dev ]

cache:
  directories:
  - download-cache
  - ${HOME}/opt

matrix:
  include:
  - os: linux
    arch: ppc64le
    if: type == cron
    compiler: gcc
    env: TARGET=linux-glibc OPENSSL_VERSION=1.0.2u
    name: openssl-1.0.2
  - os: linux
    arch: arm64
    if: type == push
    compiler: clang
    env: TARGET=linux-glibc CC=clang-9
    name: openssl-1.1.1
  - os: linux
    arch: s390x
    if: type == push
    compiler: gcc
    env: TARGET=linux-glibc
    name: openssl-1.1.1
  - os: linux
    if: type == cron
    compiler: clang
    env: TARGET=linux-glibc COVERITY_SCAN_PROJECT_NAME="Haproxy" COVERITY_SCAN_BRANCH_PATTERN="*" COVERITY_SCAN_NOTIFICATION_EMAIL="chipitsine@gmail.com" COVERITY_SCAN_BUILD_COMMAND="make CC=clang DEFINE=-DDEBUG_USE_ABORT TARGET=$TARGET $FLAGS 51DEGREES_SRC=$FIFTYONEDEGREES_SRC DEBUG_STRICT=1"
    script:
      - |
        if [ ! -z ${COVERITY_SCAN_TOKEN+x} ]; then
          make -C contrib/wurfl
          curl -s "https://scan.coverity.com/scripts/travisci_build_coverity_scan.sh" | bash || true
        fi
    name: Coverity scan | openssl-1.1.1
  - os: linux
    if: type == cron
    compiler: clang
    env: TARGET=linux-glibc OPENSSL_VERSION=1.1.0l FIFTYONEDEGREES_SRC="contrib/51d/src/trie" CC=clang-9
    name: openssl-1.1.1 | 51d trie
  - os: linux
    env: DEBUG_OPTIONS=""
    if: type == cron
    compiler: clang
    env: TARGET=linux-glibc LIBRESSL_VERSION=3.0.2 CC=clang-9
    name: libressl-3.0.2 | ERR=
  - os: linux
    if: type == cron
    compiler: clang
    env: TARGET=linux-glibc FLAGS="USE_SLZ=1 USE_PCRE2=1 USE_PCRE2_JIT=1 USE_LUA=1 USE_OPENSSL=1 USE_SYSTEMD=1 USE_WURFL=1 WURFL_INC=contrib/wurfl WURFL_LIB=contrib/wurfl USE_51DEGREES=1" CC=clang-9
    before_script:
      - git clone https://github.com/wtarreau/libslz
      - cd libslz && make && make PREFIX=${HOME}/opt install && cd ..
      - export SLZ_INC=${HOME}/opt/include SLZ_LIB=${HOME}/opt/lib
      - export ADDLIB="-Wl,-rpath,$SLZ_LIB"
    name: openssl-1.1.1 | slz | pcre2

install:
  - git clone https://github.com/VTest/VTest.git ../vtest
  # Special flags due to: https://github.com/vtest/VTest/issues/12
  - make -C ../vtest FLAGS="-O2 -s -Wall"
  - |
    if [ ! -z ${OPENSSL_VERSION+x} ] || [ ! -z ${LIBRESSL_VERSION+x} ] || [ ! -z ${BORINGSSL+x} ]; then
       travis_wait bash -c 'scripts/build-ssl.sh >build-ssl.log 2>&1' || (cat build-ssl.log && exit 1)
       export SSL_LIB=${HOME}/opt/lib SSL_INC=${HOME}/opt/include
       export ADDLIB="-Wl,-rpath,$SSL_LIB"
    fi

script:
  - if [ "${CC%-*}"  = "clang" ]; then export FLAGS="$FLAGS USE_OBSOLETE_LINKER=1" DEBUG_CFLAGS="-g -fsanitize=address" LDFLAGS="-fsanitize=address" ASAN_OPTIONS="log_path=asan.log"; fi
  - make -C contrib/wurfl
  - make -j3 CC=$CC CPU_CFLAGS.generic="-O1" V=1 ERR=1 TARGET=$TARGET $FLAGS DEBUG_CFLAGS="$DEBUG_CFLAGS" LDFLAGS="$LDFLAGS" ADDLIB="$ADDLIB" SSL_LIB="$SSL_LIB" SSL_INC="$SSL_INC" SLZ_LIB="$SLZ_LIB" SLZ_INC="$SLZ_INC" 51DEGREES_SRC="$FIFTYONEDEGREES_SRC" EXTRA_OBJS="$EXTRA_OBJS" $DEBUG_OPTIONS
  - ./haproxy -vv
  - if [ "${TRAVIS_OS_NAME}" = "linux" ]; then ldd haproxy; fi
  - if [ "${TRAVIS_OS_NAME}" = "osx" ]; then otool -L haproxy; fi
  - make reg-tests VTEST_PROGRAM=../vtest/vtest REGTESTS_TYPES=default,bug,devel
  - |
    if ls asan.log* 1>/dev/null 2>&1; then
       cat asan.log*
       exit 1
    fi

after_failure:
  - |
    for folder in ${TMPDIR}/*regtest*/vtc.*; do
      cat $folder/INFO
      cat $folder/LOG
    done
