11# Native ARM64 Workflow Explanation
22
3- This repository uses one CI path: a native Windows ARM64 build of qBittorrent using MSVC ARM64 cross tools on GitHub Actions.
3+ This repository uses a single CI workflow that builds native Windows ARM64 qBittorrent binaries with MSVC cross tools on GitHub Actions.
44
55Workflow file:
66
@@ -12,7 +12,7 @@ The repo is intentionally minimal:
1212
1313- one default branch: main
1414- one active workflow: ci_windows_arm64_native.yaml
15- - one build strategy: MSVC-based ARM64 native executable
15+ - one build strategy: MSVC-based ARM64 native executable matrixed by libtorrent branch
1616
1717Legacy workflows and MinGW helper files were removed to reduce confusion and maintenance overhead.
1818
@@ -28,15 +28,29 @@ This supports continuous prerelease builds from main and stable release builds f
2828
2929## Version control surface
3030
31- The main values to update for new builds are in the workflow env block:
31+ The workflow has global versions and matrix-specific versions.
32+
33+ Global values are in the workflow env block:
3234
33- - boost_version
34- - libt_version
3535- qbt_version
3636- qt_version
3737- vcpkg_triplet
3838
39- Keeping versions centralized makes upgrades predictable.
39+ Matrix values are in strategy.matrix.include:
40+
41+ - libt_variant
42+ - libt_ref
43+ - boost_version
44+ - libt_version_display
45+ - archive_suffix
46+ - artifact_name
47+
48+ This split allows lt12 and lt20 to use different Boost versions safely.
49+
50+ Current matrix at the time of writing:
51+
52+ - lt12: libtorrent 1.2.20+gitc5ff6c3186 with Boost 1.86.0
53+ - lt20: libtorrent 2.0.13+gitda7a68a440 with Boost 1.91.0
4054
4155## Toolchain and dependency model
4256
@@ -52,15 +66,20 @@ All dependency resolution is aligned to one triplet:
5266
5367That triplet is used consistently for OpenSSL, zlib, Qt configuration, libtorrent, and qBittorrent.
5468
69+ vcpkg is pinned to a fixed baseline commit to reduce random breakage from upstream package changes.
70+
5571## Build stages
5672
57731 . Setup compiler and tools
58742 . Initialize vcpkg and install dependencies
59- 3 . Build Qt target libraries for ARM64
60- 4 . Build libtorrent for ARM64
61- 5 . Build qBittorrent
62- 6 . Package artifact
63- 7 . Publish artifact/release
75+ 3 . Resolve source URLs for qBittorrent and matrix-selected Boost
76+ 4 . Download and unpack Boost
77+ 5 . Build Qt target libraries for ARM64
78+ 6 . Build libtorrent for ARM64 from exact commit ref in matrix
79+ 7 . Build qBittorrent (RelWithDebInfo)
80+ 8 . Package artifact zip and optional symbols folder
81+ 9 . Upload one artifact per matrix entry
82+ 10 . Publish both matrix artifacts in one release job
6483
6584## Packaging and publishing
6685
@@ -69,12 +88,20 @@ Packaged files include:
6988- qbittorrent.exe
7089- dist/windows/qt.conf from qBittorrent sources
7190
91+ Generated artifact names:
92+
93+ - lt12: qbittorrent_ <qbt_version>_ arm64.zip
94+ - lt20: qbittorrent_ <qbt_version>_ lt20_arm64.zip
95+
96+ PDB files are not included in release ZIP files. If present, they are uploaded under a symbols folder inside the CI artifact.
97+
7298Publishing rules:
7399
74- - pushes to main create prerelease artifacts
75- - v* tags create release artifacts
100+ - pushes to main create prerelease releases with both artifacts
101+ - v* tags create stable releases with both artifacts
76102
77103## Notes
78104
79- - This cleanup simplifies CI maintenance.
105+ - If a matrix entry starts failing, check the exact first compiler/linker error in that variant job before changing shared workflow logic.
106+ - A known compatibility rule is that libtorrent 1.2.20 requires Boost 1.86.0 in this pipeline.
80107- Runtime issues in a specific qBittorrent version may still require upstream fixes and are not always CI-related.
0 commit comments