You've already forked qBittorrent
mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-10-12 03:12:18 +02:00
Compare commits
486 Commits
release-4.
...
release-4.
Author | SHA1 | Date | |
---|---|---|---|
![]() |
5e81347933 | ||
![]() |
ef1d3bcf0b | ||
![]() |
ea28d5213b | ||
![]() |
21143a9764 | ||
![]() |
f86a574b9d | ||
![]() |
769de08463 | ||
![]() |
0bbfeeb987 | ||
![]() |
9c3382f0d7 | ||
![]() |
2aa7a7f453 | ||
![]() |
c1b62e0e61 | ||
![]() |
40833ca510 | ||
![]() |
749746e812 | ||
![]() |
db384896b8 | ||
![]() |
a7dfefc2a5 | ||
![]() |
684a561974 | ||
![]() |
73cedb6ea1 | ||
![]() |
020b49add1 | ||
![]() |
694661d751 | ||
![]() |
79ba577a25 | ||
![]() |
785320e7f6 | ||
![]() |
954d6ff5c6 | ||
![]() |
1f6a817020 | ||
![]() |
4e30e6cb8e | ||
![]() |
753cdfdb1a | ||
![]() |
daaaa11f93 | ||
![]() |
c0e0e36d10 | ||
![]() |
188469a42c | ||
![]() |
18296b2f75 | ||
![]() |
cce1290c0c | ||
![]() |
64acc64c58 | ||
![]() |
d5a3f724ab | ||
![]() |
7567f71c55 | ||
![]() |
6805922521 | ||
![]() |
a3812c0831 | ||
![]() |
361741d677 | ||
![]() |
acd9102dc2 | ||
![]() |
e74b587420 | ||
![]() |
2589363622 | ||
![]() |
cfa7a6db46 | ||
![]() |
5609fa49a6 | ||
![]() |
d0ad08e495 | ||
![]() |
33b51249dc | ||
![]() |
17b6dcfbef | ||
![]() |
c894d84ed3 | ||
![]() |
8c52b53300 | ||
![]() |
4c3af5d923 | ||
![]() |
77d907c2aa | ||
![]() |
a56b3edc58 | ||
![]() |
a83424a7a7 | ||
![]() |
cdf66e069d | ||
![]() |
1773b1ea05 | ||
![]() |
9ebbafed95 | ||
![]() |
8a5ffd68df | ||
![]() |
cf6e4ce933 | ||
![]() |
c54f8bf219 | ||
![]() |
3f6ca64d9e | ||
![]() |
0990c2632b | ||
![]() |
ba5229a069 | ||
![]() |
1aff030317 | ||
![]() |
c1b63372f1 | ||
![]() |
081eace057 | ||
![]() |
61fae3a3ee | ||
![]() |
18ad861444 | ||
![]() |
a57b80c7e0 | ||
![]() |
bfa8dc7f67 | ||
![]() |
92f810873a | ||
![]() |
6739f59e5f | ||
![]() |
d6e888a877 | ||
![]() |
1fb329c0ef | ||
![]() |
ffe085dc8a | ||
![]() |
267d504ec0 | ||
![]() |
b824889d07 | ||
![]() |
59d968e116 | ||
![]() |
43300d97e2 | ||
![]() |
3007762864 | ||
![]() |
786c09e981 | ||
![]() |
2c2252d7d9 | ||
![]() |
c7dfc1ded2 | ||
![]() |
c2dd53cee6 | ||
![]() |
903173b8f1 | ||
![]() |
837d39dac7 | ||
![]() |
54dffa1051 | ||
![]() |
a14b50e48c | ||
![]() |
b284d40430 | ||
![]() |
ee853d8751 | ||
![]() |
d5c0c094f2 | ||
![]() |
3c0747fb87 | ||
![]() |
31e0ab2c70 | ||
![]() |
bb6d69f8b7 | ||
![]() |
a396e0df26 | ||
![]() |
a1317e24f9 | ||
![]() |
42d7465cba | ||
![]() |
4b56bdd36f | ||
![]() |
dc31e82d00 | ||
![]() |
7b73d3fb5c | ||
![]() |
6b3da26af8 | ||
![]() |
488c022d89 | ||
![]() |
d512d6dead | ||
![]() |
a1ff1c8227 | ||
![]() |
7bc49423c7 | ||
![]() |
3d3ce1c5d7 | ||
![]() |
832d68d5cb | ||
![]() |
ec8802203d | ||
![]() |
4beee27701 | ||
![]() |
716aca17f8 | ||
![]() |
d85ed84e83 | ||
![]() |
20985f9960 | ||
![]() |
e6cde0b4b4 | ||
![]() |
a84259dd1a | ||
![]() |
4f3dbf7f59 | ||
![]() |
d877215018 | ||
![]() |
7512b92a36 | ||
![]() |
81a3479fd7 | ||
![]() |
edeb62c25d | ||
![]() |
45f0b27ed1 | ||
![]() |
ffb3f60a22 | ||
![]() |
c14b08bd1d | ||
![]() |
91560e6e60 | ||
![]() |
7df54ad534 | ||
![]() |
1e88650bae | ||
![]() |
604986e90f | ||
![]() |
c77466abb0 | ||
![]() |
a9d8cf2ea9 | ||
![]() |
22420339a5 | ||
![]() |
9076ff8876 | ||
![]() |
af20233dfc | ||
![]() |
dfd735f2dc | ||
![]() |
2a04a4d077 | ||
![]() |
67d340ad63 | ||
![]() |
2b69cabc2c | ||
![]() |
062e35e6b0 | ||
![]() |
3088b38d7e | ||
![]() |
f5b5570a3b | ||
![]() |
80bb19701c | ||
![]() |
8376707379 | ||
![]() |
483ccb39bf | ||
![]() |
41e44d22ea | ||
![]() |
766fce82b1 | ||
![]() |
938adca47d | ||
![]() |
5bb02cbd90 | ||
![]() |
66777f3304 | ||
![]() |
508896c4f2 | ||
![]() |
c1d64cc3ea | ||
![]() |
57085ca126 | ||
![]() |
7b4b7c2b81 | ||
![]() |
6a3a5fac83 | ||
![]() |
35e18498d9 | ||
![]() |
f99a98306d | ||
![]() |
b0cfe53329 | ||
![]() |
060466e326 | ||
![]() |
392949b313 | ||
![]() |
b17307f283 | ||
![]() |
e739d38061 | ||
![]() |
20f4d0c4e3 | ||
![]() |
4f6038c350 | ||
![]() |
f08556be30 | ||
![]() |
543745b3f2 | ||
![]() |
cb0c09769f | ||
![]() |
e8f5a3b44e | ||
![]() |
5a660fc8a9 | ||
![]() |
488464731d | ||
![]() |
fb68604ee7 | ||
![]() |
4ef9a6444a | ||
![]() |
66dfe8545d | ||
![]() |
fff7b1dcbd | ||
![]() |
b5b1f51cee | ||
![]() |
33875aa70a | ||
![]() |
9d7dad4a61 | ||
![]() |
213b6e316c | ||
![]() |
ffc3d8d345 | ||
![]() |
7ec80263e1 | ||
![]() |
66e533f505 | ||
![]() |
045b4f0a06 | ||
![]() |
80c637bf99 | ||
![]() |
48d5e3326b | ||
![]() |
80791e328d | ||
![]() |
08a771468d | ||
![]() |
c3fc96dfe6 | ||
![]() |
715a4f3eb6 | ||
![]() |
8655e48336 | ||
![]() |
3c139ca333 | ||
![]() |
f4deb1050f | ||
![]() |
889ed5bce9 | ||
![]() |
6680fdda18 | ||
![]() |
88bd4f270f | ||
![]() |
86a5ad3241 | ||
![]() |
1c654d8f47 | ||
![]() |
c90863f217 | ||
![]() |
deec2ae1b1 | ||
![]() |
f37fff31ae | ||
![]() |
dffb93a6aa | ||
![]() |
3b948b0130 | ||
![]() |
b3d2ba7d07 | ||
![]() |
03d3552ee0 | ||
![]() |
379b0dbe40 | ||
![]() |
f213f81727 | ||
![]() |
1f2a6455b6 | ||
![]() |
fc8c74989b | ||
![]() |
b01a48879a | ||
![]() |
e780b3a9b7 | ||
![]() |
2bbfd317ce | ||
![]() |
e6d85a468b | ||
![]() |
f6b58f36e2 | ||
![]() |
79ca2e145f | ||
![]() |
81bc910d68 | ||
![]() |
ff5d02bcf2 | ||
![]() |
2e87e6e0df | ||
![]() |
a5e8af5070 | ||
![]() |
cf415dd7fe | ||
![]() |
83e6afcb71 | ||
![]() |
62d96c068a | ||
![]() |
040c3c7ef8 | ||
![]() |
3ef8726083 | ||
![]() |
dad9157d84 | ||
![]() |
5cea69472f | ||
![]() |
b1492bcd7d | ||
![]() |
d571ab2be1 | ||
![]() |
4550469bb9 | ||
![]() |
160af4feef | ||
![]() |
b27e839405 | ||
![]() |
ecc08dee09 | ||
![]() |
11ac4e7620 | ||
![]() |
fbe93f0c47 | ||
![]() |
11945eef3f | ||
![]() |
a35dbc6df7 | ||
![]() |
3fb4e4d293 | ||
![]() |
f5a4065101 | ||
![]() |
ba93d55a6d | ||
![]() |
a59301712e | ||
![]() |
b406d669b3 | ||
![]() |
4ef8f39f23 | ||
![]() |
34802362ad | ||
![]() |
c10f1f0ad2 | ||
![]() |
58ae98026b | ||
![]() |
32a55551fe | ||
![]() |
7880fe8440 | ||
![]() |
bb959bda8c | ||
![]() |
d629c77184 | ||
![]() |
b953d223e4 | ||
![]() |
6fa53b5ed8 | ||
![]() |
c777ed3299 | ||
![]() |
341b2f345a | ||
![]() |
905f141657 | ||
![]() |
0a87bb368f | ||
![]() |
93a1e58554 | ||
![]() |
0cc29f1851 | ||
![]() |
81daad92ec | ||
![]() |
41be7e9bbe | ||
![]() |
179a61d75e | ||
![]() |
73134d5f4d | ||
![]() |
29c05ed3e8 | ||
![]() |
e375f3ee0b | ||
![]() |
b185153254 | ||
![]() |
e7e5c38384 | ||
![]() |
9a00839a75 | ||
![]() |
79e85d01fa | ||
![]() |
e408973ee6 | ||
![]() |
8c9b6e2f2d | ||
![]() |
5b43782f58 | ||
![]() |
2059825597 | ||
![]() |
e1be46820b | ||
![]() |
8219b1f695 | ||
![]() |
3fbe380582 | ||
![]() |
5f00d42a49 | ||
![]() |
15de7aed9a | ||
![]() |
5c38cc00d9 | ||
![]() |
5a1dcbae9c | ||
![]() |
7c6a852f85 | ||
![]() |
147b22ddd3 | ||
![]() |
d83b2a6131 | ||
![]() |
821e946bbe | ||
![]() |
634eb4a183 | ||
![]() |
758ea7edca | ||
![]() |
1bd499565e | ||
![]() |
be9ec5a329 | ||
![]() |
df895cb2a7 | ||
![]() |
3b72859980 | ||
![]() |
69df85f564 | ||
![]() |
1f1da32371 | ||
![]() |
cddf8c199c | ||
![]() |
bbd5ed1142 | ||
![]() |
0f033ec9c8 | ||
![]() |
7397c80837 | ||
![]() |
51132c817b | ||
![]() |
1fe006d16f | ||
![]() |
bd31eddb94 | ||
![]() |
0defb7d79d | ||
![]() |
1e400df324 | ||
![]() |
9ea48539b4 | ||
![]() |
d63e0ad78f | ||
![]() |
eaee38a19e | ||
![]() |
b3e9c46eff | ||
![]() |
5dcc14153f | ||
![]() |
4a66d705b8 | ||
![]() |
9d7fcea5d6 | ||
![]() |
b8cd614775 | ||
![]() |
a9ab2d9b9e | ||
![]() |
cecf2d28e6 | ||
![]() |
a01f1014b9 | ||
![]() |
77411760a0 | ||
![]() |
0dcb65bb7c | ||
![]() |
d40be79c69 | ||
![]() |
b55d4b1733 | ||
![]() |
40e28930a4 | ||
![]() |
5a3579a3f9 | ||
![]() |
9de8abadb6 | ||
![]() |
05c5cdab96 | ||
![]() |
1e1c1725ab | ||
![]() |
b5c57af869 | ||
![]() |
eb875ac8c1 | ||
![]() |
a36358d7d0 | ||
![]() |
679e592a5c | ||
![]() |
b922441a7c | ||
![]() |
941c587c68 | ||
![]() |
77bd09bb8b | ||
![]() |
8bcac1bed2 | ||
![]() |
cdded6cef7 | ||
![]() |
8cbe4a571c | ||
![]() |
ee9d2173e0 | ||
![]() |
a450a7c6e1 | ||
![]() |
d41a77841d | ||
![]() |
ae06daba6a | ||
![]() |
77aa85fbd3 | ||
![]() |
989b1e6c2c | ||
![]() |
9ef23d524d | ||
![]() |
f16e903623 | ||
![]() |
0bb0829a9a | ||
![]() |
fa30b70453 | ||
![]() |
e4f90730b2 | ||
![]() |
6fd522472c | ||
![]() |
0f32de9d8c | ||
![]() |
f630d84858 | ||
![]() |
ee6f699b48 | ||
![]() |
ce9bdaef5c | ||
![]() |
37c04fdeed | ||
![]() |
c51aa2d573 | ||
![]() |
b922e1ae73 | ||
![]() |
dd48f62d66 | ||
![]() |
f5b5312cf0 | ||
![]() |
58a654a70f | ||
![]() |
ff0f3b4975 | ||
![]() |
8df68ac878 | ||
![]() |
2f9b313287 | ||
![]() |
cbf591a8b5 | ||
![]() |
96da685e5d | ||
![]() |
6ac14d0c57 | ||
![]() |
4745a40f0b | ||
![]() |
8993d87b32 | ||
![]() |
8df80b67f9 | ||
![]() |
466314675c | ||
![]() |
d75fd3fcde | ||
![]() |
7ae83df5a5 | ||
![]() |
19f55512c1 | ||
![]() |
6e25db444e | ||
![]() |
d2c4b69f47 | ||
![]() |
4170b4e21b | ||
![]() |
9fb9ca47f6 | ||
![]() |
917190d936 | ||
![]() |
1e913f46f0 | ||
![]() |
4c0ebc0e0f | ||
![]() |
1b0f5b8567 | ||
![]() |
6a4bb5c1b7 | ||
![]() |
3fea9f5a33 | ||
![]() |
7600f59f3a | ||
![]() |
915121a0dd | ||
![]() |
1be5b3abd8 | ||
![]() |
e37661d53a | ||
![]() |
d06f78dbbd | ||
![]() |
5d4766edbe | ||
![]() |
72ac92ec68 | ||
![]() |
22ea508ff6 | ||
![]() |
b2213ded6d | ||
![]() |
1ea2fe5b8d | ||
![]() |
7227d2b2b2 | ||
![]() |
0dcbf9f698 | ||
![]() |
09e58df03f | ||
![]() |
d256db5072 | ||
![]() |
10153f0063 | ||
![]() |
c6a1b977b3 | ||
![]() |
870bb42e4f | ||
![]() |
b61c7b7220 | ||
![]() |
c58fb92365 | ||
![]() |
5e952a561b | ||
![]() |
ca72360b6f | ||
![]() |
630b4ed3b9 | ||
![]() |
cba9680ef9 | ||
![]() |
2310dcd136 | ||
![]() |
ee00a80796 | ||
![]() |
051bac5e59 | ||
![]() |
771c58d000 | ||
![]() |
53cec6db09 | ||
![]() |
43e059801e | ||
![]() |
ce35a06ec3 | ||
![]() |
32e4371208 | ||
![]() |
0d376e7fd6 | ||
![]() |
2b20d5b260 | ||
![]() |
719e4afd8c | ||
![]() |
9cdf660ddb | ||
![]() |
5dbccf3473 | ||
![]() |
8db2d04dbb | ||
![]() |
209850064a | ||
![]() |
e628b7d527 | ||
![]() |
61dbb211c0 | ||
![]() |
71f4a5667c | ||
![]() |
b33dc7d831 | ||
![]() |
c5a4a0db2c | ||
![]() |
b9e045e80b | ||
![]() |
cfd0c5433e | ||
![]() |
ebad387c1a | ||
![]() |
3f39bd9f35 | ||
![]() |
f8236eb397 | ||
![]() |
23a56c95e3 | ||
![]() |
6f8aa07a10 | ||
![]() |
594f9e8632 | ||
![]() |
aeae065007 | ||
![]() |
b12fdcf018 | ||
![]() |
84fabf14c8 | ||
![]() |
0ec47db9cd | ||
![]() |
3cf0004665 | ||
![]() |
40258f6a2f | ||
![]() |
b335114219 | ||
![]() |
998b08f5d8 | ||
![]() |
991c30943a | ||
![]() |
ad2be39c33 | ||
![]() |
c3936cd4b6 | ||
![]() |
d2e595aac3 | ||
![]() |
b8aa9e5609 | ||
![]() |
2109c4e1ae | ||
![]() |
ac3ad17a9e | ||
![]() |
31c7306bd2 | ||
![]() |
4741aab7a3 | ||
![]() |
679e3b8bea | ||
![]() |
25ea0d274b | ||
![]() |
12b58be8c2 | ||
![]() |
e4f1485c82 | ||
![]() |
1b2ff0f6f8 | ||
![]() |
a31755bbc8 | ||
![]() |
311e0f21eb | ||
![]() |
b86366f243 | ||
![]() |
58d1c80b12 | ||
![]() |
182915f801 | ||
![]() |
50c08e55cd | ||
![]() |
4307a09621 | ||
![]() |
d531d6d221 | ||
![]() |
4cf94a6fa0 | ||
![]() |
4cb60f4870 | ||
![]() |
d82edb2838 | ||
![]() |
c91eefe469 | ||
![]() |
327affa340 | ||
![]() |
4e7c2589e4 | ||
![]() |
17ce07230d | ||
![]() |
fda6c9a3d9 | ||
![]() |
92af2922c7 | ||
![]() |
1cee69da6c | ||
![]() |
f54b66eb75 | ||
![]() |
3563bad5fc | ||
![]() |
1f3f96f7aa | ||
![]() |
7022adb89b | ||
![]() |
bac57de5f5 | ||
![]() |
bdd56a52d3 | ||
![]() |
dcdbd02102 | ||
![]() |
b68c4e2106 | ||
![]() |
67cb75e9d3 | ||
![]() |
f9eefe866c | ||
![]() |
c636618cf3 | ||
![]() |
0f82c16936 | ||
![]() |
d328eeb5be | ||
![]() |
d90ea0d3be | ||
![]() |
e7ece66717 | ||
![]() |
6c9c40fd7c | ||
![]() |
529c1ec9f4 | ||
![]() |
93429840c8 | ||
![]() |
6aee7f95b7 | ||
![]() |
0b70ccf9e9 | ||
![]() |
da586828be | ||
![]() |
2e4431f0b8 | ||
![]() |
162273da47 | ||
![]() |
22fb9797c4 | ||
![]() |
f6735401f4 | ||
![]() |
06c4c58613 | ||
![]() |
c80238d66f | ||
![]() |
6a560016dd | ||
![]() |
99b7663fa9 | ||
![]() |
be0f34a69e | ||
![]() |
5f2d807861 | ||
![]() |
106adf135c |
@@ -37,8 +37,6 @@ install:
|
|||||||
RMDIR /S /Q "%CACHE_DIR%" & MKDIR "%CACHE_DIR%" &&
|
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 &&
|
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")
|
COPY "c:\version_new" "%CACHE_DIR%\version")
|
||||||
# Qt stay compressed in cache
|
|
||||||
- 7z x "%CACHE_DIR%\qt5_64.7z" -o"c:\qbt" > nul
|
|
||||||
|
|
||||||
before_build:
|
before_build:
|
||||||
# setup env
|
# setup env
|
||||||
@@ -47,11 +45,12 @@ before_build:
|
|||||||
# setup project
|
# setup project
|
||||||
- COPY /Y "%CACHE_DIR%\conf.pri" "%REPO_DIR%"
|
- COPY /Y "%CACHE_DIR%\conf.pri" "%REPO_DIR%"
|
||||||
# workarounds
|
# workarounds
|
||||||
|
- MKDIR "c:\qbt"
|
||||||
- MKLINK /J "c:\qbt\base" "%CACHE_DIR%\base"
|
- MKLINK /J "c:\qbt\base" "%CACHE_DIR%\base"
|
||||||
|
|
||||||
build_script:
|
build_script:
|
||||||
- cd "%REPO_DIR%"
|
- cd "%REPO_DIR%"
|
||||||
# lupdate chokes when it parses headers from system inludes, especially Boost
|
# lupdate chokes when it parses headers from system includes, especially Boost
|
||||||
# it also chokes with the sources from src/app/qtlocalpeer (formerly qtsingleapplication)
|
# it also chokes with the sources from src/app/qtlocalpeer (formerly qtsingleapplication)
|
||||||
# Workaround: temporarily rename them to run lupdate with the .pro file
|
# Workaround: temporarily rename them to run lupdate with the .pro file
|
||||||
- RENAME conf.pri conf.pri.temp
|
- RENAME conf.pri conf.pri.temp
|
||||||
@@ -69,8 +68,11 @@ after_build:
|
|||||||
- COPY src\release\qbittorrent.exe upload
|
- COPY src\release\qbittorrent.exe upload
|
||||||
- COPY src\release\qbittorrent.pdb 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.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.dll" upload
|
||||||
- COPY "%CACHE_DIR%\base\lib\torrent-rasterbar.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 "%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\Qt5Core.dll upload
|
||||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Gui.dll upload
|
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Gui.dll upload
|
||||||
|
82
.clang-tidy
Normal file
82
.clang-tidy
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
Checks: >
|
||||||
|
bugprone-*,
|
||||||
|
cert-*,
|
||||||
|
concurrency-*,
|
||||||
|
cppcoreguidelines-*,
|
||||||
|
misc-*,
|
||||||
|
modernize-*,
|
||||||
|
performance-*,
|
||||||
|
portability-*,
|
||||||
|
readability-*,
|
||||||
|
-# not applicable at all,
|
||||||
|
-bugprone-easily-swappable-parameters,
|
||||||
|
-bugprone-implicit-widening-of-multiplication-result,
|
||||||
|
-bugprone-macro-parentheses,
|
||||||
|
-cppcoreguidelines-avoid-c-arrays,
|
||||||
|
-cppcoreguidelines-avoid-magic-numbers,
|
||||||
|
-cppcoreguidelines-avoid-non-const-global-variables,
|
||||||
|
-cppcoreguidelines-macro-usage,
|
||||||
|
-cppcoreguidelines-non-private-member-variables-in-classes,
|
||||||
|
-cppcoreguidelines-owning-memory,
|
||||||
|
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
|
||||||
|
-cppcoreguidelines-pro-bounds-constant-array-index,
|
||||||
|
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
|
||||||
|
-cppcoreguidelines-pro-type-const-cast,
|
||||||
|
-cppcoreguidelines-pro-type-reinterpret-cast,
|
||||||
|
-cppcoreguidelines-pro-type-union-access,
|
||||||
|
-cppcoreguidelines-pro-type-vararg,
|
||||||
|
-cppcoreguidelines-special-member-functions,
|
||||||
|
-cppcoreguidelines-virtual-class-destructor,
|
||||||
|
-misc-no-recursion,
|
||||||
|
-misc-non-private-member-variables-in-classes,
|
||||||
|
-misc-unused-parameters,
|
||||||
|
-modernize-avoid-c-arrays,
|
||||||
|
-modernize-pass-by-value,
|
||||||
|
-modernize-use-auto,
|
||||||
|
-modernize-use-nodiscard,
|
||||||
|
-modernize-use-trailing-return-type,
|
||||||
|
-modernize-use-using,
|
||||||
|
-readability-function-cognitive-complexity,
|
||||||
|
-readability-function-size,
|
||||||
|
-readability-identifier-length,
|
||||||
|
-readability-implicit-bool-conversion,
|
||||||
|
-readability-isolate-declaration,
|
||||||
|
-readability-magic-numbers,
|
||||||
|
-readability-named-parameter,
|
||||||
|
-readability-redundant-access-specifiers,
|
||||||
|
-readability-simplify-boolean-expr,
|
||||||
|
-readability-uppercase-literal-suffix,
|
||||||
|
-# only sometimes useful,
|
||||||
|
-bugprone-narrowing-conversions,
|
||||||
|
-cert-dcl58-cpp,
|
||||||
|
-cert-err33-c,
|
||||||
|
-cert-err58-cpp,
|
||||||
|
-clang-analyzer-core.CallAndMessage,
|
||||||
|
-clang-analyzer-cplusplus.NewDelete,
|
||||||
|
-clang-analyzer-cplusplus.NewDeleteLeaks,
|
||||||
|
-concurrency-mt-unsafe,
|
||||||
|
-cppcoreguidelines-init-variables,
|
||||||
|
-cppcoreguidelines-narrowing-conversions,
|
||||||
|
-cppcoreguidelines-prefer-member-initializer,
|
||||||
|
-cppcoreguidelines-pro-type-static-cast-downcast,
|
||||||
|
-misc-definitions-in-headers,
|
||||||
|
-modernize-concat-nested-namespaces,
|
||||||
|
-modernize-loop-convert,
|
||||||
|
-modernize-raw-string-literal,
|
||||||
|
-modernize-unary-static-assert,
|
||||||
|
-performance-no-automatic-move,
|
||||||
|
-readability-convert-member-functions-to-static,
|
||||||
|
-readability-else-after-return,
|
||||||
|
-readability-redundant-declaration,
|
||||||
|
-# obsoleted,
|
||||||
|
-cert-dcl21-cpp
|
||||||
|
|
||||||
|
CheckOptions:
|
||||||
|
- { key: cppcoreguidelines-explicit-virtual-functions.IgnoreDestructors, value: true }
|
||||||
|
- { key: modernize-use-override.IgnoreDestructors, value: true }
|
||||||
|
- { key: performance-for-range-copy.AllowedTypes, value: "QJsonValue" }
|
||||||
|
- { key: performance-for-range-copy.WarnOnAllAutoCopies, value: true }
|
||||||
|
- { key: readability-braces-around-statements.ShortStatementLines, value: 3 }
|
||||||
|
|
||||||
|
HeaderFilterRegex: ".+/src/.*\\.h"
|
||||||
|
WarningsAsErrors: "*"
|
2
.gitattributes
vendored
2
.gitattributes
vendored
@@ -5,3 +5,5 @@ core.eol=lf
|
|||||||
*.png binary
|
*.png binary
|
||||||
*.qm binary
|
*.qm binary
|
||||||
*.zip binary
|
*.zip binary
|
||||||
|
|
||||||
|
test/testdata/crlf.txt text eol=crlf
|
||||||
|
2
.github/workflows/ci_file_health.yaml
vendored
2
.github/workflows/ci_file_health.yaml
vendored
@@ -2,6 +2,8 @@ name: CI - File health
|
|||||||
|
|
||||||
on: [pull_request, push]
|
on: [pull_request, push]
|
||||||
|
|
||||||
|
permissions: {}
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||||
|
67
.github/workflows/ci_macos.yaml
vendored
67
.github/workflows/ci_macos.yaml
vendored
@@ -2,6 +2,9 @@ name: CI - macOS
|
|||||||
|
|
||||||
on: [pull_request, push]
|
on: [pull_request, push]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
actions: write
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||||
@@ -14,12 +17,12 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
libt_version: ["2.0.8", "1.2.18"]
|
libt_version: ["2.0.9", "1.2.19"]
|
||||||
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
||||||
qt_version: ["5.15.2", "6.4.0"]
|
qt_version: ["5.15.2", "6.5.0"]
|
||||||
exclude:
|
exclude:
|
||||||
- libt_version: "1.2.18"
|
- libt_version: "1.2.19"
|
||||||
qt_version: "6.4.0"
|
qt_version: "6.5.0"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
boost_path: "${{ github.workspace }}/../boost"
|
boost_path: "${{ github.workspace }}/../boost"
|
||||||
@@ -30,23 +33,33 @@ jobs:
|
|||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
uses: Wandalen/wretry.action@v1
|
||||||
brew update > /dev/null
|
env:
|
||||||
brew install \
|
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
|
||||||
cmake ninja \
|
HOMEBREW_NO_INSTALL_CLEANUP: 1
|
||||||
openssl@1.1 zlib
|
with:
|
||||||
|
attempt_delay: 20000
|
||||||
|
attempt_limit: 6
|
||||||
|
command: |
|
||||||
|
brew update > /dev/null
|
||||||
|
brew install \
|
||||||
|
cmake ninja \
|
||||||
|
openssl@1.1 zlib
|
||||||
|
|
||||||
- name: Setup ccache
|
- name: Setup ccache
|
||||||
uses: Chocobo1/setup-ccache-action@v1
|
uses: Chocobo1/setup-ccache-action@v1
|
||||||
with:
|
with:
|
||||||
|
store_cache: ${{ github.ref == 'refs/heads/master' }}
|
||||||
update_packager_index: false
|
update_packager_index: false
|
||||||
|
ccache_options: |
|
||||||
|
max_size=2G
|
||||||
|
|
||||||
- name: Install boost
|
- name: Install boost
|
||||||
run: |
|
run: |
|
||||||
curl \
|
curl \
|
||||||
-L \
|
-L \
|
||||||
-o "${{ runner.temp }}/boost.tar.bz2" \
|
-o "${{ runner.temp }}/boost.tar.bz2" \
|
||||||
"https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.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 }}/.."
|
tar -xf "${{ runner.temp }}/boost.tar.bz2" -C "${{ github.workspace }}/.."
|
||||||
mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}"
|
mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}"
|
||||||
|
|
||||||
@@ -56,6 +69,7 @@ jobs:
|
|||||||
version: ${{ matrix.qt_version }}
|
version: ${{ matrix.qt_version }}
|
||||||
archives: qtbase qtdeclarative qtsvg qttools
|
archives: qtbase qtdeclarative qtsvg qttools
|
||||||
# Not sure why Qt made a hard dependency on qtdeclarative, try removing it when Qt > 6.4.0
|
# Not sure why Qt made a hard dependency on qtdeclarative, try removing it when Qt > 6.4.0
|
||||||
|
cache: true
|
||||||
|
|
||||||
- name: Install libtorrent
|
- name: Install libtorrent
|
||||||
run: |
|
run: |
|
||||||
@@ -68,6 +82,7 @@ jobs:
|
|||||||
cmake \
|
cmake \
|
||||||
-B build \
|
-B build \
|
||||||
-G "Ninja" \
|
-G "Ninja" \
|
||||||
|
-DBUILD_SHARED_LIBS=OFF \
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||||
-DCMAKE_CXX_STANDARD=17 \
|
-DCMAKE_CXX_STANDARD=17 \
|
||||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||||
@@ -78,13 +93,14 @@ jobs:
|
|||||||
sudo cmake --install build
|
sudo cmake --install build
|
||||||
|
|
||||||
- name: Build qBittorrent (Qt5)
|
- name: Build qBittorrent (Qt5)
|
||||||
if: ${{ startsWith(matrix.qt_version, 5) }}
|
if: startsWith(matrix.qt_version, 5)
|
||||||
run: |
|
run: |
|
||||||
|
CXXFLAGS="$CXXFLAGS -Werror -Wno-error=deprecated-declarations" \
|
||||||
|
LDFLAGS="$LDFLAGS -gz" \
|
||||||
cmake \
|
cmake \
|
||||||
-B build \
|
-B build \
|
||||||
-G "Ninja" \
|
-G "Ninja" \
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||||
-DCMAKE_CXX_FLAGS="-Werror -Wno-error=deprecated-declarations" \
|
|
||||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||||
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \
|
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \
|
||||||
@@ -96,13 +112,14 @@ jobs:
|
|||||||
cmake --build build --target check
|
cmake --build build --target check
|
||||||
|
|
||||||
- name: Build qBittorrent (Qt6)
|
- name: Build qBittorrent (Qt6)
|
||||||
if: ${{ startsWith(matrix.qt_version, 6) }}
|
if: startsWith(matrix.qt_version, 6)
|
||||||
run: |
|
run: |
|
||||||
|
CXXFLAGS="$CXXFLAGS -Wno-gnu-zero-variadic-macro-arguments -Werror -Wno-error=deprecated-declarations" \
|
||||||
|
LDFLAGS="$LDFLAGS -gz" \
|
||||||
cmake \
|
cmake \
|
||||||
-B build \
|
-B build \
|
||||||
-G "Ninja" \
|
-G "Ninja" \
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||||
-DCMAKE_CXX_FLAGS="-Wno-gnu-zero-variadic-macro-arguments -Werror -Wno-error=deprecated-declarations" \
|
|
||||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||||
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \
|
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \
|
||||||
@@ -116,7 +133,27 @@ jobs:
|
|||||||
|
|
||||||
- name: Prepare build artifacts
|
- name: Prepare build artifacts
|
||||||
run: |
|
run: |
|
||||||
|
# create .dmg
|
||||||
|
appName="qbittorrent"
|
||||||
|
if [ "${{ matrix.qbt_gui }}" = "GUI=OFF" ]; then
|
||||||
|
appName="qbittorrent-nox"
|
||||||
|
fi
|
||||||
|
# package
|
||||||
|
pushd build
|
||||||
|
PACKAGE_RETRY=0
|
||||||
|
while [ "$PACKAGE_RETRY" -lt "3" ]; do
|
||||||
|
macdeployqt "$appName.app" -dmg -no-strip
|
||||||
|
if [ -f "$appName.dmg" ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 5
|
||||||
|
PACKAGE_RETRY=$((PACKAGE_RETRY + 1))
|
||||||
|
echo "Retry $PACKAGE_RETRY..."
|
||||||
|
done
|
||||||
|
popd
|
||||||
|
# prepare upload folder
|
||||||
mkdir upload
|
mkdir upload
|
||||||
|
cp "build/$appName.dmg" upload
|
||||||
mkdir upload/cmake
|
mkdir upload/cmake
|
||||||
cp build/compile_commands.json upload/cmake
|
cp build/compile_commands.json upload/cmake
|
||||||
mkdir upload/cmake/libtorrent
|
mkdir upload/cmake/libtorrent
|
||||||
@@ -125,5 +162,5 @@ jobs:
|
|||||||
- name: Upload build artifacts
|
- name: Upload build artifacts
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: build-info_macOS_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
|
name: qBittorrent-CI_macOS_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
|
||||||
path: upload
|
path: upload
|
||||||
|
66
.github/workflows/ci_ubuntu.yaml
vendored
66
.github/workflows/ci_ubuntu.yaml
vendored
@@ -2,6 +2,10 @@ name: CI - Ubuntu
|
|||||||
|
|
||||||
on: [pull_request, push]
|
on: [pull_request, push]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
actions: write
|
||||||
|
security-events: write
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||||
@@ -14,11 +18,11 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
libt_version: ["2.0.8", "1.2.18"]
|
libt_version: ["2.0.9", "1.2.19"]
|
||||||
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
||||||
qt_version: ["5.15.2", "6.2.0"]
|
qt_version: ["5.15.2", "6.2.0"]
|
||||||
exclude:
|
exclude:
|
||||||
- libt_version: "1.2.18"
|
- libt_version: "1.2.19"
|
||||||
qt_version: "6.2.0"
|
qt_version: "6.2.0"
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
@@ -30,11 +34,12 @@ jobs:
|
|||||||
sudo apt update
|
sudo apt update
|
||||||
sudo apt install \
|
sudo apt install \
|
||||||
build-essential cmake ninja-build pkg-config \
|
build-essential cmake ninja-build pkg-config \
|
||||||
libboost-dev libssl-dev zlib1g-dev
|
libboost-dev libssl-dev libxkbcommon-x11-dev zlib1g-dev
|
||||||
|
|
||||||
- name: Setup ccache
|
- name: Setup ccache
|
||||||
uses: Chocobo1/setup-ccache-action@v1
|
uses: Chocobo1/setup-ccache-action@v1
|
||||||
with:
|
with:
|
||||||
|
store_cache: ${{ github.ref == 'refs/heads/master' }}
|
||||||
update_packager_index: false
|
update_packager_index: false
|
||||||
ccache_options: |
|
ccache_options: |
|
||||||
max_size=2G
|
max_size=2G
|
||||||
@@ -44,6 +49,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
version: ${{ matrix.qt_version }}
|
version: ${{ matrix.qt_version }}
|
||||||
archives: icu qtbase qtsvg qttools
|
archives: icu qtbase qtsvg qttools
|
||||||
|
cache: true
|
||||||
|
|
||||||
- name: Install libtorrent
|
- name: Install libtorrent
|
||||||
run: |
|
run: |
|
||||||
@@ -56,20 +62,30 @@ jobs:
|
|||||||
cmake \
|
cmake \
|
||||||
-B build \
|
-B build \
|
||||||
-G "Ninja" \
|
-G "Ninja" \
|
||||||
|
-DBUILD_SHARED_LIBS=OFF \
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||||
-Ddeprecated-functions=OFF
|
-Ddeprecated-functions=OFF
|
||||||
cmake --build build
|
cmake --build build
|
||||||
sudo cmake --install 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)
|
||||||
|
with:
|
||||||
|
config-file: ./.github/workflows/helper/codeql/cpp.yaml
|
||||||
|
languages: cpp
|
||||||
|
|
||||||
- name: Build qBittorrent (Qt5)
|
- name: Build qBittorrent (Qt5)
|
||||||
if: ${{ startsWith(matrix.qt_version, 5) }}
|
if: startsWith(matrix.qt_version, 5)
|
||||||
run: |
|
run: |
|
||||||
|
CXXFLAGS="$CXXFLAGS -Werror -Wno-error=deprecated-declarations" \
|
||||||
|
LDFLAGS="$LDFLAGS -gz" \
|
||||||
cmake \
|
cmake \
|
||||||
-B build \
|
-B build \
|
||||||
-G "Ninja" \
|
-G "Ninja" \
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||||
-DCMAKE_CXX_FLAGS="-Werror -Wno-error=deprecated-declarations" \
|
|
||||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||||
-DCMAKE_INSTALL_PREFIX="/usr" \
|
-DCMAKE_INSTALL_PREFIX="/usr" \
|
||||||
-DTESTING=ON \
|
-DTESTING=ON \
|
||||||
@@ -81,13 +97,14 @@ jobs:
|
|||||||
DESTDIR="qbittorrent" cmake --install build
|
DESTDIR="qbittorrent" cmake --install build
|
||||||
|
|
||||||
- name: Build qBittorrent (Qt6)
|
- name: Build qBittorrent (Qt6)
|
||||||
if: ${{ startsWith(matrix.qt_version, 6) }}
|
if: startsWith(matrix.qt_version, 6)
|
||||||
run: |
|
run: |
|
||||||
|
CXXFLAGS="$CXXFLAGS -Werror" \
|
||||||
|
LDFLAGS="$LDFLAGS -gz" \
|
||||||
cmake \
|
cmake \
|
||||||
-B build \
|
-B build \
|
||||||
-G "Ninja" \
|
-G "Ninja" \
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||||
-DCMAKE_CXX_FLAGS="-Werror" \
|
|
||||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||||
-DCMAKE_INSTALL_PREFIX="/usr" \
|
-DCMAKE_INSTALL_PREFIX="/usr" \
|
||||||
-DQT6=ON \
|
-DQT6=ON \
|
||||||
@@ -99,6 +116,12 @@ jobs:
|
|||||||
cmake --build build --target check
|
cmake --build build --target check
|
||||||
DESTDIR="qbittorrent" cmake --install build
|
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)
|
||||||
|
with:
|
||||||
|
category: ${{ github.base_ref || github.ref_name }}
|
||||||
|
|
||||||
- name: Prepare build artifacts
|
- name: Prepare build artifacts
|
||||||
run: |
|
run: |
|
||||||
mkdir upload
|
mkdir upload
|
||||||
@@ -107,8 +130,35 @@ jobs:
|
|||||||
mkdir upload/cmake/libtorrent
|
mkdir upload/cmake/libtorrent
|
||||||
cp libtorrent/build/compile_commands.json upload/cmake/libtorrent
|
cp libtorrent/build/compile_commands.json upload/cmake/libtorrent
|
||||||
|
|
||||||
|
- name: 'AppImage: Prepare env'
|
||||||
|
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
|
||||||
|
|
||||||
|
- name: 'AppImage: Prepare nox'
|
||||||
|
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
|
||||||
|
cp .github/workflows/helper/appimage/org.qbittorrent.qBittorrent.desktop qbittorrent/usr/share/applications/org.qbittorrent.qBittorrent.desktop
|
||||||
|
|
||||||
|
- name: 'AppImage: Package'
|
||||||
|
run: |
|
||||||
|
./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
|
||||||
|
|
||||||
- name: Upload build artifacts
|
- name: Upload build artifacts
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: build-info_ubuntu-x64_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
|
name: qBittorrent-CI_Ubuntu-x64_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
|
||||||
path: upload
|
path: upload
|
||||||
|
12
.github/workflows/ci_webui.yaml
vendored
12
.github/workflows/ci_webui.yaml
vendored
@@ -2,6 +2,9 @@ name: CI - WebUI
|
|||||||
|
|
||||||
on: [pull_request, push]
|
on: [pull_request, push]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
security-events: write
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||||
@@ -34,3 +37,12 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
npm run format
|
npm run format
|
||||||
git diff --exit-code
|
git diff --exit-code
|
||||||
|
|
||||||
|
- name: Initialize CodeQL
|
||||||
|
uses: github/codeql-action/init@v2
|
||||||
|
with:
|
||||||
|
config-file: ./.github/workflows/helper/codeql/js.yaml
|
||||||
|
languages: javascript
|
||||||
|
|
||||||
|
- name: Run CodeQL analysis
|
||||||
|
uses: github/codeql-action/analyze@v2
|
||||||
|
57
.github/workflows/ci_windows.yaml
vendored
57
.github/workflows/ci_windows.yaml
vendored
@@ -2,6 +2,9 @@ name: CI - Windows
|
|||||||
|
|
||||||
on: [pull_request, push]
|
on: [pull_request, push]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
actions: write
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||||
@@ -14,11 +17,12 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
libt_version: ["2.0.8", "1.2.18"]
|
libt_version: ["2.0.9", "1.2.19"]
|
||||||
|
|
||||||
env:
|
env:
|
||||||
boost_path: "${{ github.workspace }}/../boost"
|
boost_path: "${{ github.workspace }}/../boost"
|
||||||
libtorrent_path: "${{ github.workspace }}/libtorrent"
|
libtorrent_path: "${{ github.workspace }}/libtorrent"
|
||||||
|
vpkg_triplet_path: "${{ github.workspace }}/../triplets_overlay"
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
@@ -39,35 +43,36 @@ jobs:
|
|||||||
vcpkgDirectory: C:/vcpkg
|
vcpkgDirectory: C:/vcpkg
|
||||||
doNotUpdateVcpkg: true # the preinstalled vcpkg is updated regularly
|
doNotUpdateVcpkg: true # the preinstalled vcpkg is updated regularly
|
||||||
|
|
||||||
- name: Install dependencies from vcpkg
|
- name: Install dependencies with vcpkg
|
||||||
run: |
|
run: |
|
||||||
# tell vcpkg to only build Release variants of the dependencies
|
# create our own triplet
|
||||||
New-Item `
|
New-Item `
|
||||||
-Path "${{ github.workspace }}" `
|
-Force `
|
||||||
-Name "triplets_overlay" `
|
-ItemType File `
|
||||||
-ItemType Directory
|
-Path "${{ env.vpkg_triplet_path }}/x64-windows-static-md-release.cmake"
|
||||||
Copy-Item `
|
# OpenSSL isn't compatible with `/guard:cf` flag so we omit it for now, see: https://github.com/openssl/openssl/issues/22554
|
||||||
"${{ env.RUNVCPKG_VCPKG_ROOT }}/triplets/x64-windows-static.cmake" `
|
|
||||||
"${{ github.workspace }}/triplets_overlay/x64-windows-static-release.cmake"
|
|
||||||
Add-Content `
|
Add-Content `
|
||||||
"${{ github.workspace }}/triplets_overlay/x64-windows-static-release.cmake" `
|
-Path "${{ env.vpkg_triplet_path }}/x64-windows-static-md-release.cmake" `
|
||||||
-Value "set(VCPKG_BUILD_TYPE release)"
|
-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
|
# clear buildtrees after each package installation to reduce disk space requirements
|
||||||
$packages = `
|
$packages = `
|
||||||
"openssl:x64-windows-static-release",
|
"openssl:x64-windows-static-md-release",
|
||||||
"zlib:x64-windows-static-release"
|
"zlib:x64-windows-static-md-release"
|
||||||
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe upgrade `
|
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe upgrade `
|
||||||
--overlay-triplets="${{ github.workspace }}/triplets_overlay" `
|
--no-dry-run `
|
||||||
--no-dry-run
|
--overlay-triplets="${{ env.vpkg_triplet_path }}"
|
||||||
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe install `
|
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe install `
|
||||||
--overlay-triplets="${{ github.workspace }}/triplets_overlay" `
|
|
||||||
--clean-after-build `
|
--clean-after-build `
|
||||||
|
--overlay-triplets="${{ env.vpkg_triplet_path }}" `
|
||||||
$packages
|
$packages
|
||||||
|
|
||||||
- name: Install boost
|
- name: Install boost
|
||||||
run: |
|
run: |
|
||||||
aria2c `
|
aria2c `
|
||||||
"https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.7z" `
|
"https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/boost_1_82_0.7z" `
|
||||||
-d "${{ runner.temp }}" `
|
-d "${{ runner.temp }}" `
|
||||||
-o "boost.7z"
|
-o "boost.7z"
|
||||||
7z x "${{ runner.temp }}/boost.7z" -o"${{ github.workspace }}/.."
|
7z x "${{ runner.temp }}/boost.7z" -o"${{ github.workspace }}/.."
|
||||||
@@ -76,8 +81,9 @@ jobs:
|
|||||||
- name: Install Qt
|
- name: Install Qt
|
||||||
uses: jurplel/install-qt-action@v3
|
uses: jurplel/install-qt-action@v3
|
||||||
with:
|
with:
|
||||||
version: "6.4.0"
|
version: "6.5.0"
|
||||||
archives: qtbase qtsvg qttools
|
archives: qtbase qtsvg qttools
|
||||||
|
cache: true
|
||||||
|
|
||||||
- name: Install libtorrent
|
- name: Install libtorrent
|
||||||
run: |
|
run: |
|
||||||
@@ -87,37 +93,38 @@ jobs:
|
|||||||
--recurse-submodules `
|
--recurse-submodules `
|
||||||
https://github.com/arvidn/libtorrent.git
|
https://github.com/arvidn/libtorrent.git
|
||||||
cd libtorrent
|
cd libtorrent
|
||||||
|
$env:CXXFLAGS+=" /guard:cf"
|
||||||
|
$env:LDFLAGS+=" /guard:cf"
|
||||||
cmake `
|
cmake `
|
||||||
-B build `
|
-B build `
|
||||||
-G "Ninja" `
|
-G "Ninja" `
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
|
||||||
-DCMAKE_CXX_FLAGS=/guard:cf `
|
|
||||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON `
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON `
|
||||||
-DCMAKE_INSTALL_PREFIX="${{ env.libtorrent_path }}" `
|
-DCMAKE_INSTALL_PREFIX="${{ env.libtorrent_path }}" `
|
||||||
-DCMAKE_TOOLCHAIN_FILE="${{ env.RUNVCPKG_VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake" `
|
-DCMAKE_TOOLCHAIN_FILE="${{ env.RUNVCPKG_VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake" `
|
||||||
-DBOOST_ROOT="${{ env.boost_path }}" `
|
-DBOOST_ROOT="${{ env.boost_path }}" `
|
||||||
-DBUILD_SHARED_LIBS=OFF `
|
-DBUILD_SHARED_LIBS=OFF `
|
||||||
-Ddeprecated-functions=OFF `
|
-Ddeprecated-functions=OFF `
|
||||||
-Dstatic_runtime=ON `
|
-Dstatic_runtime=OFF `
|
||||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-release
|
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release
|
||||||
cmake --build build
|
cmake --build build
|
||||||
cmake --install build
|
cmake --install build
|
||||||
|
|
||||||
- name: Build qBittorrent
|
- name: Build qBittorrent
|
||||||
run: |
|
run: |
|
||||||
|
$env:CXXFLAGS+=" /WX"
|
||||||
cmake `
|
cmake `
|
||||||
-B build `
|
-B build `
|
||||||
-G "Ninja" `
|
-G "Ninja" `
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
|
||||||
-DCMAKE_CXX_FLAGS="/WX" `
|
|
||||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON `
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON `
|
||||||
-DCMAKE_TOOLCHAIN_FILE="${{ env.RUNVCPKG_VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake" `
|
-DCMAKE_TOOLCHAIN_FILE="${{ env.RUNVCPKG_VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake" `
|
||||||
-DBOOST_ROOT="${{ env.boost_path }}" `
|
-DBOOST_ROOT="${{ env.boost_path }}" `
|
||||||
-DLibtorrentRasterbar_DIR="${{ env.libtorrent_path }}/lib/cmake/LibtorrentRasterbar" `
|
-DLibtorrentRasterbar_DIR="${{ env.libtorrent_path }}/lib/cmake/LibtorrentRasterbar" `
|
||||||
-DMSVC_RUNTIME_DYNAMIC=OFF `
|
-DMSVC_RUNTIME_DYNAMIC=ON `
|
||||||
-DQT6=ON `
|
-DQT6=ON `
|
||||||
-DTESTING=ON `
|
-DTESTING=ON `
|
||||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-release `
|
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release `
|
||||||
-DVERBOSE_CONFIGURE=ON `
|
-DVERBOSE_CONFIGURE=ON `
|
||||||
--graphviz=build/target_graph.dot
|
--graphviz=build/target_graph.dot
|
||||||
cmake --build build --target qbt_update_translations
|
cmake --build build --target qbt_update_translations
|
||||||
@@ -149,6 +156,8 @@ jobs:
|
|||||||
copy "${{ env.Qt6_DIR }}/plugins/sqldrivers/qsqlite.dll" upload/plugins/sqldrivers
|
copy "${{ env.Qt6_DIR }}/plugins/sqldrivers/qsqlite.dll" upload/plugins/sqldrivers
|
||||||
mkdir upload/plugins/styles
|
mkdir upload/plugins/styles
|
||||||
copy "${{ env.Qt6_DIR }}/plugins/styles/qwindowsvistastyle.dll" 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
|
||||||
# cmake additionals
|
# cmake additionals
|
||||||
mkdir upload/cmake
|
mkdir upload/cmake
|
||||||
copy build/compile_commands.json upload/cmake
|
copy build/compile_commands.json upload/cmake
|
||||||
|
@@ -5,6 +5,8 @@ on:
|
|||||||
- cron: '0 0 1 * *' # Monthly (1st day of month at midnight)
|
- cron: '0 0 1 * *' # Monthly (1st day of month at midnight)
|
||||||
workflow_dispatch: # Mainly for testing. Don't forget the Coverity usage limits.
|
workflow_dispatch: # Mainly for testing. Don't forget the Coverity usage limits.
|
||||||
|
|
||||||
|
permissions: {}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
coverity_scan:
|
coverity_scan:
|
||||||
name: Scan
|
name: Scan
|
||||||
@@ -24,13 +26,13 @@ jobs:
|
|||||||
- name: Install Qt
|
- name: Install Qt
|
||||||
uses: jurplel/install-qt-action@v3
|
uses: jurplel/install-qt-action@v3
|
||||||
with:
|
with:
|
||||||
version: "6.4.0"
|
version: "6.5.0"
|
||||||
archives: icu qtbase qtsvg qttools
|
archives: icu qtbase qtsvg qttools
|
||||||
|
|
||||||
- name: Install libtorrent
|
- name: Install libtorrent
|
||||||
run: |
|
run: |
|
||||||
git clone \
|
git clone \
|
||||||
--branch "v2.0.8" \
|
--branch "v2.0.9" \
|
||||||
--depth 1 \
|
--depth 1 \
|
||||||
--recurse-submodules \
|
--recurse-submodules \
|
||||||
https://github.com/arvidn/libtorrent.git
|
https://github.com/arvidn/libtorrent.git
|
||||||
@@ -67,7 +69,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Submit the result to Coverity Scan
|
- name: Submit the result to Coverity Scan
|
||||||
run: |
|
run: |
|
||||||
tar caf qbittorrent.xz cov-int
|
tar -caf qbittorrent.xz cov-int
|
||||||
curl \
|
curl \
|
||||||
--form token="${{ secrets.COVERITY_SCAN_TOKEN }}" \
|
--form token="${{ secrets.COVERITY_SCAN_TOKEN }}" \
|
||||||
--form email=sledgehammer999@qbittorrent.org \
|
--form email=sledgehammer999@qbittorrent.org \
|
13
.github/workflows/helper/appimage/export_vars.sh
vendored
Executable file
13
.github/workflows/helper/appimage/export_vars.sh
vendored
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# this file is called from AppRun so 'root_dir' will point to where AppRun is
|
||||||
|
root_dir="$(readlink -f "$(dirname "$0")")"
|
||||||
|
|
||||||
|
# Insert the default values because after the test we prepend our path
|
||||||
|
# and it will create problems with DEs (eg KDE) that don't set the variable
|
||||||
|
# and rely on the default paths
|
||||||
|
if [ -z "${XDG_DATA_DIRS}" ]; then
|
||||||
|
XDG_DATA_DIRS="/usr/local/share/:/usr/share/"
|
||||||
|
fi
|
||||||
|
|
||||||
|
export XDG_DATA_DIRS="${root_dir}/usr/share:${XDG_DATA_DIRS}"
|
6
.github/workflows/helper/appimage/org.qbittorrent.qBittorrent.desktop
vendored
Normal file
6
.github/workflows/helper/appimage/org.qbittorrent.qBittorrent.desktop
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=qBittorrent
|
||||||
|
Exec=qbittorrent-nox %U
|
||||||
|
Icon=qbittorrent
|
||||||
|
Type=Application
|
||||||
|
Categories=Network
|
14
.github/workflows/helper/codeql/cpp.yaml
vendored
Normal file
14
.github/workflows/helper/codeql/cpp.yaml
vendored
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
name: "CodeQL config for C++"
|
||||||
|
|
||||||
|
queries:
|
||||||
|
- uses: security-and-quality
|
||||||
|
|
||||||
|
query-filters:
|
||||||
|
- exclude:
|
||||||
|
id: cpp/commented-out-code
|
||||||
|
- exclude:
|
||||||
|
id: cpp/include-non-header
|
||||||
|
- exclude:
|
||||||
|
id: cpp/loop-variable-changed
|
||||||
|
- exclude:
|
||||||
|
id: cpp/useless-expression
|
11
.github/workflows/helper/codeql/js.yaml
vendored
Normal file
11
.github/workflows/helper/codeql/js.yaml
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
name: "CodeQL config for Javascript"
|
||||||
|
|
||||||
|
paths-ignore:
|
||||||
|
- "**/lib/*"
|
||||||
|
|
||||||
|
queries:
|
||||||
|
- uses: security-and-quality
|
||||||
|
|
||||||
|
query-filters:
|
||||||
|
- exclude:
|
||||||
|
id: js/superfluous-trailing-arguments
|
18
.github/workflows/helper/pre-commit/.typos.toml
vendored
Normal file
18
.github/workflows/helper/pre-commit/.typos.toml
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# https://github.com/crate-ci/typos/blob/master/docs/reference.md
|
||||||
|
# https://github.com/crate-ci/typos/blob/master/docs/design.md#identifiers-and-words
|
||||||
|
|
||||||
|
# try adding to `identifiers` list first, if doesn't work then `words` list
|
||||||
|
|
||||||
|
[default.extend-identifiers]
|
||||||
|
additionals = "additionals"
|
||||||
|
caf = "caf"
|
||||||
|
curren = "curren"
|
||||||
|
FO = "FO"
|
||||||
|
ket = "ket"
|
||||||
|
Q_INVOKABLE = "Q_INVOKABLE"
|
||||||
|
switchs = "switchs"
|
||||||
|
ths = "ths"
|
||||||
|
|
||||||
|
[default.extend-words]
|
||||||
|
BA = "BA"
|
||||||
|
helo = "helo"
|
5
.github/workflows/stale_bot.yaml
vendored
5
.github/workflows/stale_bot.yaml
vendored
@@ -4,12 +4,15 @@ on:
|
|||||||
schedule:
|
schedule:
|
||||||
- cron: '0 0 * * *'
|
- cron: '0 0 * * *'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
stale:
|
stale:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Mark and close stale PRs
|
- name: Mark and close stale PRs
|
||||||
uses: actions/stale@v5
|
uses: actions/stale@v8
|
||||||
with:
|
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."
|
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."
|
close-pr-message: "This PR was closed because it has been stalled for some time with no activity."
|
||||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
|||||||
|
.vscode/
|
||||||
src/gui/geoip/GeoIP.dat
|
src/gui/geoip/GeoIP.dat
|
||||||
src/gui/geoip/GeoIP.dat.gz
|
src/gui/geoip/GeoIP.dat.gz
|
||||||
src/qbittorrent
|
src/qbittorrent
|
||||||
|
@@ -3,7 +3,7 @@ repos:
|
|||||||
hooks:
|
hooks:
|
||||||
- id: check-translation-tag
|
- id: check-translation-tag
|
||||||
name: Check newline characters in <translation> tag
|
name: Check newline characters in <translation> tag
|
||||||
entry: .github/workflows/check_translation_tag.py
|
entry: .github/workflows/helper/pre-commit/check_translation_tag.py
|
||||||
language: script
|
language: script
|
||||||
exclude: |
|
exclude: |
|
||||||
(?x)^(
|
(?x)^(
|
||||||
@@ -13,7 +13,7 @@ repos:
|
|||||||
- ts
|
- ts
|
||||||
|
|
||||||
- repo: https://github.com/pre-commit/pre-commit-hooks.git
|
- repo: https://github.com/pre-commit/pre-commit-hooks.git
|
||||||
rev: v4.3.0
|
rev: v4.4.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: check-json
|
- id: check-json
|
||||||
name: Check JSON files
|
name: Check JSON files
|
||||||
@@ -33,17 +33,19 @@ repos:
|
|||||||
args: ["--fix=lf"]
|
args: ["--fix=lf"]
|
||||||
exclude: |
|
exclude: |
|
||||||
(?x)^(
|
(?x)^(
|
||||||
compile_commands.json |
|
src/webui/www/private/css/lib/.* |
|
||||||
src/webui/www/private/scripts/lib/.*
|
src/webui/www/private/scripts/lib/.* |
|
||||||
|
test/testdata/crlf.txt
|
||||||
)$
|
)$
|
||||||
|
|
||||||
- id: end-of-file-fixer
|
- id: end-of-file-fixer
|
||||||
name: Check trailing newlines
|
name: Check trailing newlines
|
||||||
exclude: |
|
exclude: |
|
||||||
(?x)^(
|
(?x)^(
|
||||||
compile_commands.json |
|
|
||||||
configure |
|
configure |
|
||||||
src/webui/www/private/scripts/lib/.*
|
src/webui/www/private/css/lib/.* |
|
||||||
|
src/webui/www/private/scripts/lib/.* |
|
||||||
|
test/testdata/crlf.txt
|
||||||
)$
|
)$
|
||||||
exclude_types:
|
exclude_types:
|
||||||
- svg
|
- svg
|
||||||
@@ -53,7 +55,54 @@ repos:
|
|||||||
name: Check trailing whitespaces
|
name: Check trailing whitespaces
|
||||||
exclude: |
|
exclude: |
|
||||||
(?x)^(
|
(?x)^(
|
||||||
|
src/webui/www/private/css/lib/.* |
|
||||||
src/webui/www/private/scripts/lib/.*
|
src/webui/www/private/scripts/lib/.*
|
||||||
)$
|
)$
|
||||||
exclude_types:
|
exclude_types:
|
||||||
- ts
|
- ts
|
||||||
|
|
||||||
|
- repo: https://github.com/codespell-project/codespell
|
||||||
|
rev: v2.2.5
|
||||||
|
hooks:
|
||||||
|
- id: codespell
|
||||||
|
name: Check spelling (codespell)
|
||||||
|
args: ["--ignore-words-list", "additionals,curren,fo,ket,superseeding,te,ths"]
|
||||||
|
exclude: |
|
||||||
|
(?x)^(
|
||||||
|
.*\.desktop |
|
||||||
|
.*\.qrc |
|
||||||
|
build-aux/.* |
|
||||||
|
Changelog |
|
||||||
|
dist/windows/installer-translations/.* |
|
||||||
|
m4/.* |
|
||||||
|
src/base/3rdparty/.* |
|
||||||
|
src/searchengine/nova3/socks.py |
|
||||||
|
src/webui/www/private/scripts/lib/.*
|
||||||
|
)$
|
||||||
|
exclude_types:
|
||||||
|
- ts
|
||||||
|
|
||||||
|
- repo: https://github.com/crate-ci/typos
|
||||||
|
rev: v1.15.5
|
||||||
|
hooks:
|
||||||
|
- id: typos
|
||||||
|
name: Check spelling (typos)
|
||||||
|
args: ["--config", ".github/workflows/helper/pre-commit/.typos.toml"]
|
||||||
|
exclude: |
|
||||||
|
(?x)^(
|
||||||
|
.*\.asc |
|
||||||
|
.*\.desktop |
|
||||||
|
.*\.qrc |
|
||||||
|
\.pre-commit-config\.yaml |
|
||||||
|
build-aux/.* |
|
||||||
|
Changelog |
|
||||||
|
configure.* |
|
||||||
|
dist/windows/installer-translations/.* |
|
||||||
|
m4/.* |
|
||||||
|
src/base/3rdparty/.* |
|
||||||
|
src/searchengine/nova3/socks.py |
|
||||||
|
src/webui/www/private/scripts/lib/.*
|
||||||
|
)$
|
||||||
|
exclude_types:
|
||||||
|
- svg
|
||||||
|
- ts
|
||||||
|
35
.tx/config
35
.tx/config
@@ -1,27 +1,24 @@
|
|||||||
[main]
|
[main]
|
||||||
host = https://www.transifex.com
|
host = https://www.transifex.com
|
||||||
|
|
||||||
[qbittorrent.qbittorrent_master]
|
[o:sledgehammer999:p:qbittorrent:r:qbittorrent_v46x]
|
||||||
file_filter = src/lang/qbittorrent_<lang>.ts
|
file_filter = src/lang/qbittorrent_<lang>.ts
|
||||||
lang_map = pt: pt_PT
|
source_file = src/lang/qbittorrent_en.ts
|
||||||
source_file = src/lang/qbittorrent_en.ts
|
source_lang = en
|
||||||
source_lang = en
|
type = QT
|
||||||
type = QT
|
|
||||||
minimum_perc = 23
|
minimum_perc = 23
|
||||||
mode = developer
|
lang_map = pt: pt_PT, zh: zh_CN
|
||||||
|
|
||||||
[qbittorrent.qbittorrentdesktop_master]
|
[o:sledgehammer999:p:qbittorrent:r:qbittorrent_webui_v46x]
|
||||||
source_file = dist/unix/org.qbittorrent.qBittorrent.desktop
|
file_filter = src/webui/www/translations/webui_<lang>.ts
|
||||||
source_lang = en
|
source_file = src/webui/www/translations/webui_en.ts
|
||||||
type = DESKTOP
|
source_lang = en
|
||||||
|
type = QT
|
||||||
minimum_perc = 23
|
minimum_perc = 23
|
||||||
mode = developer
|
lang_map = pt: pt_PT, zh: zh_CN
|
||||||
|
|
||||||
[qbittorrent.qbittorrent_webui]
|
[o:sledgehammer999:p:qbittorrent:r:qbittorrentdesktop_master]
|
||||||
file_filter = src/webui/www/translations/webui_<lang>.ts
|
source_file = dist/unix/org.qbittorrent.qBittorrent.desktop
|
||||||
lang_map = pt: pt_PT
|
source_lang = en
|
||||||
source_file = src/webui/www/translations/webui_en.ts
|
type = DESKTOP
|
||||||
source_lang = en
|
|
||||||
type = QT
|
|
||||||
minimum_perc = 23
|
minimum_perc = 23
|
||||||
mode = developer
|
|
||||||
|
6
AUTHORS
6
AUTHORS
@@ -29,13 +29,17 @@ Code from other projects:
|
|||||||
copyright: Dan Haim <negativeiq@users.sourceforge.net>
|
copyright: Dan Haim <negativeiq@users.sourceforge.net>
|
||||||
license: BSD
|
license: BSD
|
||||||
|
|
||||||
|
* files src/webui/www/private/css/lib/vanillaSelectBox.css src/webui/www/private/scripts/lib/vanillaSelectBox.js
|
||||||
|
copyright: Philippe Meyer <pmg.meyer@gmail.com>
|
||||||
|
license: MIT
|
||||||
|
|
||||||
Images Authors:
|
Images Authors:
|
||||||
* files: src/icons/qbittorrent-tray.svg
|
* files: src/icons/qbittorrent-tray.svg
|
||||||
copyright: Provided by HVS <hvs linuxmail org> (raster first proposal) and Atif Afzal(@atfzl github) <atif5801@gmail.com> (vectorized and modified)
|
copyright: Provided by HVS <hvs linuxmail org> (raster first proposal) and Atif Afzal(@atfzl github) <atif5801@gmail.com> (vectorized and modified)
|
||||||
license: GPLv2+
|
license: GPLv2+
|
||||||
|
|
||||||
* files: src/qbittorrent_file.ico src/icons/fileicon.svg
|
* files: src/qbittorrent_file.ico src/icons/fileicon.svg
|
||||||
copyright: 'uknown.svg' (LGPLv3+) from Oxygen Icon Theme was used as base which was slightly modified and 'qbittorrent-tray.svg' (GPLv2+) was overlayed above it.
|
copyright: 'unknown.svg' (LGPLv3+) from Oxygen Icon Theme was used as base which was slightly modified and 'qbittorrent-tray.svg' (GPLv2+) was overlaid above it.
|
||||||
license: GPLv3+
|
license: GPLv3+
|
||||||
|
|
||||||
* files: src/icons/flags/*.svg
|
* files: src/icons/flags/*.svg
|
||||||
|
@@ -11,8 +11,8 @@ set(minBoostVersion 1.71)
|
|||||||
set(minQt5Version 5.15.2)
|
set(minQt5Version 5.15.2)
|
||||||
set(minQt6Version 6.2)
|
set(minQt6Version 6.2)
|
||||||
set(minOpenSSLVersion 1.1.1)
|
set(minOpenSSLVersion 1.1.1)
|
||||||
set(minLibtorrent1Version 1.2.18)
|
set(minLibtorrent1Version 1.2.19)
|
||||||
set(minLibtorrentVersion 2.0.8)
|
set(minLibtorrentVersion 2.0.9)
|
||||||
set(minZlibVersion 1.2.11)
|
set(minZlibVersion 1.2.11)
|
||||||
|
|
||||||
include(CheckCXXSourceCompiles) # TODO: migrate to CheckSourceCompiles in CMake >= 3.19
|
include(CheckCXXSourceCompiles) # TODO: migrate to CheckSourceCompiles in CMake >= 3.19
|
||||||
@@ -30,16 +30,21 @@ feature_option(STACKTRACE "Enable stacktrace support" ON)
|
|||||||
feature_option(TESTING "Build internal testing suite" OFF)
|
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)
|
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)
|
||||||
|
|
||||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
||||||
feature_option_dependent(DBUS
|
feature_option_dependent(DBUS
|
||||||
"Enable support for notifications and power-management features via D-Bus on Linux"
|
"Enable support for notifications and power-management features via D-Bus"
|
||||||
ON "GUI" OFF
|
ON "GUI" OFF
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
feature_option_dependent(SYSTEMD
|
feature_option_dependent(SYSTEMD
|
||||||
"Install systemd service file. Target directory is overridable with `SYSTEMD_SERVICES_INSTALL_DIR` variable"
|
"Install systemd service file. Target directory is overridable with `SYSTEMD_SERVICES_INSTALL_DIR` variable"
|
||||||
OFF "NOT GUI" OFF
|
OFF "NOT GUI" OFF
|
||||||
)
|
)
|
||||||
elseif (MSVC)
|
endif()
|
||||||
|
|
||||||
|
if (MSVC)
|
||||||
feature_option(MSVC_RUNTIME_DYNAMIC "Use MSVC dynamic runtime library (-MD) instead of static (-MT)" ON)
|
feature_option(MSVC_RUNTIME_DYNAMIC "Use MSVC dynamic runtime library (-MD) instead of static (-MT)" ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@@ -200,7 +200,7 @@ Following these guidelines helps maintainers and the community understand your s
|
|||||||
[coding-guidelines-url]: https://github.com/qbittorrent/qBittorrent/blob/master/CODING_GUIDELINES.md
|
[coding-guidelines-url]: https://github.com/qbittorrent/qBittorrent/blob/master/CODING_GUIDELINES.md
|
||||||
[coding-guidelines-git-commit-message-url]: https://github.com/qbittorrent/qBittorrent/blob/master/CODING_GUIDELINES.md#10-git-commit-message
|
[coding-guidelines-git-commit-message-url]: https://github.com/qbittorrent/qBittorrent/blob/master/CODING_GUIDELINES.md#10-git-commit-message
|
||||||
[commit-message-fix-issue-example-url]: https://github.com/qbittorrent/qBittorrent/commit/c07cd440cd46345297debb47cb260f8688975f50
|
[commit-message-fix-issue-example-url]: https://github.com/qbittorrent/qBittorrent/commit/c07cd440cd46345297debb47cb260f8688975f50
|
||||||
[forum-url]: http://forum.qbittorrent.org/
|
[forum-url]: https://forum.qbittorrent.org/
|
||||||
[howto-report-bugs-url]: https://www.chiark.greenend.org.uk/~sgtatham/bugs.html
|
[howto-report-bugs-url]: https://www.chiark.greenend.org.uk/~sgtatham/bugs.html
|
||||||
[how-to-translate-url]: https://github.com/qbittorrent/qBittorrent/wiki/How-to-translate-qBittorrent
|
[how-to-translate-url]: https://github.com/qbittorrent/qBittorrent/wiki/How-to-translate-qBittorrent
|
||||||
[merging-vs-rebasing-url]: https://www.atlassian.com/git/tutorials/merging-vs-rebasing
|
[merging-vs-rebasing-url]: https://www.atlassian.com/git/tutorials/merging-vs-rebasing
|
||||||
|
201
Changelog
201
Changelog
@@ -1,4 +1,205 @@
|
|||||||
|
Sun May 26th 2024 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.6.5
|
||||||
|
- BUGFIX: Prevent app from being closed when disabling system tray icon (glassez)
|
||||||
|
- BUGFIX: Fix <kbd>Enter</kbd> key behavior in Add new torrent dialog (glassez)
|
||||||
|
- BUGFIX: Prevent invalid status filter index from being used (glassez)
|
||||||
|
- BUGFIX: Add extra offset for dialog frame (glassez)
|
||||||
|
- BUGFIX: Don't overwrite stored layout of main window with incorrect one (glassez)
|
||||||
|
- BUGFIX: Don't forget to resume "missing files" torrent when rechecking (glassez)
|
||||||
|
- WEBUI: Restore ability to use server-side translation by custom WebUI (glassez)
|
||||||
|
- WEBUI: Fix wrong peer number (Chocobo1)
|
||||||
|
- LINUX: Improve AppStream metadata (Chocobo1)
|
||||||
|
|
||||||
|
Sun Mar 24th 2024 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.6.4
|
||||||
|
- BUGFIX: Correctly adjust "Add New torrent" dialog position in all the cases (glassez)
|
||||||
|
- BUGFIX: Change "metadata received" stop condition behavior (glassez)
|
||||||
|
- BUGFIX: Add a small delay before processing the key input of search boxes (Chocobo1)
|
||||||
|
- BUGFIX: Ensure the profile path is pointing to a directory (Chocobo1)
|
||||||
|
- RSS: Use better icons for RSS articles (glassez)
|
||||||
|
- WINDOWS: NSIS: Update French, Hungarian translations (MarcDrieu, foxi69)
|
||||||
|
- LINUX: Fix sorting when ICU isn't used (Chocobo1)
|
||||||
|
- LINUX: Fix invisible tray icon on Plasma 6 (tehcneko)
|
||||||
|
|
||||||
|
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)
|
||||||
|
- FEATURE: Various UI theming improvements (glassez)
|
||||||
|
- FEATURE: Implement torrent tags editing dialog (glassez)
|
||||||
|
- FEATURE: Revamp "Watched folder options" and "Automated RSS downloader" dialog (glassez)
|
||||||
|
- FEATURE: Allow to use another icons in dark mode (glassez)
|
||||||
|
- FEATURE: Allow to add new torrents to queue top (glassez)
|
||||||
|
- FEATURE: Allow to filter torrent list by save path (Tom)
|
||||||
|
- FEATURE: Expose 'socket send/receive buffer size' options (Chocobo1)
|
||||||
|
- FEATURE: Expose 'max torrent file size' setting (Chocobo1)
|
||||||
|
- FEATURE: Expose 'bdecode limits' settings (Chocobo1)
|
||||||
|
- FEATURE: Add options to adjust behavior of merging trackers to existing torrent (glassez)
|
||||||
|
- FEATURE: Add option to stop seeding when torrent has been inactive (Christopher)
|
||||||
|
- FEATURE: Allow to use proxy per subsystem (glassez)
|
||||||
|
- FEATURE: Expand the scope of "Proxy hostname lookup" option (glassez)
|
||||||
|
- FEATURE: Add shortcut for "Ban peer permanently" function (Luka Čelebić)
|
||||||
|
- FEATURE: Add option to auto hide zero status filters (glassez)
|
||||||
|
- FEATURE: Allow to disable confirmation of Pause/Resume All (glassez)
|
||||||
|
- FEATURE: Add alternative shortcut CTRL+E for CTRL+F (Luka Čelebić)
|
||||||
|
- FEATURE: Show filtered port numbers in logs (Hanabishi)
|
||||||
|
- FEATURE: Add button to copy library versions to clipboard (Chocobo1)
|
||||||
|
- BUGFIX: Ensure ongoing storage moving job will be completed when shutting down (Chocobo1)
|
||||||
|
- BUGFIX: Refactored many areas to call non UI blocking code (glassez)
|
||||||
|
- BUGFIX: Various improvements to the SQLite backend (glassez)
|
||||||
|
- BUGFIX: Improve startup window state handling (glassez)
|
||||||
|
- BUGFIX: Use tray icon from system theme only if option is set (glassez)
|
||||||
|
- BUGFIX: Inhibit system sleep while torrents are moving (Sentox6)
|
||||||
|
- BUGFIX: Use hostname instead of domain name in tracker filter list (tearfur)
|
||||||
|
- BUGFIX: Visually validate input path in torrent creator dialog (Chocobo1)
|
||||||
|
- BUGFIX: Disable symlink resolving in Torrent creator (Ignat Loskutov)
|
||||||
|
- BUGFIX: Change default value for `file pool size` and `stop tracker timeout` settings (stalkerok)
|
||||||
|
- BUGFIX: Log when duplicate torrents are being added (glassez)
|
||||||
|
- BUGFIX: Inhibit suspend instead of screen idle (axet)
|
||||||
|
- BUGFIX: Ensure file name is valid when exporting torrents (glassez)
|
||||||
|
- BUGFIX: Open "Save path" if torrent has no metadata (Xu Chao)
|
||||||
|
- BUGFIX: Prevent torrent starting unexpectedly edge case with magnet (Xu Chao)
|
||||||
|
- BUGFIX: Better ergonomics of the "Add new torrent" dialog (Xu Chao, glassez)
|
||||||
|
- WEBUI: Add log viewer (brvphoenix)
|
||||||
|
- WEBUI: WebAPI: Allow to specify session cookie name (glassez)
|
||||||
|
- WEBUI: Improve sync API performance (glassez)
|
||||||
|
- WEBUI: Add filelog settings (brvphoenix)
|
||||||
|
- WEBUI: Add multi-file renaming (loligans)
|
||||||
|
- WEBUI: Add "Add to top of queue" option (thalieht)
|
||||||
|
- WEBUI: Implement subcategories (Bartu Özen)
|
||||||
|
- WEBUI: Set "SameSite=None" if CSRF Protection is disabled (七海千秋)
|
||||||
|
- WEBUI: Show only hosts in tracker filter list (ttys3)
|
||||||
|
- WEBUI: Set Connection status and Speed limits tooltips (Raymond Ha)
|
||||||
|
- WEBUI: set Cross Origin Opener Policy to `same-origin` (Chocobo1)
|
||||||
|
- WEBUI: Fix response for HTTP HEAD method (Chocobo1)
|
||||||
|
- WEBUI: Preserve the network interfaces when connection is down (Fabricio Silva)
|
||||||
|
- WEBUI: Add "Add Tags" field for RSS rules (Matic Babnik)
|
||||||
|
- WEBUI: Fix missing error icon (Trim21)
|
||||||
|
- RSS: Add "Rename rule" button to RSS Downloader (BallsOfSpaghetti)
|
||||||
|
- RSS: Allow to edit RSS feed URL (glassez)
|
||||||
|
- RSS: Allow to assign priority to RSS download rule (glassez)
|
||||||
|
- SEARCH: Use python isolate mode (Chocobo1)
|
||||||
|
- SEARCH: Bump python version minimum requirement to 3.7.0 (Chocobo1)
|
||||||
|
- 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
|
Unreleased - 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)
|
||||||
|
- FEATURE: Add tuning options related to performance warnings (Chocobo1)
|
||||||
|
- FEATURE: Add right click menu for status filters (An0n)
|
||||||
|
- FEATURE: Allow setting the number of maximum active checking torrents (An0n)
|
||||||
|
- FEATURE: Add option to toggle filters sidebar (AbeniMatteo)
|
||||||
|
- FEATURE: Allow to set `working set limit` on non-Windows OS (Chocobo1)
|
||||||
|
- FEATURE: Add `Export .torrent` action (Chocobo1)
|
||||||
|
- FEATURE: Add keyboard navigation keys (itlezy)
|
||||||
|
- FEATURE: Allow to use POSIX-compliant disk IO type (Coda)
|
||||||
|
- FEATURE: Add `Filter files` field in new torrent dialog (thalieht)
|
||||||
|
- FEATURE: Implement new icon/color theme (now-im, xavier2k6)
|
||||||
|
- FEATURE: Add file name filter/blacklist (mxtsdev, thalieht)
|
||||||
|
- FEATURE: Add support for custom SMTP ports (Emil M George)
|
||||||
|
- FEATURE: Split the OS cache settings into Disk IO read/write modes (summer)
|
||||||
|
- FEATURE: When duplicate torrent is added set metadata to existing one (glassez)
|
||||||
|
- FEATURE: Greatly improve startup time with many torrents (glassez, jagannatharjun)
|
||||||
|
- FEATURE: Add keyboard shortcut to Download URL dialog (Chocobo1)
|
||||||
|
- FEATURE: Add ability to run external program on torrent added (glassez)
|
||||||
|
- FEATURE: Add infohash and download path columns (tristanleboss)
|
||||||
|
- FEATURE: Allow to set torrent stop condition (glassez, thalieht)
|
||||||
|
- FEATURE: Add a `Moving` status filter (tristanleboss)
|
||||||
|
- FEATURE: Change color palettes for both dark, light themes (Chocobo1)
|
||||||
|
- FEATURE: Add a `Use proxy for hostname lookup` option (Nathan Lewis)
|
||||||
|
- FEATURE: Introduce a `change listen port` cmd option (BallsOfSpaghetti)
|
||||||
|
- FEATURE: Implement `Peer ID Client` column for `Peers` tab (Hanabishi)
|
||||||
|
- FEATURE: Add port forwarding option for embedded tracker (Chocobo1)
|
||||||
|
- BUGFIX: Store hybrid torrents using `torrent ID` as basename (glassez)
|
||||||
|
- BUGFIX: Enable Combobox editor for the `Mixed` file download priority (Aleksandr Cupacenko)
|
||||||
|
- BUGFIX: Allow shortcut folders for the Open and Save directory dialogs (Aleksandr Cupacenko)
|
||||||
|
- BUGFIX: Rename content tab `Size` column to `Total Size` (Aleksandr Cupacenko)
|
||||||
|
- BUGFIX: Fix scrolling to the lowermost visible torrent (Aleksandr Cupacenko)
|
||||||
|
- BUGFIX: Allow changing file priorities for finished torrents (An0n)
|
||||||
|
- BUGFIX: Focus save path when Manual mode is selected initially (Aleksandr Cupacenko)
|
||||||
|
- BUGFIX: Disable force reannounce when it is not possible (An0n)
|
||||||
|
- BUGFIX: Add horizontal scrolling for tracker list and torrent content (NotTsunami)
|
||||||
|
- BUGFIX: Enlarge "speed limits" icons (Chocobo1)
|
||||||
|
- BUGFIX: Change Downloaded to Times Downloaded in trackers tab (An0n)
|
||||||
|
- BUGFIX: Remove artificial max limits from `Torrent Queueing` related options (Chocobo1)
|
||||||
|
- BUGFIX: Preserve `skip hash check` when there is no metadata (glassez)
|
||||||
|
- BUGFIX: Fix DHT/PeX/LSD status when it is globally disabled (Kacper Michajłow)
|
||||||
|
- BUGFIX: Fix rate calculation when interval is too low (glassez)
|
||||||
|
- BUGFIX: Add tooltip message when system tray icon isn't available (Chocobo1)
|
||||||
|
- BUGFIX: Improve sender field in mail notifications (Dmitry Vodopyanov)
|
||||||
|
- BUGFIX: Fix "Add torrent dialog" spill-over on smaller screens (Chocobo1)
|
||||||
|
- BUGFIX: Fix peer count issue when tracker responds with zero figure (summer)
|
||||||
|
- BUGFIX: Don't merge trackers by default (glassez)
|
||||||
|
- BUGFIX: Don't inhibit system sleep/auto shutdown for torrents stuck at downloading metadata (summer)
|
||||||
|
- BUGFIX: Allow to pause a checking torrent from context menu (summer)
|
||||||
|
- BUGFIX: Allow to use subnet notation in reverse proxy list (Chocobo1)
|
||||||
|
- BUGFIX: Fine tune translations loading for Chinese locales (sledgehammer999)
|
||||||
|
- BUGFIX: Fix torrent content checkboxes not updated properly (Chocobo1)
|
||||||
|
- BUGFIX: Correctly load state of `Use another path for incomplete torrents` in Watched folders (glassez)
|
||||||
|
- BUGFIX: Add confirmation to resume/pause all (BallsOfSpaghetti)
|
||||||
|
- BUGFIX: Fix wrong count of errored trackers (Chocobo1)
|
||||||
|
- WEBUI: Allow blank lines in multipart form-data input (Aleksandr Cupacenko)
|
||||||
|
- WEBUI: Make various dialogs resizable (Chocobo1)
|
||||||
|
- WEBUI: Fix wrong v2 hash string displayed (Chocobo1)
|
||||||
|
- WEBUI: WebAPI: return correct status (Requi)
|
||||||
|
- WEBUI: Fix empty selection in language combobox (Chocobo1)
|
||||||
|
- WEBUI: Store WebUI port setting in human readable number (Chocobo1)
|
||||||
|
- WEBUI: Add support for exporting .torrent (Tom Piccirello)
|
||||||
|
- WEBUI: WebAPI: Add endpoint to set speed limit mode (glassez)
|
||||||
|
- WEBUI: Improve progress bar rendering (Mike Lei)
|
||||||
|
- WEBUI: Add transfer list refresh interval settings (summer)
|
||||||
|
- WEBUI: Use natural sort (Chocobo1)
|
||||||
|
- WEBUI: Apply i18n translation only to built-in WebUI (Chocobo1)
|
||||||
|
- WEBUI: Alert when HTTPS settings are incomplete (Chocobo1)
|
||||||
|
- WEBUI: Handle drag and drop events (Chocobo1)
|
||||||
|
- WEBUI: Fix wrong behavior for shutdown action (Chocobo1)
|
||||||
|
- WEBUI: Don't disable combobox for file priority (Chocobo1)
|
||||||
|
- RSS: Increase limit of maximum number of articles per feed (summer)
|
||||||
|
- WINDOWS: Fix `Open destination folder` delay on Windows (Andrew)
|
||||||
|
- WINDOWS: NSIS: Update Russian, Estonian, Japanese, Dutch, Portuguese BR, German and Indonesian translations (Andrei Stepanov, Priit Uring, maboroshin, Thomas De Rocker, Ícaro, schnurlos, Faisal A. F. Rahman)
|
||||||
|
- LINUX: Mark as single window app in .desktop file (Nicolas Fella)
|
||||||
|
- LINUX: Add Dockerfile (Amanuense-del-diavolo, Tom Piccirello, Chocobo1)
|
||||||
|
- LINUX: Remove option of using icons from system theme (now-im)
|
||||||
|
- MACOS: Fix wrong background color in properties widget (NotTsunami)
|
||||||
|
- OTHER: Binary distributions of qbittorrent are GPLv3+ licensed (sledgehammer999)
|
||||||
|
|
||||||
Thu Jan 06 2022 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.4.0
|
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 v2 torrents along with libtorrent 2.0.x support (glassez, Chocobo1)
|
||||||
|
6
INSTALL
6
INSTALL
@@ -5,7 +5,7 @@ qBittorrent - A BitTorrent client in C++ / Qt
|
|||||||
|
|
||||||
- Boost >= 1.71
|
- Boost >= 1.71
|
||||||
|
|
||||||
- libtorrent-rasterbar 1.2.18 - 1.2.x || 2.0.8 - 2.0.x
|
- libtorrent-rasterbar 1.2.19 - 1.2.x || 2.0.9 - 2.0.x
|
||||||
* By Arvid Norberg, https://www.libtorrent.org/
|
* By Arvid Norberg, https://www.libtorrent.org/
|
||||||
* Be careful: another library (the one used by rTorrent) uses a similar name
|
* Be careful: another library (the one used by rTorrent) uses a similar name
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@ qBittorrent - A BitTorrent client in C++ / Qt
|
|||||||
- pkg-config *
|
- pkg-config *
|
||||||
* Compile-time only on *nix systems
|
* Compile-time only on *nix systems
|
||||||
|
|
||||||
- Python >= 3.5.0
|
- Python >= 3.7.0
|
||||||
* Optional, run-time only
|
* Optional, run-time only
|
||||||
* Used by the bundled search engine
|
* Used by the bundled search engine
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@ Please ensure you are building with an officially supported configuration when r
|
|||||||
will install and execute qBittorrent.
|
will install and execute qBittorrent.
|
||||||
|
|
||||||
DOCUMENTATION:
|
DOCUMENTATION:
|
||||||
Please note that there is a "Compilation" section at http://wiki.qbittorrent.org.
|
Please note that there is a "Compilation" section at https://wiki.qbittorrent.org.
|
||||||
|
|
||||||
------------------------------------------
|
------------------------------------------
|
||||||
sledgehammer999 <sledgehammer999@qbittorrent.org>
|
sledgehammer999 <sledgehammer999@qbittorrent.org>
|
||||||
|
@@ -37,13 +37,13 @@ For more information please visit:
|
|||||||
https://www.qbittorrent.org
|
https://www.qbittorrent.org
|
||||||
|
|
||||||
or our wiki here:
|
or our wiki here:
|
||||||
http://wiki.qbittorrent.org
|
https://wiki.qbittorrent.org
|
||||||
|
|
||||||
Use the forum for troubleshooting before reporting bugs:
|
Use the forum for troubleshooting before reporting bugs:
|
||||||
http://forum.qbittorrent.org
|
https://forum.qbittorrent.org
|
||||||
|
|
||||||
Please report any bug (or feature request) to:
|
Please report any bug (or feature request) to:
|
||||||
http://bugs.qbittorrent.org
|
https://bugs.qbittorrent.org
|
||||||
|
|
||||||
Official IRC channel:
|
Official IRC channel:
|
||||||
[#qbittorrent on irc.libera.chat](ircs://irc.libera.chat:6697/qbittorrent)
|
[#qbittorrent on irc.libera.chat](ircs://irc.libera.chat:6697/qbittorrent)
|
||||||
|
@@ -101,6 +101,10 @@ if (MSVC)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (DBUS)
|
||||||
|
target_compile_definitions(qbt_common_cfg INTERFACE QBT_USES_DBUS)
|
||||||
|
endif()
|
||||||
|
|
||||||
if (LibtorrentRasterbar_VERSION VERSION_GREATER_EQUAL ${minLibtorrentVersion})
|
if (LibtorrentRasterbar_VERSION VERSION_GREATER_EQUAL ${minLibtorrentVersion})
|
||||||
target_compile_definitions(qbt_common_cfg INTERFACE QBT_USES_LIBTORRENT2)
|
target_compile_definitions(qbt_common_cfg INTERFACE QBT_USES_LIBTORRENT2)
|
||||||
endif()
|
endif()
|
||||||
|
86
configure
vendored
86
configure
vendored
@@ -1,6 +1,6 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.71 for qbittorrent v4.5.0beta1.
|
# Generated by GNU Autoconf 2.71 for qbittorrent v4.6.5.
|
||||||
#
|
#
|
||||||
# Report bugs to <bugs.qbittorrent.org>.
|
# Report bugs to <bugs.qbittorrent.org>.
|
||||||
#
|
#
|
||||||
@@ -611,8 +611,8 @@ MAKEFLAGS=
|
|||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='qbittorrent'
|
PACKAGE_NAME='qbittorrent'
|
||||||
PACKAGE_TARNAME='qbittorrent'
|
PACKAGE_TARNAME='qbittorrent'
|
||||||
PACKAGE_VERSION='v4.5.0beta1'
|
PACKAGE_VERSION='v4.6.5'
|
||||||
PACKAGE_STRING='qbittorrent v4.5.0beta1'
|
PACKAGE_STRING='qbittorrent v4.6.5'
|
||||||
PACKAGE_BUGREPORT='bugs.qbittorrent.org'
|
PACKAGE_BUGREPORT='bugs.qbittorrent.org'
|
||||||
PACKAGE_URL='https://www.qbittorrent.org/'
|
PACKAGE_URL='https://www.qbittorrent.org/'
|
||||||
|
|
||||||
@@ -1329,7 +1329,7 @@ if test "$ac_init_help" = "long"; then
|
|||||||
# Omit some internal or obsolete options to make the list less imposing.
|
# Omit some internal or obsolete options to make the list less imposing.
|
||||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
\`configure' configures qbittorrent v4.5.0beta1 to adapt to many kinds of systems.
|
\`configure' configures qbittorrent v4.6.5 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
@@ -1400,7 +1400,7 @@ fi
|
|||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of qbittorrent v4.5.0beta1:";;
|
short | recursive ) echo "Configuration of qbittorrent v4.6.5:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
@@ -1533,7 +1533,7 @@ fi
|
|||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
qbittorrent configure v4.5.0beta1
|
qbittorrent configure v4.6.5
|
||||||
generated by GNU Autoconf 2.71
|
generated by GNU Autoconf 2.71
|
||||||
|
|
||||||
Copyright (C) 2021 Free Software Foundation, Inc.
|
Copyright (C) 2021 Free Software Foundation, Inc.
|
||||||
@@ -1648,7 +1648,7 @@ cat >config.log <<_ACEOF
|
|||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by qbittorrent $as_me v4.5.0beta1, which was
|
It was created by qbittorrent $as_me v4.6.5, which was
|
||||||
generated by GNU Autoconf 2.71. Invocation command line was
|
generated by GNU Autoconf 2.71. Invocation command line was
|
||||||
|
|
||||||
$ $0$ac_configure_args_raw
|
$ $0$ac_configure_args_raw
|
||||||
@@ -4779,7 +4779,7 @@ fi
|
|||||||
|
|
||||||
# Define the identity of the package.
|
# Define the identity of the package.
|
||||||
PACKAGE='qbittorrent'
|
PACKAGE='qbittorrent'
|
||||||
VERSION='v4.5.0beta1'
|
VERSION='v4.6.5'
|
||||||
|
|
||||||
|
|
||||||
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
|
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
|
||||||
@@ -5649,7 +5649,7 @@ fi
|
|||||||
then :
|
then :
|
||||||
as_fn_error $? "Could not find QtDBus" "$LINENO" 5
|
as_fn_error $? "Could not find QtDBus" "$LINENO" 5
|
||||||
else $as_nop
|
else $as_nop
|
||||||
QBT_ADD_CONFIG="$QBT_ADD_CONFIG dbus"
|
QBT_ADD_CONFIG="$QBT_ADD_CONFIG dbus" QBT_ADD_DEFINES="$QBT_ADD_DEFINES QBT_USES_DBUS"
|
||||||
|
|
||||||
fi ;; #(
|
fi ;; #(
|
||||||
"xno") :
|
"xno") :
|
||||||
@@ -6024,19 +6024,19 @@ LDFLAGS="$BOOST_LDFLAGS $LDFLAGS"
|
|||||||
|
|
||||||
|
|
||||||
pkg_failed=no
|
pkg_failed=no
|
||||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libtorrent-rasterbar >= 2.0.8" >&5
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libtorrent-rasterbar >= 2.0.9" >&5
|
||||||
printf %s "checking for libtorrent-rasterbar >= 2.0.8... " >&6; }
|
printf %s "checking for libtorrent-rasterbar >= 2.0.9... " >&6; }
|
||||||
|
|
||||||
if test -n "$libtorrent_CFLAGS"; then
|
if test -n "$libtorrent_CFLAGS"; then
|
||||||
pkg_cv_libtorrent_CFLAGS="$libtorrent_CFLAGS"
|
pkg_cv_libtorrent_CFLAGS="$libtorrent_CFLAGS"
|
||||||
elif test -n "$PKG_CONFIG"; then
|
elif test -n "$PKG_CONFIG"; then
|
||||||
if test -n "$PKG_CONFIG" && \
|
if test -n "$PKG_CONFIG" && \
|
||||||
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libtorrent-rasterbar >= 2.0.8\""; } >&5
|
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libtorrent-rasterbar >= 2.0.9\""; } >&5
|
||||||
($PKG_CONFIG --exists --print-errors "libtorrent-rasterbar >= 2.0.8") 2>&5
|
($PKG_CONFIG --exists --print-errors "libtorrent-rasterbar >= 2.0.9") 2>&5
|
||||||
ac_status=$?
|
ac_status=$?
|
||||||
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||||
test $ac_status = 0; }; then
|
test $ac_status = 0; }; then
|
||||||
pkg_cv_libtorrent_CFLAGS=`$PKG_CONFIG --cflags "libtorrent-rasterbar >= 2.0.8" 2>/dev/null`
|
pkg_cv_libtorrent_CFLAGS=`$PKG_CONFIG --cflags "libtorrent-rasterbar >= 2.0.9" 2>/dev/null`
|
||||||
test "x$?" != "x0" && pkg_failed=yes
|
test "x$?" != "x0" && pkg_failed=yes
|
||||||
else
|
else
|
||||||
pkg_failed=yes
|
pkg_failed=yes
|
||||||
@@ -6048,12 +6048,12 @@ if test -n "$libtorrent_LIBS"; then
|
|||||||
pkg_cv_libtorrent_LIBS="$libtorrent_LIBS"
|
pkg_cv_libtorrent_LIBS="$libtorrent_LIBS"
|
||||||
elif test -n "$PKG_CONFIG"; then
|
elif test -n "$PKG_CONFIG"; then
|
||||||
if test -n "$PKG_CONFIG" && \
|
if test -n "$PKG_CONFIG" && \
|
||||||
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libtorrent-rasterbar >= 2.0.8\""; } >&5
|
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libtorrent-rasterbar >= 2.0.9\""; } >&5
|
||||||
($PKG_CONFIG --exists --print-errors "libtorrent-rasterbar >= 2.0.8") 2>&5
|
($PKG_CONFIG --exists --print-errors "libtorrent-rasterbar >= 2.0.9") 2>&5
|
||||||
ac_status=$?
|
ac_status=$?
|
||||||
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||||
test $ac_status = 0; }; then
|
test $ac_status = 0; }; then
|
||||||
pkg_cv_libtorrent_LIBS=`$PKG_CONFIG --libs "libtorrent-rasterbar >= 2.0.8" 2>/dev/null`
|
pkg_cv_libtorrent_LIBS=`$PKG_CONFIG --libs "libtorrent-rasterbar >= 2.0.9" 2>/dev/null`
|
||||||
test "x$?" != "x0" && pkg_failed=yes
|
test "x$?" != "x0" && pkg_failed=yes
|
||||||
else
|
else
|
||||||
pkg_failed=yes
|
pkg_failed=yes
|
||||||
@@ -6074,28 +6074,28 @@ else
|
|||||||
_pkg_short_errors_supported=no
|
_pkg_short_errors_supported=no
|
||||||
fi
|
fi
|
||||||
if test $_pkg_short_errors_supported = yes; then
|
if test $_pkg_short_errors_supported = yes; then
|
||||||
libtorrent_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libtorrent-rasterbar >= 2.0.8" 2>&1`
|
libtorrent_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libtorrent-rasterbar >= 2.0.9" 2>&1`
|
||||||
else
|
else
|
||||||
libtorrent_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libtorrent-rasterbar >= 2.0.8" 2>&1`
|
libtorrent_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libtorrent-rasterbar >= 2.0.9" 2>&1`
|
||||||
fi
|
fi
|
||||||
# Put the nasty error message in config.log where it belongs
|
# Put the nasty error message in config.log where it belongs
|
||||||
echo "$libtorrent_PKG_ERRORS" >&5
|
echo "$libtorrent_PKG_ERRORS" >&5
|
||||||
|
|
||||||
|
|
||||||
pkg_failed=no
|
pkg_failed=no
|
||||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2" >&5
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2" >&5
|
||||||
printf %s "checking for libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2... " >&6; }
|
printf %s "checking for libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2... " >&6; }
|
||||||
|
|
||||||
if test -n "$libtorrent_CFLAGS"; then
|
if test -n "$libtorrent_CFLAGS"; then
|
||||||
pkg_cv_libtorrent_CFLAGS="$libtorrent_CFLAGS"
|
pkg_cv_libtorrent_CFLAGS="$libtorrent_CFLAGS"
|
||||||
elif test -n "$PKG_CONFIG"; then
|
elif test -n "$PKG_CONFIG"; then
|
||||||
if test -n "$PKG_CONFIG" && \
|
if test -n "$PKG_CONFIG" && \
|
||||||
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2\""; } >&5
|
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2\""; } >&5
|
||||||
($PKG_CONFIG --exists --print-errors "libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2") 2>&5
|
($PKG_CONFIG --exists --print-errors "libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2") 2>&5
|
||||||
ac_status=$?
|
ac_status=$?
|
||||||
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||||
test $ac_status = 0; }; then
|
test $ac_status = 0; }; then
|
||||||
pkg_cv_libtorrent_CFLAGS=`$PKG_CONFIG --cflags "libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2" 2>/dev/null`
|
pkg_cv_libtorrent_CFLAGS=`$PKG_CONFIG --cflags "libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2" 2>/dev/null`
|
||||||
test "x$?" != "x0" && pkg_failed=yes
|
test "x$?" != "x0" && pkg_failed=yes
|
||||||
else
|
else
|
||||||
pkg_failed=yes
|
pkg_failed=yes
|
||||||
@@ -6107,12 +6107,12 @@ if test -n "$libtorrent_LIBS"; then
|
|||||||
pkg_cv_libtorrent_LIBS="$libtorrent_LIBS"
|
pkg_cv_libtorrent_LIBS="$libtorrent_LIBS"
|
||||||
elif test -n "$PKG_CONFIG"; then
|
elif test -n "$PKG_CONFIG"; then
|
||||||
if test -n "$PKG_CONFIG" && \
|
if test -n "$PKG_CONFIG" && \
|
||||||
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2\""; } >&5
|
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2\""; } >&5
|
||||||
($PKG_CONFIG --exists --print-errors "libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2") 2>&5
|
($PKG_CONFIG --exists --print-errors "libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2") 2>&5
|
||||||
ac_status=$?
|
ac_status=$?
|
||||||
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||||
test $ac_status = 0; }; then
|
test $ac_status = 0; }; then
|
||||||
pkg_cv_libtorrent_LIBS=`$PKG_CONFIG --libs "libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2" 2>/dev/null`
|
pkg_cv_libtorrent_LIBS=`$PKG_CONFIG --libs "libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2" 2>/dev/null`
|
||||||
test "x$?" != "x0" && pkg_failed=yes
|
test "x$?" != "x0" && pkg_failed=yes
|
||||||
else
|
else
|
||||||
pkg_failed=yes
|
pkg_failed=yes
|
||||||
@@ -6133,14 +6133,14 @@ else
|
|||||||
_pkg_short_errors_supported=no
|
_pkg_short_errors_supported=no
|
||||||
fi
|
fi
|
||||||
if test $_pkg_short_errors_supported = yes; then
|
if test $_pkg_short_errors_supported = yes; then
|
||||||
libtorrent_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2" 2>&1`
|
libtorrent_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2" 2>&1`
|
||||||
else
|
else
|
||||||
libtorrent_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2" 2>&1`
|
libtorrent_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2" 2>&1`
|
||||||
fi
|
fi
|
||||||
# Put the nasty error message in config.log where it belongs
|
# Put the nasty error message in config.log where it belongs
|
||||||
echo "$libtorrent_PKG_ERRORS" >&5
|
echo "$libtorrent_PKG_ERRORS" >&5
|
||||||
|
|
||||||
as_fn_error $? "Package requirements (libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2) were not met:
|
as_fn_error $? "Package requirements (libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2) were not met:
|
||||||
|
|
||||||
$libtorrent_PKG_ERRORS
|
$libtorrent_PKG_ERRORS
|
||||||
|
|
||||||
@@ -6177,19 +6177,19 @@ elif test $pkg_failed = untried; then
|
|||||||
printf "%s\n" "no" >&6; }
|
printf "%s\n" "no" >&6; }
|
||||||
|
|
||||||
pkg_failed=no
|
pkg_failed=no
|
||||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2" >&5
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2" >&5
|
||||||
printf %s "checking for libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2... " >&6; }
|
printf %s "checking for libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2... " >&6; }
|
||||||
|
|
||||||
if test -n "$libtorrent_CFLAGS"; then
|
if test -n "$libtorrent_CFLAGS"; then
|
||||||
pkg_cv_libtorrent_CFLAGS="$libtorrent_CFLAGS"
|
pkg_cv_libtorrent_CFLAGS="$libtorrent_CFLAGS"
|
||||||
elif test -n "$PKG_CONFIG"; then
|
elif test -n "$PKG_CONFIG"; then
|
||||||
if test -n "$PKG_CONFIG" && \
|
if test -n "$PKG_CONFIG" && \
|
||||||
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2\""; } >&5
|
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2\""; } >&5
|
||||||
($PKG_CONFIG --exists --print-errors "libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2") 2>&5
|
($PKG_CONFIG --exists --print-errors "libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2") 2>&5
|
||||||
ac_status=$?
|
ac_status=$?
|
||||||
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||||
test $ac_status = 0; }; then
|
test $ac_status = 0; }; then
|
||||||
pkg_cv_libtorrent_CFLAGS=`$PKG_CONFIG --cflags "libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2" 2>/dev/null`
|
pkg_cv_libtorrent_CFLAGS=`$PKG_CONFIG --cflags "libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2" 2>/dev/null`
|
||||||
test "x$?" != "x0" && pkg_failed=yes
|
test "x$?" != "x0" && pkg_failed=yes
|
||||||
else
|
else
|
||||||
pkg_failed=yes
|
pkg_failed=yes
|
||||||
@@ -6201,12 +6201,12 @@ if test -n "$libtorrent_LIBS"; then
|
|||||||
pkg_cv_libtorrent_LIBS="$libtorrent_LIBS"
|
pkg_cv_libtorrent_LIBS="$libtorrent_LIBS"
|
||||||
elif test -n "$PKG_CONFIG"; then
|
elif test -n "$PKG_CONFIG"; then
|
||||||
if test -n "$PKG_CONFIG" && \
|
if test -n "$PKG_CONFIG" && \
|
||||||
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2\""; } >&5
|
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2\""; } >&5
|
||||||
($PKG_CONFIG --exists --print-errors "libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2") 2>&5
|
($PKG_CONFIG --exists --print-errors "libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2") 2>&5
|
||||||
ac_status=$?
|
ac_status=$?
|
||||||
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||||
test $ac_status = 0; }; then
|
test $ac_status = 0; }; then
|
||||||
pkg_cv_libtorrent_LIBS=`$PKG_CONFIG --libs "libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2" 2>/dev/null`
|
pkg_cv_libtorrent_LIBS=`$PKG_CONFIG --libs "libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2" 2>/dev/null`
|
||||||
test "x$?" != "x0" && pkg_failed=yes
|
test "x$?" != "x0" && pkg_failed=yes
|
||||||
else
|
else
|
||||||
pkg_failed=yes
|
pkg_failed=yes
|
||||||
@@ -6227,14 +6227,14 @@ else
|
|||||||
_pkg_short_errors_supported=no
|
_pkg_short_errors_supported=no
|
||||||
fi
|
fi
|
||||||
if test $_pkg_short_errors_supported = yes; then
|
if test $_pkg_short_errors_supported = yes; then
|
||||||
libtorrent_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2" 2>&1`
|
libtorrent_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2" 2>&1`
|
||||||
else
|
else
|
||||||
libtorrent_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2" 2>&1`
|
libtorrent_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2" 2>&1`
|
||||||
fi
|
fi
|
||||||
# Put the nasty error message in config.log where it belongs
|
# Put the nasty error message in config.log where it belongs
|
||||||
echo "$libtorrent_PKG_ERRORS" >&5
|
echo "$libtorrent_PKG_ERRORS" >&5
|
||||||
|
|
||||||
as_fn_error $? "Package requirements (libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2) were not met:
|
as_fn_error $? "Package requirements (libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2) were not met:
|
||||||
|
|
||||||
$libtorrent_PKG_ERRORS
|
$libtorrent_PKG_ERRORS
|
||||||
|
|
||||||
@@ -7237,7 +7237,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
|||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by qbittorrent $as_me v4.5.0beta1, which was
|
This file was extended by qbittorrent $as_me v4.6.5, which was
|
||||||
generated by GNU Autoconf 2.71. Invocation command line was
|
generated by GNU Autoconf 2.71. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
@@ -7297,7 +7297,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
|
|||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_config='$ac_cs_config_escaped'
|
ac_cs_config='$ac_cs_config_escaped'
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
qbittorrent config.status v4.5.0beta1
|
qbittorrent config.status v4.6.5
|
||||||
configured by $0, generated by GNU Autoconf 2.71,
|
configured by $0, generated by GNU Autoconf 2.71,
|
||||||
with options \\"\$ac_cs_config\\"
|
with options \\"\$ac_cs_config\\"
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
AC_INIT([qbittorrent], [v4.5.0beta1], [bugs.qbittorrent.org], [], [https://www.qbittorrent.org/])
|
AC_INIT([qbittorrent], [v4.6.5], [bugs.qbittorrent.org], [], [https://www.qbittorrent.org/])
|
||||||
AC_CONFIG_AUX_DIR([build-aux])
|
AC_CONFIG_AUX_DIR([build-aux])
|
||||||
AC_CONFIG_MACRO_DIR([m4])
|
AC_CONFIG_MACRO_DIR([m4])
|
||||||
: ${CFLAGS=""}
|
: ${CFLAGS=""}
|
||||||
@@ -165,7 +165,7 @@ AS_CASE(["x$enable_qt_dbus"],
|
|||||||
FIND_QTDBUS()
|
FIND_QTDBUS()
|
||||||
AS_IF([test "x$HAVE_QTDBUS" = "xfalse"],
|
AS_IF([test "x$HAVE_QTDBUS" = "xfalse"],
|
||||||
[AC_MSG_ERROR([Could not find QtDBus])],
|
[AC_MSG_ERROR([Could not find QtDBus])],
|
||||||
[QBT_ADD_CONFIG="$QBT_ADD_CONFIG dbus"]
|
[QBT_ADD_CONFIG="$QBT_ADD_CONFIG dbus" QBT_ADD_DEFINES="$QBT_ADD_DEFINES QBT_USES_DBUS"]
|
||||||
)],
|
)],
|
||||||
["xno"],
|
["xno"],
|
||||||
[AC_MSG_RESULT([no])
|
[AC_MSG_RESULT([no])
|
||||||
@@ -188,10 +188,10 @@ m4_define([DETECT_BOOST_VERSION_PROGRAM],
|
|||||||
[[(void) ((void)sizeof(char[1 - 2*!!((BOOST_VERSION) < ($1))]));]])])
|
[[(void) ((void)sizeof(char[1 - 2*!!((BOOST_VERSION) < ($1))]));]])])
|
||||||
|
|
||||||
PKG_CHECK_MODULES(libtorrent,
|
PKG_CHECK_MODULES(libtorrent,
|
||||||
[libtorrent-rasterbar >= 2.0.8],
|
[libtorrent-rasterbar >= 2.0.9],
|
||||||
[CXXFLAGS="$libtorrent_CFLAGS $CXXFLAGS" LIBS="$libtorrent_LIBS $LIBS" QBT_ADD_DEFINES="$QBT_ADD_DEFINES QBT_USES_LIBTORRENT2"],
|
[CXXFLAGS="$libtorrent_CFLAGS $CXXFLAGS" LIBS="$libtorrent_LIBS $LIBS" QBT_ADD_DEFINES="$QBT_ADD_DEFINES QBT_USES_LIBTORRENT2"],
|
||||||
[PKG_CHECK_MODULES(libtorrent,
|
[PKG_CHECK_MODULES(libtorrent,
|
||||||
[libtorrent-rasterbar >= 1.2.18 libtorrent-rasterbar < 2],
|
[libtorrent-rasterbar >= 1.2.19 libtorrent-rasterbar < 2],
|
||||||
[CXXFLAGS="$libtorrent_CFLAGS $CXXFLAGS" LIBS="$libtorrent_LIBS $LIBS"])])
|
[CXXFLAGS="$libtorrent_CFLAGS $CXXFLAGS" LIBS="$libtorrent_LIBS $LIBS"])])
|
||||||
|
|
||||||
PKG_CHECK_MODULES(openssl,
|
PKG_CHECK_MODULES(openssl,
|
||||||
|
8
dist/docker/.env
vendored
8
dist/docker/.env
vendored
@@ -1,8 +0,0 @@
|
|||||||
# refer to Readme.md for an explanation of the variables
|
|
||||||
|
|
||||||
QBT_EULA=
|
|
||||||
QBT_VERSION=devel
|
|
||||||
QBT_WEBUI_PORT=8080
|
|
||||||
|
|
||||||
QBT_CONFIG_PATH=<your_path>/config
|
|
||||||
QBT_DOWNLOADS_PATH=<your_path>/downloads
|
|
62
dist/docker/Dockerfile
vendored
62
dist/docker/Dockerfile
vendored
@@ -1,62 +0,0 @@
|
|||||||
# image for building
|
|
||||||
FROM alpine:latest AS builder
|
|
||||||
|
|
||||||
ARG QBT_VERSION
|
|
||||||
|
|
||||||
# alpine linux qbittorrent package: https://git.alpinelinux.org/aports/tree/community/qbittorrent/APKBUILD
|
|
||||||
|
|
||||||
RUN \
|
|
||||||
apk --update-cache add \
|
|
||||||
boost-dev \
|
|
||||||
cmake \
|
|
||||||
g++ \
|
|
||||||
libtorrent-rasterbar-dev \
|
|
||||||
ninja \
|
|
||||||
qt6-qtbase-dev \
|
|
||||||
qt6-qttools-dev
|
|
||||||
|
|
||||||
RUN \
|
|
||||||
if [ "$QBT_VERSION" = "devel" ]; then \
|
|
||||||
wget https://github.com/qbittorrent/qBittorrent/archive/refs/heads/master.zip && \
|
|
||||||
unzip master.zip && \
|
|
||||||
cd qBittorrent-master ; \
|
|
||||||
else \
|
|
||||||
wget "https://github.com/qbittorrent/qBittorrent/archive/refs/tags/release-${QBT_VERSION}.tar.gz" && \
|
|
||||||
tar -xf "release-${QBT_VERSION}.tar.gz" && \
|
|
||||||
cd "qBittorrent-release-${QBT_VERSION}" ; \
|
|
||||||
fi && \
|
|
||||||
cmake \
|
|
||||||
-B build \
|
|
||||||
-G Ninja \
|
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
|
||||||
-DGUI=OFF \
|
|
||||||
-DQT6=ON \
|
|
||||||
-DSTACKTRACE=OFF && \
|
|
||||||
cmake --build build && \
|
|
||||||
cmake --install build
|
|
||||||
|
|
||||||
# image for running
|
|
||||||
FROM alpine:latest
|
|
||||||
|
|
||||||
RUN \
|
|
||||||
apk --no-cache add \
|
|
||||||
doas \
|
|
||||||
libtorrent-rasterbar \
|
|
||||||
python3 \
|
|
||||||
qt6-qtbase \
|
|
||||||
tini
|
|
||||||
|
|
||||||
RUN \
|
|
||||||
adduser \
|
|
||||||
-D \
|
|
||||||
-H \
|
|
||||||
-s /sbin/nologin \
|
|
||||||
-u 1000 \
|
|
||||||
qbtUser && \
|
|
||||||
echo "permit nopass :root" >> "/etc/doas.d/doas.conf"
|
|
||||||
|
|
||||||
COPY --from=builder /usr/local/bin/qbittorrent-nox /usr/bin/qbittorrent-nox
|
|
||||||
|
|
||||||
COPY entrypoint.sh /entrypoint.sh
|
|
||||||
|
|
||||||
ENTRYPOINT ["/sbin/tini", "-g", "--", "/entrypoint.sh"]
|
|
101
dist/docker/Readme.md
vendored
101
dist/docker/Readme.md
vendored
@@ -1,101 +0,0 @@
|
|||||||
# qBittorrent-nox Docker Image
|
|
||||||
|
|
||||||
This Dockerfile allows you to build a Docker Image containing qBittorrent-nox
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
In order to build/run this image you'll need Docker installed: https://docs.docker.com/get-docker/
|
|
||||||
|
|
||||||
If you don't need the GUI, you can just install Docker Engine: https://docs.docker.com/engine/install/
|
|
||||||
|
|
||||||
It is also recommended to install Docker Compose as it can significantly ease the process: https://docs.docker.com/compose/install/
|
|
||||||
|
|
||||||
## Building Docker Image
|
|
||||||
|
|
||||||
* If you are using Docker (not Docker Compose) then run the following commands in this folder:
|
|
||||||
```shell
|
|
||||||
export \
|
|
||||||
QBT_VERSION=devel
|
|
||||||
docker build \
|
|
||||||
--build-arg QBT_VERSION \
|
|
||||||
-t qbittorrent-nox:"$QBT_VERSION" \
|
|
||||||
.
|
|
||||||
```
|
|
||||||
|
|
||||||
* If you are using Docker Compose then you should edit `.env` file first.
|
|
||||||
You can find an explanation of the variables in the following [Parameters](#parameters) section. \
|
|
||||||
Then run the following commands in this folder:
|
|
||||||
```shell
|
|
||||||
docker compose build \
|
|
||||||
--build-arg QBT_VERSION
|
|
||||||
```
|
|
||||||
|
|
||||||
### Parameters
|
|
||||||
|
|
||||||
#### Environment variables
|
|
||||||
|
|
||||||
* `QBT_EULA` \
|
|
||||||
This environment variable defines whether you accept the end-user license agreement (EULA) of qBittorrent. \
|
|
||||||
**Put `accept` only if you understand and accepted the EULA.** You can find
|
|
||||||
the EULA [here](https://github.com/qbittorrent/qBittorrent/blob/56667e717b82c79433ecb8a5ff6cc2d7b315d773/src/app/main.cpp#L320-L323).
|
|
||||||
* `QBT_VERSION` \
|
|
||||||
This environment variable specifies the version of qBittorrent-nox to be built. \
|
|
||||||
For example, `4.4.0` is a valid entry. You can find all tagged versions [here](https://github.com/qbittorrent/qBittorrent/tags). \
|
|
||||||
Or you can put `devel` to build the latest development version.
|
|
||||||
* `QBT_WEBUI_PORT` \
|
|
||||||
This environment variable sets the port number which qBittorrent WebUI will be binded to.
|
|
||||||
|
|
||||||
#### Volumes
|
|
||||||
|
|
||||||
There are some paths involved:
|
|
||||||
* `<your_path>/config` \
|
|
||||||
Full path to a folder on your host machine which will store qBittorrent configurations.
|
|
||||||
Using relative path won't work.
|
|
||||||
* `<your_path>/downloads` \
|
|
||||||
Full path to a folder on your host machine which will store the files downloaded by qBittorrent.
|
|
||||||
Using relative path won't work.
|
|
||||||
|
|
||||||
## Running container
|
|
||||||
|
|
||||||
* Using Docker (not Docker Compose), simply run:
|
|
||||||
```shell
|
|
||||||
export \
|
|
||||||
QBT_EULA=accept \
|
|
||||||
QBT_VERSION=devel \
|
|
||||||
QBT_WEBUI_PORT=8080 \
|
|
||||||
QBT_CONFIG_PATH="/tmp/bbb/config"
|
|
||||||
QBT_DOWNLOADS_PATH="/tmp/bbb/downloads"
|
|
||||||
docker run \
|
|
||||||
-t \
|
|
||||||
--read-only \
|
|
||||||
--rm \
|
|
||||||
--tmpfs /tmp \
|
|
||||||
--name qbittorrent-nox \
|
|
||||||
-e QBT_EULA \
|
|
||||||
-e QBT_WEBUI_PORT \
|
|
||||||
-p "$QBT_WEBUI_PORT":"$QBT_WEBUI_PORT"/tcp \
|
|
||||||
-p 6881:6881/tcp \
|
|
||||||
-p 6881:6881/udp \
|
|
||||||
-v "$QBT_CONFIG_PATH":/config \
|
|
||||||
-v "$QBT_DOWNLOADS_PATH":/downloads \
|
|
||||||
qbittorrent-nox:"$QBT_VERSION"
|
|
||||||
```
|
|
||||||
|
|
||||||
* Using Docker Compose:
|
|
||||||
```shell
|
|
||||||
docker compose up
|
|
||||||
```
|
|
||||||
|
|
||||||
Then you can login at: `http://127.0.0.1:8080`
|
|
||||||
|
|
||||||
## Stopping container
|
|
||||||
|
|
||||||
* Using Docker (not Docker Compose):
|
|
||||||
```shell
|
|
||||||
docker stop -t 1800 qbittorrent-nox
|
|
||||||
```
|
|
||||||
|
|
||||||
* Using Docker Compose:
|
|
||||||
```shell
|
|
||||||
docker compose down
|
|
||||||
```
|
|
25
dist/docker/docker-compose.yml
vendored
25
dist/docker/docker-compose.yml
vendored
@@ -1,25 +0,0 @@
|
|||||||
version: "3.9"
|
|
||||||
|
|
||||||
services:
|
|
||||||
qbittorrent-nox:
|
|
||||||
build: .
|
|
||||||
container_name: qbittorrent-nox
|
|
||||||
environment:
|
|
||||||
- QBT_EULA=${QBT_EULA}
|
|
||||||
- QBT_VERSION=${QBT_VERSION}
|
|
||||||
- QBT_WEBUI_PORT=${QBT_WEBUI_PORT}
|
|
||||||
image: qbittorrent-nox:${QBT_VERSION}
|
|
||||||
ports:
|
|
||||||
# for bittorrent traffic
|
|
||||||
- 6881:6881/tcp
|
|
||||||
- 6881:6881/udp
|
|
||||||
# for WebUI
|
|
||||||
- ${QBT_WEBUI_PORT}:${QBT_WEBUI_PORT}/tcp
|
|
||||||
read_only: true
|
|
||||||
stop_grace_period: 30m
|
|
||||||
tmpfs:
|
|
||||||
- /tmp
|
|
||||||
tty: true
|
|
||||||
volumes:
|
|
||||||
- ${QBT_CONFIG_PATH}:/config
|
|
||||||
- ${QBT_DOWNLOADS_PATH}:/downloads
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user