From 222eb0e51aedfb453d0ffbf2c9d7945db689c9d4 Mon Sep 17 00:00:00 2001 From: Arturo Bernal Date: Fri, 16 Oct 2026 07:13:47 +0200 Subject: [PATCH 1/3] CI: Add an Alpine/musl build job to linux.yml --- .github/workflows/linux.yml | 51 +++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index b412dffea17..66760df2aa8 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -508,3 +508,54 @@ jobs: test/perl-framework/t/logs/error_log test/pytest_suite/t/logs/error_log test/gen/apache/logs/error_log + + # Builds against the distro's own APR/APR-util, rather than from source + # like the job above, so this also exercises those packaged versions. + # musl's libc differs from glibc in ways the job above cannot catch, e.g. + # strtoll() behaviour for input with no digits (see ap_size_parameter_parse()). + alpine-musl: + runs-on: ubuntu-latest + container: alpine:3.20 + timeout-minutes: 15 + steps: + - name: Install build dependencies + run: | + apk add --no-cache build-base autoconf automake libtool pkgconf \ + apr-dev apr-util-dev pcre2-dev nghttp2-dev python3 curl + - uses: actions/checkout@v6 + # apr-dev/apr-util-dev ship apr-1-config/apu-1-config and the headers, + # but not the build/*.m4 autoconf macros buildconf needs in apr-config + # mode; fetch just those three files from the matching source release. + - name: Fetch the APR/APR-util autoconf macros + run: | + mkdir -p /usr/share/build-1 /tmp/aprsrc + apr_version=$(apr-1-config --version) + apu_version=$(apu-1-config --version) + curl -fsSL "https://archive.apache.org/dist/apr/apr-${apr_version}.tar.gz" | tar -xz -C /tmp/aprsrc + curl -fsSL "https://archive.apache.org/dist/apr/apr-util-${apu_version}.tar.gz" | tar -xz -C /tmp/aprsrc + cp "/tmp/aprsrc/apr-${apr_version}/build/apr_common.m4" \ + "/tmp/aprsrc/apr-${apr_version}/build/find_apr.m4" \ + "/tmp/aprsrc/apr-util-${apu_version}/build/find_apu.m4" \ + /usr/share/build-1/ + - name: buildconf, configure, make + run: | + ./buildconf --with-apr=apr-1-config + ./configure --with-apr=/usr/bin/apr-1-config --with-apr-util=/usr/bin/apu-1-config \ + --enable-mods-shared=reallyall --with-mpm=event + make -j$(nproc) + make install + - name: Install uv + run: | + curl -LsSf https://astral.sh/uv/install.sh | sh + echo "$HOME/.local/bin" >> $GITHUB_PATH + # Only the core suite for now (see README.ci); the full pyhttpd/perl + # suites need more packages than this job installs. + - name: Run the core pytest suite + run: make check-all-pytest PYTEST_ARGS="--only=pyhttpd" PYHTTPD_TARGETS=modules/core + - uses: actions/upload-artifact@v7 + if: failure() + with: + name: error_log-alpine-musl + path: | + config.log + test/gen/apache/logs/error_log From 6a4133c2b7bab73c837166f0b7b57a1d312b29cc Mon Sep 17 00:00:00 2001 From: Arturo Bernal Date: Fri, 16 Oct 2026 08:37:52 +0200 Subject: [PATCH 2/3] CI: Use supported Alpine release for musl build --- .github/workflows/linux.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 66760df2aa8..159790707de 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -515,7 +515,7 @@ jobs: # strtoll() behaviour for input with no digits (see ap_size_parameter_parse()). alpine-musl: runs-on: ubuntu-latest - container: alpine:3.20 + container: alpine:3.24 timeout-minutes: 15 steps: - name: Install build dependencies From fa156fa3fd3465e51341b9e31c453a16c42cb9a4 Mon Sep 17 00:00:00 2001 From: Arturo Bernal Date: Fri, 16 Oct 2026 08:55:10 +0200 Subject: [PATCH 3/3] CI: Use Alpine-packaged uv --- .github/workflows/linux.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 159790707de..c129c226507 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -521,7 +521,7 @@ jobs: - name: Install build dependencies run: | apk add --no-cache build-base autoconf automake libtool pkgconf \ - apr-dev apr-util-dev pcre2-dev nghttp2-dev python3 curl + apr-dev apr-util-dev pcre2-dev nghttp2-dev python3 curl uv - uses: actions/checkout@v6 # apr-dev/apr-util-dev ship apr-1-config/apu-1-config and the headers, # but not the build/*.m4 autoconf macros buildconf needs in apr-config @@ -544,10 +544,6 @@ jobs: --enable-mods-shared=reallyall --with-mpm=event make -j$(nproc) make install - - name: Install uv - run: | - curl -LsSf https://astral.sh/uv/install.sh | sh - echo "$HOME/.local/bin" >> $GITHUB_PATH # Only the core suite for now (see README.ci); the full pyhttpd/perl # suites need more packages than this job installs. - name: Run the core pytest suite