Skip to content

Fix linking against libiphlpapi in i686 mingw-w64 builds #2

Fix linking against libiphlpapi in i686 mingw-w64 builds

Fix linking against libiphlpapi in i686 mingw-w64 builds #2

Workflow file for this run

---
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