feat: update support arm 64 server

This commit is contained in:
NickVs2015
2025-12-04 00:00:51 +03:00
parent 3119a589fb
commit 08138c218c
3 changed files with 17 additions and 155 deletions

View File

@@ -234,12 +234,6 @@ jobs:
}
}
- name: 'Setup Python 3.11'
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: 'Install Qt Desktop (host for cross-compilation)'
uses: jurplel/install-qt-action@v3
with:
@@ -249,43 +243,12 @@ jobs:
arch: 'win64_msvc2022_64'
modules: 'qtremoteobjects qt5compat qtshadertools'
dir: ${{ runner.temp }}
setup-python: 'false'
setup-python: 'true'
set-env: 'false'
aqtversion: '==3.3.0'
py7zrversion: '==0.22.*'
extra: '--base ${{ env.QT_MIRROR }}'
- name: 'Verify Qt Desktop (host) installation'
shell: cmd
run: |
echo "Checking Qt Desktop (host) installation..."
set QT_HOST_DIR=${{ runner.temp }}\Qt\${{ env.QT_VERSION }}\msvc2022_64
echo "Qt host directory: %QT_HOST_DIR%"
if exist "%QT_HOST_DIR%" (
echo "Qt host directory exists"
dir "%QT_HOST_DIR%\bin\Qt6*.dll"
) else (
echo "ERROR: Qt host directory does not exist"
exit /b 1
)
- name: 'Cleanup Qt ARM64 directory before install'
shell: pwsh
run: |
$baseDir = "${{ runner.temp }}"
$qtVersion = "${{ env.QT_VERSION }}"
# Handle both path formats (with \ and /)
$paths = @(
"$baseDir\Qt\$qtVersion\msvc2022_arm64",
"$baseDir/Qt/$qtVersion/msvc2022_arm64"
)
foreach ($path in $paths) {
if (Test-Path $path) {
Write-Host "Removing $path before ARM64 Qt install..."
Remove-Item -Path $path -Recurse -Force -ErrorAction SilentlyContinue
}
}
- name: 'Install Qt ARM64'
uses: jurplel/install-qt-action@v3
with:
@@ -295,67 +258,18 @@ jobs:
arch: 'win64_msvc2022_arm64_cross_compiled'
modules: 'qtremoteobjects qt5compat qtshadertools'
dir: ${{ runner.temp }}
setup-python: 'false'
setup-python: 'true'
tools: 'tools_ifw'
set-env: 'false'
aqtversion: '==3.3.0'
py7zrversion: '==0.22.*'
extra: '--external 7z --base ${{ env.QT_MIRROR }}'
- name: 'Verify Qt ARM64 installation'
shell: cmd
run: |
echo "Checking Qt ARM64 installation..."
set QT_ARM64_DIR=${{ runner.temp }}\Qt\${{ env.QT_VERSION }}\msvc2022_arm64
echo "Qt ARM64 directory: %QT_ARM64_DIR%"
if exist "%QT_ARM64_DIR%" (
echo "Qt ARM64 directory exists"
echo.
echo "Checking bin directory..."
if exist "%QT_ARM64_DIR%\bin" (
echo "bin directory exists"
dir "%QT_ARM64_DIR%\bin\Qt6*.dll" | findstr /C:"Qt6Core.dll"
) else (
echo "ERROR: bin directory does not exist"
exit /b 1
)
echo.
echo "Checking lib directory..."
if exist "%QT_ARM64_DIR%\lib" (
echo "lib directory exists"
dir "%QT_ARM64_DIR%\lib\Qt6Core*.lib"
) else (
echo "ERROR: lib directory does not exist"
exit /b 1
)
echo "Qt ARM64 installation verified successfully"
) else (
echo "ERROR: Qt ARM64 directory does not exist"
exit /b 1
)
- name: 'Setup mvsc'
uses: ilammy/msvc-dev-cmd@v1
with:
arch: 'x64_arm64'
- name: 'Check environment variables before build'
shell: cmd
run: |
echo "=== Environment Variables Check ==="
echo "Checking for Qt-related environment variables..."
set | findstr /I "Qt"
set | findstr /I "CMAKE"
echo.
echo "Checking for MSVC tools in PATH..."
where cl 2>nul && echo "cl.exe found" || echo "WARNING: cl.exe not found"
where dumpbin 2>nul && echo "dumpbin.exe found" || echo "NOTE: dumpbin.exe not found"
where link 2>nul && echo "link.exe found" || echo "WARNING: link.exe not found"
echo.
echo "MSVC environment variables:"
set | findstr /I "VCINSTALLDIR VSINSTALLDIR"
echo "===================================="
- name: 'Build project'
shell: cmd
run: |
@@ -384,29 +298,6 @@ jobs:
name: AmneziaVPN_Windows_ARM64_unpacked
path: deploy\\build_${{ env.BUILD_ARCH }}\\client\\Release
retention-days: 7
- name: 'Create Qt ARM64 archive'
shell: pwsh
run: |
$qtArm64Dir = "${{ runner.temp }}\Qt\${{ env.QT_VERSION }}\msvc2022_arm64"
$archivePath = "Qt_${{ env.QT_VERSION }}_ARM64.zip"
if (Test-Path $qtArm64Dir) {
Write-Host "Creating Qt ARM64 archive from: $qtArm64Dir"
Compress-Archive -Path $qtArm64Dir -DestinationPath $archivePath -Force
Write-Host "Archive created: $archivePath"
Write-Host "Archive size: $((Get-Item $archivePath).Length / 1MB) MB"
} else {
Write-Host "ERROR: Qt ARM64 directory not found: $qtArm64Dir"
exit 1
}
- name: 'Upload Qt ARM64 archive'
uses: actions/upload-artifact@v4
with:
name: Qt_${{ env.QT_VERSION }}_ARM64
path: Qt_${{ env.QT_VERSION }}_ARM64.zip
retention-days: 7
# ------------------------------------------------------
Build-iOS:

View File

@@ -71,8 +71,6 @@ if defined QT_HOST_BIN_DIR (
)
cmake --version
REM Calculate Qt root directory BEFORE entering if blocks (batch variable expansion issue)
REM Remove \bin from QT_BIN_DIR to get Qt root
set "QT_ROOT_DIR=%QT_BIN_DIR:\bin=%"
cd %PROJECT_DIR%
@@ -99,25 +97,8 @@ if defined QT_HOST_PATH (
echo "ERROR: Qt ARM64 lib directory not found at %QT_ROOT_DIR%\lib"
exit /b 1
)
echo "Qt ARM64 lib directory found: %QT_ROOT_DIR%\lib"
dir "%QT_ROOT_DIR%\lib\Qt6Core*.lib"
REM Check architecture of Qt6Core.lib (if dumpbin is available)
echo "Verifying Qt6Core.lib architecture..."
where dumpbin >nul 2>&1
if %errorlevel% equ 0 (
echo "dumpbin found, checking architecture..."
dumpbin /headers "%QT_ROOT_DIR%\lib\Qt6Core.lib" | findstr /C:"machine"
if %errorlevel% equ 0 (
echo "Architecture check completed"
) else (
echo "WARNING: Could not extract machine type from Qt6Core.lib"
)
) else (
echo "NOTE: dumpbin not available, skipping architecture verification"
echo "This is not critical - build will continue"
)
echo "Building for ARM64"
call cmake . -B %WORK_DIR% -A ARM64 "-DCMAKE_BUILD_TYPE:STRING=Release" "-DCMAKE_PREFIX_PATH:PATH=%QT_ROOT_DIR%" "-DQT_HOST_PATH:PATH=%QT_HOST_PATH%"
) else (
REM x64 build - QT_ROOT_DIR already calculated above
@@ -232,14 +213,9 @@ if defined QT_HOST_BIN_DIR (
echo "ARM64 Qt libraries copied successfully"
REM Verify Qt6Core.dll architecture
echo "Verifying Qt6Core.dll was copied:"
if exist "%OUT_APP_DIR:"=%\Qt6Core.dll" (
echo "Qt6Core.dll found in output directory"
) else (
echo "ERROR: Qt6Core.dll not found after copy"
exit /b 1
)
REM Remove ALL debug DLLs recursively (Qt6*d.dll, *d.dll in all subdirectories)
echo "Removing debug DLLs and libraries from output directory (recursive)..."
del /s /q "%OUT_APP_DIR:"=%\*d.dll" >nul 2>&1
) else (
echo "ERROR: ARM64 Qt DLLs not found in %QT_BIN_DIR:"=%"
exit /b 1

View File

@@ -18,27 +18,21 @@ set(QSIMPLECRYPTO_DIR ${CMAKE_CURRENT_LIST_DIR}/../../client/3rd/QSimpleCrypto/s
set(OPENSSL_ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}/../../client/3rd-prebuilt/3rd-prebuilt/openssl/")
set(OPENSSL_LIBRARIES_DIR "${OPENSSL_ROOT_DIR}/lib")
set(OPENSSL_INCLUDE_DIR "${OPENSSL_ROOT_DIR}/windows/include")
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ARM64")
set(OPENSSL_LIB_SSL_PATH "${OPENSSL_ROOT_DIR}/windows/winarm64/libssl.lib")
set(OPENSSL_LIB_CRYPTO_PATH "${OPENSSL_ROOT_DIR}/windows/winarm64/libcrypto.lib")
elseif("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
set(OPENSSL_LIB_SSL_PATH "${OPENSSL_ROOT_DIR}/windows/win64/libssl.lib")
set(OPENSSL_LIB_CRYPTO_PATH "${OPENSSL_ROOT_DIR}/windows/win64/libcrypto.lib")
else()
set(OPENSSL_LIB_SSL_PATH "${OPENSSL_ROOT_DIR}/windows/win32/libssl.lib")
set(OPENSSL_LIB_CRYPTO_PATH "${OPENSSL_ROOT_DIR}/windows/win32/libcrypto.lib")
endif()
if(WIN32)
set(OPENSSL_INCLUDE_DIR "${OPENSSL_ROOT_DIR}/windows/include")
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ARM64")
# Use CMAKE_GENERATOR_PLATFORM for cross-compilation detection (ARM64 on x64 host)
if("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "ARM64" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ARM64")
set(OPENSSL_LIB_SSL_PATH "${OPENSSL_ROOT_DIR}/windows/winarm64/libssl.lib")
set(OPENSSL_LIB_CRYPTO_PATH "${OPENSSL_ROOT_DIR}/windows/winarm64/libcrypto.lib")
message(STATUS "Service: Using ARM64 OpenSSL libraries")
elseif("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
set(OPENSSL_LIB_SSL_PATH "${OPENSSL_ROOT_DIR}/windows/win64/libssl.lib")
set(OPENSSL_LIB_CRYPTO_PATH "${OPENSSL_ROOT_DIR}/windows/win64/libcrypto.lib")
message(STATUS "Service: Using x64 OpenSSL libraries")
else()
set(OPENSSL_LIB_SSL_PATH "${OPENSSL_ROOT_DIR}/windows/win32/libssl.lib")
set(OPENSSL_LIB_CRYPTO_PATH "${OPENSSL_ROOT_DIR}/windows/win32/libcrypto.lib")
message(STATUS "Service: Using x86 OpenSSL libraries")
endif()
elseif(APPLE AND NOT IOS)
set(OPENSSL_INCLUDE_DIR "${OPENSSL_ROOT_DIR}/macos/include")
@@ -365,7 +359,8 @@ qt_add_repc_sources(${PROJECT} ${CMAKE_CURRENT_LIST_DIR}/../../ipc/ipc_process_t
# copy deploy artifacts required to run the application to the debug build folder
if(WIN32)
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ARM64")
# Use CMAKE_GENERATOR_PLATFORM for cross-compilation detection
if("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "ARM64" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ARM64")
set(DEPLOY_PLATFORM_PATH "windows/arm64")
elseif("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
set(DEPLOY_PLATFORM_PATH "windows/x64")