[ci] more featureful build on OpenBSD #10
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: On PRs | |
on: [push, pull_request] | |
concurrency: | |
group: ${{github.workflow}}-${{github.head_ref}} | |
cancel-in-progress: true | |
jobs: | |
Linux-ubuntu-gcc: | |
runs-on: ubuntu-latest | |
name: Linux-ubuntu-${{matrix.platform}}-gcc | |
strategy: | |
matrix: | |
platform: ['x64'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: egor-tensin/setup-gcc@v1 | |
with: | |
platform: ${{matrix.platform}} | |
- name: Install packages | |
run: | | |
sudo apt-get install cmake meson ninja-build pkg-config perl scons \ | |
autoconf automake autotools-dev libtool m4 \ | |
nettle-dev gnutls-dev \ | |
libmbedtls-dev libnss3-dev libssl-dev libwolfssl-dev \ | |
libpcre2-dev libbrotli-dev libdeflate-dev zlib1g-dev libzstd-dev \ | |
libsasl2-dev libkrb5-dev libdbi-dev libpam-dev libldap-dev \ | |
libmariadb-dev libpq-dev \ | |
libmaxminddb-dev libunwind-dev liblua5.1-0-dev liblua5.4-dev \ | |
libxml2-dev uuid-dev libsqlite3-dev | |
- name: Compile and Test | |
run: | | |
set -e | |
cd "${{github.workspace}}" && scripts/ci-build.sh meson | |
#cd "${{github.workspace}}" && scripts/ci-build.sh cmake | |
cd "${{github.workspace}}" && scripts/ci-build.sh cmake-asan | |
cd "${{github.workspace}}" && scripts/ci-build.sh scons | |
cd "${{github.workspace}}" && scripts/ci-build.sh autobuild | |
Linux-ubuntu-clang: | |
runs-on: ubuntu-latest | |
name: Linux-ubuntu-${{matrix.platform}}-clang | |
strategy: | |
matrix: | |
platform: ['x64'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: egor-tensin/setup-clang@v1 | |
with: | |
platform: ${{matrix.platform}} | |
- name: Install packages | |
run: | | |
sudo apt-get install cmake meson ninja-build pkg-config perl scons \ | |
autoconf automake autotools-dev libtool m4 \ | |
nettle-dev gnutls-dev \ | |
libmbedtls-dev libnss3-dev libssl-dev libwolfssl-dev \ | |
libpcre2-dev libbrotli-dev libdeflate-dev zlib1g-dev libzstd-dev \ | |
libsasl2-dev libkrb5-dev libdbi-dev libpam-dev libldap-dev \ | |
libmariadb-dev libpq-dev \ | |
libmaxminddb-dev libunwind-dev liblua5.1-0-dev liblua5.4-dev \ | |
libxml2-dev uuid-dev libsqlite3-dev | |
- name: Compile and Test | |
run: | | |
set -e | |
#cd "${{github.workspace}}" && scripts/ci-build.sh meson | |
cd "${{github.workspace}}" && scripts/ci-build.sh cmake | |
#cd "${{github.workspace}}" && scripts/ci-build.sh scons | |
#cd "${{github.workspace}}" && scripts/ci-build.sh autobuild | |
macOS: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install packages | |
run: | | |
brew install meson ninja pkg-config pcre2 perl \ | |
gnutls libressl mbedtls nettle nss wolfssl \ | |
cyrus-sasl krb5 libdbi openldap \ | |
mariadb-connector-c libpq \ | |
brotli libdeflate zlib zstd \ | |
libmaxminddb lua \ | |
libxml2 ossp-uuid sqlite | |
# autoconf automake libtool m4 cmake scons | |
- name: Compile and Test | |
run: | | |
set -e | |
# TODO: figure out why krb5 libpq sasl not found by build | |
export NO_KRB5=1 NO_PGSQL=1 NO_SASL=1 NO_UNWIND=1 | |
cd "${{github.workspace}}" && scripts/ci-build.sh meson | |
DragonflyBSD: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: vmactions/dragonflybsd-vm@v1 | |
with: | |
prepare: | | |
pkg install -y ninja meson pkgconf pcre2 perl5 | |
run: | | |
meson setup "${{github.workspace}}/build" -Dwarning_level=3 | |
meson compile -C "${{github.workspace}}/build" --verbose | |
meson test -C "${{github.workspace}}/build" --verbose | |
FreeBSD: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: vmactions/freebsd-vm@v1 | |
with: | |
prepare: | | |
pkg install -y autoconf automake autotools libtool m4 pkgconf \ | |
ninja meson cmake scons-py39 pcre2 perl5 \ | |
gnutls libressl mbedtls nettle nss wolfssl \ | |
cyrus-sasl krb5 libdbi openldap26-client \ | |
mariadb1011-client postgresql16-client \ | |
brotli libdeflate zstd \ | |
libmaxminddb libunwind lua51 lua54 \ | |
e2fsprogs-libuuid libxml2 sqlite3 | |
run: | | |
set -e | |
cd "${{github.workspace}}" && scripts/ci-build.sh meson | |
cd "${{github.workspace}}" && scripts/ci-build.sh cmake | |
cd "${{github.workspace}}" && scripts/ci-build.sh scons | |
cd "${{github.workspace}}" && scripts/ci-build.sh autobuild | |
NetBSD: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: vmactions/netbsd-vm@v1 | |
with: | |
prepare: | | |
pkg_add cmake ninja pkgconf pcre2 perl \ | |
gnutls libressl mbedtls nettle nss wolfssl \ | |
cyrus-sasl mit-krb5 libdbi openldap-client \ | |
mariadb-client postgresql16-client \ | |
brotli libdeflate zlib zstd \ | |
libmaxminddb libunwind lua51 lua54 \ | |
libuuid libxml2 sqlite3 | |
# autoconf automake gmake libtool m4 meson py311-scons | |
run: | | |
set -e | |
export NO_UNWIND=1 | |
cd "${{github.workspace}}" && scripts/ci-build.sh cmake | |
OpenBSD: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: vmactions/openbsd-vm@v1 | |
with: | |
prepare: | | |
pkg_add ninja meson pkgconf pcre2 \ | |
gnutls mbedtls libnettle nss \ | |
cyrus-sasl-- heimdal-libs libdbi openldap-client-- \ | |
mariadb-client postgresql-client \ | |
brotli libdeflate zstd \ | |
libmaxminddb lua--%5.1 lua--%5.4 \ | |
e2fsprogs ossp-uuid libxml sqlite3 | |
# autoconf automake cmake gmake libtool m4 scons | |
run: | | |
set -e | |
export NO_PAM=1 NO_UNWIND=1 NO_WOLFSSL=1 | |
cd "${{github.workspace}}" && scripts/ci-build.sh meson | |
# # Solaris VM test is really slow compared to other VMs tests | |
# # (retrieving and installing packages is really slow) | |
# Solaris: | |
# runs-on: ubuntu-latest | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: vmactions/solaris-vm@v1 | |
# with: | |
# prepare: | | |
# pkgutil -y -i cmake gcc5core gmake pkgconfig perl libpcre2_dev | |
# run: | | |
# set -e | |
# # TODO: configure matrix with Sun Studio compiler | |
# cmake -S "${{github.workspace}}" -B "build" -Wno-dev -DCMAKE_BUILD_TYPE=Release | |
# cmake --build build --config Release | |
# # TODO: figure out why t/* tests are built but not found (not run) | |
# # TODO: figure out tests/* are not found (not run) | |
# # ctest --no-tests=error is also failing to fail/cause CI to fail | |
# ctest -V --test-dir build --build-config Release --no-tests=error | |
Windows-Cygwin: | |
runs-on: windows-latest | |
env: | |
CYGWIN: winsymlinks:native | |
steps: | |
- run: git config --global core.autocrlf input | |
- uses: actions/checkout@v4 | |
- uses: cygwin/cygwin-install-action@master | |
with: | |
packages: > | |
autoconf automake libtool m4 make | |
cmake meson ninja scons | |
gcc-g++ git pkgconf perl | |
libpcre2-devel | |
libnettle-devel gnutls-devel mbedtls-devel libnss-devel libssl-devel | |
libbrotli-devel libdeflate-devel zlib-devel libzstd-devel | |
libsasl2-devel libkrb5-devel libdbi-devel openldap-devel | |
libmariadb-devel libpq-devel | |
libmaxminddb-devel libunwind-devel lua-devel lua5.1-devel | |
libxml2-devel libuuid-devel libsqlite3-devel | |
- name: Compile and Test | |
#shell: C:\cygwin\bin\bash.exe --noprofile --norc -o igncr -eo pipefail '{0}' | |
shell: C:\cygwin\bin\bash.exe --login -o igncr -eo pipefail '{0}' | |
run: | | |
set -e | |
export PATH=/usr/bin:$(cygpath ${SYSTEMROOT})/system32 | |
export NO_PAM=1 NO_UNWIND=1 NO_WOLFSSL=1 | |
cd "${{github.workspace}}" && scripts/ci-build.sh autobuild | |
Windows-VisualStudio: | |
runs-on: windows-latest | |
name: Windows-VisualStudio-${{matrix.platform}} | |
strategy: | |
matrix: | |
platform: ['x64'] | |
#platform: ['x64', 'win32'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ilammy/msvc-dev-cmd@v1 | |
- name: Compile and Test | |
run: | | |
cmake -G "Visual Studio 17 2022" -A "${{matrix.platform}}" -S "${{github.workspace}}" -B "build" -Wno-dev -DCMAKE_BUILD_TYPE=Release -DWITH_PCRE2=OFF -DWITH_PCRE=OFF -DWITH_ZLIB=OFF | |
cmake --build build --config Release | |
# run the compiled unit tests src/t/test_*; | |
# (skip the Perl test framework in tests/*) | |
# (note: tests/CMakeLists.txt also skips Perl tests/* on native WIN32) | |
ctest -V --test-dir build --build-config Release --no-tests=error -R '^test_' | |
Windows-MSYS2: | |
runs-on: windows-latest | |
name: Windows-MSYS2-${{matrix.platform}} | |
strategy: | |
matrix: | |
platform: ['mingw64', 'ucrt64', 'clang64'] | |
#platform: ['mingw32', 'mingw64', 'ucrt64', 'clang32', 'clang64'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: msys2/setup-msys2@v2 | |
with: | |
msystem: ${{matrix.platform}} | |
update: true | |
pacboy: >- | |
cc:p | |
cmake:p | |
pcre2:p | |
pkgconf:p | |
- name: Compile and Test | |
shell: msys2 {0} | |
run: | | |
set -e | |
# TODO: figure out why linking modules fails due to missing | |
# liblighttpd.dll.a (should be import lib created from lighttpd.exe) | |
# Build static lighttpd.exe with (at least) modules used by tests. | |
# List plugins used by tests/*.conf server.modules = (...) | |
touch "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_access)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_accesslog)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_auth)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_authn_file)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_cgi)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_deflate)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_expire)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_extforward)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_fastcgi)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_proxy)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_redirect)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_scgi)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_setenv)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_simple_vhost)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_staticfile)" >> "${{github.workspace}}/src/plugin-static.h" | |
#echo "PLUGIN_INIT(mod_status)" >> "${{github.workspace}}/src/plugin-static.h" | |
cmake -G "Ninja" -S "${{github.workspace}}" -B "build" -Wno-dev -DCMAKE_BUILD_TYPE=Release -DBUILD_STATIC=ON | |
cmake --build build --config Release | |
# run the compiled unit tests src/t/test_*; | |
# (skip the Perl test framework in tests/*) | |
# (note: tests/CMakeLists.txt also skips Perl tests/* on native WIN32) | |
ctest -V --test-dir build --build-config Release --no-tests=error -R '^test_' | |
Linux-alpine-x86_64: | |
runs-on: ubuntu-latest | |
name: Linux-alpine-${{matrix.platform}} | |
# abort if x86_64 fails (x86_64 or x86 are fastest "native" builds) | |
continue-on-error: ${{ matrix.platform != 'x86_64' }} | |
strategy: | |
fail-fast: true | |
matrix: | |
platform: ['x86_64'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: jirutka/setup-alpine@v1 | |
with: | |
branch: latest-stable | |
arch: ${{matrix.platform}} | |
packages: > | |
build-base cmake meson ninja pkgconf perl scons | |
autoconf automake libtool m4 | |
gnutls-dev mbedtls-dev openssl-dev nettle-dev nss-dev wolfssl-dev | |
pcre2-dev brotli-dev libdeflate-dev zlib-dev zstd-dev | |
cyrus-sasl-dev krb5-dev libdbi-dev linux-pam-dev openldap-dev | |
mariadb-connector-c-dev postgresql16-dev | |
libmaxminddb-dev libunwind-dev lua5.1-dev lua5.4-dev | |
libxml2-dev ossp-uuid-dev sqlite-dev | |
zlib-static openssl-libs-static | |
- name: Compile and Test | |
shell: alpine.sh {0} | |
run: | | |
set -e | |
# Alpine Linux wolfssl package built w/o features required by lighttpd | |
#('scons check_fullstatic' needs zlib-static openssl-libs-static) | |
export NO_WOLFSSL=1 | |
cd "${{github.workspace}}" && scripts/ci-build.sh meson | |
cd "${{github.workspace}}" && scripts/ci-build.sh cmake | |
cd "${{github.workspace}}" && scripts/ci-build.sh scons | |
cd "${{github.workspace}}" && scripts/ci-build.sh autobuild | |
Linux-alpine: | |
runs-on: ubuntu-latest | |
name: Linux-alpine-${{matrix.platform}} | |
# abort if x86 fails (x86_64 or x86 are fastest "native" builds) | |
continue-on-error: ${{ matrix.platform != 'x86' }} | |
strategy: | |
fail-fast: true | |
matrix: | |
platform: ['x86','armhf','armv7','aarch64','ppc64le','riscv64','s390x'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: jirutka/setup-alpine@v1 | |
with: | |
# riscv64 currently requires 'edge' | |
branch: edge | |
arch: ${{matrix.platform}} | |
packages: > | |
build-base meson ninja perl pkgconf pcre2-dev zlib-dev | |
- name: Compile and Test | |
shell: alpine.sh {0} | |
run: | | |
set -e | |
meson setup "${{github.workspace}}/build" -Dwarning_level=3 | |
meson compile -C "${{github.workspace}}/build" --verbose | |
meson test -C "${{github.workspace}}/build" --verbose |