Skip to content

Commit 39e9902

Browse files
committed
docs: rewrite native workflow explanation for cleaned repo
1 parent 867123e commit 39e9902

1 file changed

Lines changed: 49 additions & 96 deletions

File tree

NATIVE_WORKFLOW_EXPLANATION.md

Lines changed: 49 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -1,127 +1,80 @@
11
# Native ARM64 Workflow Explanation
22

3-
This branch contains a fresh GitHub Actions workflow intended to build qBittorrent as a native Windows ARM64 executable using the MSVC ARM64 cross toolchain on GitHub's standard x64 Windows runner.
3+
This repository uses one CI path: a native Windows ARM64 build of qBittorrent using MSVC ARM64 cross tools on GitHub Actions.
44

5-
## Why this workflow exists
5+
Workflow file:
66

7-
The older workflow evolved through many fixes and experiments. This file is a clean rebuild that keeps the useful parts:
7+
- .github/workflows/ci_windows_arm64_native.yaml
88

9-
- one visible version block
10-
- one consistent vcpkg triplet
11-
- a single MSVC-based ARM64 build path
12-
- explicit release and prerelease publishing rules
9+
## Current repository baseline
1310

14-
The new workflow file is:
11+
The repo is intentionally minimal:
1512

16-
- `.github/workflows/ci_windows_arm64_native.yaml`
13+
- one default branch: main
14+
- one active workflow: ci_windows_arm64_native.yaml
15+
- one build strategy: MSVC-based ARM64 native executable
1716

18-
## How the workflow is organized
17+
Legacy workflows and MinGW helper files were removed to reduce confusion and maintenance overhead.
1918

20-
### 1. Triggers
19+
## Trigger model
2120

22-
The workflow runs when:
21+
The workflow runs on:
2322

24-
- you push to branch `main`
25-
- you push a tag like `v5.2.3`
26-
- you start it manually with `workflow_dispatch`
23+
- push to main
24+
- push of tags matching v*
25+
- manual workflow_dispatch
2726

28-
### 2. Version block
27+
This supports continuous prerelease builds from main and stable release builds from version tags.
2928

30-
At the top of the job you will see:
29+
## Version control surface
3130

32-
```yaml
33-
boost_version: "1.91.0"
34-
libt_version: "2.0.13"
35-
qbt_version: "5.2.3"
36-
qt_version: "6.10.3"
37-
```
31+
The main values to update for new builds are in the workflow env block:
3832

39-
This is the main update surface. If you want to build a newer qBittorrent or Qt version later, this is the first place you edit.
33+
- boost_version
34+
- libt_version
35+
- qbt_version
36+
- qt_version
37+
- vcpkg_triplet
4038

41-
### 3. Toolchain setup
39+
Keeping versions centralized makes upgrades predictable.
4240

43-
The workflow uses:
41+
## Toolchain and dependency model
4442

45-
- `ilammy/msvc-dev-cmd` to load the MSVC ARM64 cross compiler
46-
- `lukka/run-vcpkg` to use the preinstalled vcpkg tree on the runner
47-
- `ninja` for faster builds
43+
The job uses:
4844

49-
Important detail: the build still happens on GitHub's normal x64 Windows machine, but the compiler target is ARM64, so the produced `qbittorrent.exe` is a native ARM64 executable.
45+
- ilammy/msvc-dev-cmd for ARM64 cross compilation
46+
- lukka/run-vcpkg with a pinned baseline commit
47+
- Ninja for CMake builds
5048

51-
### 4. Dependency installation
49+
All dependency resolution is aligned to one triplet:
5250

53-
The workflow builds against one vcpkg triplet only:
51+
- arm64-windows-static-release
5452

55-
- `arm64-windows-static-release`
53+
That triplet is used consistently for OpenSSL, zlib, Qt configuration, libtorrent, and qBittorrent.
5654

57-
That triplet is used for:
55+
## Build stages
5856

59-
- OpenSSL
60-
- zlib
61-
- Qt configuration
62-
- libtorrent
63-
- qBittorrent
57+
1. Setup compiler and tools
58+
2. 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
6464

65-
The goal is to avoid mixing dependency models.
65+
## Packaging and publishing
6666

67-
### 5. Qt build
67+
Packaged files include:
6868

69-
The workflow installs:
69+
- qbittorrent.exe
70+
- dist/windows/qt.conf from qBittorrent sources
7071

71-
- host Qt tools for x64 from `install-qt-action`
72-
- target Qt for ARM64 by building Qt from source
72+
Publishing rules:
7373

74-
The host Qt is needed because the build system runs helper tools on the x64 runner while compiling target libraries for ARM64.
74+
- pushes to main create prerelease artifacts
75+
- v* tags create release artifacts
7576

76-
### 6. libtorrent build
77+
## Notes
7778

78-
libtorrent is built from source with the same vcpkg triplet and the same ARM64 target model as qBittorrent.
79-
80-
### 7. qBittorrent build
81-
82-
qBittorrent is built from the official source tarball for the selected `qbt_version`.
83-
84-
One compatibility hotfix is still used:
85-
86-
- the workflow prepends a small `find_package(OpenSSL)` and `find_package(ZLIB)` block into qBittorrent's `CheckPackages.cmake`
87-
88-
That hotfix is kept because it was already needed in your existing working builds to make imported CMake targets visible consistently.
89-
90-
### 8. Packaging
91-
92-
The workflow currently packages:
93-
94-
- `qbittorrent.exe`
95-
- qBittorrent's own `dist/windows/qt.conf`
96-
97-
This matches the packaging pattern already used in the existing workflow.
98-
99-
### 9. Publishing behavior
100-
101-
There are two publishing modes:
102-
103-
- tagged releases for `v*` tags
104-
- prereleases for pushes to `main`
105-
106-
That means every push on `main` can produce a downloadable prerelease artifact without touching version tags.
107-
108-
## Repository baseline after cleanup
109-
110-
For this new native MSVC workflow, the key files are:
111-
112-
- `.github/workflows/ci_windows_arm64_native.yaml`
113-
- `README.md`
114-
- `NATIVE_WORKFLOW_EXPLANATION.md`
115-
116-
The following legacy files are now removed from this repository baseline:
117-
118-
- `.github/workflows/ci_windows_arm64.yaml`
119-
- `.github/workflows/ci_mingw_arm64.yaml`
120-
- `build.sh`
121-
- `Toolchain-llvm-mingw.cmake`
122-
- `patches/`
123-
- root-level `qt.conf`
124-
125-
## Important caution
126-
127-
This new workflow can make the build logic cleaner, but it may not fix an upstream qBittorrent runtime regression by itself. If qBittorrent 5.2.3 still crashes after startup, that may still be an application-level issue rather than a workflow issue.
79+
- This cleanup simplifies CI maintenance.
80+
- Runtime issues in a specific qBittorrent version may still require upstream fixes and are not always CI-related.

0 commit comments

Comments
 (0)