From 6ef1236016516ba3eea721261fb99ffe769aff65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Svensson?= Date: Thu, 18 Jan 2024 10:24:35 +0100 Subject: [PATCH 1/3] Add GitHub Actions CI Build and run tests for both crypto backends on Linux, and currently just build without tests on Windows. --- .github/workflows/ci.yml | 67 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..304fdf389 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,67 @@ +name: CI + +on: [push, pull_request] + +jobs: + linux: + name: Linux (${{ matrix.backend }}) + runs-on: ubuntu-20.04 # for OpenSSL 1.1.1 + strategy: + fail-fast: false + matrix: + include: + - backend: openssl + - backend: botan + steps: + - uses: actions/checkout@v4 + - name: Prepare + run: | + sudo apt update -qq + sudo apt install libcppunit-dev libbotan-2-dev p11-kit + - name: Build + run: | + ./autogen.sh + ./configure --with-crypto-backend=${{ matrix.backend }} + make + - name: Test + run: | + make check || (find . -name test-suite.log -exec cat {} \; && false) + + windows: + name: Windows (${{ matrix.arch }}, ${{ matrix.backend }}) + runs-on: windows-2022 + strategy: + fail-fast: false + matrix: + include: + - arch: x64 + backend: openssl + target-platform: x64 + - arch: x64 + backend: botan + target-platform: x64 + - arch: x86 + backend: openssl + target-platform: Win32 + steps: + - uses: actions/checkout@v4 + - uses: ilammy/msvc-dev-cmd@v1 + with: + arch: ${{ matrix.arch }} + - name: Create vcpkg.json + run: > + echo '{ "dependencies": [ "openssl", "botan" ], + "overrides": [ { "name": "openssl", "version-string": "1.1.1n" }, + { "name": "botan", "version-string": "2.19.3" } ], + "builtin-baseline": "38d1652f152d36481f2f4e8a85c0f1e14f3769f7" }' > vcpkg.json + - uses: seanmiddleditch/vcpkg-action@master + id: vcpkg + with: + manifest-dir: ${{ github.workspace }} + triplet: ${{ matrix.arch }}-windows + token: ${{ github.token }} + - name: Build + run: | + mkdir build + cmake -B build ${{ steps.vcpkg.outputs.vcpkg-cmake-config }} -A ${{ matrix.target-platform }} -DWITH_CRYPTO_BACKEND=${{ matrix.backend }} -DDISABLE_NON_PAGED_MEMORY=ON + cmake --build build From acb6febfcc8e734cf734d9e143868798d6965fc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Svensson?= Date: Fri, 19 Jan 2024 15:09:00 +0100 Subject: [PATCH 2/3] Build and run tests in CI for Windows Fixed CMake issues to be able to build tests on Windows, and added a test step to Github Actions CI. --- .github/workflows/ci.yml | 9 +++++++-- src/lib/test/CMakeLists.txt | 7 ++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 304fdf389..801a09e65 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,7 +50,7 @@ jobs: arch: ${{ matrix.arch }} - name: Create vcpkg.json run: > - echo '{ "dependencies": [ "openssl", "botan" ], + echo '{ "dependencies": [ "openssl", "botan", "cppunit" ], "overrides": [ { "name": "openssl", "version-string": "1.1.1n" }, { "name": "botan", "version-string": "2.19.3" } ], "builtin-baseline": "38d1652f152d36481f2f4e8a85c0f1e14f3769f7" }' > vcpkg.json @@ -63,5 +63,10 @@ jobs: - name: Build run: | mkdir build - cmake -B build ${{ steps.vcpkg.outputs.vcpkg-cmake-config }} -A ${{ matrix.target-platform }} -DWITH_CRYPTO_BACKEND=${{ matrix.backend }} -DDISABLE_NON_PAGED_MEMORY=ON + cmake -B build ${{ steps.vcpkg.outputs.vcpkg-cmake-config }} -A ${{ matrix.target-platform }} -DWITH_CRYPTO_BACKEND=${{ matrix.backend }} -DDISABLE_NON_PAGED_MEMORY=ON -DBUILD_TESTS=ON cmake --build build + - name: Test + env: + CTEST_OUTPUT_ON_FAILURE: 1 + run: | + cmake --build build --target RUN_TESTS diff --git a/src/lib/test/CMakeLists.txt b/src/lib/test/CMakeLists.txt index 2a19522b7..77bb1a025 100644 --- a/src/lib/test/CMakeLists.txt +++ b/src/lib/test/CMakeLists.txt @@ -32,10 +32,12 @@ set(SOURCES p11test.cpp add_executable(${PROJECT_NAME} ${SOURCES}) if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") - list(APPEND SOURCES ${PROJECT_SOURCE_DIR}/../win32/setenv.cpp ${PROJECT_SOURCE_DIR}/../win32/syslog.cpp) + target_sources(${PROJECT_NAME} PRIVATE + ${PROJECT_SOURCE_DIR}/../win32/setenv.cpp + ${PROJECT_SOURCE_DIR}/../win32/syslog.cpp) list(APPEND COMPILE_OPTIONS "/DCRYPTOKI_STATIC") else() - list(APPEND SOURCES "ForkTests.cpp") + target_sources(${PROJECT_NAME} PRIVATE "ForkTests.cpp") set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS -pthread) endif() @@ -43,7 +45,6 @@ include_directories(${INCLUDE_DIRS}) target_link_libraries(${PROJECT_NAME} softhsm2-static ${SQLITE3_LIBS} ${CPPUNIT_LIBRARIES}) -set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS -pthread) target_compile_options(${PROJECT_NAME} PRIVATE ${COMPILE_OPTIONS}) From ac61055c757feb60d00710a529e576858bf42692 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Svensson?= Date: Tue, 30 Jan 2024 21:43:20 +0100 Subject: [PATCH 3/3] Add macOS to CI Build and run tests for both crypto backends on macOS in CI. Mac/OS X is supported since it is documented in OSX-NOTES.md --- .github/workflows/ci.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 801a09e65..279590b92 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,6 +27,31 @@ jobs: run: | make check || (find . -name test-suite.log -exec cat {} \; && false) + macos: + name: macOS (${{ matrix.backend }}) + runs-on: macos-12 + strategy: + fail-fast: false + matrix: + include: + - backend: openssl + extra-options: --with-openssl=$(brew --prefix openssl@1.1) + - backend: botan + extra-options: --with-botan=$(brew --prefix botan@2) + steps: + - uses: actions/checkout@v4 + - name: Prepare + run: | + brew install automake cppunit botan@2 + - name: Build + run: | + ./autogen.sh + ./configure --with-crypto-backend=${{ matrix.backend }} ${{ matrix.extra-options }} + make + - name: Test + run: | + make check || (find . -name test-suite.log -exec cat {} \; && false) + windows: name: Windows (${{ matrix.arch }}, ${{ matrix.backend }}) runs-on: windows-2022