# 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 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"; 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

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