# 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: 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 ..
    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
    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" $([ ! -z ${SSL_LIB+x} ] && echo ADDLIB="-Wl,-rpath,$SSL_LIB") 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
