mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-02-10 05:44:25 +00:00
![Chocobo1](/assets/img/avatar_default.png)
It is meaningless to build on multiple linux versions as we only depend on library versions, not OS versions. Also remove redundant "shell default" section.
272 lines
9.4 KiB
YAML
272 lines
9.4 KiB
YAML
name: CI - Main
|
|
|
|
# Cache is used for all Windows and macOS dependencies (size approx. 1230 * 2 + 1850 = 4310 MiB)
|
|
# Cache is not used for Ubuntu builds, because it already has all dependencies except
|
|
# the appropriate libtorrent version, which only takes 3-5 minutes to build from source anyway
|
|
|
|
on: [pull_request, push]
|
|
|
|
env:
|
|
VCPKG_COMMIT: 8dddc6c899ce6fdbeab38b525a31e7f23cb2d5bb
|
|
VCPKG_DEST_MACOS: /Users/runner/qbt_tools/vcpkg
|
|
VCPKG_DEST_WIN: C:\qbt_tools\vcpkg
|
|
|
|
jobs:
|
|
ubuntu:
|
|
name: Ubuntu
|
|
runs-on: ubuntu-20.04
|
|
|
|
strategy:
|
|
matrix:
|
|
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
|
libt_version: ["v2.0.4", "v1.2.14"]
|
|
fail-fast: false
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install \
|
|
build-essential cmake git ninja-build pkg-config \
|
|
libssl-dev libgeoip-dev zlib1g-dev \
|
|
libboost-dev libboost-chrono-dev libboost-random-dev libboost-system-dev
|
|
# sudo apt install libqt5svg5-dev qtbase5-dev qttools5-dev # the Qt version in the standard repositories is too old...
|
|
|
|
# this will be installed under /opt/qt515. CMake will still find it automatically without additional hints
|
|
# to speed up the process, only the required components are installed rather than the full qt515-meta-full metapackage
|
|
- name: Install Qt
|
|
run: |
|
|
sudo add-apt-repository ppa:beineri/opt-qt-5.15.2-focal
|
|
sudo apt install \
|
|
qt515base qt515svg qt515tools
|
|
|
|
- name: Install libtorrent
|
|
run: |
|
|
git clone --branch ${{ matrix.libt_version }} --depth 1 https://github.com/arvidn/libtorrent.git
|
|
cd libtorrent
|
|
git submodule update --init --recursive
|
|
cmake \
|
|
-B build \
|
|
-G "Ninja" \
|
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
|
-Ddeprecated-functions=OFF \
|
|
--graphviz=cmake-build-dir/target_graph.dot
|
|
cmake --build build
|
|
sudo cmake --install build --prefix /usr/local
|
|
|
|
- name: Build qBittorrent
|
|
run: |
|
|
cmake \
|
|
-B build \
|
|
-G "Ninja" \
|
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
|
-D${{ matrix.qbt_gui }} \
|
|
-DVERBOSE_CONFIGURE=ON \
|
|
--graphviz=build/target_graph.dot
|
|
cmake --build build
|
|
|
|
- name: Install qBittorrent
|
|
run: sudo cmake --install build --prefix /usr/local
|
|
|
|
- name: Upload build artifacts
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: qBittorrent-CI_ubuntu-20.04-x64_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}
|
|
path: |
|
|
build/compile_commands.json
|
|
build/install_manifest.txt
|
|
build/target_graph.dot
|
|
build/qbittorrent
|
|
build/qbittorrent-nox
|
|
libtorrent/cmake-build-dir/compile_commands.json
|
|
libtorrent/cmake-build-dir/target_graph.dot
|
|
|
|
windows:
|
|
name: Windows
|
|
runs-on: windows-2019
|
|
|
|
defaults:
|
|
run:
|
|
shell: pwsh
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v2
|
|
|
|
# - ninja is needed for building qBittorrent (because it's preferable, not a hard requirement)
|
|
- name: Install build tools
|
|
run: |
|
|
choco install ninja
|
|
|
|
- name: Setup vcpkg
|
|
uses: lukka/run-vcpkg@v7
|
|
with:
|
|
vcpkgDirectory: ${{ env.VCPKG_DEST_WIN }}
|
|
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT }}
|
|
setupOnly: true
|
|
|
|
# Tell vcpkg to only build Release variants of the dependencies
|
|
- name: Configure vcpkg triplet overlay
|
|
run: |
|
|
New-Item `
|
|
-Path ${{ github.workspace }} `
|
|
-Name "triplets_overlay" `
|
|
-ItemType Directory
|
|
Copy-Item `
|
|
${{ env.RUNVCPKG_VCPKG_ROOT }}/triplets/x64-windows-static.cmake `
|
|
${{ github.workspace }}/triplets_overlay/x64-windows-static-release.cmake
|
|
Add-Content `
|
|
${{ github.workspace }}/triplets_overlay/x64-windows-static-release.cmake `
|
|
-Value "set(VCPKG_BUILD_TYPE release)"
|
|
|
|
# clear buildtrees after each package installation to reduce disk space requirements
|
|
- name: Install dependencies
|
|
run: |
|
|
$packages = `
|
|
"boost-circular-buffer:x64-windows-static-release",
|
|
"libtorrent:x64-windows-static-release",
|
|
"qt5-base:x64-windows-static-release",
|
|
"qt5-svg:x64-windows-static-release",
|
|
"qt5-tools:x64-windows-static-release",
|
|
"qt5-winextras:x64-windows-static-release"
|
|
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe upgrade `
|
|
--overlay-triplets=${{ github.workspace }}/triplets_overlay `
|
|
--no-dry-run
|
|
foreach($package in $packages)
|
|
{
|
|
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe install $package `
|
|
--overlay-triplets=${{ github.workspace }}/triplets_overlay `
|
|
--clean-after-build
|
|
}
|
|
|
|
# NOTE: this is necessary to correctly find and use cl.exe with the Ninja generator for now
|
|
- name: Setup devcmd
|
|
uses: ilammy/msvc-dev-cmd@v1
|
|
|
|
- name: Build qBittorrent
|
|
shell: cmd
|
|
run: |
|
|
cmake ^
|
|
-B build ^
|
|
-G "Ninja" ^
|
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo ^
|
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON ^
|
|
-DCMAKE_TOOLCHAIN_FILE=${{ env.VCPKG_DEST_WIN }}\scripts\buildsystems\vcpkg.cmake ^
|
|
-DVCPKG_TARGET_TRIPLET=x64-windows-static-release ^
|
|
-DVERBOSE_CONFIGURE=ON ^
|
|
-DMSVC_RUNTIME_DYNAMIC=OFF ^
|
|
--graphviz=build\target_graph.dot
|
|
cmake --build build
|
|
|
|
- name: Upload build artifacts
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: qBittorrent-CI_Windows-x64
|
|
path: |
|
|
build/compile_commands.json
|
|
build/target_graph.dot
|
|
build/qbittorrent.exe
|
|
build/qbittorrent.pdb
|
|
dist/windows/qt.conf
|
|
|
|
macos:
|
|
name: macOS
|
|
runs-on: macos-10.15
|
|
|
|
strategy:
|
|
matrix:
|
|
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
|
fail-fast: false
|
|
|
|
defaults:
|
|
run:
|
|
shell: pwsh
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v2
|
|
|
|
# - ninja is needed for building qBittorrent (because it's preferable, not a hard requirement)
|
|
# - automake is needed for the installation the vcpkg installation of fontconfig, a dependency of qt5-base
|
|
- name: Install build tools
|
|
shell: bash
|
|
run: |
|
|
brew install automake ninja
|
|
|
|
- name: Setup vcpkg
|
|
uses: lukka/run-vcpkg@v7
|
|
with:
|
|
vcpkgDirectory: ${{ env.VCPKG_DEST_MACOS }}
|
|
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT }}
|
|
setupOnly: true
|
|
|
|
- name: Configure vcpkg triplet overlay
|
|
run: |
|
|
New-Item `
|
|
-Path ${{ github.workspace }} `
|
|
-Name "triplets_overlay" `
|
|
-ItemType Directory
|
|
Copy-Item `
|
|
${{ env.RUNVCPKG_VCPKG_ROOT }}/triplets/x64-osx.cmake `
|
|
${{ github.workspace }}/triplets_overlay/x64-osx-release.cmake
|
|
Add-Content `
|
|
${{ github.workspace }}/triplets_overlay/x64-osx-release.cmake `
|
|
-Value "set(VCPKG_BUILD_TYPE release)","set(VCPKG_OSX_DEPLOYMENT_TARGET 10.15)"
|
|
|
|
# NOTE: Avoids a libtorrent ABI issue. See https://github.com/arvidn/libtorrent/issues/4965
|
|
- name: Adjust "C++ standard" cmake flag
|
|
run: |
|
|
(Get-Content `
|
|
-path ${{ env.RUNVCPKG_VCPKG_ROOT }}/ports/libtorrent/portfile.cmake).Replace( `
|
|
'${FEATURE_OPTIONS}', '${FEATURE_OPTIONS} -DCMAKE_CXX_STANDARD=17') `
|
|
| Set-Content -Path ${{ env.RUNVCPKG_VCPKG_ROOT }}/ports/libtorrent/portfile.cmake
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
$packages = `
|
|
"boost-circular-buffer:x64-osx-release",
|
|
"libtorrent:x64-osx-release",
|
|
"qt5-base:x64-osx-release",
|
|
"qt5-svg:x64-osx-release",
|
|
"qt5-tools:x64-osx-release",
|
|
"qt5-macextras:x64-osx-release"
|
|
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg upgrade `
|
|
--overlay-triplets=${{ github.workspace }}/triplets_overlay `
|
|
--no-dry-run
|
|
foreach($package in $packages)
|
|
{
|
|
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg install $package `
|
|
--overlay-triplets=${{ github.workspace }}/triplets_overlay `
|
|
--clean-after-build
|
|
}
|
|
|
|
- name: Build qBittorrent
|
|
shell: bash
|
|
run: |
|
|
cmake \
|
|
-B build \
|
|
-G "Ninja" \
|
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
|
-DCMAKE_TOOLCHAIN_FILE=${{ env.VCPKG_DEST_MACOS }}/scripts/buildsystems/vcpkg.cmake \
|
|
-DVCPKG_TARGET_TRIPLET=x64-osx-release \
|
|
-D${{ matrix.qbt_gui }} \
|
|
-DVERBOSE_CONFIGURE=ON \
|
|
--graphviz=build/target_graph.dot
|
|
cmake --build build
|
|
|
|
- name: Upload build artifacts
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: qBittorrent-CI_macOS_${{ matrix.qbt_gui }}
|
|
path: |
|
|
build/compile_commands.json
|
|
build/target_graph.dot
|
|
build/qbittorrent.app
|
|
build/qbittorrent-nox.app
|