# 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"
    - SSL_LIB=${HOME}/opt/lib
    - SSL_INC=${HOME}/opt/include
    - 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
  - os: linux
    arch: amd64
    if: type == push
    compiler: clang
    env: TARGET=linux-glibc OPENSSL_VERSION=1.1.1f CC=clang-9
  - os: linux
    # The ARM64 build uses openssl and libssl-dev from Ubuntu repository. They come preinstalled by TravisCI!
    arch: arm64
    if: type == push
    compiler: clang
    env: TARGET=linux-glibc OPENSSL_VERSION=1.1.1f CC=clang-9 SSL_LIB=/usr/lib SSL_INC=/usr/include
    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"
  - os: linux
    arch: s390x
    if: type == push
    compiler: gcc
    env: TARGET=linux-glibc OPENSSL_VERSION=1.1.1f
  - os: linux
    if: type == cron
    compiler: clang
    env: TARGET=linux-glibc OPENSSL_VERSION=1.1.1f 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
  - 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
  - os: linux
    if: type == push
    compiler: clang
    env: TARGET=linux-glibc LIBRESSL_VERSION=3.1.1 CC=clang-9
  - os: linux
    env: DEBUG_OPTIONS=""
    if: type == cron
    compiler: clang
    env: TARGET=linux-glibc LIBRESSL_VERSION=3.0.2 CC=clang-9
  - 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
  - os: linux
    if: type == cron
    compiler: clang
    env: TARGET=linux-glibc BORINGSSL=yes
  - os: linux
    if: type == push
    compiler: clang
    env: TARGET=linux-glibc FLAGS= CC=clang-9
  - 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
  - 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 ..
  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"
  - travis_wait bash -c 'scripts/build-ssl.sh >build-ssl.log 2>&1' || (cat build-ssl.log && exit 1)

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="-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
