Skip to content

CI: Switch to GCC 13, latest available in Ubuntu 24.04 images. #1210

CI: Switch to GCC 13, latest available in Ubuntu 24.04 images.

CI: Switch to GCC 13, latest available in Ubuntu 24.04 images. #1210

Workflow file for this run

name: Linux
on:
push:
branches: [ "*" ]
paths-ignore:
- 'docs/**'
- STATUS
- CHANGES
- changes-entries/*
tags:
- 2.*
pull_request:
branches: [ "trunk", "2.4.x" ]
paths-ignore:
- 'docs/**'
- STATUS
- CHANGES
- changes-entries/*
env:
MARGS: "-j2"
CFLAGS: "-g"
# This will need updating as the ubuntu-latest image changes:
PHP_FPM: "/usr/sbin/php-fpm8.1"
jobs:
build:
strategy:
fail-fast: false
matrix:
include:
# -------------------------------------------------------------------------
- name: Empty APLOGNO() test
env: |
SKIP_TESTING=1
TEST_LOGNO=1
# -------------------------------------------------------------------------
- name: Default
# -------------------------------------------------------------------------
- name: All-static modules
config: --enable-mods-static=reallyall
# -------------------------------------------------------------------------
- name: Prefork MPM, all-modules (except cgid)
config: --enable-mods-shared=reallyall --with-mpm=prefork --disable-cgid
# -------------------------------------------------------------------------
- name: Worker MPM, all-modules
config: --enable-mods-shared=reallyall --with-mpm=worker
# -------------------------------------------------------------------------
- name: Shared MPMs, all-modules
config: --enable-mods-shared=reallyall --enable-mpms-shared=all
# -------------------------------------------------------------------------
- name: Event MPM, all-modules, mod_cgid only
config: --enable-mods-shared=reallyall --with-mpm=event --disable-cgi
# -------------------------------------------------------------------------
- name: Event MPM, all-modules, no CMSG_DATA
config: --enable-mods-shared=reallyall --with-mpm=event ac_cv_have_decl_CMSG_DATA=no
# -------------------------------------------------------------------------
- name: Default, all-modules + install
config: --enable-mods-shared=reallyall
env: |
TEST_INSTALL=1
APACHE_TEST_EXTRA_ARGS=-v
# -------------------------------------------------------------------------
- name: Default, all-modules, random test order
config: --enable-mods-shared=reallyall
env: |
TEST_ARGS=-order=random
# -------------------------------------------------------------------------
- name: GCC 13 maintainer-mode w/-Werror, install + VPATH
config: --enable-mods-shared=reallyall --enable-maintainer-mode
notest-cflags: -Werror -O2
env: |
CC=gcc-13
TEST_VPATH=1
TEST_INSTALL=1
SKIP_TESTING=1
# -------------------------------------------------------------------------
- name: All-modules, APR 1.7.4, APR-util 1.6.3
config: --enable-mods-shared=reallyall
env: |
APR_VERSION=1.7.4
APU_VERSION=1.6.3
APU_CONFIG="--with-crypto --with-ldap"
# -------------------------------------------------------------------------
- name: APR 1.8.x, APR-util 1.7.x
config: --enable-mods-shared=reallyall
env: |
APR_VERSION=1.8.x
APU_VERSION=1.7.x
APU_CONFIG="--with-crypto --with-ldap"
CLEAR_CACHE=1
# -------------------------------------------------------------------------
- name: Pool-debug
config: --enable-mods-shared=reallyall
env: |
APR_VERSION=1.7.x
APR_CONFIG="--enable-pool-debug"
APU_VERSION=1.7.x
APU_CONFIG="--with-crypto --with-ldap"
TEST_MALLOC=1
CLEAR_CACHE=1
# -------------------------------------------------------------------------
- name: Shared MPMs (event), pool-debug, SSL/TLS variants
config: --enable-mods-shared=reallyall --enable-mpms-shared=all --with-mpm=event
env: |
APR_VERSION=1.7.x
APR_CONFIG="--enable-pool-debug"
APU_VERSION=1.7.x
APU_CONFIG="--with-crypto --with-ldap"
TEST_MALLOC=1
TEST_SSL=1
CLEAR_CACHE=1
# -------------------------------------------------------------------------
- name: Shared MPMs (worker), pool-debug, SSL/TLS variants
config: --enable-mods-shared=reallyall --enable-mpms-shared=all --with-mpm=worker
env: |
APR_VERSION=1.7.x
APR_CONFIG="--enable-pool-debug"
APU_VERSION=1.7.x
APU_CONFIG="--with-crypto --with-ldap"
TEST_MALLOC=1
TEST_SSL=1
CLEAR_CACHE=1
# -------------------------------------------------------------------------
- name: Shared MPMs (prefork), pool-debug, SSL/TLS variants
config: --enable-mods-shared=reallyall --enable-mpms-shared=all --with-mpm=prefork
env: |
APR_VERSION=1.7.x
APR_CONFIG="--enable-pool-debug"
APU_VERSION=1.7.x
APU_CONFIG="--with-crypto --with-ldap"
TEST_MALLOC=1
TEST_SSL=1
CLEAR_CACHE=1
# -------------------------------------------------------------------------
- name: litmus WebDAV tests
config: --enable-dav --enable-dav-fs
env: |
LITMUS=1
TESTS="t/modules/dav.t"
pkgs: litmus
# -------------------------------------------------------------------------
- name: litmus WebDAV tests, APR trunk, LMDB
config: --enable-dav --enable-dav-fs
pkgs: litmus liblmdb-dev
env: |
APR_VERSION=trunk
APR_CONFIG="--with-lmdb --with-dbm=lmdb"
LITMUS=1
TESTS="t/modules/dav.t"
# -------------------------------------------------------------------------
# MFLAGS= works around https://bz.apache.org/bugzilla/show_bug.cgi?id=63942
## TODO if: *condition_not_24x
- name: Regenerate ap_expr
config: --enable-mods-shared=reallyall --enable-maintainer-mode
notest-cflags: -Werror -Wno-deprecated-declarations
env: |
BUILDCONFIG="--with-regen-expr"
MFLAGS=
# -------------------------------------------------------------------------
- name: APR 1.7.4, APR-util 1.6.3, LDAP
config: --enable-mods-shared=reallyall
pkgs: ldap-utils
env: |
APR_VERSION=1.7.4
APU_VERSION=1.6.3
APU_CONFIG="--with-crypto --with-ldap"
TEST_MALLOC=1
TEST_LDAP=1
TEST_ARGS="-defines LDAP"
TESTS="t/modules/"
# -------------------------------------------------------------------------
- name: APR 1.7.x, APR-util 1.7.x, LDAP
config: --enable-mods-shared=reallyall
pkgs: ldap-utils
env: |
APR_VERSION=1.7.x
APU_VERSION=1.7.x
APU_CONFIG="--with-crypto --with-ldap"
TEST_MALLOC=1
TEST_LDAP=1
TEST_ARGS="-defines LDAP"
TESTS="t/modules/"
CLEAR_CACHE=1
# -------------------------------------------------------------------------
### TODO: if: *condition_not_24x
- name: APR trunk thread debugging
config: --enable-mods-shared=reallyall --with-mpm=event
env: |
APR_VERSION=trunk
APR_CONFIG="--with-crypto --enable-thread-debug"
# -------------------------------------------------------------------------
- name: UBSan
notest-cflags: -fsanitize=undefined -fno-sanitize-recover=undefined
config: --enable-mods-shared=reallyall --disable-http2
env: |
NOTEST_LIBS=-lubsan
TEST_UBSAN=1
# -------------------------------------------------------------------------
- name: ASan
notest-cflags: -ggdb -fsanitize=address -fno-sanitize-recover=address -fno-omit-frame-pointer
config: --enable-mods-shared=reallyall
env: |
APR_VERSION=1.7.x
APU_VERSION=1.7.x
APU_CONFIG="--with-crypto --with-ldap"
TEST_ASAN=1
CLEAR_CACHE=1
# -------------------------------------------------------------------------
- name: ASan, pool-debug
notest-cflags: -ggdb -fsanitize=address -fno-sanitize-recover=address -fno-omit-frame-pointer
config: --enable-mods-shared=reallyall
env: |
APR_VERSION=1.7.x
APR_CONFIG="--enable-pool-debug"
APU_VERSION=1.7.x
APU_CONFIG="--with-crypto --with-ldap"
TEST_ASAN=1
CLEAR_CACHE=1
# -------------------------------------------------------------------------
- name: HTTP/2 test suite
config: --enable-mods-shared=reallyall --with-mpm=event --enable-mpms-shared=all
pkgs: curl python3-pytest nghttp2-client python3-cryptography python3-requests python3-multipart python3-filelock python3-websockets
env: |
APR_VERSION=1.7.4
APU_VERSION=1.6.3
APU_CONFIG="--with-crypto"
NO_TEST_FRAMEWORK=1
TEST_INSTALL=1
TEST_H2=1
TEST_CORE=1
TEST_PROXY=1
# -------------------------------------------------------------------------
### TODO: if: *condition_not_24x
### TODO: pebble install is broken.
# - name: ACME test suite
# config: --enable-mods-shared=reallyall --with-mpm=event --enable-mpms-shared=event
# pkgs: >-
# python3-pytest nghttp2-client python3-cryptography python3-requests python3-filelock
# golang-1.17 curl
# env: |
# APR_VERSION=1.7.4
# APU_VERSION=1.6.3
# APU_CONFIG="--with-crypto"
# GOROOT=/usr/lib/go-1.17
# NO_TEST_FRAMEWORK=1
# TEST_INSTALL=1
# TEST_MD=1
# -------------------------------------------------------------------------
### TODO: if: *condition_not_24x
- name: Configured w/reduced exports
config: --enable-reduced-exports --enable-maintainer-mode --enable-systemd
pkgs: libsystemd-dev
env: |
SKIP_TESTING=1
TEST_INSTALL=1
# -------------------------------------------------------------------------
### TODO if: *condition_not_24x
### TODO: Fails because :i386 packages are not being found.
# - name: i386 Shared MPMs, most modules, maintainer-mode w/-Werror
# config: --enable-mods-shared=reallyall --disable-xml2enc --disable-proxy-html --enable-mpms-shared=all --enable-maintainer-mode
# pkgs: >-
# 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
# env: |
# PKG_CONFIG_PATH="/usr/lib/i386-linux-gnu/pkgconfig"
# NOTEST_CFLAGS="-Werror"
# CC="gcc -m32"
# APR_VERSION=1.7.0
# APU_VERSION=1.6.3
# APU_CONFIG="--with-crypto --with-ldap"
# -------------------------------------------------------------------------
- name: OpenSSL 3.1
config: --enable-mods-shared=most --enable-maintainer-mode --disable-md --disable-http2 --disable-ldap --disable-crypto
env: |
TEST_OPENSSL3=3.1.7
APR_VERSION=1.7.4
APU_VERSION=1.6.3
APU_CONFIG="--without-crypto"
pkgs: subversion
# -------------------------------------------------------------------------
- name: OpenSSL 3.2 -Werror
config: --enable-mods-shared=most --enable-maintainer-mode --disable-md --disable-http2 --disable-ldap --disable-crypto
notest-cflags: -Werror -O2 -Wno-deprecated-declarations
env: |
TEST_OPENSSL3=3.2.2
APR_VERSION=1.7.4
APU_VERSION=1.6.3
APU_CONFIG="--without-crypto"
pkgs: subversion
# -------------------------------------------------------------------------
- name: OpenSSL 3.2 no-engine
config: --enable-mods-shared=most --enable-maintainer-mode --disable-md --disable-http2 --disable-ldap --disable-crypto
env: |
TEST_OPENSSL3=3.2.2
OPENSSL_CONFIG=no-engine
APR_VERSION=1.7.4
APU_VERSION=1.6.3
APU_CONFIG="--without-crypto"
pkgs: subversion
# -------------------------------------------------------------------------
- name: OpenSSL 3.3 no-engine -Werror
config: --enable-mods-shared=most --enable-maintainer-mode --disable-md --disable-http2 --disable-ldap --disable-crypto
notest-cflags: -Werror -O2
env: |
TEST_OPENSSL3=3.3.2
OPENSSL_CONFIG=no-engine
APR_VERSION=1.7.4
APU_VERSION=1.6.3
APU_CONFIG="--without-crypto"
pkgs: subversion
# -------------------------------------------------------------------------
runs-on: ubuntu-latest
timeout-minutes: 30
env:
NOTEST_CFLAGS: ${{ matrix.notest-cflags }}
CONFIG: ${{ matrix.config }}
name: ${{ matrix.name }}
steps:
# JOBID is used in the cache keys, created here as a hash of all
# properties of the environment, including the image OS version,
# compiler flags and any job-specific properties.
- name: Set environment variables
run: |
echo "${{ matrix.env }}" >> $GITHUB_ENV
echo JOBID=`echo "OS=$ImageOS ${{ matrix.notest-cflags }} ${{ matrix.env }} ${{ matrix.config }}" \
| md5sum - | sed 's/ .*//'` >> $GITHUB_ENV
# https://github.com/actions/runner-images/issues/9491#issuecomment-1989718917
- name: Workaround ASAN issue in Ubuntu 22.04
run: sudo sysctl vm.mmap_rnd_bits=28
- name: apt refresh
run: sudo apt-get -o Acquire::Retries=5 update
- name: Install prerequisites
run: sudo apt-get install -o Acquire::Retries=5
cpanminus libtool-bin libapr1-dev libaprutil1-dev
liblua5.3-dev libbrotli-dev libcurl4-openssl-dev
libnghttp2-dev libjansson-dev libpcre2-dev gdb
perl-doc libsasl2-dev ${{ matrix.pkgs }}
- uses: actions/checkout@v4
- name: Cache installed libraries
uses: actions/cache@v4
with:
path: ~/root
key: cache-libs-${{ env.JOBID }}
- name: Cache CPAN modules
uses: actions/cache@v4
with:
path: ~/perl5
key: cache-cpan-${{ env.JOBID }}
- name: Configure environment
run: ./test/travis_before_linux.sh
timeout-minutes: 15
- uses: actions/upload-artifact@v4
if: failure()
with:
name: config.log-${{ env.JOBID }}
path: |
/home/runner/build/**/config.log
- name: Build and test
run: ./test/travis_run_linux.sh
- uses: actions/upload-artifact@v4
if: failure()
with:
name: error_log-${{ env.JOBID }}
path: |
**/config.log
test/perl-framework/t/logs/error_log