version: 2.1

jobs:
  arm:
    resource_class: arm.medium
    docker:
      - image: cimg/base:current-22.04
      - image: mysql:8.3
        environment:
          MYSQL_ALLOW_EMPTY_PASSWORD: true
          MYSQL_ROOT_PASSWORD: ''
          MYSQL_DATABASE: test
      - image: postgres:16
        environment:
          POSTGRES_PASSWORD: postgres
          POSTGRES_DB: test
    environment:
      LANGUAGE: ''
      LANG: en_US.UTF-8
      MYSQL_TEST_HOST: '127.0.0.1'
      MYSQL_TEST_PASSWD: ''
      MYSQL_TEST_USER: root
      PDO_MYSQL_TEST_DSN: 'mysql:host=127.0.0.1;dbname=test'
      PDO_MYSQL_TEST_PASS: ''
      PDO_MYSQL_TEST_USER: root
      PDO_PGSQL_TEST_DSN: 'pgsql:host=127.0.0.1 port=5432 dbname=test user=postgres password=postgres'
    steps:
      - checkout
      - run:
          name: apt
          command: |
            export DEBIAN_FRONTEND=noninteractive
            sudo apt-get update -y
            sudo apt-get install -y \
              gcc \
              g++ \
              autoconf \
              bison \
              re2c \
              locales \
              locales-all \
              ldap-utils \
              openssl \
              slapd \
              libgmp-dev \
              libicu-dev \
              libtidy-dev \
              libenchant-2-dev \
              libsasl2-dev \
              libxpm-dev \
              libzip-dev \
              libbz2-dev \
              libsqlite3-dev \
              libwebp-dev \
              libonig-dev \
              libcurl4-openssl-dev \
              libxml2-dev \
              libxslt1-dev \
              libpq-dev \
              libreadline-dev \
              libldap2-dev \
              libsodium-dev \
              libargon2-0-dev \
              libmm-dev \
              libsnmp-dev \
              snmpd \
              `#snmp-mibs-downloader` \
              freetds-dev \
              `#unixodbc-dev` \
              dovecot-core \
              dovecot-pop3d \
              dovecot-imapd \
              sendmail \
              firebird-dev \
              liblmdb-dev \
              libtokyocabinet-dev \
              libdb-dev \
              libqdbm-dev \
              libjpeg-dev \
              libpng-dev \
              libfreetype6-dev
      - run:
          name: ./configure
          command: |
            ./buildconf -f
            ./configure \
              --enable-debug \
              --enable-zts \
              --enable-option-checking=fatal \
              --prefix=/usr \
              --enable-phpdbg \
              --enable-fpm \
              --enable-opcache \
              --with-pdo-mysql=mysqlnd \
              --with-mysqli=mysqlnd \
              --with-pgsql \
              --with-pdo-pgsql \
              --with-pdo-sqlite \
              --enable-intl \
              --without-pear \
              --enable-gd \
              --with-jpeg \
              --with-webp \
              --with-freetype \
              --with-xpm \
              --enable-exif \
              --with-zip \
              --with-zlib \
              --enable-soap \
              --enable-xmlreader \
              --with-xsl \
              --with-tidy \
              --enable-sysvsem \
              --enable-sysvshm \
              --enable-shmop \
              --enable-pcntl \
              --with-readline \
              --enable-mbstring \
              --with-curl \
              --with-gettext \
              --enable-sockets \
              --with-bz2 \
              --with-openssl \
              --with-gmp \
              --enable-bcmath \
              --enable-calendar \
              --enable-ftp \
              --with-enchant=/usr \
              --enable-sysvmsg \
              --with-ffi \
              --enable-zend-test \
              --enable-dl-test=shared \
              --with-ldap \
              --with-ldap-sasl \
              --with-password-argon2 \
              --with-mhash \
              --with-sodium \
              --enable-dba \
              --with-cdb \
              --enable-flatfile \
              --enable-inifile \
              --with-tcadb \
              --with-lmdb \
              --with-qdbm \
              --with-snmp \
              `#--with-unixODBC` \
              `#--with-pdo-odbc=unixODBC,/usr` \
              --with-config-file-path=/etc \
              --with-config-file-scan-dir=/etc/php.d \
              --with-pdo-firebird \
              `#--with-pdo-dblib` \
              --disable-phpdbg \
              `#--enable-werror`
      - run:
          name: make
          no_output_timeout: 30m
          command: make -j2 > /dev/null
      - run:
          name: make install
          command: |
            sudo make install
            sudo mkdir -p /etc/php.d
            sudo chmod 777 /etc/php.d
            echo opcache.enable_cli=1 > /etc/php.d/opcache.ini
            echo opcache.protect_memory=1 >> /etc/php.d/opcache.ini
      - run:
          name: Test
          no_output_timeout: 30m
          command: |
            sapi/cli/php run-tests.php \
              -d zend_extension=opcache.so \
              -d opcache.enable_cli=1 \
              -d opcache.jit_buffer_size=64M \
              -d opcache.jit=tracing \
              -d zend_test.observer.enabled=1 \
              -d zend_test.observer.show_output=0 \
              -P -q -x -j2 \
              -g FAIL,BORK,LEAK,XLEAK \
              --no-progress \
              --offline \
              --show-diff \
              --show-slow 1000 \
              --set-timeout 120 \
              --repeat 2

workflows:
  push-workflow:
    jobs:
      - arm
