Skip to content

Commit a09988f

Browse files
committed
v2.2.1 / v2.0.21
debian trixie Update README.md fix alpine version check Update build-help.mdx update docs
1 parent d48a830 commit a09988f

File tree

13 files changed

+484
-325
lines changed

13 files changed

+484
-325
lines changed

.github/workflows/ci-debian-build.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,22 +32,22 @@ jobs:
3232
matrix:
3333
runs_on: ["ubuntu-24.04", "ubuntu-24.04-arm"]
3434
os_id: ["debian", "ubuntu"]
35-
os_version_id: ["bookworm", "noble"]
35+
os_version_id: ["trixie", "noble"]
3636
qbt_cross_name: ["default", "aarch64", "x86_64", "riscv64"]
3737
qbt_libtorrent_version: ["1.2", "2.0"]
3838
qbt_build_tool: [""]
3939
qbt_qt_version: ["6"]
4040
exclude:
41-
- os_id: "debian"
42-
qbt_cross_name: "riscv64"
4341
- os_id: "debian"
4442
os_version_id: "noble"
4543
- os_id: "ubuntu"
46-
os_version_id: "bookworm"
44+
os_version_id: "trixie"
45+
4746
- runs_on: "ubuntu-24.04"
4847
qbt_cross_name: "x86_64"
4948
- runs_on: "ubuntu-24.04-arm"
5049
qbt_cross_name: "aarch64"
50+
5151
include:
5252
- runs_on: "ubuntu-24.04"
5353
host_name: "x86_64"

README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,9 +267,7 @@ This build script depends on several related repositories:
267267

268268
- [qbt-musl-cross-make](https://github.com/userdocs/qbt-musl-cross-make) - Cross-compilation toolchain
269269
- [qbt-workflow-files](https://github.com/userdocs/qbt-workflow-files) - CI/CD workflow templates
270-
- [qbt-ninja-build](https://github.com/userdocs/qbt-ninja-build) - Ninja build system integration
271270
- [qbt-host-deps](https://github.com/userdocs/qbt-host-deps) - Host dependency management
272-
- [qbt-cmake-ninja-crossbuilds](https://github.com/userdocs/qbt-cmake-ninja-crossbuilds) - CMake cross-build configurations
273271

274272
## 💻 WSL2 Support
275273

changelog.md

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,19 @@
1+
### v2.2.1 / v2.0.21 - 13/08/2025
2+
3+
Debian support bumped to trixie
4+
5+
Debian crossbuild now supports riscv64
6+
7+
`cmake`/`ninja` no longer installed via external builds for any support OS. Related code and arguments removed.
8+
9+
They are only installed via `apt` for Debian based and `apk` for Alpine.
10+
11+
The reason the external tools existed was to overcome issues with outdated or missing stable release packages.
12+
13+
This not be an issue since `trixie` `cmake` is `3.31` or newer and `ninja-build` was reintroduced as an Alpine package some time ago. There was no specific benefit to using them other than enabling building.
14+
15+
This makes the `qbt-cmake-ninja-crossbuilds` and `qbt-ninja-build` redundant as the script no longer depends on them.
16+
117
### v2.2.0 / v2.0.20 - 26/07/2025
218

319
Context: As the qbt-musl-cross-make toolchains were being revised to properly apply `-static-pie` patches, some issues needed to be resolved that resulted in a rework of some things.
@@ -22,8 +38,6 @@ ___
2238
> [!NOTE]
2339
> `qbt_host_deps` will always be mirrored to the latest release version.
2440
25-
26-
2741
A lot of general refactoring, formatting and minor bug fixes.
2842

2943
More consistent use if build flags and when the are applied.
Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
---
2+
const response = await fetch(
3+
"https://github.com/userdocs/qbt-workflow-files/releases/latest/download/dependency-version.json",
4+
);
5+
6+
const data = await response.json();
7+
8+
const rows = [
9+
{
10+
variable: "qbt_zlib_type",
11+
defaultVal: "zlib",
12+
optionsTokens: ["zlib", "zlib-ng"],
13+
example: 'qbt_zlib_type="zlib"',
14+
},
15+
{
16+
variable: "qbt_skip_icu",
17+
defaultVal: "yes",
18+
optionsTokens: ["yes", "no"],
19+
example: 'qbt_skip_icu="yes"',
20+
},
21+
{
22+
variable: "qbt_boost_tag",
23+
defaultVal: `boost-${data.boost || "1.88.0"}`,
24+
optionsTokens: ["Any valid git tag"],
25+
example: 'qbt_boost_tag="boost-1.86.0"',
26+
},
27+
{
28+
variable: "qbt_libtorrent_version",
29+
defaultVal: "2.0",
30+
optionsTokens: ["1.2", "2.0"],
31+
example: 'qbt_libtorrent_version="2.0"',
32+
},
33+
{
34+
variable: "qbt_libtorrent_tag",
35+
defaultVal: `v${data.libtorrent_2_0 || "2.0.11"}`,
36+
optionsTokens: ["Any valid git tag"],
37+
example: 'qbt_libtorrent_tag="v2.0.10"',
38+
},
39+
{
40+
variable: "qbt_libtorrent_master_jamfile",
41+
defaultVal: "no",
42+
optionsTokens: ["yes", "no"],
43+
example: 'qbt_libtorrent_master_jamfile="no"',
44+
},
45+
{
46+
variable: "qbt_qt_version",
47+
defaultVal: "6",
48+
optionsTokens: ["5.12", "5.15", "6.3", "6.3.1"],
49+
example: 'qbt_qt_version="6"',
50+
},
51+
{
52+
variable: "qbt_qt_tag",
53+
defaultVal: `v${data.qt6 || "v6.9.1"}`,
54+
optionsTokens: ["Any valid git tag"],
55+
example: 'qbt_qt_tag="v6.8.0"',
56+
},
57+
{
58+
variable: "qbt_qbittorrent_tag",
59+
defaultVal: `release-${data.qbittorrent || "5.1.2"}`,
60+
optionsTokens: ["Any valid git tag"],
61+
example: 'qbt_qbittorrent_tag="release-5.1.2"',
62+
},
63+
{
64+
variable: "qbt_build_dir",
65+
defaultVal: "qbt-build",
66+
optionsTokens: ["qbt-build"],
67+
example: 'qbt_build_dir="~/custom"',
68+
},
69+
{
70+
variable: "qbt_build_tool",
71+
defaultVal: "cmake",
72+
optionsTokens: ["cmake", "qmake"],
73+
example: 'qbt_build_tool="cmake"',
74+
},
75+
{
76+
variable: "qbt_cross_name",
77+
defaultVal: "default (default to OS gcc)",
78+
optionsTokens: ["See Cross arch options below"],
79+
example: 'qbt_cross_name="aarch64"',
80+
},
81+
{
82+
variable: "qbt_mcm_url",
83+
defaultVal: "userdocs/qbt-musl-cross-make",
84+
optionsTokens: [],
85+
example: 'qbt_mcm_url="userdocs/qbt-musl-cross-make"',
86+
},
87+
{
88+
variable: "qbt_patches_url",
89+
defaultVal: "userdocs/qbittorrent-nox-static",
90+
optionsTokens: [],
91+
example: 'qbt_patches_url="userdocs/qbittorrent-nox-static"',
92+
},
93+
{
94+
variable: "qbt_workflow_files",
95+
defaultVal: "no",
96+
optionsTokens: ["yes", "no"],
97+
example: 'qbt_workflow_files="no"',
98+
},
99+
{
100+
variable: "qbt_cache_dir",
101+
defaultVal: "empty = unset",
102+
optionsTokens: [],
103+
example: 'qbt_cache_dir="cache"',
104+
},
105+
{
106+
variable: "qbt_optimise_strip",
107+
defaultVal: "yes",
108+
optionsTokens: ["yes", "no"],
109+
example: 'qbt_optimise_strip="yes"',
110+
},
111+
{
112+
variable: "qbt_build_debug",
113+
defaultVal: "no",
114+
optionsTokens: [],
115+
example: 'qbt_build_debug="no"',
116+
},
117+
{
118+
variable: "qbt_standard",
119+
defaultVal: "20",
120+
optionsTokens: ["14", "17", "20", "23"],
121+
example: 'qbt_standard="20"',
122+
},
123+
{
124+
variable: "qbt_static_ish",
125+
defaultVal: "no",
126+
optionsTokens: [],
127+
example: 'qbt_static_ish="no"',
128+
},
129+
{
130+
variable: "qbt_optimise",
131+
defaultVal: "no",
132+
optionsTokens: ["yes", "no"],
133+
example: 'qbt_optimise="yes"',
134+
},
135+
{
136+
variable: "qbt_with_qemu",
137+
defaultVal: "yes",
138+
optionsTokens: ["yes", "no"],
139+
example: 'qbt_with_qemu="yes"',
140+
},
141+
{
142+
variable: "qbt_host_deps_repo",
143+
defaultVal: "userdocs/qbt-host-deps",
144+
optionsTokens: [],
145+
example: "qbt_host_deps_repo=userdocs/qbt-host-deps",
146+
},
147+
];
148+
---
149+
150+
<table>
151+
<thead>
152+
<tr>
153+
<th>Build variable</th>
154+
<th>Default if unset</th>
155+
<th>Options</th>
156+
<th>example usage</th>
157+
</tr>
158+
</thead>
159+
<tbody>
160+
{
161+
rows.map((r) => (
162+
<tr>
163+
<td>
164+
<code>{r.variable}</code>
165+
</td>
166+
<td>
167+
<code>{r.defaultVal}</code>
168+
</td>
169+
<td>
170+
{Array.isArray(r.optionsTokens) && r.optionsTokens.length
171+
? r.optionsTokens.map((opt, i) => (
172+
<Fragment>
173+
<code>{opt}</code>
174+
{i < r.optionsTokens.length - 1 ? " " : ""}
175+
</Fragment>
176+
))
177+
: ""}
178+
</td>
179+
<td>
180+
<code>{r.example}</code>
181+
</td>
182+
</tr>
183+
))
184+
}
185+
</tbody>
186+
</table>

docs/src/components/global.jsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@ import Charts from "/src/components/charts.astro";
33
import Details from "/src/components/details.astro";
44
import GithubActions from "/src/components/github-actions.astro";
55
import Modal from "/src/components/modal.astro";
6-
import BuildInfo from "/src/components/buildinfo.astro";
6+
import BuildInfoIntroduction from "/src/components/buildinfo-introduction.astro";
7+
import BuildInfoBuildHelp from "/src/components/buildinfo-build-help.astro";
78
import PatchInfo from "/src/components/patchinfo.astro";
9+
import ScriptVersions from "/src/components/scriptversions.astro";
810

911
import { Steps, Tabs, TabItem, Card, CardGrid, LinkCard, Aside, Icon, FileTree } from "@astrojs/starlight/components";
1012

11-
export { Advanced, BuildInfo, Charts, Details, GithubActions, Modal, Steps, Tabs, TabItem, Card, CardGrid, LinkCard, Aside, Icon, PatchInfo, FileTree };
13+
export { Advanced, BuildInfoIntroduction, BuildInfoBuildHelp, Charts, Details, GithubActions, Modal, Steps, Tabs, TabItem, Card, CardGrid, LinkCard, Aside, Icon, PatchInfo, FileTree, ScriptVersions };
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
import fs from "node:fs/promises";
3+
4+
type Props = {
5+
// Render mode: "sentence" returns a ready-to-use sentence; "values" just returns versions.
6+
mode?: "sentence" | "values";
7+
};
8+
9+
const { mode = "sentence" } = Astro.props as Props;
10+
11+
async function readVersion(relPath: string): Promise<string> {
12+
try {
13+
// Build a file URL relative to this component's location
14+
const url = new URL(relPath, import.meta.url);
15+
const content = await fs.readFile(url, "utf8");
16+
const match = content.match(/script_version=\"([^\"]*)\"/);
17+
return match?.[1] ?? "unknown";
18+
} catch {
19+
return "unknown";
20+
}
21+
}
22+
23+
// Scripts live at the repository root; this component is at docs/src/components/
24+
// So we traverse up three directories to reach the repo root.
25+
const bashVersion = await readVersion("../../../qbt-nox-static.bash");
26+
const shVersion = await readVersion("../../../qbittorrent-nox-static.sh");
27+
---
28+
29+
{
30+
mode === "values" ? (
31+
// Expose just the values when needed
32+
<span data-qbt-bash-version={bashVersion} data-qbt-sh-version={shVersion} />
33+
) : (
34+
<>
35+
<code>qbt-nox-static.bash™</code> is <code>v{bashVersion}</code> and{" "}
36+
<code>qbittorrent-nox-static.sh™</code> is <code>v{shVersion}</code>
37+
</>
38+
)
39+
}

0 commit comments

Comments
 (0)