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

dist: bionic

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 ]

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: amd64
    if: type == push
    compiler: clang
    env: TARGET=linux-glibc CC=clang-9
    name: openssl-1.1.1
  - 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"
    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
    if: type == push
    compiler: clang
    env: TARGET=linux-glibc LIBRESSL_VERSION=3.1.1 CC=clang-9
    name: libressl-3.1.1
  - 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 LIBRESSL_VERSION=2.9.2 EXTRA_OBJS="contrib/prometheus-exporter/service-prometheus.o" CC=clang-9
    name: libressl-2.9.2 | prometheus-exporter
  - os: linux
    if: type == cron
    compiler: clang
    env: TARGET=linux-glibc BORINGSSL=yes
    name: boringssl
  - os: linux
    if: type == push
    compiler: clang
    env: TARGET=linux-glibc FLAGS= CC=clang-9
    name: FLAGS=
  - os: osx
    osx_image: xcode12
    if: type == push
    compiler: clang
    before_script:
      - echo 'brew "socat"' > brew.bundle
      - brew bundle --file=brew.bundle
    env: TARGET=osx FLAGS="USE_OPENSSL=1" OPENSSL_VERSION=1.1.1f
    name: openssl-1.1.1
  - 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
  allow_failures:
  - os: linux
    arch: arm64
    if: type == push
    compiler: clang

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
