$EVENT_TESTS_PARALLEL=1
$env:PATH="$OPENSSL_ROOT_DIR/bin;$env:PATH"
- if ( "${{ matrix.EVENT_MATRIX }}" -eq "LIBRARY_TYPE_STATIC" ) {
- $EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=STATIC"
- }
- 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 "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__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON"
- }
- else {
- $EVENT_CMAKE_OPTIONS=""
- }
-
- if (-not (Test-Path -Path "./build")){
- mkdir build
- }
+ mkdir build -ea 0
cd build
- if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
- if ("${{ matrix.os }}" -eq "windows-2016") {
- $CMAKE_CMD="cmake -G 'Visual Studio 15 2017 Win64' .. $EVENT_CMAKE_OPTIONS"
- }
- else { # windows-2019
- $CMAKE_CMD="cmake -G 'Visual Studio 16 2019' -A x64 .. $EVENT_CMAKE_OPTIONS"
+ $CMAKE_CMD="cmake -G 'Visual Studio 15 2017 Win64' .."
+ 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
+ }
+ }
+ }
}
- echo "[cmake] $CMAKE_CMD"
- Invoke-Expression $CMAKE_CMD
- if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
+ cmake_configure 1
- cmake --build . -j $EVENT_BUILD_PARALLEL -- /nologo /verbosity:minimal
- if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
+ try {
+ cmake --build . -j $EVENT_BUILD_PARALLEL -- /nologo /verbosity:minimal
+ if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
- 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 ("${{ 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@v1
$EVENT_CMAKE_OPTIONS=""
}
- if (-not (Test-Path -Path "./build")){
- mkdir build
- }
+ mkdir build -ea 0
cd build
- if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
if ("${{ matrix.os }}" -eq "windows-2016") {
- $CMAKE_CMD="cmake -G 'Visual Studio 15 2017 Win64' .. $EVENT_CMAKE_OPTIONS"
+ $CMAKE_CMD="cmake -G 'Visual Studio 15 2017 Win64' .."
}
else { # windows-2019
$CMAKE_CMD="cmake -G 'Visual Studio 16 2019' -A x64 .. $EVENT_CMAKE_OPTIONS"
}
- echo "[cmake] $CMAKE_CMD"
- Invoke-Expression $CMAKE_CMD
- if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
+ 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
- if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
+ try {
+ cmake --build . -j $EVENT_BUILD_PARALLEL -- /nologo /verbosity:minimal
+ if ($LastExitCode -ne 0) { $host.SetShouldExit($LastExitCode) }
- 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 ("${{ 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@v1