Hennadii Stepanov 9a6a799e70 ci: Test Autotools build on FreeBSD 14.1
CMake builds are already tested on FreeBSD 13.4 and 14.1.
This change extends testing with Autotools to include FreeBSD 14.1.
2024-12-03 09:51:15 +03:00

1106 lines
36 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: build
on:
pull_request:
types:
- synchronize
- reopened
- opened
branches:
- master
paths-ignore:
- '**.md'
- '.mailmap'
- 'ChangeLog*'
- 'whatsnew*'
- 'LICENSE'
push:
branches:
- master
paths-ignore:
- '**.md'
- '.mailmap'
- 'ChangeLog*'
- 'whatsnew*'
- 'LICENSE'
permissions: read-all
jobs:
linux-cmake-job:
runs-on: ${{ matrix.os }}
if: "!contains(github.event.head_commit.message, 'ci/linux skip') && !contains(github.event.head_commit.message, 'ci/linux/cmake skip')"
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04]
EVENT_MATRIX:
- DIST
- NONE
- NO_SSL
- REQUIRE_SSL
- DISABLE_OPENSSL
- DISABLE_THREAD_SUPPORT
- DISABLE_DEBUG_MODE
- DISABLE_MM_REPLACEMENT
- COMPILER_CLANG
- TEST_EXPORT_STATIC
- TEST_EXPORT_SHARED
include:
- os: ubuntu-22.04
EVENT_MATRIX: OPENSSL_3
# use recent ubuntu with recent clang for recent sanitizers
- os: ubuntu-22.04
EVENT_MATRIX: TSAN
- os: ubuntu-22.04
EVENT_MATRIX: ASAN
- os: ubuntu-22.04
EVENT_MATRIX: UBSAN
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Cache Build
uses: actions/cache@v4
with:
path: build
key: ${{ matrix.os }}-cmake-${{ matrix.EVENT_MATRIX }}-${{ hashFiles('CMakeLists.txt', 'cmake/**', '.github/**') }}-v4
- name: Cache Dist Build
uses: actions/cache@v4
with:
path: dist
key: ${{ matrix.os }}-cmake-dist-${{ matrix.EVENT_MATRIX }}-${{ hashFiles('CMakeLists.txt', 'cmake/**', '.github/**') }}-v4
- name: Install Depends
run: |
sudo apt-get update
sudo apt-get install -y libmbedtls-dev
- name: Build
shell: bash
run: |
if [ "${{ matrix.EVENT_MATRIX }}" == "DIST" ]; then
./autogen.sh
mkdir -p dist
cd dist
../configure
rm -fr *.tar.gz
make dist
archive=$(echo *.tar.gz)
tar -vxf $archive
cd $(basename $archive .tar.gz)
fi
if [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_OPENSSL" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_OPENSSL=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "NO_SSL" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_OPENSSL=ON -DEVENT__DISABLE_MBEDTLS=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "REQUIRE_SSL" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_OPENSSL=OFF -DEVENT__DISABLE_MBEDTLS=OFF"
elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_THREAD_SUPPORT" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_THREAD_SUPPORT=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_DEBUG_MODE" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_DEBUG_MODE=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_MM_REPLACEMENT" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_MM_REPLACEMENT=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "COMPILER_CLANG" ]; then
EVENT_CMAKE_OPTIONS=""
export CC=clang
elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_STATIC" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=STATIC -DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_SHARED" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=SHARED -DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "ASAN" ]; then
EVENT_CMAKE_OPTIONS="-DCMAKE_C_FLAGS=-fsanitize=address -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=debug"
elif [ "${{ matrix.EVENT_MATRIX }}" == "TSAN" ]; then
EVENT_CMAKE_OPTIONS="-DCMAKE_C_FLAGS=-fsanitize=thread -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=debug"
elif [ "${{ matrix.EVENT_MATRIX }}" == "UBSAN" ]; then
EVENT_CMAKE_OPTIONS="-DCMAKE_C_FLAGS=-fsanitize=undefined -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=debug"
else
EVENT_CMAKE_OPTIONS=""
fi
mkdir -p build
cd build
echo [cmake]: cmake .. -DEVENT__ENABLE_GCC_WARNINGS=ON $EVENT_CMAKE_OPTIONS
cmake .. -DEVENT__ENABLE_GCC_WARNINGS=ON $EVENT_CMAKE_OPTIONS || (rm -rf * && cmake .. -DEVENT__ENABLE_GCC_WARNINGS=ON $EVENT_CMAKE_OPTIONS)
cmake --build .
- name: Test
uses: nick-fields/retry@v3
with:
max_attempts: 5
timeout_minutes: 60
shell: bash
command: |
JOBS=20
export CTEST_PARALLEL_LEVEL=$JOBS
export CTEST_OUTPUT_ON_FAILURE=1
# Enable allocator_may_return_null for test_event_calloc_enomem
export TSAN_OPTIONS=suppressions=$PWD/extra/tsan.supp:allocator_may_return_null=1
export LSAN_OPTIONS=suppressions=$PWD/extra/lsan.supp
export ASAN_OPTIONS=allocator_may_return_null=1
if [ "${{ matrix.EVENT_MATRIX }}" == "DIST" ]; then
cd dist
archive=$(echo *.tar.gz)
cd $(basename $archive .tar.gz)
fi
cd build
if [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_STATIC" ]; then
sudo python3 ../test-export/test-export.py static
elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_SHARED" ]; then
sudo python3 ../test-export/test-export.py shared
else
cmake --build . --target verify
fi
- uses: actions/upload-artifact@v4
if: failure() && matrix.EVENT_MATRIX != 'DIST'
with:
name: ${{ matrix.os }}-cmake-${{ matrix.EVENT_MATRIX }}-build
path: build
- uses: actions/upload-artifact@v4
if: failure() && matrix.EVENT_MATRIX == 'DIST'
with:
name: ${{ matrix.os }}-cmake-${{ matrix.EVENT_MATRIX }}-dist
path: dist
linux-autotools-job:
runs-on: ${{ matrix.os }}
if: "!contains(github.event.head_commit.message, 'ci/linux skip') && !contains(github.event.head_commit.message, 'ci/linux/autotools skip')"
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04]
include:
# openssl 3.0
- os: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Cache Build
uses: actions/cache@v4
with:
path: dist
key: ${{ matrix.os }}-autotools-${{ matrix.EVENT_MATRIX }}-v3
- name: Install Depends
run: |
sudo apt-get update
sudo apt-get install -y libmbedtls-dev
- name: Build
shell: bash
run: |
./autogen.sh
# dist archive
mkdir -p dist
cd dist
rm -fr *.tar.gz
../configure
make dist
archive=$(echo *.tar.gz)
tar -vxf $archive
cd $(basename $archive .tar.gz)
# \dist archive
mkdir -p build
cd build
echo [configure]: ../configure --enable-gcc-warnings
../configure --enable-gcc-warnings
make
- name: Test
uses: nick-fields/retry@v3
with:
max_attempts: 5
timeout_minutes: 60
shell: bash
command: |
JOBS=20
cd dist
archive=$(echo *.tar.gz)
cd $(basename $archive .tar.gz)
cd build
make -j $JOBS verify
- uses: actions/upload-artifact@v4
if: failure()
with:
name: ${{ matrix.os }}-autotools-${{ matrix.EVENT_MATRIX }}-dist
path: dist
windows-vs-job:
runs-on: ${{ matrix.os }}
if: "!contains(github.event.head_commit.message, 'ci/windows skip')"
strategy:
fail-fast: false
matrix:
os: [windows-latest]
EVENT_MATRIX:
- NONE
- NO_SSL
- LIBRARY_TYPE_STATIC
- DISABLE_OPENSSL
- DISABLE_THREAD_SUPPORT
- DISABLE_DEBUG_MODE
- DISABLE_MM_REPLACEMENT
- DUNICODE
- UNICODE_TEMPORARY_DIRECTORY
- TEST_EXPORT_SHARED
- TEST_EXPORT_STATIC
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Cache Build
uses: actions/cache@v4
with:
path: build
key: ${{ matrix.os }}-${{ matrix.EVENT_MATRIX }}-${{ hashFiles('CMakeLists.txt', 'cmake/**', '.github/**') }}-v4
- name: Prepare vcpkg
# Newer versions expect a vcpkg manifest, so stick to v7, that could handle vcpkgArguments
uses: lukka/run-vcpkg@v7
id: runvcpkg
with:
vcpkgArguments: zlib:x64-windows openssl:x64-windows mbedtls:x64-windows
vcpkgDirectory: ${{ runner.workspace }}/vcpkg/
vcpkgTriplet: x64-windows
vcpkgGitCommitId: c8696863d371ab7f46e213d8f5ca923c4aef2a00 # 2023.12.12
- name: Build
shell: powershell
run: |
$EVENT_BUILD_PARALLEL=10
if ( "${{ matrix.EVENT_MATRIX }}" -eq "LIBRARY_TYPE_STATIC" ) {
$EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=STATIC -DEVENT__MSVC_STATIC_RUNTIME=OFF"
}
elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "DISABLE_OPENSSL" ) {
$EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_OPENSSL=ON"
}
elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "DISABLE_THREAD_SUPPORT" ) {
$EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_THREAD_SUPPORT=ON"
}
elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "DISABLE_DEBUG_MODE" ) {
$EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_DEBUG_MODE=ON"
}
elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "DISABLE_MM_REPLACEMENT" ) {
$EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_MM_REPLACEMENT=ON"
}
elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "UNICODE" ) {
$EVENT_CMAKE_OPTIONS="-DCMAKE_C_FLAGS='-DUNICODE -D_UNICODE'"
}
elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "UNICODE_TEMPORARY_DIRECTORY" ) {
$EVENT_CMAKE_OPTIONS=""
mkdir "${{ runner.workspace }}\𝑼𝑵𝑰𝑪𝑶𝑫𝑬"
echo "TMP=${{ runner.workspace }}\𝑼𝑵𝑰𝑪𝑶𝑫𝑬" >> $env:GITHUB_ENV
}
elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "TEST_EXPORT_SHARED" ) {
$EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON"
}
elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "TEST_EXPORT_STATIC" ) {
$EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=STATIC -DEVENT__MSVC_STATIC_RUNTIME=OFF -DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON"
}
elseif ( "${{ matrix.EVENT_MATRIX }}" -eq "NO_SSL" ) {
$EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_OPENSSL=ON -DEVENT__DISABLE_MBEDTLS=ON"
}
else {
$EVENT_CMAKE_OPTIONS=""
}
mkdir build -ea 0
cd build
$CMAKE_CMD="cmake -G 'Visual Studio 17 2022' -A x64 -DCMAKE_TOOLCHAIN_FILE=${{ runner.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake .. $EVENT_CMAKE_OPTIONS"
function cmake_configure($retry)
{
$errcode=0
try {
if ($retry -eq 0) {
echo "[cmake configure retry] $CMAKE_CMD"
} else {
echo "[cmake configure] $CMAKE_CMD"
}
Invoke-Expression $CMAKE_CMD
$errcode=$LastExitCode
}
catch {
$errcode=1
}
finally {
if ($errcode -ne 0) {
if ($retry -eq 0) {
$host.SetShouldExit($LastExitCode)
} else {
echo "Remove all entries in build directory"
rm -r -fo *
cmake_configure 0
}
}
}
}
cmake_configure 1
cmake --build . -j $EVENT_BUILD_PARALLEL -- /nologo /verbosity:minimal
- name: Test
uses: nick-fields/retry@v3
with:
max_attempts: 5
timeout_minutes: 60
shell: powershell
command: |
$EVENT_TESTS_PARALLEL=1
cd build
try {
if ("${{ matrix.EVENT_MATRIX }}" -eq "TEST_EXPORT_STATIC") {
python ../test-export/test-export.py static
} elseif ("${{ matrix.EVENT_MATRIX }}" -eq "TEST_EXPORT_SHARED") {
python ../test-export/test-export.py shared
} else {
ctest --output-on-failure -j $EVENT_TESTS_PARALLEL
if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
}
} catch {
$host.SetShouldExit($LastExitCode)
}
- uses: actions/upload-artifact@v4
if: failure()
with:
name: ${{ matrix.os }}-${{ matrix.EVENT_MATRIX }}-build
path: build
mingw-autotools-job:
runs-on: windows-latest
if: "!contains(github.event.head_commit.message, 'ci/mingw skip') && !contains(github.event.head_commit.message, 'ci/mingw/autotools skip')"
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Cache Build
uses: actions/cache@v4
with:
path: build
key: mingw-autotools-v5
- name: Setup MSYS2
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: true
install: mingw-w64-x86_64-gcc autoconf automake libtool mingw-w64-x86_64-openssl mingw-w64-x86_64-mbedtls pkg-config
- name: Build
shell: powershell
run: |
$env:EVENT_BUILD_PARALLEL=10
$script='
export PATH="/mingw64/bin:/usr/bin:/bin:/usr/local/bin:/opt/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:$PATH"
./autogen.sh 2>&1 3>&1
[[ $? -ne 0 ]] && exit 1
mkdir -p build
cd build
[[ $? -ne 0 ]] && exit 1
LDFLAGS="-L/mingw64/lib" CFLAGS="-I/mingw64/include" ../configure 2>&1
[[ $? -ne 0 ]] && exit 1
make -j $EVENT_BUILD_PARALLEL 2>&1
[[ $? -ne 0 ]] && exit 1
exit 0
'
D:\a\_temp\msys64\usr\bin\bash.exe -c $script
- name: Test
uses: nick-fields/retry@v3
with:
max_attempts: 5
timeout_minutes: 60
shell: powershell
command: |
$env:EVENT_TESTS_PARALLEL=1
$script='
export PATH="/mingw64/bin:/usr/bin:/bin:/usr/local/bin:/opt/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:$PATH"
cd build
make verify -j $EVENT_TESTS_PARALLEL 2>&1 '
D:\a\_temp\msys64\usr\bin\bash.exe -c $script
- uses: actions/upload-artifact@v4
if: failure()
with:
name: mingw-${{ matrix.EVENT_MATRIX }}-build
path: build
mingw-cmake-job:
runs-on: windows-latest
# FIXME: disabled for now, see [1].
# [1]: https://github.com/libevent/libevent/issues/1207
if: "false && !contains(github.event.head_commit.message, 'ci/mingw skip') && !contains(github.event.head_commit.message, 'ci/mingw/cmake skip')"
strategy:
fail-fast: false
matrix:
EVENT_MATRIX:
- NONE
- NO_SSL
- DISABLE_OPENSSL
- DISABLE_THREAD_SUPPORT
- DISABLE_DEBUG_MODE
- DISABLE_MM_REPLACEMENT
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Cache Build
uses: actions/cache@v4
with:
path: build
key: mingw-cmake-${{ matrix.EVENT_MATRIX }}-${{ hashFiles('CMakeLists.txt', 'cmake/**', '.github/**') }}-v4
- name: Setup MSYS2
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: true
install: mingw-w64-x86_64-gcc mingw-w64-x86_64-openssl mingw-w64-x86_64-mbedtls
- name: Build
shell: powershell
run: |
$EVENT_CMAKE_OPTIONS=""
if ( "${{ matrix.EVENT_MATRIX }}" -ne "NO_SSL" ) {
$EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_OPENSSL=ON -DEVENT__DISABLE_MBEDTLS=ON"
}
elseif ( "${{ matrix.EVENT_MATRIX }}" -ne "NONE" ) {
$EVENT_CMAKE_OPTIONS="-DEVENT__${{ matrix.EVENT_MATRIX }}=ON"
}
$env:PATH="D:\a\_temp\msys64\mingw64\bin;D:\a\_temp\msys64\usr\bin;$env:PATH"
mkdir build -ea 0
cd build
function cmake_configure($retry)
{
$errcode=0
try {
cmake .. -G "MSYS Makefiles" $EVENT_CMAKE_OPTIONS -DCMAKE_C_FLAGS=-w
$errcode=$LastExitCode
}
catch {
$errcode=1
}
finally {
if ($errcode -ne 0) {
if ($retry -eq 0) {
$host.SetShouldExit($LastExitCode)
} else {
echo "Remove all entries in build directory"
rm -r -fo *
cmake_configure 0
}
}
}
}
cmake_configure 1
cmake --build .
- name: Test
uses: nick-fields/retry@v3
with:
max_attempts: 5
timeout_minutes: 60
shell: powershell
command: |
cd build
ctest --output-on-failure
- uses: actions/upload-artifact@v4
if: failure()
with:
name: mingw-${{ matrix.EVENT_MATRIX }}-build
path: build
macos-cmake-job:
runs-on: ${{ matrix.os }}
if: "!contains(github.event.head_commit.message, 'ci/macos skip') && !contains(github.event.head_commit.message, 'ci/macos/cmake skip')"
strategy:
fail-fast: false
matrix:
os: [macos-latest]
EVENT_MATRIX:
- NONE
- NO_SSL
- DISABLE_OPENSSL
- DISABLE_THREAD_SUPPORT
- DISABLE_DEBUG_MODE
- DISABLE_MM_REPLACEMENT
- TEST_EXPORT_STATIC
- TEST_EXPORT_SHARED
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Cache Build
uses: actions/cache@v4
with:
path: build
key: ${{ matrix.os }}-cmake-${{ matrix.EVENT_MATRIX }}-${{ hashFiles('CMakeLists.txt', 'cmake/**', '.github/**') }}-v4
- name: Install Depends
run: brew install mbedtls
- name: Build
shell: bash
run: |
if [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_OPENSSL" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_OPENSSL=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "NO_SSL" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_OPENSSL=ON -DEVENT__DISABLE_MBEDTLS=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_THREAD_SUPPORT" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_THREAD_SUPPORT=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_DEBUG_MODE" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_DEBUG_MODE=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_MM_REPLACEMENT" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_MM_REPLACEMENT=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_STATIC" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=STATIC -DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_SHARED" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=SHARED -DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON"
else
EVENT_CMAKE_OPTIONS=""
fi
EVENT_CMAKE_OPTIONS="$EVENT_CMAKE_OPTIONS -DMBEDTLS_ROOT_DIR=`brew --prefix mbedtls`"
mkdir -p build
cd build
echo [cmake]: cmake .. $EVENT_CMAKE_OPTIONS
cmake .. $EVENT_CMAKE_OPTIONS || (rm -rf * && cmake .. $EVENT_CMAKE_OPTIONS)
cmake --build .
- name: Test
uses: nick-fields/retry@v3
with:
max_attempts: 5
timeout_minutes: 60
shell: bash
command: |
JOBS=1
export CTEST_PARALLEL_LEVEL=$JOBS
export CTEST_OUTPUT_ON_FAILURE=1
cd build
if [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_STATIC" ]; then
sudo python3 ../test-export/test-export.py static
elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_SHARED" ]; then
sudo python3 ../test-export/test-export.py shared
else
cmake --build . --target verify
fi
- uses: actions/upload-artifact@v4
if: failure()
with:
name: ${{ matrix.os }}-cmake-${{ matrix.EVENT_MATRIX }}-build
path: build
macos-autotools-job:
runs-on: ${{ matrix.os }}
if: "!contains(github.event.head_commit.message, 'ci/macos skip') && !contains(github.event.head_commit.message, 'ci/macos/autotools skip')"
strategy:
fail-fast: false
matrix:
os: [macos-latest]
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Cache Build
uses: actions/cache@v4
with:
path: build
key: ${{ matrix.os }}-autotools-v3
- name: Install Depends
run: brew install autoconf automake libtool pkg-config mbedtls
- name: Build
shell: bash
run: |
export CPPFLAGS="-I`brew --prefix mbedtls`/include"
export LDFLAGS="-L`brew --prefix mbedtls`/lib"
./autogen.sh
mkdir -p build
cd build
echo [configure]: ../configure
../configure
make
- name: Test
uses: nick-fields/retry@v3
with:
max_attempts: 5
timeout_minutes: 60
shell: bash
command: |
JOBS=1
cd build
make -j $JOBS verify
- uses: actions/upload-artifact@v4
if: failure()
with:
name: ${{ matrix.os }}-autotools-${{ matrix.EVENT_MATRIX }}-build
path: build
freebsd-cmake-job:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, 'ci/freebsd skip') && !contains(github.event.head_commit.message, 'ci/freebsd/cmake skip')"
strategy:
fail-fast: false
matrix:
release: ["13.4", "14.1"]
EVENT_MATRIX:
- NONE
- NO_SSL
- DISABLE_OPENSSL
- DISABLE_THREAD_SUPPORT
- DISABLE_DEBUG_MODE
- DISABLE_MM_REPLACEMENT
- TEST_EXPORT_STATIC
- TEST_EXPORT_SHARED
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Cache Build
uses: actions/cache@v4
with:
path: build
key: freebsd-${{ matrix.release }}-cmake-${{ matrix.EVENT_MATRIX }}-${{ hashFiles('CMakeLists.txt', 'cmake/**', '.github/**') }}-v4
- name: Build
uses: vmactions/freebsd-vm@v1
with:
release: ${{ matrix.release }}
prepare: |
pkg install -y mbedtls cmake python3
usesh: true
run: |
if [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_OPENSSL" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_OPENSSL=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "NO_SSL" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_OPENSSL=ON -DEVENT__DISABLE_MBEDTLS=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_THREAD_SUPPORT" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_THREAD_SUPPORT=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_DEBUG_MODE" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_DEBUG_MODE=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_MM_REPLACEMENT" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_MM_REPLACEMENT=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_STATIC" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=STATIC -DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_SHARED" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=SHARED -DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON"
else
EVENT_CMAKE_OPTIONS=""
fi
mkdir -p build
cd build
echo [cmake]: cmake .. $EVENT_CMAKE_OPTIONS
cmake .. $EVENT_CMAKE_OPTIONS || (rm -rf * && cmake .. $EVENT_CMAKE_OPTIONS)
cmake --build .
- name: Test
uses: nick-fields/retry@v3
with:
max_attempts: 5
timeout_minutes: 60
shell: bash
command: |
ssh freebsd sh <<EOF
cd $GITHUB_WORKSPACE
JOBS=1
export CTEST_PARALLEL_LEVEL=$JOBS
export CTEST_OUTPUT_ON_FAILURE=1
cd build
if [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_STATIC" ]; then
python3 ../test-export/test-export.py static
elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_SHARED" ]; then
python3 ../test-export/test-export.py shared
else
cmake --build . --target verify
fi
EOF
- uses: actions/upload-artifact@v4
if: failure()
with:
name: freebsd-${{ matrix.release }}-cmake-${{ matrix.EVENT_MATRIX }}-build
path: build
freebsd-autotools-job:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, 'ci/freebsd skip') && !contains(github.event.head_commit.message, 'ci/freebsd/autotools skip')"
strategy:
fail-fast: false
matrix:
release: ["13.4", "14.1"]
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Cache Build
uses: actions/cache@v4
with:
path: build
key: freebsd-${{ matrix.release }}-autotools-v1
- name: Build
uses: vmactions/freebsd-vm@v1
with:
release: ${{ matrix.release }}
prepare: |
pkg install -y mbedtls python3 autoconf automake libtool pkgconf
usesh: true
run: |
./autogen.sh
mkdir -p build
cd build
echo [configure]: ../configure
../configure
make
- name: Test
uses: nick-fields/retry@v3
with:
max_attempts: 5
timeout_minutes: 60
shell: bash
command: |
ssh freebsd sh <<EOF
cd $GITHUB_WORKSPACE
JOBS=1
cd build
make verify
EOF
- uses: actions/upload-artifact@v4
if: failure()
with:
name: freebsd-${{ matrix.release }}-autotools-${{ matrix.EVENT_MATRIX }}-build
path: build
openbsd-cmake-job:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, 'ci/openbsd skip') && !contains(github.event.head_commit.message, 'ci/openbsd/cmake skip')"
strategy:
fail-fast: false
matrix:
release: [
# 6.9 has some issues with autoconf/autotools [1].
# [1]: https://github.com/libevent/libevent/pull/1326#issuecomment-1229531718
#"6.9",
"",
]
EVENT_MATRIX:
- NONE
- NO_SSL
- DISABLE_OPENSSL
- DISABLE_THREAD_SUPPORT
- DISABLE_DEBUG_MODE
- DISABLE_MM_REPLACEMENT
- TEST_EXPORT_STATIC
# For now this test is disabled due to incorrect library paths [1].
# [1]: https://github.com/libevent/libevent/pull/1326#issuecomment-1245159690
#
# - TEST_EXPORT_SHARED
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Cache Build
uses: actions/cache@v4
with:
path: build
key: openbsd-${{ matrix.release }}-cmake-${{ matrix.EVENT_MATRIX }}-${{ hashFiles('CMakeLists.txt', 'cmake/**', '.github/**') }}-v1
- name: Build
uses: vmactions/openbsd-vm@v1
with:
release: ${{ matrix.release }}
prepare: |
pkg_add mbedtls cmake py3-pip
usesh: true
run: |
if [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_OPENSSL" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_OPENSSL=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "NO_SSL" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_OPENSSL=ON -DEVENT__DISABLE_MBEDTLS=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_THREAD_SUPPORT" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_THREAD_SUPPORT=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_DEBUG_MODE" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_DEBUG_MODE=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "DISABLE_MM_REPLACEMENT" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_MM_REPLACEMENT=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_STATIC" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=STATIC -DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON"
elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_SHARED" ]; then
EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=SHARED -DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON"
else
EVENT_CMAKE_OPTIONS=""
fi
mkdir -p build
cd build
echo [cmake]: cmake .. $EVENT_CMAKE_OPTIONS
cmake .. $EVENT_CMAKE_OPTIONS || (rm -rf * && cmake .. $EVENT_CMAKE_OPTIONS)
cmake --build .
- name: Test
uses: nick-fields/retry@v3
with:
max_attempts: 5
timeout_minutes: 60
shell: bash
command: |
ssh openbsd sh <<EOF
ulimit -n 102400
cd $GITHUB_WORKSPACE
JOBS=1
export CTEST_PARALLEL_LEVEL=$JOBS
export CTEST_OUTPUT_ON_FAILURE=1
cd build
if [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_STATIC" ]; then
python3 ../test-export/test-export.py static
elif [ "${{ matrix.EVENT_MATRIX }}" == "TEST_EXPORT_SHARED" ]; then
python3 ../test-export/test-export.py shared
else
cmake --build . --target verify
fi
EOF
- uses: actions/upload-artifact@v4
if: failure()
with:
name: openbsd-${{ matrix.release }}-cmake-${{ matrix.EVENT_MATRIX }}-build
path: build
openbsd-autotools-job:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, 'ci/openbsd skip') && !contains(github.event.head_commit.message, 'ci/openbsd/autotools skip')"
strategy:
fail-fast: false
matrix:
release: [""]
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Cache Build
uses: actions/cache@v4
with:
path: build
key: openbsd-${{ matrix.release }}-autotools-v1
- name: Build
uses: vmactions/openbsd-vm@v1
with:
release: ${{ matrix.release }}
prepare: |
pkg_add mbedtls py3-pip automake-1.16.5 autoconf-2.72p0 libtool pkgconf
usesh: true
run: |
export AUTOMAKE_VERSION=1.16
export AUTOCONF_VERSION=2.72
./autogen.sh
mkdir -p build
cd build
echo [configure]: ../configure
../configure
make V=1
- name: Test
uses: nick-fields/retry@v3
with:
max_attempts: 5
timeout_minutes: 60
shell: bash
command: |
ssh openbsd sh <<EOF
ulimit -n 102400
cd $GITHUB_WORKSPACE
JOBS=1
cd build
make verify
EOF
- uses: actions/upload-artifact@v4
if: failure()
with:
name: openbsd-${{ matrix.release }}-autotools-${{ matrix.EVENT_MATRIX }}-build
path: build
apple-cmake-job:
runs-on: ${{ matrix.os }}
if: "!contains(github.event.head_commit.message, 'ci/macos skip') && !contains(github.event.head_commit.message, 'ci/macos/cmake skip')"
strategy:
fail-fast: false
matrix:
os: [macos-latest]
EVENT_MATRIX:
- iphoneos
- appletvos
- xros
- watchos
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Cache Build
uses: actions/cache@v4
with:
path: build
key: ${{ matrix.os }}-cmake-${{ matrix.EVENT_MATRIX }}-${{ hashFiles('CMakeLists.txt', 'cmake/**', '.github/**') }}-v4
- name: Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
- name: Build
shell: bash
run: |
CMAKE_OSX_SYSROOT="${{ matrix.EVENT_MATRIX }}"
echo [cmake]: cmake -B build -G Xcode -D CMAKE_OSX_SYSROOT=$CMAKE_OSX_SYSROOT
cmake -B build -G Xcode -D CMAKE_OSX_SYSROOT=$CMAKE_OSX_SYSROOT || (rm -rf build && cmake -B build -G Xcode -D CMAKE_OSX_SYSROOT=$CMAKE_OSX_SYSROOT)
cmake --build build -t event_static
android-cmake-job:
runs-on: ${{ matrix.os }}
if: "!contains(github.event.head_commit.message, 'ci/android skip') && !contains(github.event.head_commit.message, 'ci/android/cmake skip')"
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04]
EVENT_MATRIX:
- arm-linux-androideabi
- aarch64-linux-android
- i686-linux-android
- x86_64-linux-android
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Setup Android SDK
uses: android-actions/setup-android@v3
- name: Install latest NDK
run: |
latest_ndk=$(sdkmanager --list | grep -o "ndk;[0-9.]*" | sort -V | tail -1)
echo "Installing $latest_ndk"
sdkmanager "$latest_ndk"
echo "ANDROID_NDK_HOME=$ANDROID_HOME/ndk/$(echo $latest_ndk | cut -d';' -f2)" >> $GITHUB_ENV
- name: Bash
shell: bash
run: |
NDK_TRIPLE="${{ matrix.EVENT_MATRIX }}"
EVENT_CMAKE_OPTIONS="'-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake' '-DCMAKE_HOST_SYSTEM_NAME=$NDK_TRIPLE'"
echo [cmake]: cmake -B build $EVENT_CMAKE_FLAGS
cmake -B build $EVENT_CMAKE_OPTIONS
cmake --build build --target event_static
# ABI job without deploy
abi-job:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Install Dependencies
run:
sudo apt install
abi-tracker
abi-monitor
abi-dumper
abi-compliance-checker
pkgdiff
vtable-dumper
# FIXME: clone git repo or report to debian
- name: Patch abi-compliance-checker to avoid endless loop
run: sudo patch /usr/bin/abi-compliance-checker < extra/abi-check/debian.patch
- name: Generate
shell: bash
run: |
./extra/abi-check/abi_check.sh
env:
ABI_CHECK_ROOT: /tmp/le-abi-root
- uses: actions/upload-artifact@v4
if: failure()
with:
name: build
path: /tmp/le-abi-root
- uses: actions/upload-artifact@v4
with:
name: build
path: /tmp/le-abi-root/work/abi-check