Skip to content

CI: Add and use manifest file to force utf-8 encoding for built windo… #1948

CI: Add and use manifest file to force utf-8 encoding for built windo…

CI: Add and use manifest file to force utf-8 encoding for built windo… #1948

Workflow file for this run

# 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'
- 'version.txt'
- '.github/workflows/*.yml'
- '!.github/workflows/windows-msys2.yml'
pull_request:
paths-ignore:
- '/*.sh'
- '/.*'
- '/_*'
- 'Brewfile'
- 'docs/**'
- '**.adoc'
- '**.md'
- '**.nix'
- 'flake.lock'
- 'version.txt'
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@v4
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: |
# Add mt.exe (manifest tool) to the PATH
win_sdk=$(reg query "HKLM\SOFTWARE\Microsoft\Windows Kits\Installed Roots" | sort -r | head -n 1 | sed 's/.*\\//')
echo "Windows SDK: $win_sdk"
export PATH="/c/Program Files (x86)/Windows Kits/10/bin/$win_sdk/x64/":$PATH
# Add manifest which forces utf-8 encoding
for exe in "tests/rnp_tests" "rnp/rnp" "rnpkeys/rnpkeys"; do
mt.exe -manifest ./ci/utf8-manifest "-outputresource:./build/src/${exe}.exe;1" > /dev/null
done
mkdir -p "build/Testing/Temporary"
cp "cmake/CTestCostData.txt" "build/Testing/Temporary"
export PATH="$PWD/build/src/lib:$PATH"
export RNP_LOG_CONSOLE=1
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@v4
with:
repository: kward/shunit2
path: ci/tests/shunit2
- name: Run additional ci tests
if: ${{ matrix.shared_libs == 'on' }}
run: ci/tests/ci-tests.sh