Fix linking against libiphlpapi in i686 mingw-w64 builds #2
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: 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 | |
- name: Cache Build | |
uses: actions/cache@v4 | |
with: | |
path: build | |
key: ${{ matrix.os }}-cmake-${{ matrix.EVENT_MATRIX }}-v3 | |
- name: Cache Dist Build | |
uses: actions/cache@v4 | |
with: | |
path: dist | |
key: ${{ matrix.os }}-cmake-dist-${{ matrix.EVENT_MATRIX }}-v3 | |
- 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 | |
- 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 | |
- name: Cache Build | |
uses: actions/cache@v4 | |
with: | |
path: build | |
key: ${{ matrix.os }}-${{ matrix.EVENT_MATRIX }}-v4 | |
- name: Prepare vcpkg | |
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 | |
- 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 | |
- name: Cache Build | |
uses: actions/cache@v4 | |
with: | |
path: build | |
key: mingw-cmake-${{ matrix.EVENT_MATRIX }}-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 | |
- name: Cache Build | |
uses: actions/cache@v4 | |
with: | |
path: build | |
key: ${{ matrix.os }}-cmake-${{ matrix.EVENT_MATRIX }}-v3 | |
- name: Install Depends | |
run: brew install mbedtls@2 | |
- 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@2`" | |
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 | |
- 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@2 | |
- name: Build | |
shell: bash | |
run: | | |
export CPPFLAGS="-I`brew --prefix mbedtls@2`/include" | |
export LDFLAGS="-L`brew --prefix mbedtls@2`/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.2", "14.0"] | |
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 | |
- name: Cache Build | |
uses: actions/cache@v4 | |
with: | |
path: build | |
key: freebsd-${{ matrix.release }}-cmake-${{ matrix.EVENT_MATRIX }}-v1 | |
- 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 | |
EVENT_CMAKE_OPTIONS="$EVENT_CMAKE_OPTIONS -DMBEDTLS_ROOT_DIR=/usr/local/opt/mbedtls@2" | |
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.2"] | |
steps: | |
- uses: actions/checkout@v4 | |
- 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 | |
- name: Cache Build | |
uses: actions/cache@v4 | |
with: | |
path: build | |
key: openbsd-${{ matrix.release }}-cmake-${{ matrix.EVENT_MATRIX }}-v1 | |
- name: Build | |
uses: vmactions/openbsd-vm@v1 | |
with: | |
release: ${{ matrix.release }} | |
prepare: | | |
pkg_add 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 | |
EVENT_CMAKE_OPTIONS="$EVENT_CMAKE_OPTIONS -DMBEDTLS_ROOT_DIR=/usr/local/opt/mbedtls@2" | |
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 | |
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: . | |
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 | |
- 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 python3 automake-1.16.5 autoconf-2.71 libtool pkgconf | |
usesh: true | |
run: | | |
export AUTOMAKE_VERSION=1.16 | |
export AUTOCONF_VERSION=2.71 | |
./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 | |
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: . | |
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 | |
- name: Cache Build | |
uses: actions/cache@v4 | |
with: | |
path: build | |
key: ${{ matrix.os }}-cmake-${{ matrix.EVENT_MATRIX }}-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 | |
# ABI job without deploy | |
abi-job: | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v4 | |
- 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 |