language: c os: - linux dist: bionic cache: directories: - /home/travis/perl5 - /home/travis/root # The non-x86_64 images currently lack cpanminus, when that is fixed # the cpanminus & universe sourceline can be removed. addons: apt: update: false sources: - sourceline: 'deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe' packages: - cpanminus - libtool-bin - libapr1-dev - libaprutil1-dev - perl-doc - liblua5.3-dev - libbrotli-dev - libcurl4-openssl-dev - libsystemd-dev - libnghttp2-dev - libjansson-dev - libpcre2-dev - libldap2-dev - ldap-utils - gdb env: global: - MFLAGS=-j2 - CFLAGS=-g # This defines two condition anchors which can be used in job # definitions to either: # condition_24x_only => run the job only for 2.4.x # condition_not_24x => run the job everywhere EXCEPT 2.4.x _cond1: &condition_24x_only (branch is present AND (branch = 2.4.x OR branch ~= /^candidate-2.4/)) OR (tag is present AND tag ~= /^2.4/) _cond2: &condition_not_24x (branch is not present OR (branch != 2.4.x AND branch !~ /^candidate-2.4/)) AND (tag is not present OR tag !~ /^2.4/) jobs: include: - name: Linux Ubuntu, Default module set # ------------------------------------------------------------------------- - name: Empty APLOGNO() test env: SKIP_TESTING=1 TEST_LOGNO=1 # ------------------------------------------------------------------------- - name: Linux s390x Ubuntu, all-modules arch: s390x env: CONFIG="--enable-mods-shared=reallyall" # ------------------------------------------------------------------------- - name: Linux ppc64le Ubuntu, all-modules arch: ppc64le env: CONFIG="--enable-mods-shared=reallyall" # ------------------------------------------------------------------------- - name: Linux arm64 Ubuntu, all-modules arch: arm64 env: CONFIG="--enable-mods-shared=reallyall" # ------------------------------------------------------------------------- - if: *condition_not_24x name: Linux i386 Ubuntu, Shared MPMs, most modules, maintainer-mode w/-Werror env: CONFIG="--enable-mods-shared=reallyall --disable-xml2enc --disable-proxy-html --enable-mpms-shared=all --enable-maintainer-mode" PKG_CONFIG_PATH="/usr/lib/i386-linux-gnu/pkgconfig" NOTEST_CFLAGS="-Werror" CC="gcc -m32" APR_VERSION=1.7.0 APU_VERSION=1.6.1 APU_CONFIG="--with-crypto --with-ldap" addons: apt: sources: - sourceline: 'deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe' packages: - cpanminus - libc6-dev-i386 - gcc-multilib - libexpat1-dev:i386 - libssl-dev:i386 - lib32z1-dev - libbrotli-dev:i386 - libpcre2-dev:i386 - libldap2-dev:i386 - libtool-bin - perl-doc - libapr1-dev - libbrotli-dev:i386 # ------------------------------------------------------------------------- - name: Linux Ubuntu, Default, all-modules + install env: CONFIG="--enable-mods-shared=reallyall" TEST_INSTALL=1 APACHE_TEST_EXTRA_ARGS=-v # ------------------------------------------------------------------------- - name: Linux Ubuntu, Default, all-static modules env: CONFIG="--enable-mods-static=reallyall" # ------------------------------------------------------------------------- - name: Linux Ubuntu, Default, all-modules, random test order env: CONFIG="--enable-mods-shared=reallyall" TEST_ARGS="-order=random" # ------------------------------------------------------------------------- - name: Linux Ubuntu, Prefork MPM, all-modules (except cgid) env: CONFIG="--enable-mods-shared=reallyall --with-mpm=prefork --disable-cgid" # ------------------------------------------------------------------------- - name: Linux Ubuntu, Worker MPM, all-modules env: CONFIG="--enable-mods-shared=reallyall --with-mpm=worker" CLEAR_CACHE=1 # ------------------------------------------------------------------------- - name: Linux Ubuntu, Shared MPMs, all-modules env: CONFIG="--enable-mods-shared=reallyall --enable-mpms-shared=all" # ------------------------------------------------------------------------- - name: Linux Ubuntu, GCC 7 maintainer-mode w/-Werror, install + VPATH os: linux env: CONFIG="--enable-mods-shared=reallyall --enable-maintainer-mode" NOTEST_CFLAGS='-Werror -O2' CC=gcc-7 TEST_VPATH=1 TEST_INSTALL=1 SKIP_TESTING=1 # ------------------------------------------------------------------------- - name: Linux Ubuntu, Event MPM, all-modules, mod_cgid only env: CONFIG="--enable-mods-shared=reallyall --with-mpm=event --disable-cgi" # ------------------------------------------------------------------------- - name: Linux Ubuntu, Event MPM, all-modules, no CMSG_DATA env: CONFIG="--enable-mods-shared=reallyall --with-mpm=event ac_cv_have_decl_CMSG_DATA=no" # ------------------------------------------------------------------------- - if: *condition_not_24x name: Linux Ubuntu, PCRE 1, GCC 7 maintainer-mode w/-Werror os: linux env: CONFIG="--enable-mods-shared=reallyall --with-pcre=/usr/bin/pcre-config --enable-maintainer-mode NOTEST_CFLAGS=-Werror CC=gcc-7" # ------------------------------------------------------------------------- - name: Linux Ubuntu, GCC 8 maintainer-mode w/-Werror env: CONFIG="--enable-mods-shared=reallyall --enable-maintainer-mode" NOTEST_CFLAGS='-Werror -O2' CC=gcc-8 SKIP_TESTING=1 addons: apt: packages: - gcc-8 - libtool-bin - libapr1-dev - libaprutil1-dev - perl-doc - liblua5.3-dev - libbrotli-dev - libcurl4-openssl-dev - libsystemd-dev - libnghttp2-dev - libjansson-dev - libpcre2-dev - libldap2-dev # ------------------------------------------------------------------------- - name: Linux Ubuntu, GCC 9 maintainer-mode w/-Werror env: CONFIG="--enable-mods-shared=reallyall --enable-maintainer-mode" NOTEST_CFLAGS='-Werror -O2' CC=gcc-9 SKIP_TESTING=1 addons: apt: sources: - sourceline: 'ppa:ubuntu-toolchain-r/test' packages: - gcc-9 - libtool-bin - libapr1-dev - libaprutil1-dev - perl-doc - liblua5.3-dev - libbrotli-dev - libcurl4-openssl-dev - libsystemd-dev - libnghttp2-dev - libjansson-dev - libpcre2-dev - libldap2-dev # ------------------------------------------------------------------------- - name: Linux Ubuntu, GCC 10 maintainer-mode w/-Werror env: CONFIG="--enable-mods-shared=reallyall --enable-maintainer-mode" NOTEST_CFLAGS='-Werror -O2' CC=gcc-10 SKIP_TESTING=1 addons: apt: sources: - sourceline: 'ppa:ubuntu-toolchain-r/test' packages: - gcc-10 - libtool-bin - libapr1-dev - libaprutil1-dev - perl-doc - liblua5.3-dev - libbrotli-dev - libcurl4-openssl-dev - libsystemd-dev - libnghttp2-dev - libjansson-dev - libpcre2-dev - libldap2-dev # ------------------------------------------------------------------------- # MFLAGS= works around https://bz.apache.org/bugzilla/show_bug.cgi?id=63942 - if: *condition_not_24x name: Linux Ubuntu, Regenerate ap_expr os: linux env: CONFIG="--enable-mods-shared=reallyall --enable-maintainer-mode NOTEST_CFLAGS=-Werror" BUILDCONFIG="--with-regen-expr" MFLAGS= # ------------------------------------------------------------------------- - if: *condition_not_24x name: Linux Ubuntu, APR trunk env: APR_VERSION=trunk APR_CONFIG="--with-crypto" CONFIG="--enable-mods-shared=reallyall" # ------------------------------------------------------------------------- - if: *condition_24x_only name: Linux Ubuntu Xenial, all-modules, system APR/APR-util os: linux dist: xenial env: CONFIG="--enable-mods-shared=reallyall" # ------------------------------------------------------------------------- - name: Linux Ubuntu Xenial, all-modules, APR 1.7.0, APR-util 1.6.1 dist: xenial env: APR_VERSION=1.7.0 APU_VERSION=1.6.1 CONFIG="--enable-mods-shared=reallyall" APU_CONFIG="--with-crypto --with-ldap" # ------------------------------------------------------------------------- - name: Linux Ubuntu Focal, all-modules, system APR/APR-util os: linux dist: focal env: CONFIG="--enable-mods-shared=reallyall" # ------------------------------------------------------------------------- - name: Linux Ubuntu Focal, all-modules, APR 1.7.0, APR-util 1.6.1 dist: focal env: APR_VERSION=1.7.0 APU_VERSION=1.6.1 CONFIG="--enable-mods-shared=reallyall" APU_CONFIG="--with-crypto --with-ldap" # ------------------------------------------------------------------------- - name: Linux Ubuntu, APR 1.7.0, APR-util 1.6.1 env: APR_VERSION=1.7.0 APU_VERSION=1.6.1 CONFIG="--enable-mods-shared=reallyall" APU_CONFIG="--with-crypto --with-ldap" # ------------------------------------------------------------------------- - name: Linux Ubuntu, APR 1.7.x, APR-util 1.7.x env: APR_VERSION=1.7.x APU_VERSION=1.7.x CONFIG="--enable-mods-shared=reallyall" APU_CONFIG="--with-crypto --with-ldap" CLEAR_CACHE=1 # ------------------------------------------------------------------------- - name: Linux Ubuntu, pool-debug env: APR_VERSION=1.7.x APR_CONFIG="--enable-pool-debug" APU_VERSION=1.7.x APU_CONFIG="--with-crypto --with-ldap" CONFIG="--enable-mods-shared=reallyall" TEST_MALLOC=1 CLEAR_CACHE=1 # ------------------------------------------------------------------------- - name: Linux Ubuntu, Shared MPMs (event), pool-debug, SSL/TLS variants env: APR_VERSION=1.7.x APR_CONFIG="--enable-pool-debug" APU_VERSION=1.7.x APU_CONFIG="--with-crypto --with-ldap" CONFIG="--enable-mods-shared=reallyall --enable-mpms-shared=all --with-mpm=event" TEST_MALLOC=1 TEST_SSL=1 CLEAR_CACHE=1 # ------------------------------------------------------------------------- - name: Linux Ubuntu, Shared MPMs (worker), pool-debug, SSL/TLS variants env: APR_VERSION=1.7.x APR_CONFIG="--enable-pool-debug" APU_VERSION=1.7.x APU_CONFIG="--with-crypto --with-ldap" CONFIG="--enable-mods-shared=reallyall --enable-mpms-shared=all --with-mpm=worker" TEST_MALLOC=1 TEST_SSL=1 CLEAR_CACHE=1 # ------------------------------------------------------------------------- - name: Linux Ubuntu, Shared MPMs (prefork), pool-debug, SSL/TLS variants env: APR_VERSION=1.7.x APR_CONFIG="--enable-pool-debug" APU_VERSION=1.7.x APU_CONFIG="--with-crypto --with-ldap" CONFIG="--enable-mods-shared=reallyall --enable-mpms-shared=all --with-mpm=prefork" TEST_MALLOC=1 TEST_SSL=1 CLEAR_CACHE=1 # ------------------------------------------------------------------------- - if: *condition_not_24x name: Linux Ubuntu, event MPM, HTTP/2 test suite dist: focal env: APR_VERSION=1.7.0 APU_VERSION=1.6.1 APU_CONFIG="--with-crypto" CONFIG="--enable-mods-shared=reallyall --with-mpm=event --enable-mpms-shared=event" TESTS="t/modules/http2.t" TEST_INSTALL=1 TEST_H2=1 addons: apt: sources: - sourceline: 'deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe' packages: - cpanminus - libtool-bin - libapr1-dev - libaprutil1-dev - perl-doc - liblua5.3-dev - libbrotli-dev - libcurl4-openssl-dev - libsystemd-dev - libnghttp2-dev - libjansson-dev - libpcre2-dev - libldap2-dev - ldap-utils - gdb - curl - python3-pytest - nghttp2-client - python3-cryptography - python3-requests # ------------------------------------------------------------------------- - name: Linux Ubuntu, APR 1.7.0, APR-util 1.6.1, LDAP env: APR_VERSION=1.7.0 APU_VERSION=1.6.1 APU_CONFIG="--with-crypto --with-ldap" CONFIG="--enable-mods-shared=reallyall" TEST_MALLOC=1 TEST_LDAP=1 TEST_ARGS="-defines LDAP" TESTS="t/modules/" # ------------------------------------------------------------------------- - if: *condition_not_24x name: Linux Ubuntu, event, APR trunk thread debugging env: APR_VERSION=trunk APR_CONFIG="--with-crypto --enable-thread-debug" CONFIG="--enable-mods-shared=reallyall --with-mpm=event" # ------------------------------------------------------------------------- - name: Linux Ubuntu, litmus WebDAV tests env: CONFIG="--enable-dav --enable-dav-fs" LITMUS=1 TESTS="t/modules/dav.t" addons: apt: update: false sources: - sourceline: 'deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe' packages: - cpanminus - libtool-bin - libapr1-dev - libaprutil1-dev - perl-doc - liblua5.3-dev - libbrotli-dev - libcurl4-openssl-dev - libsystemd-dev - libnghttp2-dev - libjansson-dev - libpcre2-dev - litmus # ------------------------------------------------------------------------- - if: *condition_24x_only name: Linux Ubuntu, APR 1.5.1, APR-util 1.5.4 env: APR_VERSION=1.5.1 APU_VERSION=1.5.4 CONFIG="--enable-mods-shared=reallyall" # ------------------------------------------------------------------------- - if: *condition_24x_only name: Linux Ubuntu, APR 1.4.8, APR-util 1.4.2 env: APR_VERSION=1.4.8 APU_VERSION=1.4.2 CONFIG="--enable-mods-shared=reallyall" # ------------------------------------------------------------------------- - name: Linux Ubuntu Focal, UBSan dist: focal env: NOTEST_CFLAGS="-fsanitize=undefined -fno-sanitize-recover=undefined" NOTEST_LIBS=-lubsan CONFIG="--enable-mods-shared=reallyall --disable-http2" TEST_UBSAN=1 # ------------------------------------------------------------------------- - name: Linux Ubuntu Focal, ASan dist: focal env: NOTEST_CFLAGS="-ggdb -fsanitize=address -fno-sanitize-recover=address -fno-omit-frame-pointer" APR_VERSION=1.7.x APU_VERSION=1.7.x APU_CONFIG="--with-crypto --with-ldap" CONFIG="--enable-mods-shared=reallyall" TEST_ASAN=1 CLEAR_CACHE=1 # ------------------------------------------------------------------------- - name: Linux Ubuntu Focal, ASan, pool-debug dist: focal env: NOTEST_CFLAGS="-ggdb -fsanitize=address -fno-sanitize-recover=address -fno-omit-frame-pointer" APR_VERSION=1.7.x APR_CONFIG="--enable-pool-debug" APU_VERSION=1.7.x APU_CONFIG="--with-crypto --with-ldap" CONFIG="--enable-mods-shared=reallyall" TEST_ASAN=1 CLEAR_CACHE=1 allow_failures: # Non-x86 are sometimes flaky: - arch: s390x env: CONFIG="--enable-mods-shared=reallyall" - arch: arm64 env: CONFIG="--enable-mods-shared=reallyall" - arch: ppc64le env: CONFIG="--enable-mods-shared=reallyall" # CPAN modules are to be used with the system Perl and always with # CC=gcc, e.g. for the CC="gcc -m32" case the builds are not correct # otherwise. before_install: - if [ "$TRAVIS_OS_NAME" = "linux" -a ! -v SKIP_TESTING ]; then if [ -v CLEAR_CACHE ]; then rm -rf ~/perl5; fi; cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib); CC=gcc cpanm --notest Net::SSL LWP::Protocol::https ExtUtils::Embed Test::More AnyEvent DateTime HTTP::DAV Protocol::HTTP2::Client FCGI AnyEvent::WebSocket::Client Apache::Test; fi before_script: - ./test/travis_before_${TRAVIS_OS_NAME}.sh script: - ./test/travis_run_${TRAVIS_OS_NAME}.sh # Send notifications by default to IRC and dev@, for everything but # forks, otherwise any build from a fork will spam the list with CI # results. notifications: irc: if: fork = false channels: - "irc.libera.chat#httpd-dev" email: if: fork = false recipients: - dev@httpd.apache.org