From 224d845af370ac8d40bc085b7bc3d75ea5a05a3b Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Wed, 6 Dec 2023 04:46:10 +0100 Subject: [PATCH] Add gitlab windows build --- .ci/upload-nightly.ps1 | 4 ++++ .ci/windows/build.bat | 50 ++++++++++++++++++++++++++++++++++++++++++ .gitlab-ci.yml | 32 +++++++++++++++++++++++++-- cmake/QtCommon.cmake | 10 --------- 4 files changed, 84 insertions(+), 12 deletions(-) create mode 100644 .ci/windows/build.bat diff --git a/.ci/upload-nightly.ps1 b/.ci/upload-nightly.ps1 index 9c1c33c3..9c7da62e 100644 --- a/.ci/upload-nightly.ps1 +++ b/.ci/upload-nightly.ps1 @@ -1,3 +1,6 @@ +# disable progress bar since that requires a pty +$ProgressPreference = "SilentlyContinue" + $file = "nheko_win_64.zip" $fileName = "nheko-${env:APPVEYOR_REPO_BRANCH}-${env:APPVEYOR_REPO_COMMIT}-win64.zip" @@ -19,3 +22,4 @@ $room = "!TshDrgpBNBDmfDeEGN:neko.dev" Invoke-RestMethod -uri "https://matrix.neko.dev/_matrix/client/r0/rooms/${room}/send/m.room.message/${txid}" -Method Put -Body "$body" -ContentType 'application/json' -Headers @{"Authorization"="Bearer ${env:MATRIX_ACCESS_TOKEN}"} +exit 0 diff --git a/.ci/windows/build.bat b/.ci/windows/build.bat new file mode 100644 index 00000000..a79e2360 --- /dev/null +++ b/.ci/windows/build.bat @@ -0,0 +1,50 @@ +:: VERSION format: v1.2.3/v1.3.4 +:: INSTVERSION format: 1.2.3/1.3.4 +:: WINVERSION format: 1.2.3.123/1.3.4.234 +if defined CI_COMMIT_TAG ( + set VERSION=%CI_COMMIT_TAG% +) else ( + set VERSION=v0.11.3 +) +set INSTVERSION=%VERSION:~1% +set WINVERSION=%VERSION:~1%.%CI_JOB_ID% +set DATE=%date:~10,4%-%date:~4,2%-%date:~7,2% +echo %VERSION% +echo %INSTVERSION% +echo %DATE% + + +call "C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Auxiliary/Build/vcvarsall.bat" x64 +cmake -G "Visual Studio 17 2022" -A x64 -S. -Bbuild -DHUNTER_ROOT="C:\hunter" -DHUNTER_ENABLED=ON -DBUILD_SHARED_LIBS=OFF -DUSE_BUNDLED_OPENSSL=ON -DUSE_BUNDLED_KDSINGLEAPPLICATION=ON -DCMAKE_BUILD_TYPE=Release -DHUNTER_CONFIGURATION_TYPES=Release +cmake --build build --config Release + + +git clone https://github.com/Nheko-Reborn/qt-jdenticon.git +cd qt-jdenticon +qmake +nmake +cd .. + +:: create zip bundle +mkdir NhekoRelease +copy build\Release\nheko.exe NhekoRelease\nheko.exe +copy qt-jdenticon\release\qtjdenticon0.dll NhekoRelease\qtjdenticon.dll +copy build\_deps\cmark-build\src\Release\cmark.dll NhekoRelease\cmark.dll +windeployqt --qmldir resources\qml\ NhekoRelease\nheko.exe + +7z a nheko_win_64.zip .\NhekoRelease\* + + +:: create msix +mkdir msix +xcopy .\NhekoRelease\*.* msix\*.* /s /e /c /y +copy .\resources\nheko.png msix +copy .\resources\AppxManifest.xml msix +del msix\vc_redist* +::sed -i "s/ Version=[^ ]*/ Version=\"%WINVERSION%\"/" msix\AppxManifest.xml +@PowerShell "(Get-Content .\msix\AppxManifest.xml)|%%{$_ -creplace ' Version=[^ ]*',' Version=\"%WINVERSION%\"'}|Set-Content .\msix\AppxManifest.xml -Encoding utf8" + +::@PowerShell "Get-Content .\msix\AppxManifest.xml" + +"C:\Program Files (x86)\Windows Kits\10\App Certification Kit\makeappx.exe" pack -d msix -p nheko.msix + diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b8b1c247..c28efe23 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,6 +9,33 @@ variables: # prevent configure tzdata hanging apt install commands DEBIAN_FRONTEND: noninteractive +build-windows: + stage: build + image: win10-base + tags: [libvirt,powershell] + variables: + APPVEYOR_REPO_BRANCH: "${CI_COMMIT_REF_NAME}" + APPVEYOR_REPO_COMMIT: "${CI_COMMIT_SHORT_SHA}" + before_script: + - mkdir -p hunter + - Move-Item -Path hunter -Destination C:/hunter + script: + - ./.ci/windows/build.bat + after_script: + - ./.ci/upload-nightly.ps1 + - Move-Item -Path C:/hunter -Destination hunter -Force + cache: + key: "$CI_JOB_NAME" + paths: + - hunter/ + - build/_deps + artifacts: + paths: + - nheko.msix + - nheko_win_64.zip + name: nheko-${CI_COMMIT_SHORT_SHA}-windows + expose_as: 'windows-app' + build-clazy: stage: build image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/alpine:latest @@ -18,11 +45,12 @@ build-clazy: TRAVIS_OS_NAME: linux before_script: - echo -e "\e[0Ksection_start:`date +%s`:install_deps[collapsed=true]\r\e[0K\e[1m\e[95mInstalling apk dependencies" - - apk add asciidoctor cmake cmark-dev gst-plugins-bad-dev gst-plugins-base-dev gstreamer-dev lmdb-dev lmdbxx nlohmann-json olm-dev openssl-dev qt6-qtbase-dev qt6-qtdeclarative-dev qt6-qtmultimedia-dev qt6-qtsvg-dev qt6-qttools-dev samurai spdlog-dev xcb-util-wm-dev zlib-dev ccache curl-dev libevent-dev meson clazy clang16 gcc musl-dev git re2-dev libsecret-dev + - apk add asciidoctor cmake cmark-dev gst-plugins-bad-dev gst-plugins-base-dev gstreamer-dev lmdb-dev lmdbxx nlohmann-json olm-dev openssl-dev qt6-qtbase-dev qt6-qtdeclarative-dev qt6-qtmultimedia-dev qt6-qtsvg-dev qt6-qttools-dev samurai spdlog-dev xcb-util-wm-dev zlib-dev ccache curl-dev libevent-dev meson clazy clang16 gcc musl-dev git re2-dev libsecret-dev clang16 - echo -e "\e[0Ksection_end:`date +%s`:install_deps\r\e[0K" script: - export PATH="/usr/lib/ccache:${PATH}" - export CMAKE_BUILD_PARALLEL_LEVEL=$(cat /proc/cpuinfo | awk '/^processor/{print $3}' | wc -l) + - export CLANGXX=clang++-16 - cmake -GNinja -H. -Bbuild -DCMAKE_INSTALL_PREFIX=.deps/usr -DHUNTER_ENABLED=OFF -DBUILD_SHARED_LIBS=OFF -DUSE_BUNDLED_OPENSSL=ON -DUSE_BUNDLED_MTXCLIENT=ON -DUSE_BUNDLED_COEURL=ON -DUSE_BUNDLED_OLM=ON -DUSE_BUNDLED_QTKEYCHAIN=ON -DUSE_BUNDLED_KDSINGLEAPPLICATION=ON @@ -317,7 +345,7 @@ linting: - apk update && apk add make git python3 py3-pip qt6-qtdeclarative-dev - apk add clang-extra-tools --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main - export PATH="$PATH:/root/.local/bin" - - pip3 install --user reuse + - pip3 install --break-system-packages --user reuse script: - make lint - make license diff --git a/cmake/QtCommon.cmake b/cmake/QtCommon.cmake index 2c7f34f6..f42b1c2e 100644 --- a/cmake/QtCommon.cmake +++ b/cmake/QtCommon.cmake @@ -64,14 +64,4 @@ elseif (WIN32) endif() endmacro() -macro(fix_win_compiler) -if (MSVC) - set_target_properties(${PROJECT_NAME} PROPERTIES - WIN32_EXECUTABLE YES - LINK_FLAGS "/ENTRY:mainCRTStartup" - ) -endif() -endmacro() - init_os_bundle() -fix_win_compiler()