You've already forked qBittorrent
mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-10-23 22:32:16 +02:00
Compare commits
305 Commits
release-4.
...
release-5.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a5681f72bc | ||
|
|
9e569f1a70 | ||
|
|
9d3c314ac0 | ||
|
|
931de85ab5 | ||
|
|
6a82cb1af6 | ||
|
|
f8ae8f419d | ||
|
|
ac91c1348b | ||
|
|
d7aaf80744 | ||
|
|
50caa231f7 | ||
|
|
d5e41bf679 | ||
|
|
773cb1e55d | ||
|
|
0967bdc715 | ||
|
|
c06817f4eb | ||
|
|
1702b6c891 | ||
|
|
f65af03c67 | ||
|
|
a567f8b600 | ||
|
|
71f1e6df59 | ||
|
|
896f5fe729 | ||
|
|
8a1bc8e5fd | ||
|
|
6964132475 | ||
|
|
f265eb0166 | ||
|
|
0114610a40 | ||
|
|
15697f904d | ||
|
|
46e8ee50c8 | ||
|
|
364bcf73ee | ||
|
|
031fa6183c | ||
|
|
66c34ddb6e | ||
|
|
3f2b4afc21 | ||
|
|
e1fa7e01c6 | ||
|
|
9192c988ed | ||
|
|
cffd74b62a | ||
|
|
c6ee0ff017 | ||
|
|
dc501c39be | ||
|
|
7786e1b084 | ||
|
|
80dea08328 | ||
|
|
bb8a012b1c | ||
|
|
63c9b6388e | ||
|
|
3d24a4e0f7 | ||
|
|
f04edd555f | ||
|
|
e31b553807 | ||
|
|
a9741bb203 | ||
|
|
67e0a2de44 | ||
|
|
1afb3ff433 | ||
|
|
16a91f26fb | ||
|
|
963a7faab8 | ||
|
|
d06d5b923a | ||
|
|
6d68ab4dae | ||
|
|
60bb819e2e | ||
|
|
8ef99b336c | ||
|
|
f7e9ff0fb0 | ||
|
|
9b64d50660 | ||
|
|
5fe5c333b5 | ||
|
|
49f819ef78 | ||
|
|
2755190d8e | ||
|
|
f87ea1b5d3 | ||
|
|
88a4990435 | ||
|
|
9bfb447dd3 | ||
|
|
d652a10495 | ||
|
|
df41940ebc | ||
|
|
94e80d01a8 | ||
|
|
bab9c15913 | ||
|
|
31d456c43b | ||
|
|
c5d7b62473 | ||
|
|
8ec3db1807 | ||
|
|
05572a7317 | ||
|
|
00372dd559 | ||
|
|
6918316a3d | ||
|
|
2edb1a0765 | ||
|
|
582e4dcb59 | ||
|
|
14513d051d | ||
|
|
97c0abcbf0 | ||
|
|
ad22237a2f | ||
|
|
8bdb83d973 | ||
|
|
54bcabeca4 | ||
|
|
114652205c | ||
|
|
5b3b56c918 | ||
|
|
e69f857828 | ||
|
|
0b6d785e87 | ||
|
|
f3d45327e1 | ||
|
|
9bf7f3b181 | ||
|
|
d5bf0358cb | ||
|
|
fc56fdade7 | ||
|
|
293a2efca7 | ||
|
|
8bd604f633 | ||
|
|
fcd16d56e2 | ||
|
|
be5bf9a138 | ||
|
|
8dcc734df5 | ||
|
|
4057972b2d | ||
|
|
073ca4267c | ||
|
|
9d90141c29 | ||
|
|
cc563d9f78 | ||
|
|
88ef8a51dd | ||
|
|
0297f0f34b | ||
|
|
7a41192597 | ||
|
|
65771d66fc | ||
|
|
0dbac78e17 | ||
|
|
608efc77e8 | ||
|
|
9ecb3874d8 | ||
|
|
4ba8eaf4b4 | ||
|
|
bfd3ce2fca | ||
|
|
86d5d13ce6 | ||
|
|
8f230bc2e6 | ||
|
|
6d0ad62632 | ||
|
|
c165131c3f | ||
|
|
9fde5634f1 | ||
|
|
19b88b7f4a | ||
|
|
60eaff9fcb | ||
|
|
c3adc90f7e | ||
|
|
6f7f418ec1 | ||
|
|
137df132e8 | ||
|
|
b2c51a5b9e | ||
|
|
e99a012bb4 | ||
|
|
75feacb213 | ||
|
|
ce34245aaf | ||
|
|
ef06be63bf | ||
|
|
a1c78a0455 | ||
|
|
32fbacf615 | ||
|
|
75c638e2f8 | ||
|
|
298e4ba852 | ||
|
|
50680a3d9b | ||
|
|
20bfd392ff | ||
|
|
8cc8ffabb0 | ||
|
|
2a20764d39 | ||
|
|
9d6d3a30eb | ||
|
|
b67da4bebe | ||
|
|
8e39ac7efd | ||
|
|
fb497f3410 | ||
|
|
5d1d3fcf57 | ||
|
|
0f40fad74d | ||
|
|
28b5d7230c | ||
|
|
c88bd7cb3f | ||
|
|
30d9978c97 | ||
|
|
f067ab1692 | ||
|
|
bcfa251290 | ||
|
|
f49507cb58 | ||
|
|
606c23d1a4 | ||
|
|
7c0e3baf5f | ||
|
|
6cfbc02d8f | ||
|
|
794cce38f3 | ||
|
|
f20f009b78 | ||
|
|
e216a9cf53 | ||
|
|
7f57324655 | ||
|
|
0186f44bf4 | ||
|
|
6b53c57157 | ||
|
|
5db2c2c2be | ||
|
|
cecbb44a03 | ||
|
|
4a20a1660e | ||
|
|
eddfaedc4d | ||
|
|
e42d3f38cc | ||
|
|
e7f38ec6ce | ||
|
|
a689ccf798 | ||
|
|
7bd8f262db | ||
|
|
98576dacae | ||
|
|
b4642ca9d3 | ||
|
|
9b924c1931 | ||
|
|
de2ba53f08 | ||
|
|
031be41491 | ||
|
|
c671b7059e | ||
|
|
347124812e | ||
|
|
bf95eb50da | ||
|
|
ee9390fecd | ||
|
|
12674d2990 | ||
|
|
35e4b35d12 | ||
|
|
6860c0d60d | ||
|
|
9de32a78f1 | ||
|
|
8d5022c715 | ||
|
|
921be09d8f | ||
|
|
116b05009d | ||
|
|
63499511cb | ||
|
|
413e7dd3c4 | ||
|
|
cba433823f | ||
|
|
90e023f138 | ||
|
|
e6ec3d0c2b | ||
|
|
d60f9c6142 | ||
|
|
a3888811f6 | ||
|
|
30189ae943 | ||
|
|
ec90d169c0 | ||
|
|
3ca0939411 | ||
|
|
34f7b75f12 | ||
|
|
c051ee9409 | ||
|
|
70b438e6d9 | ||
|
|
73028f9930 | ||
|
|
bda18ad29b | ||
|
|
0404ff9fb3 | ||
|
|
47439a7efd | ||
|
|
16111496ca | ||
|
|
43e9403a4c | ||
|
|
7ab90cfc40 | ||
|
|
b3fda76027 | ||
|
|
529e49aea7 | ||
|
|
46c1c9de65 | ||
|
|
cacae42e5e | ||
|
|
f3b688217e | ||
|
|
5e5c6aa7d8 | ||
|
|
88d32d57ab | ||
|
|
1537f1e703 | ||
|
|
30badbf36e | ||
|
|
5a334175a8 | ||
|
|
dcba9eda00 | ||
|
|
633167a6da | ||
|
|
c394868f87 | ||
|
|
2deb7eb3d9 | ||
|
|
d19f4c2e1f | ||
|
|
22f63468a2 | ||
|
|
479639162d | ||
|
|
5b57abc7d8 | ||
|
|
d841dda654 | ||
|
|
4cf933b4fc | ||
|
|
7cd2445a49 | ||
|
|
2f94c92df9 | ||
|
|
39efd0e9ff | ||
|
|
ff80e0ce66 | ||
|
|
65930ddf94 | ||
|
|
4d2015cfed | ||
|
|
2dc1a7d66f | ||
|
|
145971b915 | ||
|
|
43e3d0b4b2 | ||
|
|
0fdb1b3f53 | ||
|
|
24da51ffa0 | ||
|
|
e434812cda | ||
|
|
9a1df0c595 | ||
|
|
44763d3e15 | ||
|
|
9a73a21f3f | ||
|
|
e045b4678d | ||
|
|
d8a03cd8d8 | ||
|
|
270c63d64c | ||
|
|
bbac94cc95 | ||
|
|
9ab8203c8a | ||
|
|
c805606524 | ||
|
|
34d30ed031 | ||
|
|
f3f4610ba4 | ||
|
|
21b77cb4f8 | ||
|
|
dcf3e97291 | ||
|
|
e4313d6651 | ||
|
|
52fbb774a2 | ||
|
|
a0e41a11de | ||
|
|
cab5edb721 | ||
|
|
7a9a102b6f | ||
|
|
6ba561dea2 | ||
|
|
56ba5e5182 | ||
|
|
69d60b5f1c | ||
|
|
850da9dd83 | ||
|
|
502b3d3228 | ||
|
|
c25d14b1d0 | ||
|
|
31fe327763 | ||
|
|
870bcc7a19 | ||
|
|
44f0a63354 | ||
|
|
9fa48a375d | ||
|
|
f2b4aa6570 | ||
|
|
5c06d0aa75 | ||
|
|
4d98761e99 | ||
|
|
180e708f3c | ||
|
|
da4f2c2439 | ||
|
|
33d767b765 | ||
|
|
06581636a1 | ||
|
|
a0fa1709d5 | ||
|
|
699dc1689a | ||
|
|
a427b9228d | ||
|
|
c4ed40b82f | ||
|
|
e68cf87f05 | ||
|
|
fccdeb4e78 | ||
|
|
431860482c | ||
|
|
d554db4f4e | ||
|
|
6c16a09385 | ||
|
|
b35c2bca5d | ||
|
|
852927bf50 | ||
|
|
a5a4ea9ba0 | ||
|
|
45ca5d31c9 | ||
|
|
b14740aeac | ||
|
|
5b0706df65 | ||
|
|
11efd26acc | ||
|
|
006ad23d0d | ||
|
|
9975230dea | ||
|
|
e31c3376bd | ||
|
|
9898901236 | ||
|
|
56c52af124 | ||
|
|
c20a77aa77 | ||
|
|
d6adebe4c0 | ||
|
|
c58aa58cba | ||
|
|
7612d5d0ef | ||
|
|
1874fd7f93 | ||
|
|
0bcc1cf4a0 | ||
|
|
cffcf5783f | ||
|
|
10ee1ab7a2 | ||
|
|
f27f2c20e0 | ||
|
|
d554f4d44a | ||
|
|
d357cdd5f9 | ||
|
|
0f862fcf9f | ||
|
|
6bd56478fd | ||
|
|
76b5ca6b8b | ||
|
|
dbb1b1e9bb | ||
|
|
b5fbfdf106 | ||
|
|
f3f9cfe44e | ||
|
|
dbe79484d2 | ||
|
|
5e610cfdcf | ||
|
|
2c08dc9dad | ||
|
|
15b46259f3 | ||
|
|
d569eaa991 | ||
|
|
64c3845a7c | ||
|
|
79afa0b84d | ||
|
|
38d773ca46 | ||
|
|
9194f60ac0 | ||
|
|
4a217dc42f | ||
|
|
9171b73edb | ||
|
|
0f0de5e4f8 |
101
.appveyor.yml
101
.appveyor.yml
@@ -1,101 +0,0 @@
|
||||
version: '{branch}-{build}'
|
||||
|
||||
# Do not build on tags (GitHub only)
|
||||
skip_tags: true
|
||||
|
||||
image: Visual Studio 2022
|
||||
|
||||
branches:
|
||||
except: # blacklist
|
||||
- coverity_scan
|
||||
|
||||
environment:
|
||||
REPO_DIR: &REPO_DIR c:\qbittorrent
|
||||
CACHE_DIR: &CACHE_DIR c:\qbt_cache
|
||||
|
||||
QBT_VER_URL: https://builds.shiki.hu/appveyor/version_64
|
||||
QBT_LIB_URL: https://builds.shiki.hu/appveyor/qbt_libraries_64.7z
|
||||
|
||||
# project directory
|
||||
clone_folder: *REPO_DIR
|
||||
|
||||
# cache size should < 100MB (after compressing with fastest option):
|
||||
# see: https://www.appveyor.com/docs/build-cache#save-update-cache-before-build-finishes
|
||||
cache:
|
||||
- *CACHE_DIR
|
||||
|
||||
clone_depth: 50
|
||||
|
||||
install:
|
||||
# check if library needs update
|
||||
- appveyor DownloadFile "%QBT_VER_URL%" -FileName "c:\version_new" && SET /P newVersion=<"c:\version_new"
|
||||
- IF EXIST "%CACHE_DIR%\version" (SET /P oldVersion=<"%CACHE_DIR%\version")
|
||||
- IF NOT EXIST "%CACHE_DIR%\version" (SET updateCache=1)
|
||||
- IF NOT "%oldVersion%" == "%newVersion%" (SET updateCache=1)
|
||||
# update library
|
||||
- IF "%updateCache%" == "1" (ECHO "--- Will redownload libraries ---" &&
|
||||
RMDIR /S /Q "%CACHE_DIR%" & MKDIR "%CACHE_DIR%" &&
|
||||
appveyor DownloadFile "%QBT_LIB_URL%" -FileName "c:\qbt_lib.7z" && 7z x "c:\qbt_lib.7z" -o"%CACHE_DIR%" > nul &&
|
||||
COPY "c:\version_new" "%CACHE_DIR%\version")
|
||||
|
||||
before_build:
|
||||
# setup env
|
||||
- CALL "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
|
||||
- SET PATH=%PATH%;C:\Qt\5.15.2\msvc2019_64\bin;%CACHE_DIR%\jom
|
||||
# setup project
|
||||
- COPY /Y "%CACHE_DIR%\conf.pri" "%REPO_DIR%"
|
||||
# workarounds
|
||||
- MKDIR "c:\qbt"
|
||||
- MKLINK /J "c:\qbt\base" "%CACHE_DIR%\base"
|
||||
|
||||
build_script:
|
||||
- cd "%REPO_DIR%"
|
||||
# lupdate chokes when it parses headers from system includes, especially Boost
|
||||
# it also chokes with the sources from src/app/qtlocalpeer (formerly qtsingleapplication)
|
||||
# Workaround: temporarily rename them to run lupdate with the .pro file
|
||||
- RENAME conf.pri conf.pri.temp
|
||||
- RENAME src\app\qtlocalpeer qtlocalpeer.temp
|
||||
- lupdate qbittorrent.pro
|
||||
- RENAME conf.pri.temp conf.pri
|
||||
- RENAME src\app\qtlocalpeer.temp qtlocalpeer
|
||||
- qmake qbittorrent.pro && cd src && qmake src.pro
|
||||
- jom -j2 -f Makefile.Release
|
||||
|
||||
after_build:
|
||||
- cd "%REPO_DIR%"
|
||||
- MKDIR upload
|
||||
- COPY dist\windows\qt.conf upload
|
||||
- COPY src\release\qbittorrent.exe upload
|
||||
- COPY src\release\qbittorrent.pdb upload
|
||||
- COPY "%CACHE_DIR%\base\bin\libcrypto-1_1-x64.dll" upload
|
||||
- COPY "%CACHE_DIR%\base\bin\libcrypto-1_1-x64.pdb" upload
|
||||
- COPY "%CACHE_DIR%\base\bin\libssl-1_1-x64.dll" upload
|
||||
- COPY "%CACHE_DIR%\base\bin\libssl-1_1-x64.pdb" upload
|
||||
- COPY "%CACHE_DIR%\base\bin\torrent-rasterbar.dll" upload
|
||||
- COPY "%CACHE_DIR%\base\bin\torrent-rasterbar.pdb" upload
|
||||
- COPY "%CACHE_DIR%\base\lib\zlib1.dll" upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Core.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Gui.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Network.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Sql.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Svg.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Widgets.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5WinExtras.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Xml.dll upload
|
||||
- MKDIR upload\plugins\iconengines
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\iconengines\qsvgicon.dll upload\plugins\iconengines
|
||||
- MKDIR upload\plugins\imageformats
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\imageformats\qico.dll upload\plugins\imageformats
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\imageformats\qsvg.dll upload\plugins\imageformats
|
||||
- MKDIR upload\plugins\platforms
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\platforms\qwindows.dll upload\plugins\platforms
|
||||
- MKDIR upload\plugins\sqldrivers
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\sqldrivers\qsqlite.dll upload\plugins\sqldrivers
|
||||
- MKDIR upload\plugins\styles
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\styles\qwindowsvistastyle.dll upload\plugins\styles
|
||||
|
||||
test: off
|
||||
|
||||
artifacts:
|
||||
- path: upload
|
||||
name: qBittorrent-Appveyor_Windows-x64
|
||||
@@ -35,7 +35,6 @@ Checks: >
|
||||
-modernize-use-auto,
|
||||
-modernize-use-nodiscard,
|
||||
-modernize-use-trailing-return-type,
|
||||
-modernize-use-using,
|
||||
-readability-function-cognitive-complexity,
|
||||
-readability-function-size,
|
||||
-readability-identifier-length,
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
# EditorConfig is awesome: http://EditorConfig.org
|
||||
# EditorConfig is awesome: https://EditorConfig.org
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
insert_final_newline = true
|
||||
|
||||
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -6,4 +6,5 @@ core.eol=lf
|
||||
*.qm binary
|
||||
*.zip binary
|
||||
|
||||
dist/windows/license.txt text eol=crlf
|
||||
test/testdata/crlf.txt text eol=crlf
|
||||
|
||||
2
.github/SUPPORT.md
vendored
2
.github/SUPPORT.md
vendored
@@ -9,7 +9,7 @@ For such questions, use one of the following community support resources:
|
||||
|
||||
* The [discussions section][discussions-url]
|
||||
|
||||
* The official forum [official forum][forum-url]
|
||||
* The [official forum][forum-url]
|
||||
|
||||
* The [qBittorrent subreddit][subreddit-url]
|
||||
|
||||
|
||||
15
.github/dependabot.yml
vendored
Normal file
15
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
version: 2
|
||||
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
commit-message:
|
||||
prefix: "GHA CI"
|
||||
groups:
|
||||
github-actions:
|
||||
patterns:
|
||||
- "*"
|
||||
labels:
|
||||
- "CI"
|
||||
schedule:
|
||||
interval: "monthly"
|
||||
25
.github/workflows/ci_file_health.yaml
vendored
25
.github/workflows/ci_file_health.yaml
vendored
@@ -14,12 +14,31 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install tools
|
||||
uses: actions/setup-python@v4
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "*"
|
||||
|
||||
- name: Check files
|
||||
uses: pre-commit/action@v3.0.0
|
||||
uses: pre-commit/action@v3.0.1
|
||||
|
||||
- name: Check doc
|
||||
env:
|
||||
pandoc_path: "${{ github.workspace }}/../pandoc"
|
||||
run: |
|
||||
# install pandoc
|
||||
curl \
|
||||
-L \
|
||||
-o "${{ runner.temp }}/pandoc.tar.gz" \
|
||||
"https://github.com/jgm/pandoc/releases/download/3.1.7/pandoc-3.1.7-linux-amd64.tar.gz"
|
||||
tar -xf "${{ runner.temp }}/pandoc.tar.gz" -C "${{ github.workspace }}/.."
|
||||
mv "${{ github.workspace }}/.."/pandoc-* "${{ env.pandoc_path }}"
|
||||
# run pandoc
|
||||
for lang in doc/*/; do
|
||||
"${{ env.pandoc_path }}/bin/pandoc" -f markdown -t man -s "$lang/qbittorrent.1.md" -o "$lang/qbittorrent.1"
|
||||
"${{ env.pandoc_path }}/bin/pandoc" -f markdown -t man -s "$lang/qbittorrent-nox.1.md" -o "$lang/qbittorrent-nox.1"
|
||||
done
|
||||
# check diff, ignore "Automatically generated by ..." part
|
||||
git diff -I '\.\\".*' --exit-code
|
||||
|
||||
66
.github/workflows/ci_macos.yaml
vendored
66
.github/workflows/ci_macos.yaml
vendored
@@ -17,20 +17,18 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
libt_version: ["2.0.9", "1.2.19"]
|
||||
libt_version: ["2.0.10", "1.2.19"]
|
||||
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
||||
qt_version: ["5.15.2", "6.5.0"]
|
||||
exclude:
|
||||
- libt_version: "1.2.19"
|
||||
qt_version: "6.5.0"
|
||||
qt_version: ["6.5.2"]
|
||||
|
||||
env:
|
||||
boost_path: "${{ github.workspace }}/../boost"
|
||||
openssl_root: /usr/local/opt/openssl@1.1
|
||||
openssl_root: /usr/local/opt/openssl@3
|
||||
libtorrent_path: "${{ github.workspace }}/../libtorrent"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
uses: Wandalen/wretry.action@v1
|
||||
@@ -44,20 +42,29 @@ jobs:
|
||||
brew update > /dev/null
|
||||
brew install \
|
||||
cmake ninja \
|
||||
openssl@1.1 zlib
|
||||
openssl@3 zlib
|
||||
|
||||
- name: Setup ccache
|
||||
uses: Chocobo1/setup-ccache-action@v1
|
||||
with:
|
||||
store_cache: ${{ startsWith(github.ref, 'refs/heads/') }}
|
||||
update_packager_index: false
|
||||
|
||||
- name: Install boost
|
||||
env:
|
||||
BOOST_MAJOR_VERSION: "1"
|
||||
BOOST_MINOR_VERSION: "84"
|
||||
BOOST_PATCH_VERSION: "0"
|
||||
run: |
|
||||
curl \
|
||||
-L \
|
||||
-o "${{ runner.temp }}/boost.tar.bz2" \
|
||||
"https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/boost_1_82_0.tar.bz2"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.bz2" -C "${{ github.workspace }}/.."
|
||||
boost_url="https://boostorg.jfrog.io/artifactory/main/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
set +e
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
|
||||
if [ "$_exitCode" -ne "0" ]; then
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
|
||||
fi
|
||||
mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}"
|
||||
|
||||
- name: Install Qt
|
||||
@@ -66,6 +73,7 @@ jobs:
|
||||
version: ${{ matrix.qt_version }}
|
||||
archives: qtbase qtdeclarative qtsvg qttools
|
||||
# Not sure why Qt made a hard dependency on qtdeclarative, try removing it when Qt > 6.4.0
|
||||
cache: true
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
@@ -73,8 +81,9 @@ jobs:
|
||||
--branch v${{ matrix.libt_version }} \
|
||||
--depth 1 \
|
||||
--recurse-submodules \
|
||||
https://github.com/arvidn/libtorrent.git
|
||||
cd libtorrent
|
||||
https://github.com/arvidn/libtorrent.git \
|
||||
${{ env.libtorrent_path }}
|
||||
cd ${{ env.libtorrent_path }}
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
@@ -88,8 +97,7 @@ jobs:
|
||||
cmake --build build
|
||||
sudo cmake --install build
|
||||
|
||||
- name: Build qBittorrent (Qt5)
|
||||
if: startsWith(matrix.qt_version, 5)
|
||||
- name: Build qBittorrent
|
||||
run: |
|
||||
CXXFLAGS="$CXXFLAGS -Werror -Wno-error=deprecated-declarations" \
|
||||
LDFLAGS="$LDFLAGS -gz" \
|
||||
@@ -107,26 +115,6 @@ jobs:
|
||||
cmake --build build
|
||||
cmake --build build --target check
|
||||
|
||||
- name: Build qBittorrent (Qt6)
|
||||
if: startsWith(matrix.qt_version, 6)
|
||||
run: |
|
||||
CXXFLAGS="$CXXFLAGS -Wno-gnu-zero-variadic-macro-arguments -Werror -Wno-error=deprecated-declarations" \
|
||||
LDFLAGS="$LDFLAGS -gz" \
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \
|
||||
-DQT6=ON \
|
||||
-DTESTING=ON \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
-D${{ matrix.qbt_gui }}
|
||||
cmake --build build --target qbt_update_translations
|
||||
cmake --build build
|
||||
cmake --build build --target check
|
||||
|
||||
- name: Prepare build artifacts
|
||||
run: |
|
||||
# create .dmg
|
||||
@@ -143,10 +131,10 @@ jobs:
|
||||
mkdir upload/cmake
|
||||
cp build/compile_commands.json upload/cmake
|
||||
mkdir upload/cmake/libtorrent
|
||||
cp libtorrent/build/compile_commands.json upload/cmake/libtorrent
|
||||
cp ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: qBittorrent-CI_macOS_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
|
||||
path: upload
|
||||
|
||||
118
.github/workflows/ci_ubuntu.yaml
vendored
118
.github/workflows/ci_ubuntu.yaml
vendored
@@ -18,36 +18,57 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
libt_version: ["2.0.9", "1.2.19"]
|
||||
libt_version: ["2.0.10", "1.2.19"]
|
||||
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
||||
qt_version: ["5.15.2", "6.2.0"]
|
||||
exclude:
|
||||
- libt_version: "1.2.19"
|
||||
qt_version: "6.2.0"
|
||||
qt_version: ["6.5.2"]
|
||||
|
||||
env:
|
||||
boost_path: "${{ github.workspace }}/../boost"
|
||||
harden_flags: "-D_FORTIFY_SOURCE=2 -D_GLIBCXX_ASSERTIONS"
|
||||
libtorrent_path: "${{ github.workspace }}/../libtorrent"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install \
|
||||
build-essential cmake ninja-build pkg-config \
|
||||
libboost-dev libssl-dev libxkbcommon-x11-dev zlib1g-dev
|
||||
build-essential cmake ninja-build \
|
||||
libssl-dev libxkbcommon-x11-dev libxcb-cursor-dev zlib1g-dev
|
||||
|
||||
- name: Setup ccache
|
||||
uses: Chocobo1/setup-ccache-action@v1
|
||||
with:
|
||||
store_cache: ${{ startsWith(github.ref, 'refs/heads/') }}
|
||||
update_packager_index: false
|
||||
ccache_options: |
|
||||
max_size=2G
|
||||
|
||||
- name: Install boost
|
||||
env:
|
||||
BOOST_MAJOR_VERSION: "1"
|
||||
BOOST_MINOR_VERSION: "76"
|
||||
BOOST_PATCH_VERSION: "0"
|
||||
run: |
|
||||
boost_url="https://boostorg.jfrog.io/artifactory/main/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
set +e
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
|
||||
if [ "$_exitCode" -ne "0" ]; then
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
|
||||
fi
|
||||
mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}"
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: ${{ matrix.qt_version }}
|
||||
archives: icu qtbase qtsvg qttools
|
||||
archives: icu qtbase qtdeclarative qtsvg qttools
|
||||
cache: true
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
@@ -55,36 +76,39 @@ jobs:
|
||||
--branch v${{ matrix.libt_version }} \
|
||||
--depth 1 \
|
||||
--recurse-submodules \
|
||||
https://github.com/arvidn/libtorrent.git
|
||||
cd libtorrent
|
||||
https://github.com/arvidn/libtorrent.git \
|
||||
${{ env.libtorrent_path }}
|
||||
cd ${{ env.libtorrent_path }}
|
||||
CXXFLAGS="$CXXFLAGS ${{ env.harden_flags }}" \
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-Ddeprecated-functions=OFF
|
||||
cmake --build build
|
||||
sudo cmake --install build
|
||||
|
||||
# to avoid scanning 3rdparty codebases, initialize it just before building qbt
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
if: startsWith(matrix.libt_version, 2) && (matrix.qbt_gui == 'GUI=ON') && startsWith(matrix.qt_version, 6)
|
||||
uses: github/codeql-action/init@v3
|
||||
if: startsWith(matrix.libt_version, 2) && (matrix.qbt_gui == 'GUI=ON')
|
||||
with:
|
||||
config-file: ./.github/workflows/helper/codeql/cpp.yaml
|
||||
languages: cpp
|
||||
|
||||
- name: Build qBittorrent (Qt5)
|
||||
if: startsWith(matrix.qt_version, 5)
|
||||
- name: Build qBittorrent
|
||||
run: |
|
||||
CXXFLAGS="$CXXFLAGS -Werror -Wno-error=deprecated-declarations" \
|
||||
CXXFLAGS="$CXXFLAGS ${{ env.harden_flags }} -Werror" \
|
||||
LDFLAGS="$LDFLAGS -gz" \
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-DCMAKE_INSTALL_PREFIX="/usr" \
|
||||
-DTESTING=ON \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
@@ -94,29 +118,9 @@ jobs:
|
||||
cmake --build build --target check
|
||||
DESTDIR="qbittorrent" cmake --install build
|
||||
|
||||
- name: Build qBittorrent (Qt6)
|
||||
if: startsWith(matrix.qt_version, 6)
|
||||
run: |
|
||||
CXXFLAGS="$CXXFLAGS -Werror" \
|
||||
LDFLAGS="$LDFLAGS -gz" \
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DCMAKE_INSTALL_PREFIX="/usr" \
|
||||
-DQT6=ON \
|
||||
-DTESTING=ON \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
-D${{ matrix.qbt_gui }}
|
||||
cmake --build build --target qbt_update_translations
|
||||
cmake --build build
|
||||
cmake --build build --target check
|
||||
DESTDIR="qbittorrent" cmake --install build
|
||||
|
||||
- name: Run CodeQL analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
if: startsWith(matrix.libt_version, 2) && (matrix.qbt_gui == 'GUI=ON') && startsWith(matrix.qt_version, 6)
|
||||
uses: github/codeql-action/analyze@v3
|
||||
if: startsWith(matrix.libt_version, 2) && (matrix.qbt_gui == 'GUI=ON')
|
||||
with:
|
||||
category: ${{ github.base_ref || github.ref_name }}
|
||||
|
||||
@@ -126,37 +130,41 @@ jobs:
|
||||
mkdir upload/cmake
|
||||
cp build/compile_commands.json upload/cmake
|
||||
mkdir upload/cmake/libtorrent
|
||||
cp libtorrent/build/compile_commands.json upload/cmake/libtorrent
|
||||
cp ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent
|
||||
|
||||
- name: 'AppImage: Prepare env'
|
||||
- name: Install AppImage
|
||||
run: |
|
||||
sudo apt install libfuse2
|
||||
wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
|
||||
wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
|
||||
wget https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous/linuxdeploy-plugin-appimage-x86_64.AppImage
|
||||
chmod +x linuxdeploy-x86_64.AppImage
|
||||
chmod +x linuxdeploy-plugin-qt-x86_64.AppImage
|
||||
chmod +x linuxdeploy-plugin-appimage-x86_64.AppImage
|
||||
curl \
|
||||
-L \
|
||||
-Z \
|
||||
-O https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage \
|
||||
-O https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage \
|
||||
-O https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous/linuxdeploy-plugin-appimage-x86_64.AppImage
|
||||
chmod +x \
|
||||
linuxdeploy-x86_64.AppImage \
|
||||
linuxdeploy-plugin-qt-x86_64.AppImage \
|
||||
linuxdeploy-plugin-appimage-x86_64.AppImage
|
||||
|
||||
- name: 'AppImage: Prepare nox'
|
||||
- name: Prepare files for AppImage
|
||||
if: matrix.qbt_gui == 'GUI=OFF'
|
||||
run: |
|
||||
mkdir -p qbittorrent/usr/share/icons/hicolor/scalable/apps/
|
||||
mkdir -p qbittorrent/usr/share/applications/
|
||||
cp dist/unix/menuicons/scalable/apps/qbittorrent.svg qbittorrent/usr/share/icons/hicolor/scalable/apps/qbittorrent.svg
|
||||
mkdir -p qbittorrent/usr/share/applications
|
||||
cp .github/workflows/helper/appimage/org.qbittorrent.qBittorrent.desktop qbittorrent/usr/share/applications/org.qbittorrent.qBittorrent.desktop
|
||||
mkdir -p qbittorrent/usr/share/icons/hicolor/scalable/apps
|
||||
cp dist/unix/menuicons/scalable/apps/qbittorrent.svg qbittorrent/usr/share/icons/hicolor/scalable/apps/qbittorrent.svg
|
||||
|
||||
- name: 'AppImage: Package'
|
||||
- name: Package AppImage
|
||||
run: |
|
||||
./linuxdeploy-x86_64.AppImage --appdir=qbittorrent --plugin qt
|
||||
./linuxdeploy-x86_64.AppImage --appdir qbittorrent --plugin qt
|
||||
rm qbittorrent/apprun-hooks/*
|
||||
cp .github/workflows/helper/appimage/export_vars.sh qbittorrent/apprun-hooks/export_vars.sh
|
||||
NO_APPSTREAM=1 \
|
||||
OUTPUT=upload/qbittorrent-CI_Ubuntu_x86_64.AppImage \
|
||||
./linuxdeploy-x86_64.AppImage --appdir=qbittorrent --output appimage
|
||||
OUTPUT=upload/qbittorrent-CI_Ubuntu_x86_64.AppImage \
|
||||
./linuxdeploy-x86_64.AppImage --appdir qbittorrent --output appimage
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: qBittorrent-CI_Ubuntu-x64_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
|
||||
path: upload
|
||||
|
||||
8
.github/workflows/ci_webui.yaml
vendored
8
.github/workflows/ci_webui.yaml
vendored
@@ -20,10 +20,10 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup nodejs
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 'lts/*'
|
||||
|
||||
@@ -39,10 +39,10 @@ jobs:
|
||||
git diff --exit-code
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
uses: github/codeql-action/init@v3
|
||||
with:
|
||||
config-file: ./.github/workflows/helper/codeql/js.yaml
|
||||
languages: javascript
|
||||
|
||||
- name: Run CodeQL analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
uses: github/codeql-action/analyze@v3
|
||||
|
||||
172
.github/workflows/ci_windows.yaml
vendored
172
.github/workflows/ci_windows.yaml
vendored
@@ -17,70 +17,87 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
libt_version: ["2.0.9", "1.2.19"]
|
||||
libt_version: ["2.0.10", "1.2.19"]
|
||||
|
||||
env:
|
||||
boost_path: "${{ github.workspace }}/../boost"
|
||||
libtorrent_path: "${{ github.workspace }}/libtorrent"
|
||||
libtorrent_path: "${{ github.workspace }}/../libtorrent"
|
||||
vcpkg_path: "c:/vcpkg"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup devcmd
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
|
||||
- name: Install build tools
|
||||
run: |
|
||||
choco install ninja
|
||||
if ((Get-Command "ninja.exe" -ErrorAction SilentlyContinue) -eq $null)
|
||||
{
|
||||
choco install ninja
|
||||
}
|
||||
where.exe ninja
|
||||
ninja --version
|
||||
|
||||
# use the preinstalled vcpkg from image
|
||||
# https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md#package-management
|
||||
- name: Setup vcpkg
|
||||
uses: lukka/run-vcpkg@v10
|
||||
# https://learn.microsoft.com/en-us/vcpkg/users/binarycaching#gha
|
||||
- name: Set variables for vcpkg
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
vcpkgDirectory: C:/vcpkg
|
||||
doNotUpdateVcpkg: true # the preinstalled vcpkg is updated regularly
|
||||
script: |
|
||||
core.exportVariable('ACTIONS_CACHE_URL', (process.env.ACTIONS_CACHE_URL || ''));
|
||||
core.exportVariable('ACTIONS_RUNTIME_TOKEN', (process.env.ACTIONS_RUNTIME_TOKEN || ''));
|
||||
|
||||
- name: Install dependencies from vcpkg
|
||||
- name: Install dependencies with vcpkg
|
||||
run: |
|
||||
# tell vcpkg to only build Release variants of the dependencies
|
||||
# create our own triplet
|
||||
New-Item `
|
||||
-Path "${{ github.workspace }}" `
|
||||
-Name "triplets_overlay" `
|
||||
-ItemType Directory
|
||||
Copy-Item `
|
||||
"${{ env.RUNVCPKG_VCPKG_ROOT }}/triplets/x64-windows-static.cmake" `
|
||||
"${{ github.workspace }}/triplets_overlay/x64-windows-static-release.cmake"
|
||||
-Force `
|
||||
-ItemType File `
|
||||
-Path "${{ env.vcpkg_path }}/triplets_overlay/x64-windows-static-md-release.cmake"
|
||||
# OpenSSL isn't compatible with `/guard:cf` flag so we omit it for now, see: https://github.com/openssl/openssl/issues/22554
|
||||
Add-Content `
|
||||
"${{ github.workspace }}/triplets_overlay/x64-windows-static-release.cmake" `
|
||||
-Value "set(VCPKG_BUILD_TYPE release)"
|
||||
-Path "${{ env.vcpkg_path }}/triplets_overlay/x64-windows-static-md-release.cmake" `
|
||||
-Value @("set(VCPKG_TARGET_ARCHITECTURE x64)",
|
||||
"set(VCPKG_LIBRARY_LINKAGE static)",
|
||||
"set(VCPKG_CRT_LINKAGE dynamic)",
|
||||
"set(VCPKG_BUILD_TYPE release)")
|
||||
# clear buildtrees after each package installation to reduce disk space requirements
|
||||
$packages = `
|
||||
"openssl:x64-windows-static-release",
|
||||
"zlib:x64-windows-static-release"
|
||||
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe upgrade `
|
||||
--overlay-triplets="${{ github.workspace }}/triplets_overlay" `
|
||||
--no-dry-run
|
||||
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe install `
|
||||
--overlay-triplets="${{ github.workspace }}/triplets_overlay" `
|
||||
"openssl:x64-windows-static-md-release",
|
||||
"zlib:x64-windows-static-md-release"
|
||||
${{ env.vcpkg_path }}/vcpkg.exe upgrade `
|
||||
--no-dry-run `
|
||||
--overlay-triplets="${{ env.vcpkg_path }}/triplets_overlay"
|
||||
${{ env.vcpkg_path }}/vcpkg.exe install `
|
||||
--binarysource="clear;x-gha,readwrite" `
|
||||
--clean-after-build `
|
||||
--overlay-triplets="${{ env.vcpkg_path }}/triplets_overlay" `
|
||||
$packages
|
||||
|
||||
- name: Install boost
|
||||
env:
|
||||
BOOST_MAJOR_VERSION: "1"
|
||||
BOOST_MINOR_VERSION: "84"
|
||||
BOOST_PATCH_VERSION: "0"
|
||||
run: |
|
||||
aria2c `
|
||||
"https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/boost_1_82_0.7z" `
|
||||
-d "${{ runner.temp }}" `
|
||||
-o "boost.7z"
|
||||
7z x "${{ runner.temp }}/boost.7z" -o"${{ github.workspace }}/.."
|
||||
$boost_url="https://boostorg.jfrog.io/artifactory/main/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
$boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."
|
||||
if ($LastExitCode -ne 0)
|
||||
{
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."
|
||||
}
|
||||
move "${{ github.workspace }}/../boost_*" "${{ env.boost_path }}"
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: "6.5.0"
|
||||
version: "6.5.2"
|
||||
archives: qtbase qtsvg qttools
|
||||
cache: true
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
@@ -88,39 +105,40 @@ jobs:
|
||||
--branch v${{ matrix.libt_version }} `
|
||||
--depth 1 `
|
||||
--recurse-submodules `
|
||||
https://github.com/arvidn/libtorrent.git
|
||||
cd libtorrent
|
||||
https://github.com/arvidn/libtorrent.git `
|
||||
${{ env.libtorrent_path }}
|
||||
cd ${{ env.libtorrent_path }}
|
||||
$env:CXXFLAGS+=" /guard:cf"
|
||||
$env:LDFLAGS+=" /guard:cf"
|
||||
cmake `
|
||||
-B build `
|
||||
-G "Ninja" `
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
|
||||
-DCMAKE_CXX_FLAGS=/guard:cf `
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON `
|
||||
-DCMAKE_INSTALL_PREFIX="${{ env.libtorrent_path }}" `
|
||||
-DCMAKE_TOOLCHAIN_FILE="${{ env.RUNVCPKG_VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake" `
|
||||
-DCMAKE_INSTALL_PREFIX="${{ env.libtorrent_path }}/install" `
|
||||
-DCMAKE_TOOLCHAIN_FILE="${{ env.vcpkg_path }}/scripts/buildsystems/vcpkg.cmake" `
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" `
|
||||
-DBUILD_SHARED_LIBS=OFF `
|
||||
-Ddeprecated-functions=OFF `
|
||||
-Dstatic_runtime=ON `
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-release
|
||||
-Dstatic_runtime=OFF `
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release
|
||||
cmake --build build
|
||||
cmake --install build
|
||||
|
||||
- name: Build qBittorrent
|
||||
run: |
|
||||
$env:CXXFLAGS+=" /WX"
|
||||
cmake `
|
||||
-B build `
|
||||
-G "Ninja" `
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
|
||||
-DCMAKE_CXX_FLAGS="/WX" `
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON `
|
||||
-DCMAKE_TOOLCHAIN_FILE="${{ env.RUNVCPKG_VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake" `
|
||||
-DCMAKE_TOOLCHAIN_FILE="${{ env.vcpkg_path }}/scripts/buildsystems/vcpkg.cmake" `
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" `
|
||||
-DLibtorrentRasterbar_DIR="${{ env.libtorrent_path }}/lib/cmake/LibtorrentRasterbar" `
|
||||
-DMSVC_RUNTIME_DYNAMIC=OFF `
|
||||
-DQT6=ON `
|
||||
-DLibtorrentRasterbar_DIR="${{ env.libtorrent_path }}/install/lib/cmake/LibtorrentRasterbar" `
|
||||
-DMSVC_RUNTIME_DYNAMIC=ON `
|
||||
-DTESTING=ON `
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-release `
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release `
|
||||
-DVERBOSE_CONFIGURE=ON `
|
||||
--graphviz=build/target_graph.dot
|
||||
cmake --build build --target qbt_update_translations
|
||||
@@ -130,39 +148,51 @@ jobs:
|
||||
- name: Prepare build artifacts
|
||||
run: |
|
||||
mkdir upload
|
||||
copy build/qbittorrent.exe upload
|
||||
copy build/qbittorrent.pdb upload
|
||||
copy dist/windows/qt.conf upload
|
||||
mkdir upload/qBittorrent
|
||||
copy build/qbittorrent.exe upload/qBittorrent
|
||||
copy build/qbittorrent.pdb upload/qBittorrent
|
||||
copy dist/windows/qt.conf upload/qBittorrent
|
||||
# runtimes
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Core.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Gui.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Network.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Sql.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Svg.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Widgets.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Xml.dll" upload
|
||||
mkdir upload/plugins/iconengines
|
||||
copy "${{ env.Qt6_DIR }}/plugins/iconengines/qsvgicon.dll" upload/plugins/iconengines
|
||||
mkdir upload/plugins/imageformats
|
||||
copy "${{ env.Qt6_DIR }}/plugins/imageformats/qico.dll" upload/plugins/imageformats
|
||||
copy "${{ env.Qt6_DIR }}/plugins/imageformats/qsvg.dll" upload/plugins/imageformats
|
||||
mkdir upload/plugins/platforms
|
||||
copy "${{ env.Qt6_DIR }}/plugins/platforms/qwindows.dll" upload/plugins/platforms
|
||||
mkdir upload/plugins/sqldrivers
|
||||
copy "${{ env.Qt6_DIR }}/plugins/sqldrivers/qsqlite.dll" upload/plugins/sqldrivers
|
||||
mkdir upload/plugins/styles
|
||||
copy "${{ env.Qt6_DIR }}/plugins/styles/qwindowsvistastyle.dll" upload/plugins/styles
|
||||
mkdir upload/plugins/tls
|
||||
copy "${{ env.Qt6_DIR }}/plugins/tls/qschannelbackend.dll" upload/plugins/tls
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Core.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Gui.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Network.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Sql.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Svg.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Widgets.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Xml.dll" upload/qBittorrent
|
||||
mkdir upload/qBittorrent/plugins/iconengines
|
||||
copy "${{ env.Qt6_DIR }}/plugins/iconengines/qsvgicon.dll" upload/qBittorrent/plugins/iconengines
|
||||
mkdir upload/qBittorrent/plugins/imageformats
|
||||
copy "${{ env.Qt6_DIR }}/plugins/imageformats/qico.dll" upload/qBittorrent/plugins/imageformats
|
||||
copy "${{ env.Qt6_DIR }}/plugins/imageformats/qsvg.dll" upload/qBittorrent/plugins/imageformats
|
||||
mkdir upload/qBittorrent/plugins/platforms
|
||||
copy "${{ env.Qt6_DIR }}/plugins/platforms/qwindows.dll" upload/qBittorrent/plugins/platforms
|
||||
mkdir upload/qBittorrent/plugins/sqldrivers
|
||||
copy "${{ env.Qt6_DIR }}/plugins/sqldrivers/qsqlite.dll" upload/qBittorrent/plugins/sqldrivers
|
||||
mkdir upload/qBittorrent/plugins/styles
|
||||
copy "${{ env.Qt6_DIR }}/plugins/styles/qwindowsvistastyle.dll" upload/qBittorrent/plugins/styles
|
||||
mkdir upload/qBittorrent/plugins/tls
|
||||
copy "${{ env.Qt6_DIR }}/plugins/tls/qschannelbackend.dll" upload/qBittorrent/plugins/tls
|
||||
# cmake additionals
|
||||
mkdir upload/cmake
|
||||
copy build/compile_commands.json upload/cmake
|
||||
copy build/target_graph.dot upload/cmake
|
||||
mkdir upload/cmake/libtorrent
|
||||
copy libtorrent/build/compile_commands.json upload/cmake/libtorrent
|
||||
copy ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: qBittorrent-CI_Windows-x64_libtorrent-${{ matrix.libt_version }}
|
||||
path: upload
|
||||
|
||||
- name: Create installer
|
||||
run: |
|
||||
7z x -o"dist/windows/" "dist/windows/NSISPlugins.zip"
|
||||
makensis /DQBT_DIST_DIR="../../upload/qBittorrent" /WX dist/windows/qbittorrent.nsi
|
||||
|
||||
- name: Upload installer
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: qBittorrent-CI_Windows-x64_libtorrent-${{ matrix.libt_version }}-setup
|
||||
path: dist/windows/qbittorrent_*_setup.exe
|
||||
|
||||
76
.github/workflows/coverity-scan.yaml
vendored
76
.github/workflows/coverity-scan.yaml
vendored
@@ -12,48 +12,82 @@ jobs:
|
||||
name: Scan
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
libt_version: ["2.0.10"]
|
||||
qbt_gui: ["GUI=ON"]
|
||||
qt_version: ["6.5.2"]
|
||||
|
||||
env:
|
||||
boost_path: "${{ github.workspace }}/../boost"
|
||||
coverity_path: "${{ github.workspace }}/../coverity"
|
||||
libtorrent_path: "${{ github.workspace }}/../libtorrent"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install \
|
||||
build-essential cmake ninja-build pkg-config \
|
||||
libboost-dev libssl-dev zlib1g-dev
|
||||
build-essential cmake ninja-build \
|
||||
libssl-dev libxkbcommon-x11-dev libxcb-cursor-dev zlib1g-dev
|
||||
|
||||
- name: Install boost
|
||||
env:
|
||||
BOOST_MAJOR_VERSION: "1"
|
||||
BOOST_MINOR_VERSION: "84"
|
||||
BOOST_PATCH_VERSION: "0"
|
||||
run: |
|
||||
boost_url="https://boostorg.jfrog.io/artifactory/main/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
set +e
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
|
||||
if [ "$_exitCode" -ne "0" ]; then
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
|
||||
fi
|
||||
mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}"
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: "6.5.0"
|
||||
archives: icu qtbase qtsvg qttools
|
||||
version: ${{ matrix.qt_version }}
|
||||
archives: icu qtbase qtdeclarative qtsvg qttools
|
||||
cache: true
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
git clone \
|
||||
--branch "v2.0.9" \
|
||||
--branch v${{ matrix.libt_version }} \
|
||||
--depth 1 \
|
||||
--recurse-submodules \
|
||||
https://github.com/arvidn/libtorrent.git
|
||||
cd libtorrent
|
||||
https://github.com/arvidn/libtorrent.git \
|
||||
${{ env.libtorrent_path }}
|
||||
cd ${{ env.libtorrent_path }}
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-Ddeprecated-functions=OFF
|
||||
cmake --build build
|
||||
sudo cmake --install build
|
||||
|
||||
- name: Download Coverity Build Tool
|
||||
run: |
|
||||
wget \
|
||||
-q \
|
||||
https://scan.coverity.com/download/linux64 \
|
||||
--post-data "token=${{ secrets.COVERITY_SCAN_TOKEN }}&project=qbittorrent%2FqBittorrent" \
|
||||
-O coverity_tool.tgz
|
||||
mkdir coverity_tool
|
||||
tar xzf coverity_tool.tgz --strip 1 -C coverity_tool
|
||||
curl \
|
||||
-L \
|
||||
-d "token=${{ secrets.COVERITY_SCAN_TOKEN }}&project=qbittorrent%2FqBittorrent" \
|
||||
-o "${{ runner.temp }}/coverity_tool.tgz" \
|
||||
"https://scan.coverity.com/download/linux64"
|
||||
mkdir -p ${{ env.coverity_path }}
|
||||
tar \
|
||||
-xf "${{ runner.temp }}/coverity_tool.tgz" \
|
||||
-C "${{ env.coverity_path }}" \
|
||||
--strip-components 1
|
||||
|
||||
- name: Build qBittorrent
|
||||
run: |
|
||||
@@ -61,11 +95,13 @@ jobs:
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DGUI=ON \
|
||||
-DQT6=ON \
|
||||
-DVERBOSE_CONFIGURE=ON
|
||||
export PATH="$(pwd)/coverity_tool/bin:$PATH"
|
||||
cov-build --dir cov-int cmake --build build
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
-D${{ matrix.qbt_gui }}
|
||||
PATH="${{ env.coverity_path }}/bin:$PATH" \
|
||||
cov-build \
|
||||
--dir cov-int \
|
||||
cmake --build build
|
||||
|
||||
- name: Submit the result to Coverity Scan
|
||||
run: |
|
||||
|
||||
2
.github/workflows/stale_bot.yaml
vendored
2
.github/workflows/stale_bot.yaml
vendored
@@ -12,7 +12,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Mark and close stale PRs
|
||||
uses: actions/stale@v8
|
||||
uses: actions/stale@v9
|
||||
with:
|
||||
stale-pr-message: "This PR is stale because it has been 60 days with no activity. This PR will be automatically closed within 7 days if there is no further activity."
|
||||
close-pr-message: "This PR was closed because it has been stalled for some time with no activity."
|
||||
|
||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -1,3 +1,4 @@
|
||||
.vscode/
|
||||
src/gui/geoip/GeoIP.dat
|
||||
src/gui/geoip/GeoIP.dat.gz
|
||||
src/qbittorrent
|
||||
@@ -16,6 +17,7 @@ Makefile*
|
||||
*.o
|
||||
*.pdb
|
||||
*.exe
|
||||
*.dll
|
||||
|
||||
# Generated MOC, resource and UI files
|
||||
moc_*.cpp
|
||||
@@ -23,8 +25,7 @@ moc_*.h
|
||||
qrc_*.cpp
|
||||
ui_*.h
|
||||
*.moc
|
||||
src/lang/qbittorrent_*.qm
|
||||
src/webui/www/translations/webui_*.qm
|
||||
*.qm
|
||||
.DS_Store
|
||||
.qmake.stash
|
||||
src/qbittorrent.app
|
||||
|
||||
@@ -13,7 +13,7 @@ repos:
|
||||
- ts
|
||||
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks.git
|
||||
rev: v4.4.0
|
||||
rev: v4.5.0
|
||||
hooks:
|
||||
- id: check-json
|
||||
name: Check JSON files
|
||||
@@ -35,6 +35,7 @@ repos:
|
||||
(?x)^(
|
||||
src/webui/www/private/css/lib/.* |
|
||||
src/webui/www/private/scripts/lib/.* |
|
||||
dist/windows/license.txt |
|
||||
test/testdata/crlf.txt
|
||||
)$
|
||||
|
||||
@@ -61,12 +62,12 @@ repos:
|
||||
exclude_types:
|
||||
- ts
|
||||
|
||||
- repo: https://github.com/codespell-project/codespell
|
||||
rev: v2.2.5
|
||||
- repo: https://github.com/codespell-project/codespell.git
|
||||
rev: v2.2.6
|
||||
hooks:
|
||||
- id: codespell
|
||||
name: Check spelling (codespell)
|
||||
args: ["--ignore-words-list", "additionals,curren,fo,ket,superseeding,te,ths"]
|
||||
args: ["--ignore-words-list", "additionals,curren,fo,ist,ket,superseeding,te,ths"]
|
||||
exclude: |
|
||||
(?x)^(
|
||||
.*\.desktop |
|
||||
@@ -77,13 +78,17 @@ repos:
|
||||
m4/.* |
|
||||
src/base/3rdparty/.* |
|
||||
src/searchengine/nova3/socks.py |
|
||||
src/webui/www/private/scripts/lib/.*
|
||||
src/webui/www/private/lang/.* |
|
||||
src/webui/www/private/scripts/lib/.* |
|
||||
src/webui/www/public/lang/.* |
|
||||
src/webui/www/public/scripts/lib/.* |
|
||||
src/webui/www/transifex/.*
|
||||
)$
|
||||
exclude_types:
|
||||
- ts
|
||||
|
||||
- repo: https://github.com/crate-ci/typos
|
||||
rev: v1.15.5
|
||||
- repo: https://github.com/crate-ci/typos.git
|
||||
rev: v1.16.18
|
||||
hooks:
|
||||
- id: typos
|
||||
name: Check spelling (typos)
|
||||
@@ -101,7 +106,11 @@ repos:
|
||||
m4/.* |
|
||||
src/base/3rdparty/.* |
|
||||
src/searchengine/nova3/socks.py |
|
||||
src/webui/www/private/scripts/lib/.*
|
||||
src/webui/www/private/lang/.* |
|
||||
src/webui/www/private/scripts/lib/.* |
|
||||
src/webui/www/public/lang/.* |
|
||||
src/webui/www/public/scripts/lib/.* |
|
||||
src/webui/www/transifex/.*
|
||||
)$
|
||||
exclude_types:
|
||||
- svg
|
||||
|
||||
@@ -17,6 +17,14 @@ type = QT
|
||||
minimum_perc = 23
|
||||
lang_map = pt: pt_PT, zh: zh_CN
|
||||
|
||||
[o:sledgehammer999:p:qbittorrent:r:qbittorrent_webui_json]
|
||||
file_filter = src/webui/www/transifex/<lang>.json
|
||||
source_file = src/webui/www/transifex/en.json
|
||||
source_lang = en
|
||||
type = KEYVALUEJSON
|
||||
minimum_perc = 23
|
||||
lang_map = pt: pt_PT, zh: zh_CN
|
||||
|
||||
[o:sledgehammer999:p:qbittorrent:r:qbittorrentdesktop_master]
|
||||
source_file = dist/unix/org.qbittorrent.qBittorrent.desktop
|
||||
source_lang = en
|
||||
|
||||
10
AUTHORS
10
AUTHORS
@@ -53,7 +53,7 @@ Images Authors:
|
||||
|
||||
* file: src/icons/qbittorrent-tray-dark.svg src/icons/qbittorrent-tray-light.svg
|
||||
copyright: Daniel Eguren <deguren@gmail.com>
|
||||
modified by: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im)
|
||||
modified by: now-im <now-im.d8gcu@simplelogin.com> (@now-im)
|
||||
license: LGPL
|
||||
|
||||
* folder: src/icons/
|
||||
@@ -63,7 +63,7 @@ Images Authors:
|
||||
media-seek-forward.svg, network-connect.svg, object-locked.svg, queued.svg, ratio.svg, reannounce.svg, slow_off.svg, slow.svg,
|
||||
speedometer.svg, system-log-out.svg, tags.svg, task-complete.svg, task-reject.svg, tracker-error.svg, tracker-warning.svg,
|
||||
trackerless.svg, trackers.svg, view-categories.svg
|
||||
copyright: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im) modified from La-Capitaine icon theme (https://github.com/keeferrourke/la-capitaine-icon-theme)
|
||||
copyright: now-im <now-im.d8gcu@simplelogin.com> (@now-im) modified from La-Capitaine icon theme (https://github.com/keeferrourke/la-capitaine-icon-theme)
|
||||
license: GPLv3+
|
||||
|
||||
* folder: src/icons/
|
||||
@@ -76,18 +76,18 @@ Images Authors:
|
||||
name.svg, network-server.svg, office-chart-line.svg, plugins.svg, preferences-desktop.svg, preferences-other.svg,
|
||||
preferences-system-network.svg, security-high.svg, security-low.svg, set-location.svg, torrent-creator.svg, user-group-delete.svg,
|
||||
user-group-new.svg, view-preview.svg, view-refresh.svg, view-statistics.svg, wallet-open.svg, webui.svg
|
||||
copyright: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im) modified from Ionicons icon theme (https://github.com/ionic-team/ionicons)
|
||||
copyright: now-im <now-im.d8gcu@simplelogin.com> (@now-im) modified from Ionicons icon theme (https://github.com/ionic-team/ionicons)
|
||||
license: MIT
|
||||
|
||||
* folder: src/icons/
|
||||
files: force-recheck.svg
|
||||
copyright: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im) modified from Font-Awesome icon theme (https://github.com/FortAwesome/Font-Awesome)
|
||||
copyright: now-im <now-im.d8gcu@simplelogin.com> (@now-im) modified from Font-Awesome icon theme (https://github.com/FortAwesome/Font-Awesome)
|
||||
license: CC BY 4.0 License
|
||||
|
||||
* folder: src/icons/
|
||||
files: downloading.svg, edit-clear.svg, error.svg, filter-active.svg, filter-inactive.svg, filter-stalled.svg, kt-set-max-download-speed.svg,
|
||||
kt-set-max-upload-speed.svg, list-add.svg, preferences-web-browser-cookies.svg, stalledDL.svg, stalledUP.svg
|
||||
copyright: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im)
|
||||
copyright: now-im <now-im.d8gcu@simplelogin.com> (@now-im)
|
||||
license: BSD 2-Clause License
|
||||
|
||||
Translations authors:
|
||||
|
||||
@@ -7,15 +7,13 @@ project(qBittorrent
|
||||
)
|
||||
|
||||
# version requirements - older versions may work, but you are on your own
|
||||
set(minBoostVersion 1.71)
|
||||
set(minQt5Version 5.15.2)
|
||||
set(minQt6Version 6.2)
|
||||
set(minOpenSSLVersion 1.1.1)
|
||||
set(minBoostVersion 1.76)
|
||||
set(minQt6Version 6.5.0)
|
||||
set(minOpenSSLVersion 3.0.2)
|
||||
set(minLibtorrent1Version 1.2.19)
|
||||
set(minLibtorrentVersion 2.0.9)
|
||||
set(minZlibVersion 1.2.11)
|
||||
|
||||
include(CheckCXXSourceCompiles) # TODO: migrate to CheckSourceCompiles in CMake >= 3.19
|
||||
include(GNUInstallDirs)
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules)
|
||||
@@ -25,7 +23,6 @@ include(FeatureOptionsSetup)
|
||||
# features, list is loosely sorted by user's interests
|
||||
feature_option(GUI "Build GUI application" ON)
|
||||
feature_option(WEBUI "Enable built-in HTTP server for remote control" ON)
|
||||
feature_option(QT6 "Build with Qt 6 instead of Qt 5" OFF)
|
||||
feature_option(STACKTRACE "Enable stacktrace support" ON)
|
||||
feature_option(TESTING "Build internal testing suite" OFF)
|
||||
feature_option(VERBOSE_CONFIGURE "Show information about PACKAGES_FOUND and PACKAGES_NOT_FOUND in the configure output (only useful for debugging the CMake build scripts)" OFF)
|
||||
|
||||
@@ -276,7 +276,7 @@ struct StructName {};
|
||||
|
||||
enum EnumName {};
|
||||
|
||||
typedef QList<ClassName> SomeList;
|
||||
using SomeList = QList<ClassName>;
|
||||
|
||||
namespace NamespaceName
|
||||
{
|
||||
@@ -318,7 +318,7 @@ The headers should be ordered alphabetically within each group. \
|
||||
If there are conditionals for the same header group, then put them at the bottom of the respective group. \
|
||||
If there are conditionals that contain headers from several different header groups, then put them above the "qBittorrent's own headers" group.
|
||||
|
||||
One exception is the header containing the library version (for example, QtGlobal), this particular header isn't constrained by the aforementioned order.
|
||||
One exception is the header containing the library version (for example, QtVersionChecks), this particular header isn't constrained by the aforementioned order.
|
||||
|
||||
Example:
|
||||
|
||||
@@ -331,7 +331,7 @@ Example:
|
||||
// exceptions, headers containing version number
|
||||
#include <boost/version.hpp>
|
||||
#include <libtorrent/version.hpp>
|
||||
#include <QtGlobal>
|
||||
#include <QtVersionChecks>
|
||||
|
||||
// C++ Standard Library headers
|
||||
#include <cstdio>
|
||||
@@ -342,7 +342,7 @@ Example:
|
||||
|
||||
// System headers
|
||||
#ifdef Q_OS_WIN
|
||||
#include <Windows.h>
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
// Boost library headers
|
||||
|
||||
224
Changelog
224
Changelog
@@ -1,3 +1,89 @@
|
||||
Unreleased - sledgehammer999 <sledgehammer999@qbittorrent.org> - v5.0.0
|
||||
- FEATURE: Support creating .torrent with larger piece size (Chocobo1)
|
||||
- FEATURE: Improve tracker entries handling (glassez)
|
||||
- FEATURE: Add separate filter item for tracker errors (glassez)
|
||||
- FEATURE: Allow to remove tracker from tracker filter widget menu (glassez)
|
||||
- FEATURE: Implement `Reannounce In` column (Hanabishi)
|
||||
- FEATURE: Expose `DHT bootstrap nodes` setting (Chocobo1)
|
||||
- FEATURE: Add support for [Mark-of-the-Web](https://redcanary.com/threat-detection-report/techniques/mark-of-the-web-bypass/) (Chocobo1)
|
||||
- FEATURE: Allow to keep unwanted files in separate folder (glassez)
|
||||
- FEATURE: Add `Copy Comment` to the torrent list's context menu (thalieht)
|
||||
- FEATURE: Allow relative profile paths (Victor Chernyakin)
|
||||
- FEATURE: Enable Ctrl+F hotkey for more inputs (thalieht)
|
||||
- FEATURE: Add seeding limits to RSS and Watched folders options UI (glassez)
|
||||
- FEATURE: Subcategories implicitly follow the parent category options (glassez)
|
||||
- FEATURE: Add support for SSL torrents (Chocobo1, Radu Carpa)
|
||||
- FEATURE: Add option to name each qbittorrent instance (Chocobo1)
|
||||
- FEATURE: Add button for sending test email (Thomas Piccirello)
|
||||
- FEATURE: Allow torrents to override default share limit action (glassez)
|
||||
- BUGFIX: Display error message when unrecoverable error occurred (glassez)
|
||||
- BUGFIX: Update size of selected files when selection is changed (glassez)
|
||||
- BUGFIX: Normalize tags by trimming leading/trailing whitespace (glassez)
|
||||
- BUGFIX: Correctly handle share limits in torrent options dialog (glassez)
|
||||
- WEBUI: Improve WebUI responsiveness (Chocobo1)
|
||||
- WEBUI: Do not exit the app when WebUI has failed to start (Hanabishi)
|
||||
- WEBUI: Add `Moving` filter to side panel (xavier2k6)
|
||||
- WEBUI: Add dark theme (d47081)
|
||||
- WEBUI: Allow to remember torrent content files deletion (David)
|
||||
- WEBUI: Leave the fields empty when value is invalid (Chocobo1)
|
||||
- WEBUI: Use natural sorting (Chocobo1)
|
||||
- WEBUI: Improve WebUI login behavior (JayRet)
|
||||
- WEBAPI: Fix wrong timestamp values (Chocobo1)
|
||||
- WEBAPI: Send binary data with filename and mime type specified (glassez)
|
||||
- WEBAPI: Expose API for the torrent creator (glassez, Radu Carpa)
|
||||
- RSS: Show RSS feed title in HTML browser (Jay)
|
||||
- RSS: Allow to set delay between requests to the same host (jNullj)
|
||||
- SEARCH: Allow users to specify Python executable path (Chocobo1)
|
||||
- WINDOWS: Use Fusion style on Windows 10+. It has better compatibility with dark mode (glassez)
|
||||
- WINDOWS: Allow to set qBittorrent as default program (glassez)
|
||||
- LINUX: Add support for systemd power management (Chocobo1)
|
||||
- LINUX: Add support for localized man pages (Victor Chernyakin)
|
||||
- LINUX: Specify a locale if none is set (Chocobo1)
|
||||
- MACOS: Display download/upload speed in dock icon (Nick Korotysh)
|
||||
- MACOS: Add support for quarantine on macOS (Chocobo1)
|
||||
- OTHER: Drop support for Qt5, qmake, autotools, Windows < 10, Windows 32-bit
|
||||
- OTHER: Minimum supported versions: Qt: 6.5, Boost: 1.76, OpenSSL: 3.0.2
|
||||
- OTHER: Switch to C++20
|
||||
|
||||
Mon Jan 15th 2024 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.6.3
|
||||
- BUGFIX: Correctly update number of filtered items (glassez)
|
||||
- BUGFIX: Don't forget to store Stop condition value (glassez)
|
||||
- BUGFIX: Show correctly decoded filename in log (glassez)
|
||||
- BUGFIX: Specify a locale if none is set (Chocobo1)
|
||||
- BUGFIX: Apply inactive seeding time limit set on new torrents (glassez)
|
||||
- BUGFIX: Show URL seeds for torrents that have no metadata (glassez)
|
||||
- BUGFIX: Don't get stuck loading on mismatched info-hashes in resume data (glassez)
|
||||
|
||||
Mon Nov 27th 2023 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.6.2
|
||||
- BUGFIX: Do not apply share limit if the previous one was applied (glassez)
|
||||
- BUGFIX: Show Add new torrent dialog on main window screen (glassez)
|
||||
- WEBUI: Fix JS memory leak (brvphoenix)
|
||||
- WEBUI: Disable stdout buffering for qbt-nox (Chocobo1)
|
||||
- WINDOWS: NSIS: Display correct Minimum Windows OS requirement (xavier2k6)
|
||||
- WINDOWS: NSIS: Add Hebrew translation (avivmu)
|
||||
- LINUX: WAYLAND: Fix parent widget of "Lock qBittorrent" submenu (Vlad Zahorodnii)
|
||||
|
||||
Mon Nov 20th 2023 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.6.1
|
||||
- FEATURE: Add option to enable previous Add new torrent dialog behavior (glassez)
|
||||
- BUGFIX: Prevent crash due to race condition when adding magnet link (glassez)
|
||||
- BUGFIX: Fix Enter key behavior when add new torrent (glassez)
|
||||
- BUGFIX: Add missing main window icon (iomezk)
|
||||
- BUGFIX: Update size of selected files when selection is changed (glassez)
|
||||
- BUGFIX: Correctly handle changing save path of torrent w/o metadata (glassez)
|
||||
- BUGFIX: Use appropriate icon for "moving" torrents in transfer list (xavier2k6)
|
||||
- WEBUI: Drop WebUI default credentials (glassez)
|
||||
- WEBUI: Add I2P settings to WebUI (thalieht)
|
||||
- WEBUI: Fix duplicate scrollbar on Transfer List (AgentConDier)
|
||||
- WEBUI: Fix .torrent file upload on iPadOS (Vitaly Cheptsov)
|
||||
- WEBUI: Fix incorrect subcategory sorting (Bartu Özen)
|
||||
- WEBUI: Correctly set save path in RSS rules (glassez)
|
||||
- WEBUI: Allow to request torrents count via WebAPI (glassez)
|
||||
- WEBUI: Improve performance of getting torrent numbers via WebAPI (Chocobo1)
|
||||
- WEBUI: Improve free disk space checking for WebAPI (glassez)
|
||||
- WINDOWS: NSIS: Fixed typo in the installer's hungarian translation (MartinKing01)
|
||||
- LINUX: Fix invisible tray icon with Qt5 in Linux (thalieht)
|
||||
- MACOS: Remove "Physical memory (RAM) usage limit" option (Chocobo1)
|
||||
|
||||
Sun Oct 22nd 2023 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.6.0
|
||||
- FEATURE: Add (experimental) I2P support (glassez)
|
||||
- FEATURE: Provide UI editor for the default theme (glassez)
|
||||
@@ -59,7 +145,79 @@ Sun Oct 22nd 2023 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.6.0
|
||||
- OTHER: Enable DBUS cmake option on FreeBSD (yuri@FreeBSD)
|
||||
- OTHER: Numerous code improvements and refactorings (glassez, Chocobo1)
|
||||
|
||||
Unreleased - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.5.0
|
||||
Tue Aug 29 2023 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.5.5
|
||||
- BUGFIX: Fix transfer list tab hotkey (thalieht)
|
||||
- BUGFIX: Don't forget to enable the Apply button in the Options dialog (glassez)
|
||||
- BUGFIX: Immediately update torrent status on moving files (glassez)
|
||||
- BUGFIX: Improve performance when scrolling the file list of large torrents (gdim47)
|
||||
- BUGFIX: Don't operate on random torrents when multiple are selected and a sort/filter is applied (glassez)
|
||||
- RSS: Fix overwriting feeds.json with an incomplete load of it (Omar Abdul Azeez)
|
||||
- WINDOWS: Software update check logic is disabled for < Win10 (sledgehammer999)
|
||||
- WINDOWS: NSIS: Update Turkish and French translations (Burak Yavuz, MarcDrieu)
|
||||
- WINDOWS: NSIS: Add Romanian translation (rusu-afanasie)
|
||||
|
||||
Sun Jun 18 2023 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.5.4
|
||||
- BUGFIX: Allow to disable confirmation of Pause/Resume All (glassez)
|
||||
- BUGFIX: Sync flag icons with upstream (Priit Uring)
|
||||
- WEBUI: Fix category save path (Raymond Ha)
|
||||
|
||||
Sun May 28 2023 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.5.3
|
||||
- BUGFIX: Correctly check if database needs to be updated (glassez)
|
||||
- BUGFIX: Prevent incorrect log message about torrent content deletion (glassez)
|
||||
- BUGFIX: Improve finished torrent handling (glassez)
|
||||
- BUGFIX: Correctly initialize group box children as disabled in Preferences (thalieht)
|
||||
- BUGFIX: Don't miss saving "download path" in SQLite storage (glassez)
|
||||
- BUGFIX: Improve logging of running external program (glassez)
|
||||
- WEBUI: Disable UPnP for web UI by default (glassez)
|
||||
- WEBUI: Use workaround for IOS file picker (DivineHawk)
|
||||
- WEBUI: Work around Chrome download limit (Chocobo1)
|
||||
- WEBUI: Improve 'exporting torrent' behavior (Chocobo1)
|
||||
- WINDOWS: NSIS: Add Slovak translation (Christian Danížek)
|
||||
|
||||
Tue Feb 28 2023 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.5.2
|
||||
- BUGFIX: Don't unexpectedly activate queued torrents when prefetching metadata for added magnets (glassez)
|
||||
- BUGFIX: Update the cached torrent state once recheck is started (glassez)
|
||||
- BUGFIX: Be more likely to allow the system to use power saving modes (glassez)
|
||||
- WEBUI: Migrate away from unsafe function (Chocobo1)
|
||||
- WEBUI: Blacklist bad ciphers for TLS in the server (sledgehammer999)
|
||||
- WEBUI: Allow only TLS 1.2+ in the server (sledgehammer999)
|
||||
- WEBUI: Allow to set read-only directory as torrent location (glassez)
|
||||
- WEBUI: Reject requests that contain backslash in path (glassez)
|
||||
- RSS: Prevent RSS folder from being moved into itself (glassez)
|
||||
- WINDOWS: NSIS: Update Turkish, Uzbek translation (Burak Yavuz, shitcod3r)
|
||||
|
||||
Sun Feb 12 2023 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.5.1
|
||||
- FEATURE: Re-allow to use icons from system theme (glassez)
|
||||
- BUGFIX: Fix Speed limit icon size (Nowshed H. Imran)
|
||||
- BUGFIX: Revise and fix some text colors (Chocobo1, Nowshed H. Imran)
|
||||
- BUGFIX: Correctly load folder based UI theme (glassez)
|
||||
- BUGFIX: Fix crash due to invalid encoding of tracker URLs (glassez)
|
||||
- BUGFIX: Don't drop !qB extension when renaming incomplete file (glassez)
|
||||
- BUGFIX: Correctly count the number of torrents in subcategories (glassez)
|
||||
- BUGFIX: Use "additional trackers" when metadata retrieving (glassez)
|
||||
- BUGFIX: Apply correct tab order to Category options dialog (glassez)
|
||||
- BUGFIX: Add all torrents passed via the command line (glassez)
|
||||
- BUGFIX: Fix startup performance on Qt5 (glassez)
|
||||
- BUGFIX: Automatic move will now overwrite existing files (aka previous behavior) (glassez)
|
||||
- BUGFIX: Some fixes for loading Chinese locales (sledgehammer999)
|
||||
- BUGFIX: New Pause icon color for toolbar/menu (Nowshed H. Imran, sledgehammer999)
|
||||
- BUGFIX: Adjust env variable for PDB discovery (sledgehammer999)
|
||||
- WEBUI: Fix missing "queued" icon (thalieht)
|
||||
- WEBUI: Return paths using platform-independent separator format (glassez)
|
||||
- WEBUI: Change order of accepted types of file input (Jason Carr)
|
||||
- WEBUI: Add missing icons (brvphoenix)
|
||||
- WEBUI: Add "Resume data storage type" option (thalieht)
|
||||
- WEBUI: Make rename file dialog resizable (Torsten Schwarz)
|
||||
- WEBUI: Prevent incorrect line breaking (David Xuang)
|
||||
- WEBUI: Improve hotkeys (Fidel Selva)
|
||||
- WEBUI: Remove suggestions while searching for torrents (Midhun V Nadh)
|
||||
- WEBUI: Expose "IS PRIVATE" flag (sotiris-bos)
|
||||
- WEBUI: Return name/hash/infohash_v1/infohash_v2 torrent properties (qbittorrentfan)
|
||||
- WINDOWS: Correctly detect drive letter in path (glassez)
|
||||
- WINDOWS: NSIS: Update Swedish, Lithuanian translations (Jonatan, Deividas)
|
||||
- LINUX: Fix tray icon issues (glassez)
|
||||
|
||||
Sat Nov 26 2022 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.5.0
|
||||
- FEATURE: Add `Auto resize columns` functionality (Chocobo1)
|
||||
- FEATURE: Allow to use Category paths in `Manual` mode (glassez)
|
||||
- FEATURE: Allow to disable Automatic mode when default "temp" path changed (glassez)
|
||||
@@ -141,6 +299,70 @@ Unreleased - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.5.0
|
||||
- MACOS: Fix wrong background color in properties widget (NotTsunami)
|
||||
- OTHER: Binary distributions of qbittorrent are GPLv3+ licensed (sledgehammer999)
|
||||
|
||||
Tue Aug 30 2022 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.4.5
|
||||
- BUGFIX: Fix missing trackers when adding magnet link. Affects libtorrent 2.0.x builds. (glassez)
|
||||
|
||||
Mon Aug 22 2022 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.4.4
|
||||
- BUGFIX: Correctly handle data decompression with Qt 6.3 (brvphoenix)
|
||||
- BUGFIX: Fix wrong file names displayed in tooltip (Chocobo1)
|
||||
- BUGFIX: Fix incorrect "max outgoing port" setting (glassez)
|
||||
- BUGFIX: Make working set limit available only on libtorrent 2.0.x builds (summer)
|
||||
- BUGFIX: Try to recover missing tags (summer)
|
||||
- RSS: Clear RSS parsing error after use (glassez)
|
||||
- WEBAPI: Set HTTP method restriction on WebAPI actions (Chocobo1)
|
||||
- WINDOWS: Work around application stuttering on Windows (Chocobo1)
|
||||
- WINDOWS: NSIS: Update Portuguese, Italian, Korean, Latvian translations(Blackspirits, bovirus, Minseo Lee, Coool)
|
||||
- LINUX: Improve D-Bus notifications handling (glassez)
|
||||
- MACOS: Open destination folders on macOS in separate thread (Nick Korotysh)
|
||||
|
||||
Tue May 24 2022 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.4.3.1
|
||||
- BUGFIX: Fix broken translations (sledgehammer999)
|
||||
|
||||
Sun May 22 2022 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.4.3
|
||||
- BUGFIX: Correctly handle changing of temp save path (glassez)
|
||||
- BUGFIX: Fix storage in SQLite (glassez)
|
||||
- BUGFIX: Correctly apply content layout when "Skip hash check" is enabled (glassez)
|
||||
- BUGFIX: Don't corrupt IDs of v2 torrents (glassez)
|
||||
- BUGFIX: Reduce the number of hashing threads by default (improves hashing speed on HDDs) (summer)
|
||||
- BUGFIX: Prevent the "update dialog" from blocking input on other windows (summer)
|
||||
- BUGFIX: Add trackers in exported .torrent files (glassez)
|
||||
- BUGFIX: Fix wrong GUI behavior in "Optional IP address to bind to" setting (Chocobo1)
|
||||
- WEBUI: Fix WebUI crash due to missing tags from config (An0n)
|
||||
- WEBUI: Show correct location path (Chocobo1)
|
||||
- MACOS: Fix main window freezing after opening a files dialog (glassez)
|
||||
|
||||
Tue Mar 22 2022 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.4.2
|
||||
- FEATURE: Allow to limit max memory working set size (glassez)
|
||||
- BUGFIX: Fix UI crash when torrent is in a non-existent category (Kevin Cox)
|
||||
- BUGFIX: Correctly handle changing of global save paths (glassez)
|
||||
- BUGFIX: Disable performance alert (Chocobo1)
|
||||
- BUGFIX: Prevent loading resume data with inconsistent ID (glassez)
|
||||
- BUGFIX: Properly handle metadata download for an existing torrent (glassez)
|
||||
- BUGFIX: Prevent crash when open torrent destination folder (glassez)
|
||||
- WINDOWS: NSIS: Update Spanish, Spanish International and French translations(Juanjo Jiménez, RqndomHax)
|
||||
|
||||
Tue Feb 15 2022 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.4.1
|
||||
- FEATURE: Restore all torrent settings to the torrent's main context menu (thalieht)
|
||||
- FEATURE: Add confirmation for enabling Auto TMM from context menu (thalieht)
|
||||
- FEATURE: Add tooltip to Automatic Torrent Management context menu action (thalieht)
|
||||
- FEATURE: Add Select All/None buttons in new torrent dialog (thalieht)
|
||||
- BUGFIX: Keep "torrent info" alive while generate .torrent file (glassez)
|
||||
- BUGFIX: Correctly handle Auto TMM in Torrent Files Watcher (glassez)
|
||||
- BUGFIX: Correctly track the root folder name change (glassez)
|
||||
- BUGFIX: Various fixes to the moving torrent code (glassez)
|
||||
- BUGFIX: Update the torrent's download path field when changing category (thalieht)
|
||||
- BUGFIX: Correctly handle received metadata (glassez)
|
||||
- BUGFIX: Store hybrid torrents using legacy filenames (glassez)
|
||||
- BUGFIX: Open correct directory when clicked on Browse button (glassez)
|
||||
- BUGFIX: Fix crash when shutting down and clicing on system tray icon (Chocobo1)
|
||||
- BUGFIX: Fix "Free space on disk" in new torrent dialog (thalieht)
|
||||
- BUGFIX: Optimize completed files handling (Prince Gupta)
|
||||
- BUGFIX: Migrate proxy settings (sledgehammer999)
|
||||
- BUGFIX: Try to recover missing categories (glassez)
|
||||
- WEBUI: WebAPI: fix wrong key used for categories (Chocobo1)
|
||||
- WEBUI: Remove hack for outdated IE 6 browser (Chocobo1)
|
||||
- RSS: Correctly handle XML parsing errors (glassez)
|
||||
|
||||
Thu Jan 06 2022 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.4.0
|
||||
- FEATURE: Support for v2 torrents along with libtorrent 2.0.x support (glassez, Chocobo1)
|
||||
- FEATURE: Support for Qt6 (glassez)
|
||||
|
||||
20
INSTALL
20
INSTALL
@@ -3,20 +3,20 @@ qBittorrent - A BitTorrent client in C++ / Qt
|
||||
|
||||
1) Install these dependencies:
|
||||
|
||||
- Boost >= 1.71
|
||||
- Boost >= 1.76
|
||||
|
||||
- libtorrent-rasterbar 1.2.19 - 1.2.x || 2.0.9 - 2.0.x
|
||||
* By Arvid Norberg, https://www.libtorrent.org/
|
||||
* Be careful: another library (the one used by rTorrent) uses a similar name
|
||||
|
||||
- OpenSSL >= 1.1.1
|
||||
- OpenSSL >= 3.0.2
|
||||
|
||||
- Qt 5.15.2 - 5.x || 6.2.0 - 6.x
|
||||
- Qt 6.5.0 - 6.x
|
||||
|
||||
- zlib >= 1.2.11
|
||||
|
||||
- pkg-config *
|
||||
* Compile-time only on *nix systems
|
||||
- CMake >= 3.16
|
||||
* Compile-time only
|
||||
|
||||
- Python >= 3.7.0
|
||||
* Optional, run-time only
|
||||
@@ -28,16 +28,18 @@ Please ensure you are building with an officially supported configuration when r
|
||||
|
||||
2a) Compile and install qBittorrent with Qt graphical interface
|
||||
|
||||
$ ./configure
|
||||
$ make && make install
|
||||
$ cmake -B build -DCMAKE_BUILD_TYPE=Release
|
||||
$ cmake --build build
|
||||
$ cmake --install build
|
||||
$ qbittorrent
|
||||
|
||||
will install and execute qBittorrent.
|
||||
|
||||
2b) Compile and install qBittorrent without Qt graphical interface
|
||||
|
||||
$ ./configure --disable-gui
|
||||
$ make && make install
|
||||
$ cmake -B build -DCMAKE_BUILD_TYPE=Release -DGUI=OFF
|
||||
$ cmake --build build
|
||||
$ cmake --install build
|
||||
$ qbittorrent-nox
|
||||
|
||||
will install and execute qBittorrent.
|
||||
|
||||
12
README.md
12
README.md
@@ -1,8 +1,7 @@
|
||||
qBittorrent - A BitTorrent client in Qt
|
||||
------------------------------------------
|
||||
|
||||
[](https://ci.appveyor.com/project/qbittorrent/qBittorrent)
|
||||
[](https://github.com/qbittorrent/qBittorrent/actions)
|
||||
[](https://github.com/qbittorrent/qBittorrent/actions)
|
||||
[](https://scan.coverity.com/projects/5494)
|
||||
********************************
|
||||
### Description:
|
||||
@@ -16,15 +15,8 @@ support as well as many features.
|
||||
The free [IP to Country Lite database](https://db-ip.com/db/download/ip-to-country-lite) by [DB-IP](https://db-ip.com/) is used for resolving the countries of peers. The database is licensed under the [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/).
|
||||
|
||||
### Installation:
|
||||
For installation, follow the instructions from INSTALL file, but simple:
|
||||
|
||||
```
|
||||
./configure
|
||||
make && make install
|
||||
qbittorrent
|
||||
```
|
||||
|
||||
will install and execute qBittorrent hopefully without any problem.
|
||||
Refer to the [INSTALL](INSTALL) file.
|
||||
|
||||
### Public key:
|
||||
Starting from v3.3.4 all source tarballs and binaries are signed.<br />
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
aclocal -I m4
|
||||
autoconf
|
||||
File diff suppressed because it is too large
Load Diff
1665
build-aux/config.guess
vendored
1665
build-aux/config.guess
vendored
File diff suppressed because it is too large
Load Diff
1793
build-aux/config.sub
vendored
1793
build-aux/config.sub
vendored
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,215 +0,0 @@
|
||||
#! /bin/sh
|
||||
# Common wrapper for a few potentially missing GNU programs.
|
||||
|
||||
scriptversion=2018-03-07.03; # UTC
|
||||
|
||||
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
|
||||
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
if test $# -eq 0; then
|
||||
echo 1>&2 "Try '$0 --help' for more information"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case $1 in
|
||||
|
||||
--is-lightweight)
|
||||
# Used by our autoconf macros to check whether the available missing
|
||||
# script is modern enough.
|
||||
exit 0
|
||||
;;
|
||||
|
||||
--run)
|
||||
# Back-compat with the calling convention used by older automake.
|
||||
shift
|
||||
;;
|
||||
|
||||
-h|--h|--he|--hel|--help)
|
||||
echo "\
|
||||
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
||||
|
||||
Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
|
||||
to PROGRAM being missing or too old.
|
||||
|
||||
Options:
|
||||
-h, --help display this help and exit
|
||||
-v, --version output version information and exit
|
||||
|
||||
Supported PROGRAM values:
|
||||
aclocal autoconf autoheader autom4te automake makeinfo
|
||||
bison yacc flex lex help2man
|
||||
|
||||
Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
|
||||
'g' are ignored when checking the name.
|
||||
|
||||
Send bug reports to <bug-automake@gnu.org>."
|
||||
exit $?
|
||||
;;
|
||||
|
||||
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
||||
echo "missing $scriptversion (GNU Automake)"
|
||||
exit $?
|
||||
;;
|
||||
|
||||
-*)
|
||||
echo 1>&2 "$0: unknown '$1' option"
|
||||
echo 1>&2 "Try '$0 --help' for more information"
|
||||
exit 1
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
# Run the given program, remember its exit status.
|
||||
"$@"; st=$?
|
||||
|
||||
# If it succeeded, we are done.
|
||||
test $st -eq 0 && exit 0
|
||||
|
||||
# Also exit now if we it failed (or wasn't found), and '--version' was
|
||||
# passed; such an option is passed most likely to detect whether the
|
||||
# program is present and works.
|
||||
case $2 in --version|--help) exit $st;; esac
|
||||
|
||||
# Exit code 63 means version mismatch. This often happens when the user
|
||||
# tries to use an ancient version of a tool on a file that requires a
|
||||
# minimum version.
|
||||
if test $st -eq 63; then
|
||||
msg="probably too old"
|
||||
elif test $st -eq 127; then
|
||||
# Program was missing.
|
||||
msg="missing on your system"
|
||||
else
|
||||
# Program was found and executed, but failed. Give up.
|
||||
exit $st
|
||||
fi
|
||||
|
||||
perl_URL=https://www.perl.org/
|
||||
flex_URL=https://github.com/westes/flex
|
||||
gnu_software_URL=https://www.gnu.org/software
|
||||
|
||||
program_details ()
|
||||
{
|
||||
case $1 in
|
||||
aclocal|automake)
|
||||
echo "The '$1' program is part of the GNU Automake package:"
|
||||
echo "<$gnu_software_URL/automake>"
|
||||
echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
|
||||
echo "<$gnu_software_URL/autoconf>"
|
||||
echo "<$gnu_software_URL/m4/>"
|
||||
echo "<$perl_URL>"
|
||||
;;
|
||||
autoconf|autom4te|autoheader)
|
||||
echo "The '$1' program is part of the GNU Autoconf package:"
|
||||
echo "<$gnu_software_URL/autoconf/>"
|
||||
echo "It also requires GNU m4 and Perl in order to run:"
|
||||
echo "<$gnu_software_URL/m4/>"
|
||||
echo "<$perl_URL>"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
give_advice ()
|
||||
{
|
||||
# Normalize program name to check for.
|
||||
normalized_program=`echo "$1" | sed '
|
||||
s/^gnu-//; t
|
||||
s/^gnu//; t
|
||||
s/^g//; t'`
|
||||
|
||||
printf '%s\n' "'$1' is $msg."
|
||||
|
||||
configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
|
||||
case $normalized_program in
|
||||
autoconf*)
|
||||
echo "You should only need it if you modified 'configure.ac',"
|
||||
echo "or m4 files included by it."
|
||||
program_details 'autoconf'
|
||||
;;
|
||||
autoheader*)
|
||||
echo "You should only need it if you modified 'acconfig.h' or"
|
||||
echo "$configure_deps."
|
||||
program_details 'autoheader'
|
||||
;;
|
||||
automake*)
|
||||
echo "You should only need it if you modified 'Makefile.am' or"
|
||||
echo "$configure_deps."
|
||||
program_details 'automake'
|
||||
;;
|
||||
aclocal*)
|
||||
echo "You should only need it if you modified 'acinclude.m4' or"
|
||||
echo "$configure_deps."
|
||||
program_details 'aclocal'
|
||||
;;
|
||||
autom4te*)
|
||||
echo "You might have modified some maintainer files that require"
|
||||
echo "the 'autom4te' program to be rebuilt."
|
||||
program_details 'autom4te'
|
||||
;;
|
||||
bison*|yacc*)
|
||||
echo "You should only need it if you modified a '.y' file."
|
||||
echo "You may want to install the GNU Bison package:"
|
||||
echo "<$gnu_software_URL/bison/>"
|
||||
;;
|
||||
lex*|flex*)
|
||||
echo "You should only need it if you modified a '.l' file."
|
||||
echo "You may want to install the Fast Lexical Analyzer package:"
|
||||
echo "<$flex_URL>"
|
||||
;;
|
||||
help2man*)
|
||||
echo "You should only need it if you modified a dependency" \
|
||||
"of a man page."
|
||||
echo "You may want to install the GNU Help2man package:"
|
||||
echo "<$gnu_software_URL/help2man/>"
|
||||
;;
|
||||
makeinfo*)
|
||||
echo "You should only need it if you modified a '.texi' file, or"
|
||||
echo "any other file indirectly affecting the aspect of the manual."
|
||||
echo "You might want to install the Texinfo package:"
|
||||
echo "<$gnu_software_URL/texinfo/>"
|
||||
echo "The spurious makeinfo call might also be the consequence of"
|
||||
echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
|
||||
echo "want to install GNU make:"
|
||||
echo "<$gnu_software_URL/make/>"
|
||||
;;
|
||||
*)
|
||||
echo "You might have modified some files without having the proper"
|
||||
echo "tools for further handling them. Check the 'README' file, it"
|
||||
echo "often tells you about the needed prerequisites for installing"
|
||||
echo "this package. You may also peek at any GNU archive site, in"
|
||||
echo "case some other package contains this missing '$1' program."
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
give_advice "$1" | sed -e '1s/^/WARNING: /' \
|
||||
-e '2,$s/^/ /' >&2
|
||||
|
||||
# Propagate the correct exit status (expected to be 127 for a program
|
||||
# not found, 63 for a program that failed due to version mismatch).
|
||||
exit $st
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC0"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
||||
@@ -46,22 +46,11 @@ set_property(CACHE LibtorrentRasterbar_DIR PROPERTY TYPE PATH)
|
||||
find_package(Boost ${minBoostVersion} REQUIRED)
|
||||
find_package(OpenSSL ${minOpenSSLVersion} REQUIRED)
|
||||
find_package(ZLIB ${minZlibVersion} REQUIRED)
|
||||
if (QT6)
|
||||
find_package(Qt6 ${minQt6Version} REQUIRED COMPONENTS Core Network Sql Xml LinguistTools)
|
||||
if (DBUS)
|
||||
find_package(Qt6 ${minQt6Version} REQUIRED COMPONENTS DBus)
|
||||
set_package_properties(Qt6DBus PROPERTIES
|
||||
DESCRIPTION "Qt6 module for inter-process communication over the D-Bus protocol"
|
||||
PURPOSE "Required by the DBUS feature"
|
||||
)
|
||||
endif()
|
||||
else()
|
||||
find_package(Qt5 ${minQt5Version} REQUIRED COMPONENTS Core Network Sql Xml LinguistTools)
|
||||
if (DBUS)
|
||||
find_package(Qt5 ${minQt5Version} REQUIRED COMPONENTS DBus)
|
||||
set_package_properties(Qt5DBus PROPERTIES
|
||||
DESCRIPTION "Qt5 module for inter-process communication over the D-Bus protocol"
|
||||
PURPOSE "Required by the DBUS feature"
|
||||
)
|
||||
endif()
|
||||
find_package(Qt6 ${minQt6Version} REQUIRED COMPONENTS Core Network Sql Xml LinguistTools)
|
||||
if (DBUS)
|
||||
find_package(Qt6 ${minQt6Version} REQUIRED COMPONENTS DBus)
|
||||
set_package_properties(Qt6DBus PROPERTIES
|
||||
DESCRIPTION "Qt6 module for inter-process communication over the D-Bus protocol"
|
||||
PURPOSE "Required by the DBUS feature"
|
||||
)
|
||||
endif()
|
||||
|
||||
@@ -8,19 +8,19 @@ set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
set(CMAKE_AUTORCC_OPTIONS --compress 9 --threshold 5)
|
||||
set(CMAKE_AUTORCC_OPTIONS --compress-algo best --threshold 5)
|
||||
|
||||
add_library(qbt_common_cfg INTERFACE)
|
||||
|
||||
# Full C++ 17 support is required
|
||||
# C++ 20 support is required
|
||||
# See also https://cmake.org/cmake/help/latest/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.html
|
||||
# for a breakdown of the features that CMake recognizes for each C++ standard
|
||||
target_compile_features(qbt_common_cfg INTERFACE
|
||||
cxx_std_17
|
||||
cxx_std_20
|
||||
)
|
||||
|
||||
target_compile_definitions(qbt_common_cfg INTERFACE
|
||||
QT_DISABLE_DEPRECATED_BEFORE=0x050f02
|
||||
QT_DISABLE_DEPRECATED_UP_TO=0x060500
|
||||
QT_NO_CAST_FROM_ASCII
|
||||
QT_NO_CAST_TO_ASCII
|
||||
QT_NO_CAST_FROM_BYTEARRAY
|
||||
@@ -38,9 +38,9 @@ endif()
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
target_compile_definitions(qbt_common_cfg INTERFACE
|
||||
NTDDI_VERSION=0x06010000
|
||||
_WIN32_WINNT=0x0601
|
||||
_WIN32_IE=0x0601
|
||||
NTDDI_VERSION=0x0A000006
|
||||
_WIN32_WINNT=0x0A00
|
||||
_WIN32_IE=0x0A00
|
||||
WIN32_LEAN_AND_MEAN
|
||||
NOMINMAX
|
||||
UNICODE
|
||||
@@ -83,6 +83,7 @@ endif()
|
||||
if (MSVC)
|
||||
target_compile_options(qbt_common_cfg INTERFACE
|
||||
/guard:cf
|
||||
/permissive-
|
||||
/utf-8
|
||||
# https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/
|
||||
/Zc:__cplusplus
|
||||
|
||||
26
conf.pri.in
26
conf.pri.in
@@ -1,26 +0,0 @@
|
||||
# @configure_input@
|
||||
|
||||
PREFIX = @EXPAND_PREFIX@
|
||||
BINDIR = @EXPAND_BINDIR@
|
||||
DATADIR = @EXPAND_DATADIR@
|
||||
MANPREFIX = @EXPAND_MANDIR@
|
||||
|
||||
QMAKE_CC = @QBT_CC@
|
||||
QMAKE_CXX = @QBT_CXX@
|
||||
QMAKE_CXXFLAGS += @QBT_CONF_EXTRA_CFLAGS@
|
||||
|
||||
EXTERNAL_INCLUDES = @QBT_CONF_INCLUDES@
|
||||
EXTERNAL_INCLUDES -= $$QMAKE_DEFAULT_INCDIRS
|
||||
# added /usr/local/include due to Qt 5.7.0 bug on macOS
|
||||
macx: EXTERNAL_INCLUDES += "/usr/local/include"
|
||||
INCLUDEPATH += $$EXTERNAL_INCLUDES
|
||||
|
||||
EXTERNAL_LIBS = @LDFLAGS@ @LIBS@
|
||||
EXTERNAL_LIBS -= $$QMAKE_DEFAULT_LIBDIRS
|
||||
LIBS += $$EXTERNAL_LIBS
|
||||
|
||||
CONFIG += @QBT_ADD_CONFIG@
|
||||
CONFIG -= @QBT_REMOVE_CONFIG@
|
||||
|
||||
DEFINES += @QBT_ADD_DEFINES@
|
||||
DEFINES -= @QBT_REMOVE_DEFINES@
|
||||
@@ -1,58 +0,0 @@
|
||||
# Adapt these paths
|
||||
# Point these to the include folders
|
||||
INCLUDEPATH += $$quote(C:/qBittorrent/boost)
|
||||
INCLUDEPATH += $$quote(C:/qBittorrent/libtorrent/include)
|
||||
INCLUDEPATH += $$quote(C:/qBittorrent/zlib/include)
|
||||
INCLUDEPATH += $$quote(C:/qBittorrent/openssl/include)
|
||||
# Point these to the lib folders
|
||||
LIBS += $$quote(-LC:/qBittorrent/boost/stage/lib)
|
||||
LIBS += $$quote(-LC:/qBittorrent/libtorrent/lib)
|
||||
LIBS += $$quote(-LC:/qBittorrent/zlib/lib)
|
||||
LIBS += $$quote(-LC:/qBittorrent/openssl/lib)
|
||||
|
||||
# Adapt the lib names/versions accordingly
|
||||
# If you want to use Boost auto-linking then disable
|
||||
# BOOST_ALL_NO_LIB below and omit Boost libraries here
|
||||
LIBS += libcrypto.lib libssl.lib libtorrent.lib zlib.lib
|
||||
CONFIG(debug, debug|release) {
|
||||
LIBS += boost_system-vc140-mt-d.lib
|
||||
}
|
||||
else {
|
||||
LIBS += boost_system-vc140-mt.lib
|
||||
}
|
||||
|
||||
# ...or if you use MinGW
|
||||
#LIBS += libcrypto libssl libz
|
||||
#CONFIG(debug, debug|release) {
|
||||
# LIBS += libtorrent-rasterbar \
|
||||
# libboost_system-mt
|
||||
#}
|
||||
#else {
|
||||
# LIBS += libtorrent-rasterbar \
|
||||
# libboost_system-mt
|
||||
#}
|
||||
|
||||
# Disable to use Boost auto-linking
|
||||
DEFINES += BOOST_ALL_NO_LIB
|
||||
# Use one of the following options
|
||||
DEFINES += BOOST_SYSTEM_STATIC_LINK
|
||||
#DEFINES += BOOST_SYSTEM_DYN_LINK
|
||||
# Enable it if compiling with libtorrent 3.x
|
||||
#DEFINES += BOOST_SYSTEM_USE_UTF8
|
||||
|
||||
# Enable if libtorrent was built with this flag defined
|
||||
#DEFINES += TORRENT_NO_DEPRECATE
|
||||
# Enable if linking dynamically against libtorrent
|
||||
#DEFINES += TORRENT_LINKING_SHARED
|
||||
|
||||
# Enable this if compiling with libtorrent 2.x
|
||||
#DEFINES += QBT_USES_LIBTORRENT2
|
||||
|
||||
# Enable stack trace support
|
||||
CONFIG += stacktrace
|
||||
|
||||
win32-msvc* {
|
||||
QMAKE_CXXFLAGS += "/guard:cf"
|
||||
QMAKE_LFLAGS += "/guard:cf"
|
||||
QMAKE_LFLAGS_RELEASE += "/OPT:REF /OPT:ICF"
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user