You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
4
+
5
+
## Why this workflow exists
6
+
7
+
The older workflow evolved through many fixes and experiments. This file is a clean rebuild that keeps the useful parts:
8
+
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
13
+
14
+
The new workflow file is:
15
+
16
+
-`.github/workflows/ci_windows_arm64_native.yaml`
17
+
18
+
## How the workflow is organized
19
+
20
+
### 1. Triggers
21
+
22
+
The workflow runs when:
23
+
24
+
- you push to branch `arm64-native-from-scratch`
25
+
- you push a tag like `v5.2.3`
26
+
- you start it manually with `workflow_dispatch`
27
+
28
+
This lets you test safely on the scratch branch without changing the old workflow.
29
+
30
+
### 2. Version block
31
+
32
+
At the top of the job you will see:
33
+
34
+
```yaml
35
+
boost_version: "1.91.0"
36
+
libt_version: "2.0.13"
37
+
qbt_version: "5.2.3"
38
+
qt_version: "6.10.3"
39
+
```
40
+
41
+
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.
42
+
43
+
### 3. Toolchain setup
44
+
45
+
The workflow uses:
46
+
47
+
- `ilammy/msvc-dev-cmd` to load the MSVC ARM64 cross compiler
48
+
- `lukka/run-vcpkg`to use the preinstalled vcpkg tree on the runner
49
+
- `ninja`for faster builds
50
+
51
+
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.
52
+
53
+
### 4. Dependency installation
54
+
55
+
The workflow builds against one vcpkg triplet only:
56
+
57
+
- `arm64-windows-static-release`
58
+
59
+
That triplet is used for:
60
+
61
+
- OpenSSL
62
+
- zlib
63
+
- Qt configuration
64
+
- libtorrent
65
+
- qBittorrent
66
+
67
+
The goal is to avoid mixing dependency models.
68
+
69
+
### 5. Qt build
70
+
71
+
The workflow installs:
72
+
73
+
- host Qt tools for x64 from `install-qt-action`
74
+
- target Qt for ARM64 by building Qt from source
75
+
76
+
The host Qt is needed because the build system runs helper tools on the x64 runner while compiling target libraries for ARM64.
77
+
78
+
### 6. libtorrent build
79
+
80
+
libtorrent is built from source with the same vcpkg triplet and the same ARM64 target model as qBittorrent.
81
+
82
+
### 7. qBittorrent build
83
+
84
+
qBittorrent is built from the official source tarball for the selected `qbt_version`.
85
+
86
+
One compatibility hotfix is still used:
87
+
88
+
- the workflow prepends a small `find_package(OpenSSL)` and `find_package(ZLIB)` block into qBittorrent's `CheckPackages.cmake`
89
+
90
+
That hotfix is kept because it was already needed in your existing working builds to make imported CMake targets visible consistently.
91
+
92
+
### 8. Packaging
93
+
94
+
The workflow currently packages:
95
+
96
+
- `qbittorrent.exe`
97
+
- qBittorrent's own `dist/windows/qt.conf`
98
+
99
+
This matches the packaging pattern already used in the existing workflow.
100
+
101
+
### 9. Publishing behavior
102
+
103
+
There are two publishing modes:
104
+
105
+
- tagged releases for `v*` tags
106
+
- prereleases for pushes to `arm64-native-from-scratch`
107
+
108
+
That means every push on the scratch branch can produce a downloadable test artifact without touching your main release tags.
109
+
110
+
## Which old files still matter
111
+
112
+
For this new native MSVC workflow, the important files are:
These are not needed by the new native MSVC workflow itself:
125
+
126
+
- `build.sh`
127
+
- `Toolchain-llvm-mingw.cmake`
128
+
- `patches/`
129
+
- root-level `qt.conf`
130
+
- `changelog.txt`
131
+
132
+
However, I recommend not deleting them until the new workflow has produced at least one known-good artifact. They are still useful as comparison material.
133
+
134
+
## Important caution
135
+
136
+
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.
0 commit comments