Skip to content

Switch windows CI builds to Github Actions and Qt6 #11

Switch windows CI builds to Github Actions and Qt6

Switch windows CI builds to Github Actions and Qt6 #11

Workflow file for this run

name: Build Windows
on:
push:
branches:
- master
paths-ignore:
- '**.md'
tags:
- '*'
pull_request:
paths-ignore:
- '**.md'
jobs:
build-windows:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup devcmd
uses: ilammy/msvc-dev-cmd@v1
# https://learn.microsoft.com/en-us/vcpkg/users/binarycaching#gha
- name: Set variables for vcpkg
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', (process.env.ACTIONS_CACHE_URL || ''));
core.exportVariable('ACTIONS_RUNTIME_TOKEN', (process.env.ACTIONS_RUNTIME_TOKEN || ''));
- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
version: 6.6.1
modules: qt5compat qtmultimedia
- name: Install dependencies with vcpkg
run: |
# create our own triplet
New-Item `
-Force `
-ItemType File `
-Path "${{ env.vcpkg_path }}/triplets_overlay/x64-windows-release.cmake"
Add-Content `
-Path "${{ env.vcpkg_path }}/triplets_overlay/x64-windows-release.cmake" `
-Value @("set(VCPKG_TARGET_ARCHITECTURE x64)",
"set(VCPKG_LIBRARY_LINKAGE dynamic)",
"set(VCPKG_CRT_LINKAGE dynamic)",
"set(VCPKG_BUILD_TYPE release)")
c:/vcpkg/vcpkg.exe install `
--binarysource="clear;x-gha,readwrite" `
--clean-after-build `
--overlay-triplets="${{ env.vcpkg_path }}/triplets_overlay" `
gettext:x64-windows-release `
openssl:x64-windows-release `
zlib:x64-windows-release
- name: Install enchant
run: |
c:\msys64\usr\bin\pacman -Q
c:\msys64\usr\bin\pacman -S --noconfirm mingw64/mingw-w64-x86_64-enchant
mkdir c:\enchant-headers
copy c:\msys64\mingw64\lib\glib-2.0\include\glibconfig.h c:\enchant-headers
copy c:\msys64\mingw64\include\enchant-2\enchant.h c:\enchant-headers
- name: Patch Enchant for MSVC support
run: |
c:\msys64\usr\bin\pacman -S --noconfirm patch
cd c:\enchant-headers
c:\msys64\usr\bin\patch -p2 -i ${{github.workspace}}\.appveyor.ench
- name: Patch Perl for MSVC support
run: |
# Strawberry perl doesn't support MSVC, but we force the support.
cd '${{github.workspace}}'
type .appveyor.perl >> c:\Strawberry\perl\lib\core\config.h
# missing:
# https://github.com/actions/runner-images/blob/main/images/windows/Windows2022-Readme.md
# enchant 2 and dictionaries
# perl (both strawberry and preistalled)
# python (check preinstalled)
# nsis
#-DPERL_EXECUTABLE=c:/Strawberry/perl/bin/perl.exe
- name: Configure CMake
run: |
cd '${{github.workspace}}'
mkdir build
cd build
cmake .. `
-G "NMake Makefiles"
-DCMAKE_VERBOSE_MAKEFILE=1
-DCMAKE_TOOLCHAIN_FILE="c:/vcpkg/scripts/buildsystems/vcpkg.cmake" `
-DVCPKG_TARGET_TRIPLET=x64-windows-release `
-DCMAKE_BUILD_TYPE=Release `
-DWANT_KDE=NO `
-DWANT_OPENSSL=YES `
-DWANT_PERL=YES `
-DWANT_PHONON=NO `
-DWANT_PYTHON=YES `
-DWANT_QTWEBENGINE=NO `
-DEnchant_FOUND=1 `
-DEnchant_INCLUDE_DIRS=c:/enchant-headers;c:/msys64/mingw64/include/enchant-2;c:/msys64/mingw64/include/glib-2.0 `
-DEnchant_LDFLAGS=c:/msys64/mingw64/lib/libenchant-2.dll.a
- name: Build
run: |
cd '${{github.workspace}}'
cd build
cmake --build .
- name: Install
run: |
cd '${{github.workspace}}'
cd build
cmake --install .
- name: Deployt Qt
run: |
cd '${{github.workspace}}'
cd build
windeployqt "--dir" "release/qt-plugins" "--libdir" "release/" "release/kvirc.exe" "release/modules/"; if (!$?) { exit 1 }
# missing: libenchant, perl, python
- name: Deploy other dlls
run: |
cd '${{github.workspace}}'
cd build
cp "c:\vcpkg\installed\x64-windows-release\bin\zlib1.dll" release; if (!$?) { exit 1 }
cp "c:\vcpkg\installed\x64-windows-release\bin\libcrypto*.dll" release; if (!$?) { exit 1 }
cp "c:\vcpkg\installed\x64-windows-release\bin\libssl*.dll" release; if (!$?) { exit 1 }
- name: Detect version
shell: bash
run: |
cd '${{github.workspace}}'
kvi_version=$(grep -i "^set(VERSION_RELEASE .*)$" CMakeLists.txt | egrep -o '[0-9\.]' | tr -d '\n')
git_desc=$(git describe --always)
echo "exe_name=KVIrc-$kvi_version-dev-$(date +%F)-git-$git_desc" >> "$GITHUB_ENV"
- name: Create setup package
run: |
cd '${{github.workspace}}'
cd build
c:\Program Files (x86)\NSIS\makensis.exe" KVIrc.nsi
#- name: Publish artifact
# uses: actions/upload-artifact@v3
# with:
# name: ${{ env.exe_name }}.exe
# path: ${{ env.exe_name }}.exe