|
|
name: Dev |
|
|
on: |
|
|
workflow_dispatch: |
|
|
inputs: |
|
|
job_id: |
|
|
type: choice |
|
|
description: Specific job to run |
|
|
default: all |
|
|
required: true |
|
|
options: |
|
|
- all |
|
|
- canary |
|
|
- dragon |
|
|
- puffin |
|
|
- dodo |
|
|
- passenger |
|
|
- greatawk |
|
|
- wasp |
|
|
- bat |
|
|
- pterodactyl |
|
|
- bigbird |
|
|
- camel |
|
|
- chaffinch |
|
|
- fruitbat |
|
|
- ptarmigan |
|
|
- zebrilus |
|
|
- bee |
|
|
push: |
|
|
branches: [ master, "release/**" ] |
|
|
pull_request: |
|
|
branches: [ master ] |
|
|
|
|
|
permissions: |
|
|
contents: read |
|
|
|
|
|
env: |
|
|
CFLAGS_GCC_STYLE: '-Wall -Wextra -pedantic -Wdeclaration-after-statement -Wshadow -Wno-overlength-strings -Wimplicit-fallthrough' |
|
|
CFLAGS_MSVC: '/W3' |
|
|
CMAKE_FLAGS: '-Wdev -Werror=dev -Wdeprecated -Werror=deprecated --warn-uninitialized' |
|
|
|
|
|
jobs: |
|
|
|
|
|
canary: |
|
|
|
|
|
name: GCC -O0 |
|
|
runs-on: ubuntu-latest |
|
|
if: github.event_name != 'workflow_dispatch' || (inputs.job_id == 'all' || inputs.job_id == 'canary') |
|
|
steps: |
|
|
- name: Setup |
|
|
run: | |
|
|
echo "set man-db/auto-update false" | sudo debconf-communicate && sudo dpkg-reconfigure man-db |
|
|
sudo apt-get -qq update |
|
|
sudo apt-get -qq install -y libedit-dev |
|
|
|
|
|
- name: Checkout |
|
|
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 |
|
|
with: |
|
|
submodules: true |
|
|
|
|
|
- name: Prepare |
|
|
run: ./autogen.sh |
|
|
|
|
|
- name: Configure |
|
|
run: ./configure CC='gcc -fsanitize=undefined,address -fsanitize-undefined-trap-on-error' CFLAGS="-O0 $CFLAGS_GCC_STYLE" --enable-jit --enable-pcre2-16 --enable-pcre2-32 --enable-debug --enable-Werror --enable-pcre2test-libedit --with-link-size=4 |
|
|
|
|
|
- name: Build |
|
|
run: make -j3 |
|
|
|
|
|
- name: Test |
|
|
run: (make check; rc=$?; for i in test-suite.log Run*Test.log pcre2*_test.log; do echo "== $i =="; cat $i; done; exit $rc) |
|
|
|
|
|
dragon: |
|
|
|
|
|
name: Clang |
|
|
runs-on: ubuntu-latest |
|
|
if: github.event_name != 'workflow_dispatch' || (inputs.job_id == 'all' || inputs.job_id == 'dragon') |
|
|
strategy: |
|
|
fail-fast: false |
|
|
matrix: |
|
|
opt: ["-O0", "-O2"] |
|
|
steps: |
|
|
- name: Checkout |
|
|
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 |
|
|
with: |
|
|
submodules: true |
|
|
|
|
|
- name: Prepare |
|
|
run: ./autogen.sh |
|
|
|
|
|
- name: Configure |
|
|
run: ./configure CC='clang -fsanitize=undefined,address,integer -fno-sanitize-recover=undefined,integer -fno-sanitize=unsigned-integer-overflow,unsigned-shift-base,function' CFLAGS="${{ matrix.opt }} $CFLAGS_GCC_STYLE" --enable-jit --enable-pcre2-16 --enable-pcre2-32 --enable-debug --enable-Werror --with-link-size=3 |
|
|
|
|
|
- name: Build |
|
|
run: make -j3 |
|
|
|
|
|
- name: Test |
|
|
run: | |
|
|
ulimit -S -s 49152 # Raise stack limit; ASAN with -O0 is very stack-hungry |
|
|
(make check; rc=$?; for i in test-suite.log Run*Test.log pcre2*_test.log; do echo "== $i =="; cat $i; done; exit $rc) |
|
|
|
|
|
puffin: |
|
|
|
|
|
name: GCC -O3, CMake |
|
|
runs-on: ubuntu-latest |
|
|
if: github.event_name != 'workflow_dispatch' || (inputs.job_id == 'all' || inputs.job_id == 'puffin') |
|
|
steps: |
|
|
- name: Setup |
|
|
run: | |
|
|
echo "set man-db/auto-update false" | sudo debconf-communicate && sudo dpkg-reconfigure man-db |
|
|
sudo apt-get -qq update |
|
|
sudo apt-get -qq install -y git build-essential cmake zlib1g-dev libbz2-dev libedit-dev |
|
|
|
|
|
- name: Checkout |
|
|
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 |
|
|
with: |
|
|
submodules: true |
|
|
|
|
|
- name: Check latest CMake |
|
|
id: get-cmake-ver |
|
|
run: | |
|
|
CMAKE_VER=$(curl -s https://api.github.com/repos/Kitware/CMake/releases/latest | jq -r '.tag_name' | sed 's/^v//') |
|
|
if ! echo "$CMAKE_VER" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$' ; then |
|
|
echo "Extracted CMake version: '$CMAKE_VER'" >&2 |
|
|
echo "This does not match the expected version format" >&2 |
|
|
exit 1 |
|
|
fi |
|
|
echo "CMAKE_VER=$CMAKE_VER" >> $GITHUB_OUTPUT |
|
|
echo "CMAKE_VER=$CMAKE_VER" >> $GITHUB_ENV |
|
|
echo "Latest CMake version is $CMAKE_VER" |
|
|
|
|
|
- name: Cache CMake |
|
|
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 |
|
|
with: |
|
|
key: cmake-${{ steps.get-cmake-ver.outputs.CMAKE_VER }}-linux-x86_64 |
|
|
path: cmake-${{ steps.get-cmake-ver.outputs.CMAKE_VER }}-linux-x86_64.tar.gz |
|
|
|
|
|
- name: Install CMake |
|
|
run: | |
|
|
[ -f cmake-${CMAKE_VER}-linux-x86_64.tar.gz ] || curl -L -S -O "https://github.com/Kitware/CMake/releases/download/v${CMAKE_VER}/cmake-${CMAKE_VER}-linux-x86_64.tar.gz" |
|
|
tar -xz -f cmake-${CMAKE_VER}-linux-x86_64.tar.gz -C "$RUNNER_TEMP" |
|
|
realpath "$RUNNER_TEMP/cmake-${CMAKE_VER}-linux-x86_64/bin" >> "$GITHUB_PATH" |
|
|
|
|
|
- name: Configure |
|
|
run: | |
|
|
cmake --version | grep "version ${CMAKE_VER}" || (echo "CMake version mismatch" && exit 1) |
|
|
cmake $CMAKE_FLAGS -DPCRE2_SUPPORT_JIT=ON -DPCRE2_BUILD_PCRE2_16=ON -DPCRE2_BUILD_PCRE2_32=ON -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DPCRE2_DEBUG=ON -DPCRE2_SUPPORT_LIBEDIT=ON -DPCRE2_SUPPORT_LIBREADLINE=OFF -DCMAKE_C_FLAGS="$CFLAGS_GCC_STYLE" -DCMAKE_POLICY_VERSION_MINIMUM=$CMAKE_VER -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DCMAKE_BUILD_TYPE=Release -B build |
|
|
|
|
|
- name: Build |
|
|
run: cd build && make -j3 |
|
|
|
|
|
- name: Test |
|
|
run: cd build && ctest -j3 --output-on-failure && (cat ./Testing/Temporary/LastTest.log || true) |
|
|
|
|
|
- name: Install |
|
|
run: | |
|
|
cd build |
|
|
cmake --install . --prefix install-dir |
|
|
../maint/RunManifestTest install-dir ../maint/manifest-cmakeinstall-linux |
|
|
../maint/RunSymbolTest install-dir/lib/ ../maint/ |
|
|
|
|
|
- name: Test CMake install interface |
|
|
run: | |
|
|
INSTALL_PREFIX=`pwd`/build/install-dir |
|
|
cd maint/cmake-tests/install-interface |
|
|
|
|
|
for useStaticLibs in ON OFF; do |
|
|
echo "== Testing CMake install interface with PCRE2_USE_STATIC_LIBS=$useStaticLibs ==" |
|
|
rm -rf build |
|
|
cmake $CMAKE_FLAGS -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALL_PREFIX" -DPCRE2_USE_STATIC_LIBS=$useStaticLibs -B build |
|
|
(cd build; make) |
|
|
./build/test_executable |
|
|
ldd ./build/test_executable |
|
|
if [ $useStaticLibs = ON ]; then |
|
|
(ldd ./build/test_executable | grep -q "pcre2") && (echo "Error: PCRE2 found in ldd output" && exit 1) |
|
|
else |
|
|
|
|
|
(ldd ./build/test_executable | grep -q "$INSTALL_PREFIX/lib/libpcre2-8.so.0") || (echo "Error: Shared library not linked in" && exit 1) |
|
|
fi |
|
|
done |
|
|
|
|
|
- name: Test CMake build interface |
|
|
run: | |
|
|
BUILD_DIR=`pwd` |
|
|
cp -rp maint/cmake-tests/build-interface ../cmake-tests-build-interface |
|
|
cd ../cmake-tests-build-interface |
|
|
ln -s "$BUILD_DIR" pcre2 |
|
|
|
|
|
for buildLibs in "ON;OFF" "OFF;ON"; do |
|
|
static=`echo $buildLibs | cut -d';' -f1` |
|
|
shared=`echo $buildLibs | cut -d';' -f2` |
|
|
echo "== Testing CMake build interface with BUILD_STATIC_LIBS=$static and BUILD_SHARED_LIBS=$shared ==" |
|
|
rm -rf build |
|
|
cmake $CMAKE_FLAGS -DCMAKE_BUILD_TYPE=Debug -DBUILD_STATIC_LIBS=$static -DBUILD_SHARED_LIBS=$shared -B build |
|
|
(cd build; make) |
|
|
./build/test_executable |
|
|
ldd ./build/test_executable |
|
|
if [ $static = ON ]; then |
|
|
(ldd ./build/test_executable | grep -q "pcre2") && (echo "Error: PCRE2 found in ldd output" && exit 1) |
|
|
else |
|
|
|
|
|
(ldd ./build/test_executable | grep -q "`pwd`/build/pcre2/libpcre2-8.so.0") || (echo "Error: Shared library not linked in" && exit 1) |
|
|
fi |
|
|
done |
|
|
|
|
|
dodo: |
|
|
|
|
|
name: GCC -Os, old Autotools |
|
|
runs-on: ubuntu-latest |
|
|
container: ubuntu:22.04 |
|
|
if: github.event_name != 'workflow_dispatch' || (inputs.job_id == 'all' || inputs.job_id == 'dodo') |
|
|
steps: |
|
|
- name: Setup |
|
|
run: | |
|
|
echo "set man-db/auto-update false" | debconf-communicate && dpkg-reconfigure man-db |
|
|
export DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC |
|
|
apt-get -qq update |
|
|
apt-get -qq install -y git build-essential autoconf automake libtool |
|
|
|
|
|
- name: Checkout |
|
|
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 |
|
|
with: |
|
|
submodules: true |
|
|
|
|
|
- name: Prepare |
|
|
run: ./autogen.sh |
|
|
|
|
|
- name: Configure |
|
|
run: ./configure CFLAGS="-Os $CFLAGS_GCC_STYLE" --enable-jit --enable-pcre2-16 --enable-pcre2-32 --enable-debug --enable-Werror |
|
|
|
|
|
- name: Build |
|
|
run: make -j3 |
|
|
|
|
|
- name: Test |
|
|
run: (make check; rc=$?; for i in test-suite.log Run*Test.log pcre2*_test.log; do echo "== $i =="; cat $i; done; exit $rc) |
|
|
|
|
|
- name: Install |
|
|
run: | |
|
|
make install "DESTDIR=`pwd`/install-dir" |
|
|
maint/RunManifestTest install-dir maint/manifest-makeinstall-linux |
|
|
maint/RunSymbolTest install-dir/usr/local/lib/ maint/ |
|
|
|
|
|
passenger: |
|
|
|
|
|
|
|
|
name: GCC, very old Autotools |
|
|
runs-on: ubuntu-latest |
|
|
container: redhat/ubi8:8.6 |
|
|
if: github.event_name != 'workflow_dispatch' || (inputs.job_id == 'all' || inputs.job_id == 'passenger') |
|
|
steps: |
|
|
- name: Setup |
|
|
run: | |
|
|
yum -q makecache |
|
|
yum -q install -y gcc git make automake autoconf libtool diffutils file glibc-langpack-en |
|
|
yum -q update -y glibc-common |
|
|
|
|
|
- name: Checkout |
|
|
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 |
|
|
with: |
|
|
submodules: true |
|
|
|
|
|
- name: Prepare |
|
|
run: ./autogen.sh |
|
|
|
|
|
- name: Configure |
|
|
run: ./configure CFLAGS="-O0 $CFLAGS_GCC_STYLE" --enable-jit --enable-pcre2-16 --enable-pcre2-32 --enable-debug --enable-Werror |
|
|
|
|
|
- name: Build |
|
|
run: make -j3 |
|
|
|
|
|
- name: Test |
|
|
run: (make check; rc=$?; for i in test-suite.log Run*Test.log pcre2*_test.log; do echo "== $i =="; cat $i; done; exit $rc) |
|
|
|
|
|
|
|
|
- name: Install |
|
|
run: | |
|
|
make install "DESTDIR=`pwd`/install-dir" |
|
|
maint/RunManifestTest install-dir maint/manifest-makeinstall-linux |
|
|
maint/RunSymbolTest install-dir/usr/local/lib/ maint/ |
|
|
|
|
|
greatawk: |
|
|
|
|
|
name: GCC -O2, old CMake |
|
|
runs-on: ubuntu-latest |
|
|
container: ubuntu:22.04 |
|
|
if: github.event_name != 'workflow_dispatch' || (inputs.job_id == 'all' || inputs.job_id == 'greatawk') |
|
|
steps: |
|
|
- name: Setup |
|
|
run: | |
|
|
echo "set man-db/auto-update false" | debconf-communicate && dpkg-reconfigure man-db |
|
|
export DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC |
|
|
apt-get -qq update |
|
|
apt-get -qq install -y git build-essential cmake zlib1g-dev libbz2-dev libreadline-dev |
|
|
|
|
|
- name: Checkout |
|
|
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 |
|
|
with: |
|
|
submodules: true |
|
|
|
|
|
- name: Configure |
|
|
run: cmake $CMAKE_FLAGS -DPCRE2_SUPPORT_JIT=ON -DPCRE2_BUILD_PCRE2_16=ON -DPCRE2_BUILD_PCRE2_32=ON -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DPCRE2_DEBUG=ON -DCMAKE_C_FLAGS="$CFLAGS_GCC_STYLE" -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -B build |
|
|
|
|
|
- name: Build |
|
|
run: cd build && make -j3 |
|
|
|
|
|
- name: Test |
|
|
run: cd build && ctest -j3 --output-on-failure && (cat ./Testing/Temporary/LastTest.log || true) |
|
|
|
|
|
- name: Install |
|
|
run: | |
|
|
cd build |
|
|
cmake --install . --prefix install-dir |
|
|
../maint/RunManifestTest install-dir ../maint/manifest-cmakeinstall-linux relwithdebinfo |
|
|
../maint/RunSymbolTest install-dir/lib/ ../maint/ |
|
|
|
|
|
- name: Test CMake install interface |
|
|
run: | |
|
|
INSTALL_PREFIX=`pwd`/build/install-dir |
|
|
cd maint/cmake-tests/install-interface |
|
|
|
|
|
for useStaticLibs in ON OFF; do |
|
|
echo "== Testing CMake install interface with PCRE2_USE_STATIC_LIBS=$useStaticLibs ==" |
|
|
rm -rf build |
|
|
cmake $CMAKE_FLAGS -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_PREFIX_PATH="$INSTALL_PREFIX" -DPCRE2_USE_STATIC_LIBS=$useStaticLibs -B build |
|
|
(cd build; make) |
|
|
./build/test_executable |
|
|
ldd ./build/test_executable |
|
|
if [ $useStaticLibs = ON ]; then |
|
|
(ldd ./build/test_executable | grep -q "pcre2") && (echo "Error: PCRE2 found in ldd output" && exit 1) |
|
|
else |
|
|
|
|
|
(ldd ./build/test_executable | grep -q "$INSTALL_PREFIX/lib/libpcre2-8.so.0") || (echo "Error: Shared library not linked in" && exit 1) |
|
|
fi |
|
|
done |
|
|
|
|
|
- name: Test CMake build interface |
|
|
run: | |
|
|
BUILD_DIR=`pwd` |
|
|
cp -rp maint/cmake-tests/build-interface ../cmake-tests-build-interface |
|
|
cd ../cmake-tests-build-interface |
|
|
ln -s "$BUILD_DIR" pcre2 |
|
|
|
|
|
for buildLibs in "ON;OFF" "OFF;ON"; do |
|
|
static=`echo $buildLibs | cut -d';' -f1` |
|
|
shared=`echo $buildLibs | cut -d';' -f2` |
|
|
echo "== Testing CMake build interface with BUILD_STATIC_LIBS=$static and BUILD_SHARED_LIBS=$shared ==" |
|
|
rm -rf build |
|
|
cmake $CMAKE_FLAGS -DCMAKE_BUILD_TYPE=Debug -DBUILD_STATIC_LIBS=$static -DBUILD_SHARED_LIBS=$shared -B build |
|
|
(cd build; make) |
|
|
./build/test_executable |
|
|
ldd ./build/test_executable |
|
|
if [ $static = ON ]; then |
|
|
(ldd ./build/test_executable | grep -q "pcre2") && (echo "Error: PCRE2 found in ldd output" && exit 1) |
|
|
else |
|
|
|
|
|
(ldd ./build/test_executable | grep -q "`pwd`/build/pcre2/libpcre2-8.so.0") || (echo "Error: Shared library not linked in" && exit 1) |
|
|
fi |
|
|
done |
|
|
|
|
|
wasp: |
|
|
|
|
|
name: GCC -Os, very old CMake, ninja, no JIT |
|
|
runs-on: ubuntu-latest |
|
|
if: github.event_name != 'workflow_dispatch' || (inputs.job_id == 'all' || inputs.job_id == 'wasp') |
|
|
env: |
|
|
CMAKE_VER: "3.15.7" |
|
|
steps: |
|
|
- name: Setup |
|
|
run: | |
|
|
echo "set man-db/auto-update false" | sudo debconf-communicate && sudo dpkg-reconfigure man-db |
|
|
sudo apt-get -qq update |
|
|
sudo apt-get -qq install -y language-pack-fr ninja-build zlib1g-dev libbz2-dev libreadline-dev |
|
|
|
|
|
- name: Checkout |
|
|
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 |
|
|
with: |
|
|
submodules: true |
|
|
|
|
|
- name: Cache CMake |
|
|
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 |
|
|
with: |
|
|
key: cmake-${{ env.CMAKE_VER }}-Linux-x86_64 |
|
|
path: cmake-${{ env.CMAKE_VER }}-Linux-x86_64.tar.gz |
|
|
|
|
|
- name: Install CMake |
|
|
run: | |
|
|
[ -f cmake-${CMAKE_VER}-Linux-x86_64.tar.gz ] || curl -L -S -O "https://github.com/Kitware/CMake/releases/download/v${CMAKE_VER}/cmake-${CMAKE_VER}-Linux-x86_64.tar.gz" |
|
|
tar -xz -f cmake-${CMAKE_VER}-Linux-x86_64.tar.gz -C "$RUNNER_TEMP" |
|
|
realpath "$RUNNER_TEMP/cmake-${CMAKE_VER}-Linux-x86_64/bin" >> "$GITHUB_PATH" |
|
|
|
|
|
- name: Configure |
|
|
run: | |
|
|
cmake --version | grep "version ${CMAKE_VER}" || (echo "CMake version mismatch" && exit 1) |
|
|
CC='clang' cmake $CMAKE_FLAGS -G Ninja -DPCRE2_SUPPORT_JIT=ON -DPCRE2_BUILD_PCRE2_16=ON -DPCRE2_BUILD_PCRE2_32=ON -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DPCRE2_DEBUG=ON -DPCRE2_SUPPORT_LIBREADLINE=ON -DCMAKE_C_FLAGS="$CFLAGS_GCC_STYLE" -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DCMAKE_BUILD_TYPE=MinSizeRel -B build |
|
|
|
|
|
- name: Build |
|
|
run: ninja -C build |
|
|
|
|
|
- name: Test |
|
|
run: cd build && ctest -j3 --output-on-failure && (cat ./Testing/Temporary/LastTest.log || true) |
|
|
|
|
|
- name: Install |
|
|
run: | |
|
|
cd build |
|
|
cmake --install . --prefix install-dir |
|
|
../maint/RunManifestTest install-dir ../maint/manifest-cmakeinstall-linux minsizerel |
|
|
../maint/RunSymbolTest install-dir/lib/ ../maint/ |
|
|
|
|
|
bat: |
|
|
|
|
|
name: Windows (Win32) |
|
|
runs-on: windows-latest |
|
|
if: github.event_name != 'workflow_dispatch' || (inputs.job_id == 'all' || inputs.job_id == 'bat') |
|
|
steps: |
|
|
- name: Checkout |
|
|
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 |
|
|
with: |
|
|
submodules: true |
|
|
|
|
|
- name: Configure |
|
|
run: cmake $CMAKE_FLAGS -DPCRE2_SUPPORT_JIT=ON -DPCRE2_BUILD_PCRE2_16=ON -DPCRE2_BUILD_PCRE2_32=ON -DPCRE2GREP_SUPPORT_CALLOUT_FORK=OFF -DPCRE2_DEBUG=ON -DPCRE2_NEWLINE=ANYCRLF -DPCRE2_STATIC_PIC=ON -DPCRE2_SUPPORT_BSR_ANYCRLF=ON -DBUILD_SHARED_LIBS=OFF -DBUILD_STATIC_LIBS=ON -DCMAKE_C_FLAGS="$CFLAGS_MSVC" -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -B build -A Win32 |
|
|
|
|
|
- name: Build |
|
|
run: cmake --build build --config RelWithDebInfo |
|
|
|
|
|
- name: Test |
|
|
run: cd build && ctest -C RelWithDebInfo -j3 --output-on-failure && (cat ./Testing/Temporary/LastTest.log || true) |
|
|
|
|
|
pterodactyl: |
|
|
|
|
|
name: Windows (x64) |
|
|
runs-on: windows-latest |
|
|
if: github.event_name != 'workflow_dispatch' || (inputs.job_id == 'all' || inputs.job_id == 'pterodactyl') |
|
|
steps: |
|
|
- name: Checkout |
|
|
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 |
|
|
with: |
|
|
submodules: true |
|
|
|
|
|
- name: Configure |
|
|
run: cmake $CMAKE_FLAGS -DPCRE2_SUPPORT_JIT=OFF -DPCRE2_BUILD_PCRE2_16=ON -DPCRE2_BUILD_PCRE2_32=ON -DPCRE2_DEBUG=ON -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=OFF -DCMAKE_C_FLAGS="$CFLAGS_MSVC" -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -B build -A x64 |
|
|
|
|
|
- name: Build |
|
|
run: cmake --build build --config Debug |
|
|
|
|
|
- name: Test |
|
|
run: cd build && ctest -C Debug -j3 --output-on-failure && (cat ./Testing/Temporary/LastTest.log || true) |
|
|
|
|
|
bigbird: |
|
|
|
|
|
name: manyconfig |
|
|
runs-on: ubuntu-latest |
|
|
if: github.event_name != 'workflow_dispatch' || (inputs.job_id == 'all' || inputs.job_id == 'bigbird') |
|
|
steps: |
|
|
- name: Setup |
|
|
run: | |
|
|
echo "set man-db/auto-update false" | sudo debconf-communicate && sudo dpkg-reconfigure man-db |
|
|
sudo apt-get -qq update |
|
|
sudo apt-get -qq install -y valgrind |
|
|
|
|
|
- name: Checkout |
|
|
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 |
|
|
with: |
|
|
submodules: true |
|
|
|
|
|
- name: Run |
|
|
run: | |
|
|
./autogen.sh |
|
|
./maint/ManyConfigTests |
|
|
|
|
|
camel: |
|
|
|
|
|
name: perl |
|
|
runs-on: ubuntu-latest |
|
|
container: perl:devel |
|
|
if: github.event_name != 'workflow_dispatch' || (inputs.job_id == 'all' || inputs.job_id == 'camel') |
|
|
steps: |
|
|
- name: Checkout |
|
|
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 |
|
|
with: |
|
|
submodules: yes |
|
|
|
|
|
- name: Test |
|
|
run: | |
|
|
perl -v |
|
|
maint/RunPerlTest |
|
|
|
|
|
chaffinch: |
|
|
|
|
|
|
|
|
|
|
|
name: CMake unity build |
|
|
runs-on: ubuntu-latest |
|
|
if: github.event_name != 'workflow_dispatch' || (inputs.job_id == 'all' || inputs.job_id == 'chaffinch') |
|
|
env: |
|
|
|
|
|
|
|
|
CFLAGS_UNITY: "-Wno-shadow" |
|
|
steps: |
|
|
- name: Checkout |
|
|
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 |
|
|
with: |
|
|
submodules: true |
|
|
|
|
|
- name: Configure |
|
|
run: cmake $CMAKE_FLAGS -DCMAKE_UNITY_BUILD=ON -DCMAKE_UNITY_BUILD_BATCH_SIZE=0 -DPCRE2_SUPPORT_JIT=ON -DPCRE2_BUILD_PCRE2_16=ON -DPCRE2_BUILD_PCRE2_32=ON -DPCRE2_DEBUG=ON -DCMAKE_C_FLAGS="$CFLAGS_GCC_STYLE $CFLAGS_UNITY" -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DCMAKE_BUILD_TYPE=Release -B build |
|
|
|
|
|
- name: Build |
|
|
run: cd build && make -j3 |
|
|
|
|
|
- name: Test |
|
|
run: cd build && ctest -j3 --output-on-failure && (cat ./Testing/Temporary/LastTest.log || true) |
|
|
|
|
|
fruitbat: |
|
|
|
|
|
name: MSYS2 |
|
|
runs-on: windows-latest |
|
|
if: | |
|
|
(github.event_name == 'workflow_dispatch' && (inputs.job_id == 'all' || inputs.job_id == 'fruitbat')) || |
|
|
github.event_name == 'push' |
|
|
strategy: |
|
|
fail-fast: false |
|
|
matrix: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
msystem: ["UCRT64", "MSYS"] |
|
|
steps: |
|
|
- name: Pre-checkout |
|
|
run: git config --global core.autocrlf input |
|
|
|
|
|
- name: Checkout |
|
|
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 |
|
|
with: |
|
|
submodules: true |
|
|
|
|
|
- name: Setup |
|
|
uses: msys2/setup-msys2@fb197b72ce45fb24f17bf3f807a388985654d1f2 |
|
|
with: |
|
|
msystem: ${{ matrix.msystem }} |
|
|
update: true |
|
|
pacboy: diffutils gcc:p cmake:p ninja:p ${{ matrix.msystem == 'MSYS' && 'libreadline:p' || 'readline:p' }} |
|
|
|
|
|
- name: Configure |
|
|
shell: msys2 {0} |
|
|
run: cmake $CMAKE_FLAGS -G Ninja -DPCRE2_BUILD_PCRE2_16=ON -DPCRE2_BUILD_PCRE2_32=ON -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DPCRE2_DEBUG=ON -DCMAKE_C_FLAGS="$CFLAGS_GCC_STYLE" -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DCMAKE_BUILD_TYPE=Release -B build |
|
|
|
|
|
- name: Build |
|
|
shell: msys2 {0} |
|
|
run: ninja -C build |
|
|
|
|
|
- name: Test |
|
|
shell: msys2 {0} |
|
|
run: cd build && ctest -j3 --output-on-failure && (cat ./Testing/Temporary/LastTest.log || true) |
|
|
|
|
|
ptarmigan: |
|
|
|
|
|
name: Multiarch |
|
|
strategy: |
|
|
fail-fast: false |
|
|
matrix: |
|
|
include: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- arch: "s390x" |
|
|
distro: ubuntu_latest |
|
|
|
|
|
- arch: "ppc64le" |
|
|
distro: "ubuntu_latest" |
|
|
|
|
|
- arch: "armv7" |
|
|
distro: "ubuntu_latest" |
|
|
|
|
|
|
|
|
- arch: "aarch64" |
|
|
distro: "ubuntu_latest" |
|
|
|
|
|
- arch: "riscv64" |
|
|
distro: "ubuntu_latest" |
|
|
runs-on: ubuntu-latest |
|
|
permissions: |
|
|
contents: read |
|
|
packages: write |
|
|
if: | |
|
|
(github.event_name == 'workflow_dispatch' && (inputs.job_id == 'all' || inputs.job_id == 'ptarmigan')) || |
|
|
github.event_name == 'push' |
|
|
steps: |
|
|
- name: Checkout |
|
|
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 |
|
|
with: |
|
|
submodules: true |
|
|
|
|
|
- name: Prepare |
|
|
run: ./autogen.sh |
|
|
|
|
|
- uses: uraimo/run-on-arch-action@d94c13912ea685de38fccc1109385b83fd79427d |
|
|
name: Configure, build, and test |
|
|
with: |
|
|
arch: ${{ matrix.arch }} |
|
|
distro: ${{ matrix.distro }} |
|
|
|
|
|
|
|
|
|
|
|
githubToken: ${{ github.token }} |
|
|
|
|
|
env: | |
|
|
CFLAGS_GCC_STYLE: ${{ env.CFLAGS_GCC_STYLE }} |
|
|
CMAKE_FLAGS: ${{ env.CMAKE_FLAGS }} |
|
|
|
|
|
install: | |
|
|
echo "set man-db/auto-update false" | debconf-communicate && dpkg-reconfigure man-db |
|
|
apt-get -qq update |
|
|
apt-get -qq install -y gcc cmake ninja-build zlib1g-dev libbz2-dev libreadline-dev |
|
|
|
|
|
run: | |
|
|
set -e |
|
|
# TODO: Set -DCMAKE_COMPILE_WARNING_AS_ERROR=ON (there's currently a build failure on S390x) |
|
|
cmake $CMAKE_FLAGS -G Ninja -DPCRE2_SUPPORT_JIT=ON -DPCRE2_BUILD_PCRE2_16=ON -DPCRE2_BUILD_PCRE2_32=ON -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DPCRE2_DEBUG=ON -DCMAKE_C_FLAGS="$CFLAGS_GCC_STYLE" -DCMAKE_COMPILE_WARNING_AS_ERROR=OFF -DCMAKE_BUILD_TYPE=RelWithDebInfo -B build |
|
|
cd build |
|
|
ninja |
|
|
ctest -j3 --output-on-failure && (cat ./Testing/Temporary/LastTest.log || true) |
|
|
|
|
|
zebrilus: |
|
|
|
|
|
name: Zig |
|
|
runs-on: ubuntu-latest |
|
|
if: | |
|
|
(github.event_name == 'workflow_dispatch' && (inputs.job_id == 'all' || inputs.job_id == 'zebrilus')) || |
|
|
github.event_name == 'push' |
|
|
steps: |
|
|
- name: Setup |
|
|
run: | |
|
|
sudo snap install zig --classic --beta |
|
|
|
|
|
- name: Checkout |
|
|
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 |
|
|
with: |
|
|
submodules: true |
|
|
|
|
|
- name: Build |
|
|
run: zig build -Dsupport_jit |
|
|
|
|
|
- name: Test |
|
|
run: | |
|
|
srcdir=`pwd` pcre2test=`pwd`/zig-out/bin/pcre2test ./RunTest -bigstack |
|
|
|
|
|
bee: |
|
|
|
|
|
name: Bazel |
|
|
strategy: |
|
|
fail-fast: false |
|
|
matrix: |
|
|
os: ["ubuntu-latest", "windows-latest"] |
|
|
runs-on: ${{ matrix.os }} |
|
|
if: | |
|
|
(github.event_name == 'workflow_dispatch' && (inputs.job_id == 'all' || inputs.job_id == 'bee')) || |
|
|
github.event_name == 'push' |
|
|
steps: |
|
|
- name: Checkout |
|
|
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 |
|
|
with: |
|
|
submodules: true |
|
|
|
|
|
- name: Build |
|
|
run: bazelisk build //... --enable_runfiles --incompatible_strict_action_env |
|
|
|
|
|
- name: Test |
|
|
run: bazelisk test //... --enable_runfiles --incompatible_strict_action_env --test_output=all |
|
|
|