dist: bionic

branches:
  only:
    - "master"

os: linux

language: c

compiler:
  - gcc

addons:
  apt:
    packages:
    - axel
    - dos2unix
    - libgd-dev

_linux-s390x: &linux-s390x
  os: linux
  arch: s390x
  dist: bionic
  compiler: gcc
  addons:
      apt:
          update: true
          packages:
            - axel
            - dos2unix
            - libgd-dev
            - libpcre3
            - libpcre3-dev
            - mercurial
            - libpq-dev
  before_install:
    - sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
  install:
    - cpanm --sudo --notest Test::Nginx IPC::Run3 > build.log 2>&1 || (cat build.log && exit 1)
    - if [ ! -f download-cache/openssl-$OPENSSL_VER.tar.gz ]; then wget -P download-cache https://www.openssl.org/source/openssl-$OPENSSL_VER.tar.gz || wget -P download-cache https://www.openssl.org/source/old/${OPENSSL_VER//[a-z]/}/openssl-$OPENSSL_VER.tar.gz; fi
    - tar zxf download-cache/openssl-$OPENSSL_VER.tar.gz
    - cd openssl-$OPENSSL_VER/
    - patch -p1 < ../patches/openssl-$OPENSSL_PATCH_VER-sess_set_get_cb_yield.patch
    - ./config no-threads shared enable-ssl3 enable-ssl3-method -g --prefix=$OPENSSL_PREFIX -DPURIFY > build.log 2>&1 || (cat build.log && exit 1)
    - make -j$JOBS > build.log 2>&1 || (cat build.log && exit 1)
    - sudo make PATH=$PATH install_sw > build.log 2>&1 || (cat build.log && exit 1)
    - cd ..
    - sudo ln -s /usr/bin/make /usr/bin/gmake
  script:
    - util/mirror-tarballs > build.log 2>&1 || (cat build.log && exit 1)
    - cd "openresty-$(./util/ver)"
    - ./configure $ENABLE_HTTP3_OPTION --prefix=$OPENRESTY_PREFIX --with-cc-opt="-I$PCRE_INC -I$OPENSSL_INC" --with-ld-opt="-L$PCRE_LIB -L$OPENSSL_LIB -Wl,-rpath,$PCRE_LIB:$OPENSSL_LIB" --with-pcre-jit --with-http_ssl_module --with-debug -j$JOBS > build.log 2>&1 || (cat build.log && exit 1)
    - make -j$JOBS > build.log 2>&1 || (cat build.log && exit 1)
    - sudo make install > build.log 2>&1 || (cat build.log && exit 1)
    - cd ..
    - export PATH=$OPENRESTY_PREFIX/bin:$OPENRESTY_PREFIX/nginx/sbin:$PATH
    - nginx -V
    - ldd `which nginx`|grep -E 'luajit|ssl|pcre'
    - prove -I. -r t/

_linux-ppc64le: &linux-ppc64le
  os: linux
  arch: ppc64le
  dist: bionic
  compiler: gcc
  addons:
      apt:
          update: true
          packages:
            - axel
            - dos2unix
            - libgd-dev
            - libpcre3
            - libpcre3-dev
            - mercurial
            - libpq-dev
  install:
    - cpanm --sudo --notest Test::Nginx IPC::Run3 > build.log 2>&1 || (cat build.log && exit 1)
    - if [ ! -f download-cache/openssl-$OPENSSL_VER.tar.gz ]; then wget -P download-cache https://www.openssl.org/source/openssl-$OPENSSL_VER.tar.gz || wget -P download-cache https://www.openssl.org/source/old/${OPENSSL_VER//[a-z]/}/openssl-$OPENSSL_VER.tar.gz; fi
    - tar zxf download-cache/openssl-$OPENSSL_VER.tar.gz
    - cd openssl-$OPENSSL_VER/
    - patch -p1 < ../patches/openssl-$OPENSSL_PATCH_VER-sess_set_get_cb_yield.patch
    - ./config no-threads shared enable-ssl3 enable-ssl3-method -g --prefix=$OPENSSL_PREFIX -DPURIFY > build.log 2>&1 || (cat build.log && exit 1)
    - make -j$JOBS > build.log 2>&1 || (cat build.log && exit 1)
    - sudo make PATH=$PATH install_sw > build.log 2>&1 || (cat build.log && exit 1)
    - cd ..
    - sudo ln -s /usr/bin/make /usr/bin/gmake
  script:
    - util/mirror-tarballs > build.log 2>&1 || (cat build.log && exit 1)
    - cd "openresty-$(./util/ver)"
    - ./configure $ENABLE_HTTP3_OPTION --prefix=$OPENRESTY_PREFIX --with-cc-opt="-I$PCRE_INC -I$OPENSSL_INC" --with-ld-opt="-L$PCRE_LIB -L$OPENSSL_LIB -Wl,-rpath,$PCRE_LIB:$OPENSSL_LIB" --with-pcre-jit --with-http_ssl_module --with-debug -j$JOBS > build.log 2>&1 || (cat build.log && exit 1)
    - make -j$JOBS > build.log 2>&1 || (cat build.log && exit 1)
    - sudo make install > build.log 2>&1 || (cat build.log && exit 1)
    - cd ..
    - export PATH=$OPENRESTY_PREFIX/bin:$OPENRESTY_PREFIX/nginx/sbin:$PATH
    - nginx -V
    - ldd `which nginx`|grep -E 'luajit|ssl|pcre'

cache:
  directories:
  - download-cache

env:
  global:
    - JOBS=3
    - PCRE_VER=8.44
    - PCRE_PREFIX=/opt/pcre
    - PCRE_LIB=$PCRE_PREFIX/lib
    - PCRE_INC=$PCRE_PREFIX/include
    - OPENSSL_PREFIX=/opt/ssl
    - OPENSSL_LIB=$OPENSSL_PREFIX/lib
    - OPENSSL_INC=$OPENSSL_PREFIX/include
    - OPENRESTY_PREFIX=/opt/openresty
  jobs:
    - OPENSSL_VER=1.1.0l OPENSSL_PATCH_VER=1.1.0d
    - OPENSSL_VER=1.1.1s OPENSSL_PATCH_VER=1.1.1f ENABLE_HTTP3_OPTION=--with-http_v3_module

jobs:
    include:
        - <<: *linux-s390x
          env: OPENSSL_VER=1.1.0l OPENSSL_PATCH_VER=1.1.0d
        - <<: *linux-s390x
          env: OPENSSL_VER=1.1.1l OPENSSL_PATCH_VER=1.1.1f ENABLE_HTTP3_OPTION=--with-http_v3_module
        - <<: *linux-ppc64le
          env: OPENSSL_VER=1.1.1s OPENSSL_PATCH_VER=1.1.1f ENABLE_HTTP3_OPTION=--with-http_v3_module

install:
  - cpanm --sudo --notest Test::Nginx IPC::Run3 > build.log 2>&1 || (cat build.log && exit 1)
  - if [ ! -f download-cache/pcre-$PCRE_VER.tar.gz ]; then wget -P download-cache https://downloads.sourceforge.net/project/pcre/pcre/${PCRE_VER}/pcre-${PCRE_VER}.tar.gz; fi
  - if [ ! -f download-cache/openssl-$OPENSSL_VER.tar.gz ]; then wget -P download-cache https://www.openssl.org/source/openssl-$OPENSSL_VER.tar.gz || wget -P download-cache https://www.openssl.org/source/old/${OPENSSL_VER//[a-z]/}/openssl-$OPENSSL_VER.tar.gz; fi
  - tar zxf download-cache/pcre-$PCRE_VER.tar.gz
  - cd pcre-$PCRE_VER/
  - ./configure --prefix=$PCRE_PREFIX --enable-jit --enable-utf --enable-unicode-properties > build.log 2>&1 || (cat build.log && exit 1)
  - make -j$JOBS > build.log 2>&1 || (cat build.log && exit 1)
  - sudo PATH=$PATH make install > build.log 2>&1 || (cat build.log && exit 1)
  - cd ..
  - tar zxf download-cache/openssl-$OPENSSL_VER.tar.gz
  - cd openssl-$OPENSSL_VER/
  - patch -p1 < ../patches/openssl-$OPENSSL_PATCH_VER-sess_set_get_cb_yield.patch
  - ./config no-threads shared enable-ssl3 enable-ssl3-method -g --prefix=$OPENSSL_PREFIX -DPURIFY > build.log 2>&1 || (cat build.log && exit 1)
  - make -j$JOBS > build.log 2>&1 || (cat build.log && exit 1)
  - sudo make PATH=$PATH install_sw > build.log 2>&1 || (cat build.log && exit 1)
  - cd ..
  - sudo ln -s /usr/bin/make /usr/bin/gmake

script:
  - util/mirror-tarballs > build.log 2>&1 || (cat build.log && exit 1)
  - cd "openresty-$(./util/ver)"
  - ./configure $ENABLE_HTTP3_OPTION --prefix=$OPENRESTY_PREFIX --with-cc-opt="-I$PCRE_INC -I$OPENSSL_INC" --with-ld-opt="-L$PCRE_LIB -L$OPENSSL_LIB -Wl,-rpath,$PCRE_LIB:$OPENSSL_LIB" --with-pcre-jit --with-http_ssl_module --with-debug -j$JOBS > build.log 2>&1 || (cat build.log && exit 1)
  - make -j$JOBS > build.log 2>&1 || (cat build.log && exit 1)
  - sudo make install > build.log 2>&1 || (cat build.log && exit 1)
  - cd ..
  - export PATH=$OPENRESTY_PREFIX/bin:$OPENRESTY_PREFIX/nginx/sbin:$PATH
  - nginx -V
  - ldd `which nginx`|grep -E 'luajit|ssl|pcre'
  - prove -I. -r t/