Skip to content

Commit 2978474

Browse files
committed
Update README.md
1 parent 13cb4e7 commit 2978474

File tree

3 files changed

+392
-77
lines changed

3 files changed

+392
-77
lines changed

.pre-commit-config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ repos:
33
hooks:
44
- id: make-scripts-executable
55
name: Make script files executable
6-
entry: bash -c 'git add --chmod=+x qbt-nox-static.bash qbittorrent-nox-static.sh'
6+
entry: bash -c 'git add --chmod=+x qi.bash qbt-nox-static.bash qbittorrent-nox-static.sh'
77
language: system
8-
files: '(qbt-nox-static\.bash|qbittorrent-nox-static\.sh)$'
8+
files: '(qi\.bash|qbt-nox-static\.bash|qbittorrent-nox-static\.sh)$'
99
pass_filenames: false
1010

1111
- repo: https://github.com/pre-commit/pre-commit-hooks

README.md

Lines changed: 128 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,165 +1,193 @@
1-
# qbittorrent-nox-static
1+
# qBittorrent-nox Static Builds
22

33
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/9817ad80d35c480aa9842b53001d55b0)](https://app.codacy.com/gh/userdocs/qbittorrent-nox-static?utm_source=github.com&utm_medium=referral&utm_content=userdocs/qbittorrent-nox-static&utm_campaign=Badge_Grade)
44
[![CodeFactor](https://www.codefactor.io/repository/github/userdocs/qbittorrent-nox-static/badge)](https://www.codefactor.io/repository/github/userdocs/qbittorrent-nox-static)
55
[![CI](https://github.com/userdocs/qbittorrent-nox-static/actions/workflows/ci-main-reusable-caller.yml/badge.svg)](https://github.com/userdocs/qbittorrent-nox-static/actions/workflows/ci-main-reusable-caller.yml)
66

7-
## Summary
7+
Cross-platform static builds of qBittorrent-nox with the latest dependencies
88

9-
The `qbittorrent-nox-static` project is a `bash` build script that compiles a static `qbittorrent-nox` binary using the latest available dependencies from their source. These statically linked binaries can run on any matching CPU architecture and are not OS specific. This means you can run a `x86_64` Alpine edge build on any Linux based OS of like CentOS | Fedora | OpenSuse | Debian | Ubuntu and more.
9+
[📦 Latest Release](https://github.com/userdocs/qbittorrent-nox-static/releases/latest)[📖 Documentation](https://userdocs.github.io/qbittorrent-nox-static/introduction/)[🏷️ All Releases](https://github.com/userdocs/qbittorrent-nox-static/tags)
10+
11+
## 🚀 Quick Start
12+
13+
### Quick Install
14+
15+
```bash
16+
curl -sL https://raw.githubusercontent.com/userdocs/qbittorrent-nox-static/refs/heads/master/qi.bash | bash
17+
```
18+
19+
You can now run it using this command:
20+
21+
```bash
22+
~/bin/qbittorrent
23+
```
1024

1125
> [!TIP]
12-
> You don't need to use the script to access the binaries it creates, just use the [release tag](https://github.com/userdocs/qbittorrent-nox-static/tags) you need or [latest release page](https://github.com/userdocs/qbittorrent-nox-static/releases/latest)
26+
> Access the WebUI at `http://localhost:8080`
1327
14-
See here for how to [install the latest release](https://github.com/userdocs/qbittorrent-nox-static?tab=readme-ov-file#install-the-latest-release)
28+
### What You Get
1529

16-
## Linked Github repositories
30+
**No installation hassles** - Single static binary
31+
**Latest versions** - Always up-to-date dependencies
32+
**Universal compatibility** - Runs on any Linux distro
33+
**Multiple architectures** - Support for ARM devices too
1734

18-
This build script uses and depends on some related repositories.
35+
## 📋 Table of Contents
1936

20-
- [qbt-musl-cross-make](https://github.com/userdocs/qbt-musl-cross-make)
21-
- [qbt-workflow-files](https://github.com/userdocs/qbt-workflow-files)
22-
- [qbt-ninja-build](https://github.com/userdocs/qbt-ninja-build)
23-
- [qbt-cmake-ninja-crossbuilds](https://github.com/userdocs/qbt-cmake-ninja-crossbuilds)
37+
- [Overview](#-overview)
38+
- [Features](#-features)
39+
- [Installation](#-installation)
40+
- [Libtorrent Versions](#-libtorrent-versions)
41+
- [Version Management](#-version-management)
42+
- [Dependency Tracking](#-dependency-tracking)
43+
- [Build Attestation](#%EF%B8%8F-build-attestation)
44+
- [Related Projects](#-related-projects)
45+
- [WSL2 Support](#-wsl2-support)
46+
- [Documentation](#-documentation)
2447

25-
## Documentation
48+
## 🔍 Overview
2649

27-
> [!TIP]
28-
> Visit the [documentation](https://userdocs.github.io/qbittorrent-nox-static/introduction/) for in depth information on using this project and script usage.
50+
The `qbittorrent-nox-static` project provides a bash build script that compiles static `qbittorrent-nox` binaries using the latest available dependencies from their source. These statically linked binaries offer several advantages:
2951

30-
## WSL2
52+
- **Universal compatibility**: Run on any Linux distribution with matching CPU architecture
53+
- **No dependencies**: All required libraries are statically linked
54+
- **Latest versions**: Built with the most recent stable releases of all dependencies
55+
- **Multiple architectures**: Support for x86, x86_64, ARM variants
3156

32-
> [!TIP]
33-
> These static builds can be used on WSL2 and accessed via `localhost:8080` using the download instructions below
57+
## ✨ Features
3458

35-
## Install the latest release
59+
- 🔧 **Static compilation** - No external dependencies required
60+
- 🏗️ **Multi-architecture support** - x86, x86_64, armhf, armv7, aarch64
61+
- 📦 **Latest dependencies** - Always built with current stable versions
62+
- 🔄 **Automated builds** - CI/CD pipeline ensures fresh releases
63+
- 🛡️ **Build attestation** - Cryptographically signed provenance
64+
- 📊 **Version tracking** - JSON metadata for dependency versions
3665

37-
> [!TIP]
38-
> For the most current build visit the [latest release page](https://github.com/userdocs/qbittorrent-nox-static/releases/latest)
66+
## 📦 Installation
3967

40-
Or uses these commands for your arch:
68+
Choose the command that matches your system architecture:
4169

42-
### x86
70+
### x86 (32-bit Intel/AMD)
4371

4472
```bash
4573
mkdir -p ~/bin && source ~/.profile
4674
wget -qO ~/bin/qbittorrent-nox https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/x86-qbittorrent-nox
4775
chmod 700 ~/bin/qbittorrent-nox
4876
```
4977

50-
### x86_64
78+
### x86_64 (64-bit Intel/AMD)
5179

5280
```bash
5381
mkdir -p ~/bin && source ~/.profile
5482
wget -qO ~/bin/qbittorrent-nox https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/x86_64-qbittorrent-nox
5583
chmod 700 ~/bin/qbittorrent-nox
5684
```
5785

58-
### armhf (armv6)
86+
### armhf (ARM v6 - Raspberry Pi 1/Zero)
5987

6088
```bash
6189
mkdir -p ~/bin && source ~/.profile
6290
wget -qO ~/bin/qbittorrent-nox https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/armhf-qbittorrent-nox
6391
chmod 700 ~/bin/qbittorrent-nox
6492
```
6593

66-
### armv7
94+
### armv7 (ARM v7 - Raspberry Pi 2/3/4 32-bit)
6795

6896
```bash
6997
mkdir -p ~/bin && source ~/.profile
7098
wget -qO ~/bin/qbittorrent-nox https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/armv7-qbittorrent-nox
7199
chmod 700 ~/bin/qbittorrent-nox
72100
```
73101

74-
### aarch64
102+
### aarch64 (ARM 64-bit - Raspberry Pi 3/4/5 64-bit)
75103

76104
```bash
77105
mkdir -p ~/bin && source ~/.profile
78106
wget -qO ~/bin/qbittorrent-nox https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/aarch64-qbittorrent-nox
79107
chmod 700 ~/bin/qbittorrent-nox
80108
```
81109

82-
## Libtorrent versions
110+
## 🔧 Libtorrent Versions
83111

84112
> [!IMPORTANT]
85-
> Libtorrent `v1.2` is currently the main branch supported by qBittorrent since a change with the release of [4.4.5](https://www.qbittorrent.org/news.php)
113+
> **Libtorrent v1.2** is currently the main branch supported by qBittorrent since the release of [4.4.5](https://www.qbittorrent.org/news.php). However, both v1.2 and v2.0 builds are provided.
114+
115+
This project automatically builds and releases binaries for both Libtorrent versions:
86116

87-
Libtorrent `v2.0` builds are still released as latest releases as it it does not really matter to this project as it always builds and releases for both `v1.2` and `v2.0`. See the next section for how to get the version you need via the latest release URL.
117+
- **Libtorrent v1.2**: Stable and widely supported (recommended)
118+
- **Libtorrent v2.0**: Latest features and improvements
88119

89120
> [!TIP]
90-
> You can view the current latest and pre releases and tags here <https://github.com/userdocs/qbittorrent-nox-static/tags>
121+
> You can view all current releases and pre-releases at <https://github.com/userdocs/qbittorrent-nox-static/tags>
91122
92-
## Getting the Version you want via the latest release URL
123+
## 🎯 Version Management
93124

94-
Since this project builds and releases both v1.2 and v2.0 builds simultaneously we can use the commands below to always get the latest version of the related pre release via the latest release `dependency-version.json` asset.
125+
### Getting Version-Specific Releases
95126

96-
Using this method it does not matter which version is the latest release or pre release as the commands will provide you the version specific info you need for the twinned latest/pre releases.
127+
Since this project builds both v1.2 and v2.0 simultaneously, you can target specific libtorrent versions using these commands:
97128

98-
For Libtorrent `v1.2`
129+
#### Libtorrent v1.2 Release Info
99130

100131
```bash
101132
jq -r '. | "release-\(.qbittorrent)_v\(.libtorrent_1_2)"' < <(curl -sL https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/dependency-version.json)
102133
```
103134

104-
For Libtorrent `v2.0`
135+
#### Libtorrent v2.0 Release Info
105136

106137
```bash
107138
jq -r '. | "release-\(.qbittorrent)_v\(.libtorrent_2_0)"' < <(curl -sL https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/dependency-version.json)
108139
```
109140

110-
## Revisions
141+
### Build Revisions
111142

112-
The build has 5 main dependencies tracked that will trigger a rebuild on an update being available.
143+
The build system tracks 5 main dependencies that trigger automatic rebuilds:
113144

114-
- qBittorrent
115-
- Libtorrent
116-
- Qt
117-
- Boost
118-
- Openssl
145+
- qBittorrent
146+
- Libtorrent
147+
- Qt
148+
- Boost
149+
- OpenSSL
119150

120-
When a new build is triggered for updating `qBittorrent` or `Libtorrent` a new release will be generated as the release tags will be updated.
151+
**Revision Tracking:**
121152

122-
Since I do not append revision info to tags `Qt` - `Boost` - `Openssl` or patched builds it will only update the existing release assets.
153+
- New releases start at revision `0`
154+
- Incremented by `1` for each rebuild
155+
- Updates to Qt, Boost, or OpenSSL only update existing release assets
156+
- Updates to qBittorrent or Libtorrent create new releases
123157

124-
Revisions values are incremented in the `dependency-version.json` of the release. All new releases start at a revision of `0` and increment by `1` per revised build.
125-
126-
### Tracking latest release revisions (Libtorrent v2.0)
127-
128-
Simply use this command.
158+
#### Check Latest Revision
129159

130160
```bash
131161
jq -r '.revision' < <(curl -sL "https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/dependency-version.json")
132162
```
133163

134-
### Tracking v2.0 and v1.2 releases independently
164+
#### Track Specific Version Revisions
135165

136-
There are times when the revision counts may differ between `v2.0` and `v1.2` builds as the `dependency-version.json` is unique to the release but has some shared values that won't change. In this case you need to track them as independent values unique to their release.
166+
For independent tracking of v1.2 and v2.0 revisions:
137167

138-
To do this you start by getting the current release version value first, for example, getting the `v1.2` prerelease revision value.
168+
1. **Get the release tag:**
139169

140-
```bash
141-
release="$(jq -r '. | "release-\(.qbittorrent)_v\(.libtorrent_1_2)"' < <(curl -sL https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/dependency-version.json))"
142-
```
170+
```bash
171+
release="$(jq -r '. | "release-\(.qbittorrent)_v\(.libtorrent_1_2)"' < <(curl -sL https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/dependency-version.json))"
172+
```
143173

144-
Then get the revision from that specific release.
174+
2. **Get the revision for that release:**
145175

146-
```bash
147-
jq -r '.revision' < <(curl -sL "https://github.com/userdocs/qbittorrent-nox-static/releases/download/${release}/dependency-version.json")
148-
```
176+
```bash
177+
jq -r '.revision' < <(curl -sL "https://github.com/userdocs/qbittorrent-nox-static/releases/download/${release}/dependency-version.json")
178+
```
149179

150-
Now you have tracked the current revision of the latest release of the libtorrent v1.2 binary.
180+
## 📊 Dependency Tracking
151181

152-
## Dependency json
182+
Each release includes a `dependency-version.json` file that provides version information shared across latest and pre-releases. This helps overcome API limitations for consistent access to version data.
153183

154-
From `release-4.4.5` each release contains a `dependency-version.json` file that provide some key version information for that is shared across the latest release and the twinned pre release. This helps to overcome some limitations of the API for consistently and directly accessing this information.
155-
156-
Downloading the file like this:
184+
### Download Dependency Information
157185

158186
```bash
159187
curl -sL https://github.com/userdocs/qbittorrent-nox-static/releases/latest/download/dependency-version.json
160188
```
161189

162-
Will output a result like this:
190+
### Example Output
163191

164192
```json
165193
{
@@ -174,26 +202,22 @@ Will output a result like this:
174202
}
175203
```
176204

177-
As demonstrated above by using the latest release URL we can construct the tag of the twinned pre release and therefore the asset URL with no margin for error.
178-
179205
> [!IMPORTANT]
180-
> From the release of qBittorrent v5 configure based builds will be unsupported and we will only be able to use cmake to build qBittorrent v5 onwards. All releases from that point on will drop Qt5 builds as at this point cmake,Qt6 and v5 should be the default and preferred build combination with Qt5 being a legacy dependency.
206+
> Starting with qBittorrent v5, configure-based builds will be unsupported. Only CMake builds will be available, with Qt6 as the default. Qt5 builds will be considered legacy and eventually dropped.
181207
182-
## gh attestation verify
208+
## 🛡️ Build Attestation
183209

184-
Binaries built from the release of release `release-5.0.0_v2.0.10` and `release-5.0.0_v1.2.19` revision `1` use [actions/attest-build-provenance](https://github.com/actions/attest-build-provenance)
210+
Binaries built from `release-5.0.0_v2.0.10` and `release-5.0.0_v1.2.19` revision `1` onwards use [actions/attest-build-provenance](https://github.com/actions/attest-build-provenance) for cryptographic verification.
185211

186-
Verify the integrity and provenance of an artifact using its associated cryptographically signed attestations.
212+
### Verify Binary Integrity
187213

188-
https://cli.github.com/manual/gh_attestation_verify
189-
190-
For example:
214+
You can verify the integrity and provenance of downloaded binaries using GitHub CLI:
191215

192216
```bash
193217
gh attestation verify x86_64-qbittorrent-nox -o userdocs
194218
```
195219

196-
Will give you this result for the `release-5.0.0_v2.0.10` revision `1` binary.
220+
### Example Verification Output
197221

198222
```bash
199223
Loaded digest sha256:a656ff57b03ee6218205d858679ea189246caaecbbcc38d4d2b57eb81d8e59bb for file://x86_64-qbittorrent-nox
@@ -204,3 +228,32 @@ sha256:a656ff57b03ee6218205d858679ea189246caaecbbcc38d4d2b57eb81d8e59bb was atte
204228
REPO PREDICATE_TYPE WORKFLOW
205229
userdocs/qbittorrent-nox-static https://slsa.dev/provenance/v1 .github/workflows/matrix_multi_build_and_release_qbt_workflow_files.yml@refs/heads/master
206230
```
231+
232+
For more information, visit the [GitHub CLI attestation documentation](https://cli.github.com/manual/gh_attestation_verify).
233+
234+
## 🔗 Related Projects
235+
236+
This build script depends on several related repositories:
237+
238+
- [qbt-musl-cross-make](https://github.com/userdocs/qbt-musl-cross-make) - Cross-compilation toolchain
239+
- [qbt-workflow-files](https://github.com/userdocs/qbt-workflow-files) - CI/CD workflow templates
240+
- [qbt-ninja-build](https://github.com/userdocs/qbt-ninja-build) - Ninja build system integration
241+
- [qbt-host-deps](https://github.com/userdocs/qbt-host-deps) - Host dependency management
242+
- [qbt-cmake-ninja-crossbuilds](https://github.com/userdocs/qbt-cmake-ninja-crossbuilds) - CMake cross-build configurations
243+
244+
## 💻 WSL2 Support
245+
246+
> [!TIP]
247+
> These static builds work perfectly on WSL2! After installation, access the WebUI at `localhost:8080` from your Windows browser.
248+
249+
The static nature of these builds makes them ideal for WSL2 environments where dependency management can be challenging.
250+
251+
## 📖 Documentation
252+
253+
> [!TIP]
254+
> For comprehensive documentation, visit the [project documentation](https://userdocs.github.io/qbittorrent-nox-static/introduction/) which covers:
255+
>
256+
> - Detailed build instructions
257+
> - Advanced configuration options
258+
> - Troubleshooting guides
259+
> - Contributing guidelines

0 commit comments

Comments
 (0)