Separate Qt 5 and Qt 6 CI builds

| Architecture | Qt 5 CI Build | Qt 6 CI Build |
|--------------|---------------|---------------|
| **x86**      | Supported     | Not Supported |
| **x64**      | Supported     | Supported     |
| **ARM64**    | Not Supported | Supported     |
This commit is contained in:
offhub 2024-11-21 11:17:23 +03:00
parent 644abe6cc1
commit 17aa83067a
No known key found for this signature in database
GPG Key ID: 7B12A8941851DA59
10 changed files with 435 additions and 127 deletions

View File

@ -1,4 +1,4 @@
name: CI
name: CI (Qt 5)
on:
workflow_dispatch:
@ -71,7 +71,7 @@ on:
env:
forbuildVariables: use Installer\buildVariables.cmd file
#qt_version: 5.15.16
#qt6_version: 6.3.1
#qt6_version: 6.6.3
#openssl_version: 3.4.0
#ghSsl_user: xanasoft
#ghSsl_repo: openssl-builds
@ -91,6 +91,13 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4.1.7
- name: Load Variables from buildVariables.cmd
shell: cmd
run: |
@echo on
call "${{ github.workspace }}\Installer\buildVariables.cmd"
echo qt6_version=%qt6_version% >> %GITHUB_ENV%
- name: Setup msbuild
uses: microsoft/setup-msbuild@v2
@ -183,108 +190,6 @@ jobs:
Installer/SbiePlus_x64/*
retention-days: 60
Build_ARM64:
runs-on: windows-2019
timeout-minutes: 45
steps:
- name: Checkout code
uses: actions/checkout@v4.1.7
- name: Load Variables from buildVariables.cmd
shell: cmd
run: |
@echo on
call "${{ github.workspace }}\Installer\buildVariables.cmd"
echo qt6_version=%qt6_version% >> %GITHUB_ENV%
- name: Setup msbuild
uses: microsoft/setup-msbuild@v2
#
# Compile Sandboxie Core
#
- name: Build Sandboxie x86 (DLLs & svc)
run: msbuild /t:build Sandboxie\SandboxDll.sln /p:Configuration="SbieRelease" /p:Platform=Win32 -maxcpucount:8
- name: Build Sandboxie ARM64 (all)
run: msbuild /t:build Sandboxie\Sandbox.sln /p:Configuration="SbieRelease" /p:Platform=ARM64 -maxcpucount:8
- name: Build Sandboxie ARM64EC (DLL)
run: msbuild /t:build Sandboxie\SandboxDll.sln /p:Configuration="SbieRelease" /p:Platform=ARM64EC -maxcpucount:8
#
# Prepare Qt Framework for ARM64 (we also need Qt x64 for some utilities like qmake)
#
- name: Install Qt6 x64
uses: jurplel/install-qt-action@v4.1.1
with:
# version: '6.2.4'
version: '${{ env.qt6_version }}'
# dir: ..
# arch: ${{ matrix.qt-target }}
arch: 'win64_msvc2019_64'
# tools: 'tools_qtcreator,4.14.0-0-202012170949,qt.tools.qtcreator'
cache: true
- name: Install Qt6 ARM64
uses: jurplel/install-qt-action@v4.1.1
with:
# version: '6.2.4'
version: '${{ env.qt6_version }}'
# dir: ..
# arch: ${{ matrix.qt-target }}
arch: 'win64_msvc2019_arm64'
# tools: 'tools_qtcreator,4.14.0-0-202012170949,qt.tools.qtcreator'
cache: true
- name: Installing Jom
# if: steps.cache-qt.outputs.cache-hit != 'true'
run: SandboxiePlus\install_jom.cmd
#
# Compile Sandboxie Plus
#
- name: Build Sandboxie-Plus ARM64
run: SandboxiePlus\qmake_plus.cmd ARM64
- name: Build SbieShell ARM64
run: msbuild /t:restore,build -p:RestorePackagesConfig=true SandboxiePlus\SbieShell\SbieShell.sln /p:Configuration="Release" /p:Platform=ARM64
#
# Compile Sandboxie Tools
#
- name: Build Sandboxie-Tools ARM64
run: msbuild /t:build SandboxieTools\SandboxieTools.sln /p:Configuration="Release" /p:Platform=ARM64 -maxcpucount:8
#
# Merge everything together
#
- name: Get openssl binaries
run: Installer\get_openssl.cmd
- name: Get 7z binaries
run: Installer\get_7zip.cmd
- name: Merging Build
run: Installer\copy_build.cmd ARM64
- name: Upload Sandboxie ARM64
#if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request'
uses: actions/upload-artifact@v4.4.3
with:
name: Sandboxie_ARM64
path: |
Installer/SbiePlus_a64/*
retention-days: 60
Build_x86:
runs-on: windows-2019
timeout-minutes: 45

286
.github/workflows/main_qt6.yml vendored Normal file
View File

@ -0,0 +1,286 @@
name: CI (Qt 6)
on:
workflow_dispatch:
push:
branches: [master, experimental]
paths-ignore:
# Case-sensitive paths to ignore on push events
- '.editorconfig'
- '.gitattributes'
- '.gitignore'
- 'MergeDbg.cmd'
- 'TestCI.cmd'
- '.github/codeql/codeql-config.yml'
- '.github/ISSUE_TEMPLATE/**'
- '.github/workflows/codeql.yml'
- '.github/workflows/codespell.yml'
- '.github/workflows/hash.yml'
- '.github/workflows/lupdate.yml'
- '.github/workflows/stale.yml'
- '.github/workflows/test.yml'
- '.github/workflows/winget.yml'
- '.github/FUNDING.yml'
- '.github/dependabot.yml'
- 'Sandboxie/msgs/report/*.txt'
- '**/*.md'
- '**/*.html'
- '**/*.png'
- '**/*.bmp'
- '**/LICENSE*'
- '**/license*'
- '**/README*'
- '**/ReadMe*'
- '**/INSTALL*'
- '**/AUTHORS'
- '**/COPYING'
pull_request:
branches: [master, experimental]
paths-ignore:
# Case-sensitive paths to ignore on pull events
- '.editorconfig'
- '.gitattributes'
- '.gitignore'
- 'MergeDbg.cmd'
- 'TestCI.cmd'
- '.github/codeql/codeql-config.yml'
- '.github/ISSUE_TEMPLATE/**'
- '.github/workflows/codeql.yml'
- '.github/workflows/codespell.yml'
- '.github/workflows/hash.yml'
- '.github/workflows/lupdate.yml'
- '.github/workflows/stale.yml'
- '.github/workflows/test.yml'
- '.github/workflows/winget.yml'
- '.github/FUNDING.yml'
- '.github/dependabot.yml'
- 'Sandboxie/msgs/report/*.txt'
- '**/*.md'
- '**/*.html'
- '**/*.png'
- '**/*.bmp'
- '**/LICENSE*'
- '**/license*'
- '**/README*'
- '**/ReadMe*'
- '**/INSTALL*'
- '**/AUTHORS'
- '**/COPYING'
env:
forbuildVariables: use Installer\buildVariables.cmd file
#qt_version: 5.15.16
#qt6_version: 6.6.3
#openssl_version: 3.4.0
#ghSsl_user: xanasoft
#ghSsl_repo: openssl-builds
#ghQt6Win7_user: DavidXanatos
#ghQt6Win7_repo: qtbase
#ghQtBuilds_user: xanasoft
#ghQtBuilds_repo: qt-builds
#ghQtBuilds_hash_x86: 502e9a36a52918af4e116cd74c16c6c260d029087aaeee3775ab0e5d3f6a2705
#ghQtBuilds_hash_x64: 673c288feeabd11ec66f9f454d49cde3945cbd3e3f71283b7a6c4df0893b19f2
jobs:
Build_x64:
runs-on: windows-2019
timeout-minutes: 45
steps:
- name: Checkout code
uses: actions/checkout@v4.1.7
- name: Load Variables from buildVariables.cmd
shell: cmd
run: |
@echo on
call "${{ github.workspace }}\Installer\buildVariables.cmd" build_qt6
echo qt6_version=%qt6_version% >> %GITHUB_ENV%
echo qt_version=%qt6_version% >> %GITHUB_ENV%
- name: Setup msbuild
uses: microsoft/setup-msbuild@v2
#
# Compile Sandboxie Core
#
- name: Build Sandboxie x86 (DLLs & svc)
run: msbuild /t:build Sandboxie\SandboxDll.sln /p:Configuration="SbieRelease" /p:Platform=Win32 -maxcpucount:8
- name: Build Sandboxie x64 (all)
run: msbuild /t:build Sandboxie\Sandbox.sln /p:Configuration="SbieRelease" /p:Platform=x64 -maxcpucount:8
#
# Prepare Qt Framework
#
- name: Install Qt6 x64
uses: jurplel/install-qt-action@v4.1.1
with:
# version: '6.2.4'
version: '${{ env.qt6_version }}'
# dir: ..
# arch: ${{ matrix.qt-target }}
arch: 'win64_msvc2019_64'
# tools: 'tools_qtcreator,4.14.0-0-202012170949,qt.tools.qtcreator'
tools: 'tools_opensslv3_x64'
cache: true
- name: Installing Jom
# if: steps.cache-qt.outputs.cache-hit != 'true'
run: SandboxiePlus\install_jom.cmd
#
# Compile Sandboxie Plus
#
- name: Build Sandboxie-Plus x64
run: SandboxiePlus\qmake_plus.cmd x64 build_qt6
- name: Build SbieShell x64
run: msbuild /t:restore,build -p:RestorePackagesConfig=true SandboxiePlus\SbieShell\SbieShell.sln /p:Configuration="Release" /p:Platform=x64
#
# Compile Sandboxie Tools
#
- name: Build Sandboxie-Tools x64
run: msbuild /t:build SandboxieTools\SandboxieTools.sln /p:Configuration="Release" /p:Platform=x64 -maxcpucount:8
#
# Merge everything together
#
- name: Get openssl binaries
run: Installer\get_openssl.cmd
- name: Get 7z binaries
run: Installer\get_7zip.cmd
- name: Merging Build
run: Installer\copy_build.cmd x64 build_qt6
- name: Collect installer assets
run: Installer\get_assets.cmd
- name: Upload installer assets
#if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request'
uses: actions/upload-artifact@v4.4.3
with:
name: Assets
path: |
Installer/Assets/*
retention-days: 60
- name: Upload Sandboxie x64
#if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request'
uses: actions/upload-artifact@v4.4.3
with:
name: Sandboxie_x64
path: |
Installer/SbiePlus_x64/*
retention-days: 60
Build_ARM64:
runs-on: windows-2019
timeout-minutes: 45
steps:
- name: Checkout code
uses: actions/checkout@v4.1.7
- name: Load Variables from buildVariables.cmd
shell: cmd
run: |
@echo on
call "${{ github.workspace }}\Installer\buildVariables.cmd" build_qt6
echo qt6_version=%qt6_version% >> %GITHUB_ENV%
- name: Setup msbuild
uses: microsoft/setup-msbuild@v2
#
# Compile Sandboxie Core
#
- name: Build Sandboxie x86 (DLLs & svc)
run: msbuild /t:build Sandboxie\SandboxDll.sln /p:Configuration="SbieRelease" /p:Platform=Win32 -maxcpucount:8
- name: Build Sandboxie ARM64 (all)
run: msbuild /t:build Sandboxie\Sandbox.sln /p:Configuration="SbieRelease" /p:Platform=ARM64 -maxcpucount:8
- name: Build Sandboxie ARM64EC (DLL)
run: msbuild /t:build Sandboxie\SandboxDll.sln /p:Configuration="SbieRelease" /p:Platform=ARM64EC -maxcpucount:8
#
# Prepare Qt Framework for ARM64 (we also need Qt x64 for some utilities like qmake)
#
- name: Install Qt6 x64
uses: jurplel/install-qt-action@v4.1.1
with:
# version: '6.2.4'
version: '${{ env.qt6_version }}'
# dir: ..
# arch: ${{ matrix.qt-target }}
arch: 'win64_msvc2019_64'
# tools: 'tools_qtcreator,4.14.0-0-202012170949,qt.tools.qtcreator'
tools: 'tools_opensslv3_x64'
cache: true
- name: Install Qt6 ARM64
uses: jurplel/install-qt-action@v4.1.1
with:
# version: '6.2.4'
version: '${{ env.qt6_version }}'
# dir: ..
# arch: ${{ matrix.qt-target }}
arch: 'win64_msvc2019_arm64'
# tools: 'tools_qtcreator,4.14.0-0-202012170949,qt.tools.qtcreator'
tools: 'tools_opensslv3_x64'
cache: true
- name: Installing Jom
# if: steps.cache-qt.outputs.cache-hit != 'true'
run: SandboxiePlus\install_jom.cmd
#
# Compile Sandboxie Plus
#
- name: Build Sandboxie-Plus ARM64
run: SandboxiePlus\qmake_plus.cmd ARM64 build_qt6
- name: Build SbieShell ARM64
run: msbuild /t:restore,build -p:RestorePackagesConfig=true SandboxiePlus\SbieShell\SbieShell.sln /p:Configuration="Release" /p:Platform=ARM64
#
# Compile Sandboxie Tools
#
- name: Build Sandboxie-Tools ARM64
run: msbuild /t:build SandboxieTools\SandboxieTools.sln /p:Configuration="Release" /p:Platform=ARM64 -maxcpucount:8
#
# Merge everything together
#
- name: Get openssl binaries
run: Installer\get_openssl.cmd
- name: Get 7z binaries
run: Installer\get_7zip.cmd
- name: Merging Build
run: Installer\copy_build.cmd ARM64 build_qt6
- name: Upload Sandboxie ARM64
#if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request'
uses: actions/upload-artifact@v4.4.3
with:
name: Sandboxie_ARM64
path: |
Installer/SbiePlus_a64/*
retention-days: 60

View File

@ -1,7 +1,7 @@
@echo on
set "qt_version=5.15.16"
set "qt6_version=6.3.1"
set "qt6_version=6.6.3"
set "openssl_version=3.4.0"
set "ghSsl_user=xanasoft"
set "ghSsl_repo=openssl-builds"
@ -9,3 +9,12 @@ set "ghQtBuilds_user=xanasoft"
set "ghQtBuilds_repo=qt-builds"
set "ghQtBuilds_hash_x86=502e9a36a52918af4e116cd74c16c6c260d029087aaeee3775ab0e5d3f6a2705"
set "ghQtBuilds_hash_x64=673c288feeabd11ec66f9f454d49cde3945cbd3e3f71283b7a6c4df0893b19f2"
REM catch build_qt6
set "allArgs=%*"
set "allArgs=%allArgs:build_qt6=%
if not "%*" == "%allArgs:build_qt6=%" (
set "qt_version=%qt6_version%"
) else (
set "qt_version=%qt_version%"
)

View File

@ -1,4 +1,4 @@
call "%~dp0..\Installer\buildVariables.cmd"
call "%~dp0..\Installer\buildVariables.cmd" %*
REM @ECHO OFF
@ -27,7 +27,7 @@ IF %1 == ARM64 (
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsamd64_arm64.bat"
set qtPath=%~dp0..\..\Qt\%qt6_version%\msvc2019_arm64
set instPath=%~dp0\SbiePlus_a64
set "sslMajorVersion=1_1"
rem set "sslMajorVersion=1_1"
)
REM set redistPath=%VCToolsRedistDir%\%1\Microsoft.VC142.CRT
@ -52,22 +52,51 @@ copy "%redistPath%\*" %instPath%\
ECHO Copying Qt libraries
IF NOT %archPath% == ARM64 (
REM IF %archPath% == Win32 (
copy %qtPath%\bin\Qt5Core.dll %instPath%\
copy %qtPath%\bin\Qt5Gui.dll %instPath%\
copy %qtPath%\bin\Qt5Network.dll %instPath%\
copy %qtPath%\bin\Qt5Widgets.dll %instPath%\
copy %qtPath%\bin\Qt5WinExtras.dll %instPath%\
copy %qtPath%\bin\Qt5Qml.dll %instPath%\
) ELSE (
copy %qtPath%\bin\Qt6Core.dll %instPath%\
copy %qtPath%\bin\Qt6Gui.dll %instPath%\
copy %qtPath%\bin\Qt6Network.dll %instPath%\
copy %qtPath%\bin\Qt6Widgets.dll %instPath%\
copy %qtPath%\bin\Qt6Qml.dll %instPath%\
if "%qt_version:~0,1%" == "5" (
echo Copying Qt5 libraries...
IF NOT %archPath% == ARM64 (
REM If not ARM64 (e.g., x86 or x64)
echo Copying Qt5Core.dll
copy %qtPath%\bin\Qt5Core.dll %instPath%\
echo Copying Qt5Gui.dll
copy %qtPath%\bin\Qt5Gui.dll %instPath%\
echo Copying Qt5Network.dll
copy %qtPath%\bin\Qt5Network.dll %instPath%\
echo Copying Qt5Widgets.dll
copy %qtPath%\bin\Qt5Widgets.dll %instPath%\
echo Copying Qt5WinExtras.dll
copy %qtPath%\bin\Qt5WinExtras.dll %instPath%\
echo Copying Qt5Qml.dll
copy %qtPath%\bin\Qt5Qml.dll %instPath%\
) ELSE (
REM If ARM64, using Qt6
echo Copying Qt6Core.dll
copy %qtPath%\bin\Qt6Core.dll %instPath%\
echo Copying Qt6Gui.dll
copy %qtPath%\bin\Qt6Gui.dll %instPath%\
echo Copying Qt6Network.dll
copy %qtPath%\bin\Qt6Network.dll %instPath%\
echo Copying Qt6Widgets.dll
copy %qtPath%\bin\Qt6Widgets.dll %instPath%\
echo Copying Qt6Qml.dll
copy %qtPath%\bin\Qt6Qml.dll %instPath%\
)
) else (
REM If not Qt5, assuming Qt6
echo Copying Qt6 libraries...
echo Copying Qt6Core.dll
copy %qtPath%\bin\Qt6Core.dll %instPath%\
echo Copying Qt6Gui.dll
copy %qtPath%\bin\Qt6Gui.dll %instPath%\
echo Copying Qt6Network.dll
copy %qtPath%\bin\Qt6Network.dll %instPath%\
echo Copying Qt6Widgets.dll
copy %qtPath%\bin\Qt6Widgets.dll %instPath%\
echo Copying Qt6Qml.dll
copy %qtPath%\bin\Qt6Qml.dll %instPath%\
)
echo Done copying libraries.
mkdir %instPath%\platforms
copy %qtPath%\plugins\platforms\qdirect2d.dll %instPath%\platforms\
@ -83,6 +112,13 @@ mkdir %instPath%\tls
copy %qtPath%\plugins\tls\qopensslbackend.dll %instPath%\tls\
)
IF %archPath% == x64 (
if "%qt_version:~0,1%" == "6" (
mkdir %instPath%\tls
copy %qtPath%\plugins\tls\qopensslbackend.dll %instPath%\tls\
)
)
ECHO Copying OpenSSL libraries
IF %archPath% == Win32 (
copy /y %~dp0OpenSSL\Win_x86\bin\libssl-%sslMajorVersion%.dll %instPath%\

View File

@ -1,4 +1,4 @@
call "%~dp0..\Installer\buildVariables.cmd"
call "%~dp0..\Installer\buildVariables.cmd" %*
REM echo %*
REM IF "%~3" == "" ( set "qt6_version=6.3.1" ) ELSE ( set "qt6_version=%~3" )

View File

@ -1,4 +1,4 @@
call "%~dp0..\Installer\buildVariables.cmd"
call "%~dp0..\Installer\buildVariables.cmd" %*
REM echo %*
REM IF "%~3" == "" ( set "ghQt6Win7_repo=qtbase" ) ELSE ( set "ghQt6Win7_repo=%~3" )

View File

@ -1,4 +1,4 @@
call "%~dp0..\Installer\buildVariables.cmd"
call "%~dp0..\Installer\buildVariables.cmd" %*
REM echo %*
REM IF "%~3" == "" ( set "ghSsl_repo=openssl-builds" ) ELSE ( set "ghSsl_repo=%~3" )

View File

@ -0,0 +1,67 @@
TEMPLATE = app
TARGET = SandMan
PRECOMPILED_HEADER = stdafx.h
QT += core gui network widgets widgets-private concurrent core-private qml qml-private
CONFIG += lrelease
MY_ARCH=$$(build_arch)
equals(MY_ARCH, ARM64) {
# message("Building ARM64")
CONFIG(debug, debug|release):LIBS = -L../Bin/ARM64/Debug
CONFIG(release, debug|release):LIBS = -L../Bin/ARM64/Release
} else:equals(MY_ARCH, x64) {
# message("Building x64")
CONFIG(debug, debug|release):LIBS += -L../Bin/x64/Debug
CONFIG(release, debug|release):LIBS += -L../Bin/x64/Release
#QT += winextras
} else {
# message("Building x86")
CONFIG(debug, debug|release):LIBS = -L../Bin/Win32/Debug
CONFIG(release, debug|release):LIBS = -L../Bin/Win32/Release
#QT += winextras
}
CONFIG(debug, debug|release):!contains(QMAKE_HOST.arch, x86_64):LIBS += -L../Bin/Win32/Debug
CONFIG(release, debug|release):!contains(QMAKE_HOST.arch, x86_64):LIBS += -L../Bin/Win32/Release
LIBS += -lNtdll -lAdvapi32 -lOle32 -lUser32 -lShell32 -lGdi32 -lQSbieAPI -lMiscHelpers -lqtsingleapp -lUGlobalHotkey -lbcrypt -lVersion -ltaskschd
CONFIG(release, debug|release):{
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO
}
equals(MY_ARCH, ARM64) {
# message("Building ARM64")
CONFIG(debug, debug|release):DESTDIR = ../Bin/ARM64/Debug
CONFIG(release, debug|release):DESTDIR = ../Bin/ARM64/Release
} else:equals(MY_ARCH, x64) {
# message("Building x64")
CONFIG(debug, debug|release):DESTDIR = ../Bin/x64/Debug
CONFIG(release, debug|release):DESTDIR = ../Bin/x64/Release
} else {
# message("Building x86")
CONFIG(debug, debug|release):DESTDIR = ../Bin/Win32/Debug
CONFIG(release, debug|release):DESTDIR = ../Bin/Win32/Release
}
INCLUDEPATH += .
DEPENDPATH += .
MOC_DIR += .
OBJECTS_DIR += debug
UI_DIR += .
RCC_DIR += .
include(SandMan.pri)
win32:RC_FILE = SandMan.rc

View File

@ -1,4 +1,4 @@
call "%~dp0..\Installer\buildVariables.cmd"
call "%~dp0..\Installer\buildVariables.cmd" %*
REM echo %*
REM IF "%~7" == "" ( set "ghQtBuilds_hash_x64=673c288feeabd11ec66f9f454d49cde3945cbd3e3f71283b7a6c4df0893b19f2" ) ELSE ( set "ghQtBuilds_hash_x64=%~7" )

View File

@ -1,4 +1,4 @@
call "%~dp0..\Installer\buildVariables.cmd"
call "%~dp0..\Installer\buildVariables.cmd" %*
REM @echo off
REM echo Current dir: %cd%
@ -115,7 +115,12 @@ if NOT EXIST %~dp0\bin\%build_arch%\Release\QSbieAPI.dll goto :error
mkdir %~dp0\Build_SandMan_%build_arch%
cd %~dp0\Build_SandMan_%build_arch%
%qt_path%\bin\qmake.exe %~dp0\SandMan\SandMan.qc.pro %qt_params%
if "%qt_version:~0,1%" == "5" (
%qt_path%\bin\qmake.exe %~dp0\SandMan\SandMan.qc.pro %qt_params%
)
if "%qt_version:~0,1%" == "6" (
%qt_path%\bin\qmake.exe %~dp0\SandMan\SandMan-Qt6.qc.pro %qt_params%
)
%~dp0..\..\Qt\Tools\QtCreator\bin\jom.exe -f Makefile.Release -j 8
IF %ERRORLEVEL% NEQ 0 goto :error
if NOT EXIST %~dp0\bin\%build_arch%\Release\SandMan.exe goto :error