# Copyright (c) 2023 [Ribose Inc](https://www.ribose.com). # All rights reserved. # This file is a part of rnp # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. name: windows-msys2 on: workflow_dispatch: push: branches: - main - 'release/**' paths-ignore: - '/*.sh' - '/.*' - '/_*' - 'Brewfile' - 'docs/**' - '**.adoc' - '**.md' - '**.nix' - 'flake.lock' - '.github/workflows/*.yml' - '!.github/workflows/windows-msys2.yml' pull_request: paths-ignore: - '/*.sh' - '/.*' - '/_*' - 'Brewfile' - 'docs/**' - '**.adoc' - '**.md' - '**.nix' - 'flake.lock' concurrency: group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}' cancel-in-progress: true env: RNP_INSTALL: /home/runneradmin/rnp-install jobs: tests: name: windows-latest msys2 [msystem ${{ matrix.msystem }}; backend ${{ matrix.backend.name }}; build shared libs ${{ matrix.shared_libs }}; GnuPG stable] if: "!contains(github.event.head_commit.message, 'skip ci')" timeout-minutes: 70 runs-on: windows-latest defaults: run: shell: msys2 {0} strategy: fail-fast: false matrix: msystem: [ 'ucrt64', 'mingw64', 'clang64' ] shared_libs: [ 'on' ] backend: - { name: 'botan', lib: 'libbotan' } - { name: 'openssl', lib: 'openssl' } include: - msystem: 'ucrt64' shared_libs: 'off' backend: { name: 'botan', lib: 'libbotan' } steps: - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 1 submodules: true - name: Install MSys uses: msys2/setup-msys2@v2 with: msystem: ${{ matrix.msystem }} update: true install: >- git base-devel p7zip pacboy: >- toolchain:p cmake:p ${{ matrix.backend.lib }}:p json-c:p asciidoctor:p gtest:p path-type: minimal - name: Configure run: | echo CORES="$(nproc --all)" >> $GITHUB_ENV echo CRYPTO_BACKEND=${{ matrix.backend.name }} >> $GITHUB_ENV cmake -B build -DBUILD_SHARED_LIBS=${{ matrix.shared_libs }} \ -DCRYPTO_BACKEND=${{ matrix.backend.name }} \ -DCMAKE_INSTALL_PREFIX=${{ env.RNP_INSTALL }} \ -DDOWNLOAD_GTEST=OFF \ -DCMAKE_BUILD_TYPE=Release . - name: Build run: cmake --build build --config "Release" --parallel ${{ env.CORES }} - name: Test run: | mkdir -p "build/Testing/Temporary" cp "cmake/CTestCostData.txt" "build/Testing/Temporary" export PATH="$PWD/build/src/lib:$PATH" ctest --parallel ${{ env.CORES }} --test-dir build -C Debug --output-on-failure - name: Install run: cmake --install build - name: Checkout shell test framework uses: actions/checkout@v3 with: repository: kward/shunit2 path: ci/tests/shunit2 - name: Run additional ci tests if: ${{ matrix.shared_libs == 'on' }} run: ci/tests/ci-tests.sh