WebUI: work around a Chromium issue that causes it to use incorrect c… #5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI - Windows | |
on: [pull_request, push] | |
permissions: | |
actions: write | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: ${{ github.head_ref != '' }} | |
jobs: | |
ci: | |
name: Build | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
libt_version: ["2.0.9", "1.2.19"] | |
env: | |
boost_path: "${{ github.workspace }}/../boost" | |
libtorrent_path: "${{ github.workspace }}/libtorrent" | |
vpkg_triplet_path: "${{ github.workspace }}/../triplets_overlay" | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Setup devcmd | |
uses: ilammy/msvc-dev-cmd@v1 | |
- name: Install build tools | |
run: | | |
choco install ninja | |
# use the preinstalled vcpkg from image | |
# https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md#package-management | |
- name: Setup vcpkg | |
uses: lukka/run-vcpkg@v10 | |
with: | |
vcpkgDirectory: C:/vcpkg | |
doNotUpdateVcpkg: true # the preinstalled vcpkg is updated regularly | |
- name: Install dependencies with vcpkg | |
run: | | |
# create our own triplet | |
New-Item ` | |
-Force ` | |
-ItemType File ` | |
-Path "${{ env.vpkg_triplet_path }}/x64-windows-static-md-release.cmake" | |
Add-Content ` | |
-Path "${{ env.vpkg_triplet_path }}/x64-windows-static-md-release.cmake" ` | |
-Value @("set(VCPKG_TARGET_ARCHITECTURE x64)", | |
"set(VCPKG_LIBRARY_LINKAGE static)", | |
"set(VCPKG_CRT_LINKAGE dynamic)", | |
"set(VCPKG_BUILD_TYPE release)", | |
"set(VCPKG_C_FLAGS /guard:cf)", | |
"set(VCPKG_CXX_FLAGS /guard:cf)", | |
"set(VCPKG_LINKER_FLAGS /guard:cf)") | |
# clear buildtrees after each package installation to reduce disk space requirements | |
$packages = ` | |
"openssl:x64-windows-static-md-release", | |
"zlib:x64-windows-static-md-release" | |
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe upgrade ` | |
--no-dry-run ` | |
--overlay-triplets="${{ env.vpkg_triplet_path }}" | |
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe install ` | |
--clean-after-build ` | |
--overlay-triplets="${{ env.vpkg_triplet_path }}" ` | |
$packages | |
- name: Install boost | |
run: | | |
aria2c ` | |
"https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/boost_1_82_0.7z" ` | |
-d "${{ runner.temp }}" ` | |
-o "boost.7z" | |
7z x "${{ runner.temp }}/boost.7z" -o"${{ github.workspace }}/.." | |
move "${{ github.workspace }}/../boost_*" "${{ env.boost_path }}" | |
- name: Install Qt | |
uses: jurplel/install-qt-action@v3 | |
with: | |
version: "6.5.0" | |
archives: qtbase qtsvg qttools | |
cache: true | |
- name: Install libtorrent | |
run: | | |
git clone ` | |
--branch v${{ matrix.libt_version }} ` | |
--depth 1 ` | |
--recurse-submodules ` | |
https://github.com/arvidn/libtorrent.git | |
cd libtorrent | |
$env:CXXFLAGS+=" /guard:cf" | |
$env:LDFLAGS+=" /guard:cf" | |
cmake ` | |
-B build ` | |
-G "Ninja" ` | |
-DCMAKE_BUILD_TYPE=RelWithDebInfo ` | |
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON ` | |
-DCMAKE_INSTALL_PREFIX="${{ env.libtorrent_path }}" ` | |
-DCMAKE_TOOLCHAIN_FILE="${{ env.RUNVCPKG_VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake" ` | |
-DBOOST_ROOT="${{ env.boost_path }}" ` | |
-DBUILD_SHARED_LIBS=OFF ` | |
-Ddeprecated-functions=OFF ` | |
-Dstatic_runtime=OFF ` | |
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release | |
cmake --build build | |
cmake --install build | |
- name: Build qBittorrent | |
run: | | |
$env:CXXFLAGS+=" /WX" | |
cmake ` | |
-B build ` | |
-G "Ninja" ` | |
-DCMAKE_BUILD_TYPE=RelWithDebInfo ` | |
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON ` | |
-DCMAKE_TOOLCHAIN_FILE="${{ env.RUNVCPKG_VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake" ` | |
-DBOOST_ROOT="${{ env.boost_path }}" ` | |
-DLibtorrentRasterbar_DIR="${{ env.libtorrent_path }}/lib/cmake/LibtorrentRasterbar" ` | |
-DMSVC_RUNTIME_DYNAMIC=ON ` | |
-DQT6=ON ` | |
-DTESTING=ON ` | |
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release ` | |
-DVERBOSE_CONFIGURE=ON ` | |
--graphviz=build/target_graph.dot | |
cmake --build build --target qbt_update_translations | |
cmake --build build | |
cmake --build build --target check | |
- name: Prepare build artifacts | |
run: | | |
mkdir upload | |
copy build/qbittorrent.exe upload | |
copy build/qbittorrent.pdb upload | |
copy dist/windows/qt.conf upload | |
# runtimes | |
copy "${{ env.Qt6_DIR }}/bin/Qt6Core.dll" upload | |
copy "${{ env.Qt6_DIR }}/bin/Qt6Gui.dll" upload | |
copy "${{ env.Qt6_DIR }}/bin/Qt6Network.dll" upload | |
copy "${{ env.Qt6_DIR }}/bin/Qt6Sql.dll" upload | |
copy "${{ env.Qt6_DIR }}/bin/Qt6Svg.dll" upload | |
copy "${{ env.Qt6_DIR }}/bin/Qt6Widgets.dll" upload | |
copy "${{ env.Qt6_DIR }}/bin/Qt6Xml.dll" upload | |
mkdir upload/plugins/iconengines | |
copy "${{ env.Qt6_DIR }}/plugins/iconengines/qsvgicon.dll" upload/plugins/iconengines | |
mkdir upload/plugins/imageformats | |
copy "${{ env.Qt6_DIR }}/plugins/imageformats/qico.dll" upload/plugins/imageformats | |
copy "${{ env.Qt6_DIR }}/plugins/imageformats/qsvg.dll" upload/plugins/imageformats | |
mkdir upload/plugins/platforms | |
copy "${{ env.Qt6_DIR }}/plugins/platforms/qwindows.dll" upload/plugins/platforms | |
mkdir upload/plugins/sqldrivers | |
copy "${{ env.Qt6_DIR }}/plugins/sqldrivers/qsqlite.dll" upload/plugins/sqldrivers | |
mkdir upload/plugins/styles | |
copy "${{ env.Qt6_DIR }}/plugins/styles/qwindowsvistastyle.dll" upload/plugins/styles | |
mkdir upload/plugins/tls | |
copy "${{ env.Qt6_DIR }}/plugins/tls/qschannelbackend.dll" upload/plugins/tls | |
# cmake additionals | |
mkdir upload/cmake | |
copy build/compile_commands.json upload/cmake | |
copy build/target_graph.dot upload/cmake | |
mkdir upload/cmake/libtorrent | |
copy libtorrent/build/compile_commands.json upload/cmake/libtorrent | |
- name: Upload build artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: qBittorrent-CI_Windows-x64_libtorrent-${{ matrix.libt_version }} | |
path: upload |