You've already forked qBittorrent
mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-10-09 18:32:15 +02:00
Compare commits
909 Commits
release-5.
...
v3_3_x
Author | SHA1 | Date | |
---|---|---|---|
![]() |
8b2083b18f | ||
![]() |
27e793b4e1 | ||
![]() |
cc85806316 | ||
![]() |
d955e40531 | ||
![]() |
9b7dc87a99 | ||
![]() |
dbfaf35db4 | ||
![]() |
f3b4c4acfc | ||
![]() |
b37c395118 | ||
![]() |
d6ab0d6f02 | ||
![]() |
1b8c61c390 | ||
![]() |
cbfdc8f721 | ||
![]() |
cfae8c6399 | ||
![]() |
246a19d685 | ||
![]() |
8b6e06cfff | ||
![]() |
7e8f2ecc76 | ||
![]() |
0f061aa40d | ||
![]() |
256211c16a | ||
![]() |
bd684df315 | ||
![]() |
8eb9117033 | ||
![]() |
83ae15550d | ||
![]() |
3783541c30 | ||
![]() |
cc388fe772 | ||
![]() |
78f2afa239 | ||
![]() |
245e8e09bb | ||
![]() |
986cff9e66 | ||
![]() |
73f477072f | ||
![]() |
7e9ece2701 | ||
![]() |
ba8641f1ac | ||
![]() |
76c6041031 | ||
![]() |
2ae8472a78 | ||
![]() |
dc9df6d681 | ||
![]() |
aed9e8f1b7 | ||
![]() |
a94d14acaf | ||
![]() |
317689bd5d | ||
![]() |
1ad66ba791 | ||
![]() |
b4fb193d4a | ||
![]() |
ab47559bf2 | ||
![]() |
ac87728150 | ||
![]() |
1559205114 | ||
![]() |
54e8b6944e | ||
![]() |
164e8156db | ||
![]() |
c83bb22e80 | ||
![]() |
166c2a72ac | ||
![]() |
6b659804c7 | ||
![]() |
0831320f17 | ||
![]() |
8d2fb06f65 | ||
![]() |
bf6f103142 | ||
![]() |
c4b12b854e | ||
![]() |
de514e29c2 | ||
![]() |
03d020f0f2 | ||
![]() |
15e7726233 | ||
![]() |
9258a9ae78 | ||
![]() |
7c2437e5f2 | ||
![]() |
dc315c080b | ||
![]() |
971c340b53 | ||
![]() |
76b9b02177 | ||
![]() |
375c2dfd0b | ||
![]() |
6a3e7a12d8 | ||
![]() |
d92ef3fa4d | ||
![]() |
89d4cb257f | ||
![]() |
47ebb0df58 | ||
![]() |
71169abaa6 | ||
![]() |
83dd0ae86e | ||
![]() |
c9500d933b | ||
![]() |
b8787460a4 | ||
![]() |
d031264d62 | ||
![]() |
63b408c743 | ||
![]() |
1ac4458d13 | ||
![]() |
6b91510d71 | ||
![]() |
f1a7e8921a | ||
![]() |
78c34b948e | ||
![]() |
690db070c7 | ||
![]() |
0979936266 | ||
![]() |
ba23b41616 | ||
![]() |
412584e9c3 | ||
![]() |
13aa3c3088 | ||
![]() |
067c406c94 | ||
![]() |
8536e79f2a | ||
![]() |
70b98d903e | ||
![]() |
1997a29769 | ||
![]() |
f6e4f48386 | ||
![]() |
10002984e6 | ||
![]() |
2fa2d36c3b | ||
![]() |
ceed9b468e | ||
![]() |
f19854c054 | ||
![]() |
989cbda29c | ||
![]() |
881f79b76d | ||
![]() |
51986f3ac8 | ||
![]() |
943a837570 | ||
![]() |
a6cf386073 | ||
![]() |
b6e1b6e501 | ||
![]() |
cee308a517 | ||
![]() |
390d22bc66 | ||
![]() |
e4a5b8d352 | ||
![]() |
2ba3104337 | ||
![]() |
d1dfdd1306 | ||
![]() |
8a02a69924 | ||
![]() |
8ffc72b626 | ||
![]() |
e85479dfd7 | ||
![]() |
104bed7cc8 | ||
![]() |
75f3dd6d1d | ||
![]() |
751f64c98b | ||
![]() |
6353c2ca3c | ||
![]() |
f51e467ce3 | ||
![]() |
358d182c82 | ||
![]() |
7d2802cf2c | ||
![]() |
a739d86e3d | ||
![]() |
6ff614ebea | ||
![]() |
d9f4141221 | ||
![]() |
415a805818 | ||
![]() |
b8fff68230 | ||
![]() |
44f81a2d2b | ||
![]() |
b98ef9905e | ||
![]() |
e4f472e0f8 | ||
![]() |
91a38193f5 | ||
![]() |
66b92f3bb4 | ||
![]() |
a911dc57f3 | ||
![]() |
c43c473105 | ||
![]() |
d079b71f63 | ||
![]() |
8b0b398a5f | ||
![]() |
9400aac003 | ||
![]() |
7856863b3e | ||
![]() |
b1f598a1d3 | ||
![]() |
9c7ed80292 | ||
![]() |
1835ec6086 | ||
![]() |
3d4cead200 | ||
![]() |
112a24f9b6 | ||
![]() |
cdcafecb44 | ||
![]() |
4e173d34d3 | ||
![]() |
df5d31b52b | ||
![]() |
be745551e6 | ||
![]() |
a3e4bcd1dd | ||
![]() |
36cc6909f8 | ||
![]() |
3987e677d5 | ||
![]() |
13f27c6d3b | ||
![]() |
68f88f7907 | ||
![]() |
6c2c08c6dd | ||
![]() |
b8eee9e1b8 | ||
![]() |
ef08b4269d | ||
![]() |
b5a67aefdb | ||
![]() |
a302c995f8 | ||
![]() |
f2877cbec4 | ||
![]() |
4a95291fcc | ||
![]() |
6717e3d30c | ||
![]() |
778209ae49 | ||
![]() |
258efe261d | ||
![]() |
59abbab9b9 | ||
![]() |
7cc32cbe97 | ||
![]() |
5783f7bafe | ||
![]() |
0e64e6887a | ||
![]() |
c25cb29e61 | ||
![]() |
bca9b60db8 | ||
![]() |
1ec122c4ab | ||
![]() |
562dd41ab2 | ||
![]() |
b4bca7cfb7 | ||
![]() |
b985bb43fa | ||
![]() |
bf8a438a6f | ||
![]() |
7cd9b6f750 | ||
![]() |
d487c69dcc | ||
![]() |
444c2bdf19 | ||
![]() |
f86064e322 | ||
![]() |
6675544c23 | ||
![]() |
10205ca67e | ||
![]() |
2dfed3c41e | ||
![]() |
db29a61fbf | ||
![]() |
3497c5307c | ||
![]() |
565f263ecb | ||
![]() |
c94a61f434 | ||
![]() |
d390d941eb | ||
![]() |
f1de249c9e | ||
![]() |
f85768412c | ||
![]() |
5a28e8c5e9 | ||
![]() |
5b72595547 | ||
![]() |
a363ed6d7c | ||
![]() |
077469d5a0 | ||
![]() |
66df7c47b2 | ||
![]() |
20b30dd4b5 | ||
![]() |
bacef1ca24 | ||
![]() |
8d11af94f2 | ||
![]() |
02c96fa5e2 | ||
![]() |
65b491fed0 | ||
![]() |
f0eab3f085 | ||
![]() |
21212fdfe5 | ||
![]() |
f39465c25a | ||
![]() |
a3eaee7e7e | ||
![]() |
1e28bbb47e | ||
![]() |
c5b98339ae | ||
![]() |
edb1b727c6 | ||
![]() |
78aeb5eee7 | ||
![]() |
9dd93c3d17 | ||
![]() |
2d64405eb8 | ||
![]() |
dff560d8c2 | ||
![]() |
b3c973612f | ||
![]() |
3480d3d10c | ||
![]() |
f45d21d3a2 | ||
![]() |
8dcb792ac0 | ||
![]() |
cb5174bfa2 | ||
![]() |
9138156968 | ||
![]() |
8a0b1fe0be | ||
![]() |
3bbe304856 | ||
![]() |
0356172a1d | ||
![]() |
80f3b19356 | ||
![]() |
39a569b438 | ||
![]() |
edaa7e85a7 | ||
![]() |
f9f7a8cbf2 | ||
![]() |
7aef9828c9 | ||
![]() |
18ad972936 | ||
![]() |
8b5c275934 | ||
![]() |
59765954b8 | ||
![]() |
f5fff855bb | ||
![]() |
26c713851e | ||
![]() |
f9b64c4e73 | ||
![]() |
edf6c30cd8 | ||
![]() |
83860afa60 | ||
![]() |
4b7362aa6b | ||
![]() |
dd0537d8d2 | ||
![]() |
3c50cc1d2c | ||
![]() |
78fdb68457 | ||
![]() |
bb1bd34ec0 | ||
![]() |
1841834c89 | ||
![]() |
30b70a99f1 | ||
![]() |
f0f2e93e4d | ||
![]() |
5852c5e318 | ||
![]() |
b38827bb8e | ||
![]() |
240046f720 | ||
![]() |
78b1194da1 | ||
![]() |
c1a66dad51 | ||
![]() |
4a10d246c2 | ||
![]() |
125ab378a4 | ||
![]() |
4cd8a36b40 | ||
![]() |
364df2e18c | ||
![]() |
f8f2476aa5 | ||
![]() |
d685c9739b | ||
![]() |
6fdfcf38f1 | ||
![]() |
7c85866881 | ||
![]() |
37673cd86f | ||
![]() |
a4a38d633c | ||
![]() |
93bdc81e3c | ||
![]() |
827d5a22fb | ||
![]() |
34e56eade8 | ||
![]() |
4a23e7da37 | ||
![]() |
f577a26fe2 | ||
![]() |
3f176d8265 | ||
![]() |
cbc001e059 | ||
![]() |
a66ed05ecd | ||
![]() |
ec347d8dbe | ||
![]() |
f0acafb853 | ||
![]() |
1a12e891ec | ||
![]() |
88ba8e2ceb | ||
![]() |
2e403277f3 | ||
![]() |
89349f60b0 | ||
![]() |
0604d3729a | ||
![]() |
cf16e3b8a1 | ||
![]() |
dcb3496651 | ||
![]() |
9d10da3ed2 | ||
![]() |
0524deb496 | ||
![]() |
787ae43d54 | ||
![]() |
67bb2cc150 | ||
![]() |
51995c80d1 | ||
![]() |
5f43741b09 | ||
![]() |
3328d8efd2 | ||
![]() |
a54a9e5487 | ||
![]() |
0181ca70f4 | ||
![]() |
ff665af3f7 | ||
![]() |
9275cdc5bf | ||
![]() |
b7c3bdd443 | ||
![]() |
5fd08f8664 | ||
![]() |
84a4d323c7 | ||
![]() |
8efb13bfaf | ||
![]() |
0187b55610 | ||
![]() |
2f606b2728 | ||
![]() |
025f75beca | ||
![]() |
4711cafd20 | ||
![]() |
8d12ca9477 | ||
![]() |
67b90bfb51 | ||
![]() |
ab05c0c326 | ||
![]() |
c5ea453438 | ||
![]() |
4f041c16e1 | ||
![]() |
28cfee7bd3 | ||
![]() |
6272287fbb | ||
![]() |
e7a1542902 | ||
![]() |
5e371d8195 | ||
![]() |
6bb189ea13 | ||
![]() |
8496f31e39 | ||
![]() |
08f634f748 | ||
![]() |
2b5dc5c4a6 | ||
![]() |
0a2f0aefb3 | ||
![]() |
66e137b8ee | ||
![]() |
f9be39545b | ||
![]() |
789b8046a2 | ||
![]() |
129bf497c8 | ||
![]() |
a6d7693d62 | ||
![]() |
4e9fbc4da5 | ||
![]() |
23f6ff4673 | ||
![]() |
3c0dfa6444 | ||
![]() |
694311b2bd | ||
![]() |
b77626897f | ||
![]() |
b8081feac1 | ||
![]() |
8b805f4518 | ||
![]() |
8bb4f021f1 | ||
![]() |
97c79050dc | ||
![]() |
ac62a708de | ||
![]() |
8d9789f51b | ||
![]() |
559d0228fd | ||
![]() |
1296e7b891 | ||
![]() |
0333e23710 | ||
![]() |
7320a80caa | ||
![]() |
0579bfc069 | ||
![]() |
d20d04299e | ||
![]() |
50b2009e9c | ||
![]() |
721d29edda | ||
![]() |
bc9cae199b | ||
![]() |
c38b250667 | ||
![]() |
101b2f3ad2 | ||
![]() |
9c4f798d93 | ||
![]() |
249ff21738 | ||
![]() |
f1149097b6 | ||
![]() |
111b0df307 | ||
![]() |
8041af72cd | ||
![]() |
4be6d0b30f | ||
![]() |
8c757969f2 | ||
![]() |
ae6a82f814 | ||
![]() |
eed3f0559a | ||
![]() |
c7884e7621 | ||
![]() |
2946ab7e7a | ||
![]() |
ddb8e4d21a | ||
![]() |
00d4f6141f | ||
![]() |
7971a25c2a | ||
![]() |
ab2411930a | ||
![]() |
93f972bfca | ||
![]() |
db638844d0 | ||
![]() |
ba99eddc91 | ||
![]() |
92428cee5d | ||
![]() |
2c7d836925 | ||
![]() |
7703dcf626 | ||
![]() |
157520c4fc | ||
![]() |
5bc728fa33 | ||
![]() |
35fdc43b3f | ||
![]() |
ae6ea29f2f | ||
![]() |
4eac2cab31 | ||
![]() |
87f4f57f8e | ||
![]() |
a6e250fa43 | ||
![]() |
b118079379 | ||
![]() |
cb2d39f2a7 | ||
![]() |
4cf549ff25 | ||
![]() |
b5c6342dca | ||
![]() |
46ec556921 | ||
![]() |
33ae1a7bee | ||
![]() |
87a3a67668 | ||
![]() |
055b1e0163 | ||
![]() |
2bd5ea2c68 | ||
![]() |
1479a74198 | ||
![]() |
9a0d25284c | ||
![]() |
284e836992 | ||
![]() |
43f5b31843 | ||
![]() |
cada6cfc88 | ||
![]() |
99f157927f | ||
![]() |
664664394c | ||
![]() |
a790901691 | ||
![]() |
fdc70eaa62 | ||
![]() |
b05a23e1ab | ||
![]() |
9f6a0882e2 | ||
![]() |
b351b21e55 | ||
![]() |
ef22f06e92 | ||
![]() |
8ea7426bc1 | ||
![]() |
79e7e1727f | ||
![]() |
98c33dd77c | ||
![]() |
9c6504f6dd | ||
![]() |
76c350bdcb | ||
![]() |
106dcfd00e | ||
![]() |
668c8cb0e2 | ||
![]() |
3159bdf4dd | ||
![]() |
97d2c0d187 | ||
![]() |
0041ee3636 | ||
![]() |
1ed523bec3 | ||
![]() |
b131a6e9df | ||
![]() |
56d9d370e9 | ||
![]() |
a6efc4d92d | ||
![]() |
a77db6e822 | ||
![]() |
95a558941e | ||
![]() |
867d69d0f2 | ||
![]() |
a6d381da38 | ||
![]() |
f0eb708b07 | ||
![]() |
1d70698bd0 | ||
![]() |
79871c8e21 | ||
![]() |
25d5524213 | ||
![]() |
8d21b73434 | ||
![]() |
2ef01a314c | ||
![]() |
a8b4aca5e6 | ||
![]() |
67e7315eae | ||
![]() |
a25a15d1c6 | ||
![]() |
086588eeed | ||
![]() |
44fa308681 | ||
![]() |
6188287094 | ||
![]() |
17d10afd65 | ||
![]() |
89bd0e4397 | ||
![]() |
1c1917f885 | ||
![]() |
642377bd65 | ||
![]() |
bb4668c071 | ||
![]() |
689316db09 | ||
![]() |
ad0c008a3e | ||
![]() |
09e3698b37 | ||
![]() |
6450ebfc6c | ||
![]() |
e9f38ebcfd | ||
![]() |
4dba31f534 | ||
![]() |
04c1aad0dd | ||
![]() |
6763f3ac33 | ||
![]() |
afca704db0 | ||
![]() |
eaec8fcddd | ||
![]() |
f86fd52d6f | ||
![]() |
f3f175570c | ||
![]() |
729c80f910 | ||
![]() |
fcaca558a0 | ||
![]() |
983df9113e | ||
![]() |
acf9874252 | ||
![]() |
d7cf6bb11b | ||
![]() |
558ea53cc2 | ||
![]() |
87a6478430 | ||
![]() |
cea673b267 | ||
![]() |
4a5ab93c62 | ||
![]() |
4c86fc8973 | ||
![]() |
1c485ffb07 | ||
![]() |
f283734f13 | ||
![]() |
dca4ff0649 | ||
![]() |
1975f2269e | ||
![]() |
6fac9b42da | ||
![]() |
dabae4c914 | ||
![]() |
b1e9b4493d | ||
![]() |
2fa207e728 | ||
![]() |
7adcd909e7 | ||
![]() |
50805fc2b5 | ||
![]() |
3a1b7b6159 | ||
![]() |
498b7c2436 | ||
![]() |
4f17364305 | ||
![]() |
9ebc115719 | ||
![]() |
a6fa8c3a8e | ||
![]() |
8187366c89 | ||
![]() |
366ad01120 | ||
![]() |
4da05e5914 | ||
![]() |
3fb19b6a28 | ||
![]() |
88f59070a4 | ||
![]() |
476ffbe68a | ||
![]() |
8a1846cb26 | ||
![]() |
1cafde2afe | ||
![]() |
bdf7312f5d | ||
![]() |
a848d3d2d8 | ||
![]() |
4a328843e4 | ||
![]() |
edeb2342be | ||
![]() |
0639a06809 | ||
![]() |
7590d0fdad | ||
![]() |
fe54da80cd | ||
![]() |
e4ac654795 | ||
![]() |
1848180faa | ||
![]() |
4e9b71078f | ||
![]() |
fe1b388347 | ||
![]() |
23b4e62834 | ||
![]() |
7fb96431b9 | ||
![]() |
5213f35ec0 | ||
![]() |
8e2297510d | ||
![]() |
18505e2517 | ||
![]() |
10908a6ece | ||
![]() |
c1ee91cd2a | ||
![]() |
036b4e1a85 | ||
![]() |
3a4dc08304 | ||
![]() |
e805e6806a | ||
![]() |
f2163f6c3d | ||
![]() |
6288cb4fd3 | ||
![]() |
409e877f8a | ||
![]() |
f2d5ba2907 | ||
![]() |
b33d0f0a59 | ||
![]() |
63245de69b | ||
![]() |
b9fd9f1d8d | ||
![]() |
c6fe1d3620 | ||
![]() |
73f08dd6e1 | ||
![]() |
22dc71f365 | ||
![]() |
455cc29dad | ||
![]() |
9d39a2cddc | ||
![]() |
efeb46571b | ||
![]() |
a7b564bb2e | ||
![]() |
10df509bce | ||
![]() |
7b394d6e99 | ||
![]() |
f1968de2c9 | ||
![]() |
b5db0eeec1 | ||
![]() |
3ed803f59b | ||
![]() |
ff10702bfd | ||
![]() |
73d3664f92 | ||
![]() |
aa6025aa87 | ||
![]() |
a344886ef6 | ||
![]() |
c181019f40 | ||
![]() |
5962efde23 | ||
![]() |
d43466d466 | ||
![]() |
29fb8e8085 | ||
![]() |
b076ff68ac | ||
![]() |
5f2da3a529 | ||
![]() |
576fbe5dc1 | ||
![]() |
8fc7f3fdc0 | ||
![]() |
becd67ac84 | ||
![]() |
7761a2604a | ||
![]() |
c6546db138 | ||
![]() |
f0dd4d5673 | ||
![]() |
7f245b63d7 | ||
![]() |
af17f4df9e | ||
![]() |
3ec2f94b27 | ||
![]() |
d7f1beb7f1 | ||
![]() |
8c7a4ab86c | ||
![]() |
ce2d42a264 | ||
![]() |
dc011a5599 | ||
![]() |
3c6b79805c | ||
![]() |
7e7055f2ff | ||
![]() |
18c9a65340 | ||
![]() |
f5ce39a36a | ||
![]() |
58e4f9d38e | ||
![]() |
5bd7dce396 | ||
![]() |
d9d49b6d0b | ||
![]() |
cc48ca1fdc | ||
![]() |
2dc6002064 | ||
![]() |
1478b21e8d | ||
![]() |
726c2fd56d | ||
![]() |
df86d66702 | ||
![]() |
223415fb69 | ||
![]() |
a4c9b667a7 | ||
![]() |
5f8e05ba50 | ||
![]() |
ed2689de15 | ||
![]() |
9e124527e1 | ||
![]() |
59971aa577 | ||
![]() |
164ca0289a | ||
![]() |
c0aa50d74b | ||
![]() |
66d7dc751c | ||
![]() |
c1738f97f1 | ||
![]() |
105874613a | ||
![]() |
d6829b253b | ||
![]() |
c1291539bf | ||
![]() |
3060c979f4 | ||
![]() |
d71a18b945 | ||
![]() |
4078fc5e2d | ||
![]() |
b7cb53a251 | ||
![]() |
275a775769 | ||
![]() |
1c49ff1df6 | ||
![]() |
fc77fdbcb5 | ||
![]() |
e0e757b610 | ||
![]() |
33fe9b6d87 | ||
![]() |
fca78d1a3f | ||
![]() |
92794a786f | ||
![]() |
08d9ad7f80 | ||
![]() |
6023093329 | ||
![]() |
c070193c30 | ||
![]() |
633fb7a7de | ||
![]() |
14a37e8d45 | ||
![]() |
d03a71899e | ||
![]() |
283338f5f3 | ||
![]() |
b600253313 | ||
![]() |
c97b5ab617 | ||
![]() |
9016b698c9 | ||
![]() |
eb7a7b9c04 | ||
![]() |
9e0a3ee692 | ||
![]() |
c899ed5b50 | ||
![]() |
a6c50aff95 | ||
![]() |
ab4a608342 | ||
![]() |
e7cfd7a31d | ||
![]() |
c4ea13b284 | ||
![]() |
5d09639109 | ||
![]() |
885f5b4bee | ||
![]() |
3cd06c457a | ||
![]() |
373e22660d | ||
![]() |
92f58a40e7 | ||
![]() |
dbf5a264bd | ||
![]() |
145dcf9efe | ||
![]() |
f05e25c750 | ||
![]() |
fc02377171 | ||
![]() |
3816052b0a | ||
![]() |
fae583e0da | ||
![]() |
1114c198ca | ||
![]() |
c5f9567c0b | ||
![]() |
e9a5768e4f | ||
![]() |
858e5f8db8 | ||
![]() |
0afa83dbfa | ||
![]() |
fc95ce310e | ||
![]() |
e2c9e7b877 | ||
![]() |
b1e62ca006 | ||
![]() |
a063ebd396 | ||
![]() |
728dd744bb | ||
![]() |
a0c1ee76a2 | ||
![]() |
c7b15b9cc5 | ||
![]() |
0770fe8b09 | ||
![]() |
cf98220c40 | ||
![]() |
2eb393ae9a | ||
![]() |
d65d11d64c | ||
![]() |
f4fdb80cc9 | ||
![]() |
50a0ce1da2 | ||
![]() |
2e9370481d | ||
![]() |
c60c58b092 | ||
![]() |
ba5dded076 | ||
![]() |
eb36949e87 | ||
![]() |
b7358a3039 | ||
![]() |
d0f082e238 | ||
![]() |
b301444f5e | ||
![]() |
900a80adc1 | ||
![]() |
d4887ee736 | ||
![]() |
e23566cde1 | ||
![]() |
b5f30a6efb | ||
![]() |
deb1d54999 | ||
![]() |
7779efbc30 | ||
![]() |
acd65e3185 | ||
![]() |
f2dd050ade | ||
![]() |
9c28a48f2e | ||
![]() |
3e8af95d30 | ||
![]() |
cba9d222de | ||
![]() |
b137eb01ed | ||
![]() |
fd156580a0 | ||
![]() |
21c17f2a81 | ||
![]() |
5f19cd2c0e | ||
![]() |
9279fedd49 | ||
![]() |
2361d6f12d | ||
![]() |
78bfbc5669 | ||
![]() |
6101f11673 | ||
![]() |
15361a6c16 | ||
![]() |
835a999464 | ||
![]() |
b9b0739efd | ||
![]() |
a34c072b7a | ||
![]() |
72e88ba7ec | ||
![]() |
afb143cad1 | ||
![]() |
1ca5d10abb | ||
![]() |
67675b6cdc | ||
![]() |
ef47983d8d | ||
![]() |
cf47517ee3 | ||
![]() |
33199bbd74 | ||
![]() |
4fb735c6d1 | ||
![]() |
99ca42bf48 | ||
![]() |
f6b4b5f6f0 | ||
![]() |
6f73c32fcc | ||
![]() |
c1611988b4 | ||
![]() |
fbe1d2d78a | ||
![]() |
34fec15ceb | ||
![]() |
1977e4f24d | ||
![]() |
5774d27c7b | ||
![]() |
3a6a857371 | ||
![]() |
e2f88feaf9 | ||
![]() |
16fec04b6a | ||
![]() |
fbac4afa2d | ||
![]() |
d6e9736af1 | ||
![]() |
76b3c72c86 | ||
![]() |
ef954fea55 | ||
![]() |
11d085712e | ||
![]() |
e4bc7852e5 | ||
![]() |
3d107e0588 | ||
![]() |
8e5c31ae82 | ||
![]() |
3c03ccc14a | ||
![]() |
0795320086 | ||
![]() |
bd6877a0bd | ||
![]() |
b47292c39f | ||
![]() |
3d2b1b876b | ||
![]() |
843472e663 | ||
![]() |
e952e3167e | ||
![]() |
67f05edf71 | ||
![]() |
3ab76cb985 | ||
![]() |
509d97b0ad | ||
![]() |
67ae08df3c | ||
![]() |
38de6b1e41 | ||
![]() |
72b179805d | ||
![]() |
beeda5e0b2 | ||
![]() |
356db2f2f7 | ||
![]() |
19acbf587f | ||
![]() |
5eee3f7357 | ||
![]() |
8f990d5d7e | ||
![]() |
f0ec94c31c | ||
![]() |
e37dfa96f9 | ||
![]() |
4b48db3273 | ||
![]() |
545002a809 | ||
![]() |
e2e9470e10 | ||
![]() |
0bf1abba6a | ||
![]() |
24165856e9 | ||
![]() |
657f0640b9 | ||
![]() |
faffefc4ff | ||
![]() |
0619aacf1f | ||
![]() |
9edbbb6473 | ||
![]() |
87ee720c0c | ||
![]() |
b7ca036bc3 | ||
![]() |
c4442c98b9 | ||
![]() |
fee8036a7a | ||
![]() |
94bd4308c7 | ||
![]() |
5e5785435a | ||
![]() |
d7f02a7ee7 | ||
![]() |
e6480f9dff | ||
![]() |
e9f6cfc2e8 | ||
![]() |
4f68d263d4 | ||
![]() |
6a672472a2 | ||
![]() |
3590ac2997 | ||
![]() |
98fe5e11dd | ||
![]() |
9df5c0292b | ||
![]() |
1f2d25a1ff | ||
![]() |
f1dd7a091c | ||
![]() |
5457bde8d0 | ||
![]() |
2e325d9506 | ||
![]() |
0264a7bf58 | ||
![]() |
32fe930b88 | ||
![]() |
72883ffb73 | ||
![]() |
f2c24dd8c3 | ||
![]() |
8904139c6d | ||
![]() |
571f46886f | ||
![]() |
0cd691e167 | ||
![]() |
4f65e2d468 | ||
![]() |
35981f6ef5 | ||
![]() |
dc493880f3 | ||
![]() |
872e78ca21 | ||
![]() |
7b601796d7 | ||
![]() |
09ef552aea | ||
![]() |
b4c9cae0d1 | ||
![]() |
6d2a0ae83b | ||
![]() |
238a925000 | ||
![]() |
cce01cfb8e | ||
![]() |
b2db1972f3 | ||
![]() |
8b851fe2b9 | ||
![]() |
e3c9488fb0 | ||
![]() |
c27fb110f8 | ||
![]() |
ec61f24099 | ||
![]() |
130ee5a71e | ||
![]() |
cb3e7e6bd6 | ||
![]() |
7fd65d5428 | ||
![]() |
442f521bf5 | ||
![]() |
016052aea1 | ||
![]() |
411982e2b0 | ||
![]() |
4b93ccd4e4 | ||
![]() |
6603a8947a | ||
![]() |
031e354577 | ||
![]() |
ec7fb331e0 | ||
![]() |
a232b77104 | ||
![]() |
8c11245469 | ||
![]() |
60857d3b8e | ||
![]() |
2fe6b76968 | ||
![]() |
6c7350fce0 | ||
![]() |
c770f4d0bc | ||
![]() |
876e96911f | ||
![]() |
5620fd120e | ||
![]() |
ea7f6046b4 | ||
![]() |
fddac5d679 | ||
![]() |
2c4bc68af1 | ||
![]() |
7676f49612 | ||
![]() |
e879279019 | ||
![]() |
84b7680718 | ||
![]() |
be180140a3 | ||
![]() |
c051c279d4 | ||
![]() |
964dcc4d8a | ||
![]() |
64cf93b889 | ||
![]() |
365737afe1 | ||
![]() |
2cf14f0120 | ||
![]() |
46bb25ba9f | ||
![]() |
ee5a72c570 | ||
![]() |
18b56f4d0a | ||
![]() |
f626276218 | ||
![]() |
e28554f85c | ||
![]() |
a0a3447b2e | ||
![]() |
4049ca7308 | ||
![]() |
c28151ba92 | ||
![]() |
81e1a050a2 | ||
![]() |
34d5824c4a | ||
![]() |
bb875df400 | ||
![]() |
61f47d366a | ||
![]() |
8347eb157d | ||
![]() |
dd22c9b138 | ||
![]() |
7f6ad55042 | ||
![]() |
55b06ab9ba | ||
![]() |
21f0a5eb76 | ||
![]() |
16ed11623f | ||
![]() |
c184cf8d7d | ||
![]() |
6a90214eb2 | ||
![]() |
226ec0610a | ||
![]() |
694bd7cb95 | ||
![]() |
9e807e7151 | ||
![]() |
78fe7fcf9d | ||
![]() |
c2465f931e | ||
![]() |
8d50325961 | ||
![]() |
570a651a59 | ||
![]() |
0eaa2aeef2 | ||
![]() |
2c7e309493 | ||
![]() |
ded3cf5798 | ||
![]() |
4edac3e974 | ||
![]() |
53885fb5e4 | ||
![]() |
3942c095f6 | ||
![]() |
94be3b930d | ||
![]() |
09bc14cc57 | ||
![]() |
51b93b4284 | ||
![]() |
9c50ea14cb | ||
![]() |
42a74ea78e | ||
![]() |
1ac68a9192 | ||
![]() |
29b5d460ea | ||
![]() |
a441bca4de | ||
![]() |
e2da3f2ebd | ||
![]() |
f235d412f8 | ||
![]() |
60b103b062 | ||
![]() |
0fdb23098b | ||
![]() |
51c296ac69 | ||
![]() |
a120842ba2 | ||
![]() |
8911de9349 | ||
![]() |
013a1b8403 | ||
![]() |
1492a24391 | ||
![]() |
bf1559320b | ||
![]() |
d5648a67ae | ||
![]() |
a6ec82682d | ||
![]() |
bd359ad498 | ||
![]() |
458f48b290 | ||
![]() |
a0ae21148a | ||
![]() |
5dc9b5c2dd | ||
![]() |
48175bbb85 | ||
![]() |
3b03bb286e | ||
![]() |
23fdf3a0bc | ||
![]() |
4cf7618c52 | ||
![]() |
6fd9413dae | ||
![]() |
120d073a04 | ||
![]() |
8fa2adb6fc | ||
![]() |
70105d5834 | ||
![]() |
05961faf42 | ||
![]() |
386706f05b | ||
![]() |
1813e96a42 | ||
![]() |
eaf6e47391 | ||
![]() |
8ba82064cd | ||
![]() |
5d5a0de694 | ||
![]() |
145180c2a1 | ||
![]() |
50881b9972 | ||
![]() |
a115932bc1 | ||
![]() |
c7fd0fbe45 | ||
![]() |
d513d002cc | ||
![]() |
a570bd5e2c | ||
![]() |
bdacfd540c | ||
![]() |
c89b9edf27 | ||
![]() |
0fdf788624 | ||
![]() |
f0ae30070b | ||
![]() |
8fb8f4b467 | ||
![]() |
c3a2e50191 | ||
![]() |
b045b5ebf7 | ||
![]() |
6436152c75 | ||
![]() |
9c3ae53330 | ||
![]() |
acd5fcfb00 | ||
![]() |
9a6f8ab402 | ||
![]() |
0f854014af | ||
![]() |
a11175afba | ||
![]() |
c5776c3bf1 | ||
![]() |
19d566253f | ||
![]() |
0d59d6a03e | ||
![]() |
c7b2ee367f | ||
![]() |
510ec029ea | ||
![]() |
1f2daed9d6 | ||
![]() |
08b854ce74 | ||
![]() |
6b34803c59 | ||
![]() |
fca224b9d0 | ||
![]() |
4f5009351f | ||
![]() |
c1f77d45ab | ||
![]() |
60f0447603 | ||
![]() |
6ae208a661 | ||
![]() |
781c8034a5 | ||
![]() |
4cf8359257 | ||
![]() |
3ed4de3043 | ||
![]() |
a374b99ba2 | ||
![]() |
601734a59b | ||
![]() |
69cc97c3dd | ||
![]() |
226f74a866 | ||
![]() |
cf35392cd2 | ||
![]() |
27319e9e64 | ||
![]() |
69b8544e26 | ||
![]() |
41e5dc8911 | ||
![]() |
ba1ffa4e54 | ||
![]() |
4edc073373 | ||
![]() |
1f00d2e5d7 | ||
![]() |
d87e42ba00 | ||
![]() |
975b1d5257 | ||
![]() |
5f84363afb | ||
![]() |
545c526e2f | ||
![]() |
06fcc57619 | ||
![]() |
06c6a444c9 | ||
![]() |
8474d0d199 | ||
![]() |
0f4610c127 | ||
![]() |
d753988729 | ||
![]() |
a6b948077a | ||
![]() |
3276cc4987 | ||
![]() |
71557fe784 | ||
![]() |
29fc5bc80d | ||
![]() |
db07551e4c | ||
![]() |
8f6eb795e3 | ||
![]() |
0a37799e6e | ||
![]() |
76d6d9a4f9 | ||
![]() |
0c8abd0abb | ||
![]() |
ddc8420810 | ||
![]() |
a4ff039abc | ||
![]() |
c8be062e19 | ||
![]() |
29443a2c10 | ||
![]() |
e402556e91 | ||
![]() |
4ed4ebcdb7 | ||
![]() |
a280467270 | ||
![]() |
9b1090332b | ||
![]() |
18a520c9f9 | ||
![]() |
af871ef8af | ||
![]() |
3af7eb8e03 | ||
![]() |
3439300cda | ||
![]() |
a8027565c9 | ||
![]() |
3d4e1a8127 | ||
![]() |
7b6a1a1955 | ||
![]() |
3f8dc60680 | ||
![]() |
9be449dd7f | ||
![]() |
c46f2ba097 | ||
![]() |
c2c441ed08 | ||
![]() |
c1e52fa1cd | ||
![]() |
fbed5dc606 | ||
![]() |
97978068c6 | ||
![]() |
006e34880a | ||
![]() |
1fd5c5d8b5 | ||
![]() |
68ac9fda2d | ||
![]() |
c5d807ef65 | ||
![]() |
e17f10ae6b | ||
![]() |
78c5d1c12f | ||
![]() |
26fb54299b |
52
.appveyor.yml
Normal file
52
.appveyor.yml
Normal file
@@ -0,0 +1,52 @@
|
||||
version: '{branch}-{build}'
|
||||
|
||||
# Do not build on tags (GitHub only)
|
||||
skip_tags: true
|
||||
|
||||
image: Visual Studio 2017
|
||||
|
||||
environment:
|
||||
REPO_DIR: &REPO_DIR c:\qbittorrent
|
||||
CACHE_DIR: &CACHE_DIR c:\qbt_cache
|
||||
|
||||
QBT_VER_URL: https://builds.shiki.hu/appveyor/version
|
||||
QBT_LIB_URL: https://builds.shiki.hu/appveyor/qbt_libraries.7z
|
||||
|
||||
# project directory
|
||||
clone_folder: *REPO_DIR
|
||||
|
||||
# cache size should < 100MB (after compressing with fastest option):
|
||||
# see: https://www.appveyor.com/docs/build-cache#save-update-cache-before-build-finishes
|
||||
cache:
|
||||
- *CACHE_DIR
|
||||
|
||||
install:
|
||||
# check if library needs update
|
||||
- appveyor DownloadFile "%QBT_VER_URL%" -FileName "c:\version_new" && SET /P newVersion=<"c:\version_new"
|
||||
- IF EXIST "%CACHE_DIR%\version" (SET /P oldVersion=<"%CACHE_DIR%\version")
|
||||
- IF NOT EXIST "%CACHE_DIR%\version" (SET updateCache=1)
|
||||
- IF NOT "%oldVersion%" == "%newVersion%" (SET updateCache=1)
|
||||
# update library
|
||||
- IF "%updateCache%" == "1" (ECHO "--- Will redownload libraries ---" &&
|
||||
RMDIR /S /Q "%CACHE_DIR%" & MKDIR "%CACHE_DIR%" &&
|
||||
appveyor DownloadFile "%QBT_LIB_URL%" -FileName "c:\qbt_lib.7z" && 7z x "c:\qbt_lib.7z" -o"%CACHE_DIR%" > nul &&
|
||||
COPY "c:\version_new" "%CACHE_DIR%\version")
|
||||
# Qt stay compressed in cache
|
||||
- 7z x "%CACHE_DIR%\qt5_32.7z" -o"c:\qbt" > nul
|
||||
|
||||
before_build:
|
||||
# setup env
|
||||
- CALL "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat"
|
||||
- SET PATH=%PATH%;c:\qbt\qt5_32\bin;%CACHE_DIR%\jom;
|
||||
# setup project
|
||||
- COPY /Y "%CACHE_DIR%\winconf.pri" "%REPO_DIR%"
|
||||
- COPY /Y "%CACHE_DIR%\winconf-msvc.pri" "%REPO_DIR%"
|
||||
# workarounds
|
||||
- MKLINK /J "c:\qbt\base" "%CACHE_DIR%\base"
|
||||
|
||||
build_script:
|
||||
- cd "%REPO_DIR%"
|
||||
- qmake qbittorrent.pro && cd src && qmake src.pro
|
||||
- jom -j2 -f Makefile.Release
|
||||
|
||||
test: off
|
81
.clang-tidy
81
.clang-tidy
@@ -1,81 +0,0 @@
|
||||
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,
|
||||
-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: "*"
|
@@ -1,14 +0,0 @@
|
||||
# EditorConfig is awesome: https://EditorConfig.org
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[**.yml]
|
||||
indent_size = 2
|
11
.gitattributes
vendored
11
.gitattributes
vendored
@@ -1,10 +1,7 @@
|
||||
core.eol=lf
|
||||
* text eol=lf
|
||||
*.icns binary
|
||||
*.ico binary
|
||||
*.png binary
|
||||
*.qm binary
|
||||
*.zip binary
|
||||
|
||||
dist/windows/license.txt text eol=crlf
|
||||
test/testdata/crlf.txt text eol=crlf
|
||||
*.png binary
|
||||
*.ico binary
|
||||
*.qm binary
|
||||
*.icns binary
|
||||
|
1
.github/FUNDING.yml
vendored
1
.github/FUNDING.yml
vendored
@@ -1 +0,0 @@
|
||||
custom: "https://www.qbittorrent.org/donate.php"
|
14
.github/ISSUE_TEMPLATE.md
vendored
Normal file
14
.github/ISSUE_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
**Please provide the following information**
|
||||
|
||||
### qBittorrent version and Operating System:
|
||||
|
||||
### If on linux, libtorrent and Qt version:
|
||||
|
||||
### What is the problem:
|
||||
|
||||
### What is the expected behavior:
|
||||
|
||||
### Steps to reproduce:
|
||||
|
||||
### Extra info(if any):
|
||||
|
76
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
76
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -1,76 +0,0 @@
|
||||
name: Bug Report
|
||||
description: File a bug report to help improve qBittorrent user experience.
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
#### ADVISORY
|
||||
"We do not support any versions older than the current release series"
|
||||
|
||||
"We do not support any 3rd party/forked versions e.g. `portableapps`/`Enhanced Edition`etc."
|
||||
|
||||
"Please post all details in **English**."
|
||||
|
||||
#### Prerequisites before submitting an issue!
|
||||
- Read the issue reporting section in the **[contributing guidelines](https://github.com/qbittorrent/qBittorrent/blob/master/CONTRIBUTING.md)**, to know how to submit a good bug report with the required information.
|
||||
- Verify that the issue is not fixed and is reproducible in the **[latest official qBittorrent version](https://www.qbittorrent.org/download.php).**
|
||||
- (Optional, but recommended) Verify that the issue is not fixed and is reproducible in the latest CI (currently only on **[Windows](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_windows.yaml?query=branch%3Amaster+event%3Apush)**) builds.
|
||||
- Check the **[frequent/common issues list](https://github.com/qbittorrent/qBittorrent/projects/2)** and perform a **[search of the issue tracker (including closed ones)](https://github.com/qbittorrent/qBittorrent/issues)** to avoid posting a duplicate.
|
||||
- Make sure this is not a support request or question, both of which are better suited for either the **[discussions section](https://github.com/qbittorrent/qBittorrent/discussions)**, **[forum](https://qbforums.shiki.hu/)**, or **[subreddit](https://www.reddit.com/r/qBittorrent/)**.
|
||||
- Verify that the **[wiki](https://github.com/qbittorrent/qBittorrent/wiki)** did not contain a suitable solution either.
|
||||
- If relevant to issue/when asked, the qBittorrent preferences file, qBittorrent.log & watched_folders.json (if using "Watched Folders" feature) must be provided.
|
||||
See **[Where does qBittorrent save its settings?](https://github.com/qbittorrent/qBittorrent/wiki/Frequently-Asked-Questions#Where_does_qBittorrent_save_its_settings)**
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: qBittorrent & operating system versions
|
||||
description: |
|
||||
Qt and libtorrent-rasterbar versions are required when: 1. You are using linux. 2. You are not using an official build downloaded from our website.
|
||||
|
||||
Example of preferred formatting:
|
||||
qBittorrent: 4.3.7 x64
|
||||
Operating system: Windows 10 Pro 21H1/2009 x64
|
||||
Qt: 5.15.2
|
||||
libtorrent-rasterbar: 1.2.14
|
||||
placeholder: |
|
||||
qBittorrent:
|
||||
Operating system:
|
||||
Qt:
|
||||
libtorrent-rasterbar:
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: What is the problem?
|
||||
description: Please add the "crash report" (if encountered) or give a clear and concise description of problem.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Steps to reproduce
|
||||
description: Please provide reliable steps to reproduce the problem.
|
||||
placeholder: |
|
||||
1. First step
|
||||
2. Second step
|
||||
3. and so on...
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: Add screenshots etc. (Anything that will provide more context about the problem)
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Log(s) & preferences file(s)
|
||||
description: |
|
||||
Add these files: qBittorrent preferences file, qBittorrent.log & watched_folders.json (if using "Watched Folders" feature).
|
||||
See **[Where does qBittorrent save its settings?](https://github.com/qbittorrent/qBittorrent/wiki/Frequently-Asked-Questions#Where_does_qBittorrent_save_its_settings)**
|
||||
#### Note: It's the user's responsibility to redact any sensitive information
|
||||
validations:
|
||||
required: false
|
17
.github/ISSUE_TEMPLATE/config.yml
vendored
17
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1,17 +0,0 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Wiki
|
||||
url: "https://github.com/qbittorrent/qBittorrent/wiki/"
|
||||
about: "Consult the wiki first (especially the FAQ), it might already contain the information you are looking for"
|
||||
|
||||
- name: Question
|
||||
url: "https://github.com/qbittorrent/qBittorrent/discussions"
|
||||
about: "Please ask questions related to usage/setup/support/non-issue development discussion in the Discussions section"
|
||||
|
||||
- name: Question
|
||||
url: "http://forum.qbittorrent.org/"
|
||||
about: "Alternatively, ask on the official forum"
|
||||
|
||||
- name: Question
|
||||
url: "https://www.reddit.com/r/qBittorrent/"
|
||||
about: "Alternatively, use the subreddit"
|
37
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
37
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@@ -1,37 +0,0 @@
|
||||
name: Feature Request
|
||||
description: Suggest a new feature or enhancement for qBittorrent.
|
||||
labels: ["Feature request"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
#### ADVISORY
|
||||
|
||||
"Please post all details in **English**."
|
||||
|
||||
#### Prerequisites before submitting a feature request!
|
||||
- Read the feature request section in the **[contributing guidelines](https://github.com/qbittorrent/qBittorrent/blob/master/CONTRIBUTING.md)**, to know how to submit a good feature request with the required information.
|
||||
- Verify that the feature being requested is not available in the **[latest official qBittorrent version](https://www.qbittorrent.org/download.php).**
|
||||
- (Optional but recommended) Verify that the feature being requested is not available in the latest CI (**[macOS](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_macos.yaml?query=branch%3Amaster+event%3Apush)** / **[Ubuntu](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_ubuntu.yaml?query=branch%3Amaster+event%3Apush)** / **[Windows](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_windows.yaml?query=branch%3Amaster+event%3Apush)**) builds.
|
||||
- Search the issue tracker with the **[feature request filter](https://github.com/qbittorrent/qBittorrent/issues?q=is%3Aopen+is%3Aissue+label%3A%22Feature+request%22)** for similar feature requests (including closed ones) to avoid posting a duplicate.
|
||||
- Make sure this is not a support request or question, both of which are better suited for either the **[discussions section](https://github.com/qbittorrent/qBittorrent/discussions)**, **[forum](https://qbforums.shiki.hu/)**, or **[subreddit](https://www.reddit.com/r/qBittorrent/)**.
|
||||
- Verify that the **[wiki](https://github.com/qbittorrent/qBittorrent/wiki)** did not contain a suitable solution either.
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Suggestion
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Use case
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Extra info/examples/attachments
|
||||
description: Add screenshots etc. (Anything that will give us more context about what is being requested!)
|
||||
validations:
|
||||
required: false
|
5
.github/PULL_REQUEST_TEMPLATE.md
vendored
5
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -1,5 +0,0 @@
|
||||
<!--
|
||||
MANDATORY Before submitting your work, make sure you have:
|
||||
1. Read https://github.com/qbittorrent/qBittorrent/blob/master/CONTRIBUTING.md#opening-a-pull-request
|
||||
2. Delete this comment block
|
||||
-->
|
18
.github/SUPPORT.md
vendored
18
.github/SUPPORT.md
vendored
@@ -1,18 +0,0 @@
|
||||
# Support Resources
|
||||
|
||||
The issue tracker is only for bug reports/feature requests related to the project itself.
|
||||
|
||||
Please do not use the issue tracker for questions about general program usage,
|
||||
how BitTorrent (the protocol) works in general, etc.
|
||||
|
||||
For such questions, use one of the following community support resources:
|
||||
|
||||
* The [discussions section][discussions-url]
|
||||
|
||||
* The [official forum][forum-url]
|
||||
|
||||
* The [qBittorrent subreddit][subreddit-url]
|
||||
|
||||
[discussions-url]: https://github.com/qbittorrent/qBittorrent/discussions
|
||||
[forum-url]: http://forum.qbittorrent.org/
|
||||
[subreddit-url]: https://www.reddit.com/r/qBittorrent/
|
15
.github/dependabot.yml
vendored
15
.github/dependabot.yml
vendored
@@ -1,15 +0,0 @@
|
||||
version: 2
|
||||
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
commit-message:
|
||||
prefix: "GHA CI"
|
||||
groups:
|
||||
github-actions:
|
||||
patterns:
|
||||
- "*"
|
||||
labels:
|
||||
- "CI"
|
||||
schedule:
|
||||
interval: "monthly"
|
44
.github/workflows/ci_file_health.yaml
vendored
44
.github/workflows/ci_file_health.yaml
vendored
@@ -1,44 +0,0 @@
|
||||
name: CI - File health
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
permissions: {}
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
name: Check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install tools
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "*"
|
||||
|
||||
- name: Check files
|
||||
uses: pre-commit/action@v3.0.1
|
||||
|
||||
- name: Check doc
|
||||
env:
|
||||
pandoc_path: "${{ github.workspace }}/../pandoc"
|
||||
run: |
|
||||
# install pandoc
|
||||
curl \
|
||||
-L \
|
||||
-o "${{ runner.temp }}/pandoc.tar.gz" \
|
||||
"https://github.com/jgm/pandoc/releases/download/3.1.7/pandoc-3.1.7-linux-amd64.tar.gz"
|
||||
tar -xf "${{ runner.temp }}/pandoc.tar.gz" -C "${{ github.workspace }}/.."
|
||||
mv "${{ github.workspace }}/.."/pandoc-* "${{ env.pandoc_path }}"
|
||||
# run pandoc
|
||||
for lang in doc/*/; do
|
||||
"${{ env.pandoc_path }}/bin/pandoc" -f markdown -t man -s "$lang/qbittorrent.1.md" -o "$lang/qbittorrent.1"
|
||||
"${{ env.pandoc_path }}/bin/pandoc" -f markdown -t man -s "$lang/qbittorrent-nox.1.md" -o "$lang/qbittorrent-nox.1"
|
||||
done
|
||||
# check diff, ignore "Automatically generated by ..." part
|
||||
git diff -I '\.\\".*' --exit-code
|
140
.github/workflows/ci_macos.yaml
vendored
140
.github/workflows/ci_macos.yaml
vendored
@@ -1,140 +0,0 @@
|
||||
name: CI - macOS
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
permissions:
|
||||
actions: write
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
name: Build
|
||||
runs-on: macos-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
libt_version: ["2.0.10", "1.2.19"]
|
||||
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
||||
qt_version: ["6.5.2"]
|
||||
|
||||
env:
|
||||
boost_path: "${{ github.workspace }}/../boost"
|
||||
openssl_root: /usr/local/opt/openssl@3
|
||||
libtorrent_path: "${{ github.workspace }}/../libtorrent"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
uses: Wandalen/wretry.action@v1
|
||||
env:
|
||||
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
|
||||
HOMEBREW_NO_INSTALL_CLEANUP: 1
|
||||
with:
|
||||
attempt_delay: 20000
|
||||
attempt_limit: 6
|
||||
command: |
|
||||
brew update > /dev/null
|
||||
brew install \
|
||||
cmake ninja \
|
||||
openssl@3 zlib
|
||||
|
||||
- name: Setup ccache
|
||||
uses: Chocobo1/setup-ccache-action@v1
|
||||
with:
|
||||
store_cache: ${{ startsWith(github.ref, 'refs/heads/') }}
|
||||
update_packager_index: false
|
||||
|
||||
- name: Install boost
|
||||
env:
|
||||
BOOST_MAJOR_VERSION: "1"
|
||||
BOOST_MINOR_VERSION: "84"
|
||||
BOOST_PATCH_VERSION: "0"
|
||||
run: |
|
||||
boost_url="https://boostorg.jfrog.io/artifactory/main/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
set +e
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
|
||||
if [ "$_exitCode" -ne "0" ]; then
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
|
||||
fi
|
||||
mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}"
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: ${{ matrix.qt_version }}
|
||||
archives: qtbase qtdeclarative qtsvg qttools
|
||||
# Not sure why Qt made a hard dependency on qtdeclarative, try removing it when Qt > 6.4.0
|
||||
cache: true
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
git clone \
|
||||
--branch v${{ matrix.libt_version }} \
|
||||
--depth 1 \
|
||||
--recurse-submodules \
|
||||
https://github.com/arvidn/libtorrent.git \
|
||||
${{ env.libtorrent_path }}
|
||||
cd ${{ env.libtorrent_path }}
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_CXX_STANDARD=17 \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-Ddeprecated-functions=OFF \
|
||||
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}"
|
||||
cmake --build build
|
||||
sudo cmake --install build
|
||||
|
||||
- name: Build qBittorrent
|
||||
run: |
|
||||
CXXFLAGS="$CXXFLAGS -Werror -Wno-error=deprecated-declarations" \
|
||||
LDFLAGS="$LDFLAGS -gz" \
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \
|
||||
-DTESTING=ON \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
-D${{ matrix.qbt_gui }}
|
||||
cmake --build build --target qbt_update_translations
|
||||
cmake --build build
|
||||
cmake --build build --target check
|
||||
|
||||
- name: Prepare build artifacts
|
||||
run: |
|
||||
# create .dmg
|
||||
appName="qbittorrent"
|
||||
if [ "${{ matrix.qbt_gui }}" = "GUI=OFF" ]; then
|
||||
appName="qbittorrent-nox"
|
||||
fi
|
||||
pushd build
|
||||
macdeployqt "$appName.app" -dmg -no-strip
|
||||
popd
|
||||
# prepare upload folder
|
||||
mkdir upload
|
||||
cp "build/$appName.dmg" upload
|
||||
mkdir upload/cmake
|
||||
cp build/compile_commands.json upload/cmake
|
||||
mkdir upload/cmake/libtorrent
|
||||
cp ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: qBittorrent-CI_macOS_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
|
||||
path: upload
|
170
.github/workflows/ci_ubuntu.yaml
vendored
170
.github/workflows/ci_ubuntu.yaml
vendored
@@ -1,170 +0,0 @@
|
||||
name: CI - Ubuntu
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
permissions:
|
||||
actions: write
|
||||
security-events: write
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
libt_version: ["2.0.10", "1.2.19"]
|
||||
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
||||
qt_version: ["6.5.2"]
|
||||
|
||||
env:
|
||||
boost_path: "${{ github.workspace }}/../boost"
|
||||
harden_flags: "-D_FORTIFY_SOURCE=2 -D_GLIBCXX_ASSERTIONS"
|
||||
libtorrent_path: "${{ github.workspace }}/../libtorrent"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install \
|
||||
build-essential cmake ninja-build \
|
||||
libssl-dev libxkbcommon-x11-dev libxcb-cursor-dev zlib1g-dev
|
||||
|
||||
- name: Setup ccache
|
||||
uses: Chocobo1/setup-ccache-action@v1
|
||||
with:
|
||||
store_cache: ${{ startsWith(github.ref, 'refs/heads/') }}
|
||||
update_packager_index: false
|
||||
ccache_options: |
|
||||
max_size=2G
|
||||
|
||||
- name: Install boost
|
||||
env:
|
||||
BOOST_MAJOR_VERSION: "1"
|
||||
BOOST_MINOR_VERSION: "76"
|
||||
BOOST_PATCH_VERSION: "0"
|
||||
run: |
|
||||
boost_url="https://boostorg.jfrog.io/artifactory/main/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
set +e
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
|
||||
if [ "$_exitCode" -ne "0" ]; then
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
|
||||
fi
|
||||
mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}"
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: ${{ matrix.qt_version }}
|
||||
archives: icu qtbase qtdeclarative qtsvg qttools
|
||||
cache: true
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
git clone \
|
||||
--branch v${{ matrix.libt_version }} \
|
||||
--depth 1 \
|
||||
--recurse-submodules \
|
||||
https://github.com/arvidn/libtorrent.git \
|
||||
${{ env.libtorrent_path }}
|
||||
cd ${{ env.libtorrent_path }}
|
||||
CXXFLAGS="$CXXFLAGS ${{ env.harden_flags }}" \
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-Ddeprecated-functions=OFF
|
||||
cmake --build build
|
||||
sudo cmake --install build
|
||||
|
||||
# to avoid scanning 3rdparty codebases, initialize it just before building qbt
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v3
|
||||
if: startsWith(matrix.libt_version, 2) && (matrix.qbt_gui == 'GUI=ON')
|
||||
with:
|
||||
config-file: ./.github/workflows/helper/codeql/cpp.yaml
|
||||
languages: cpp
|
||||
|
||||
- name: Build qBittorrent
|
||||
run: |
|
||||
CXXFLAGS="$CXXFLAGS ${{ env.harden_flags }} -Werror" \
|
||||
LDFLAGS="$LDFLAGS -gz" \
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-DCMAKE_INSTALL_PREFIX="/usr" \
|
||||
-DTESTING=ON \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
-D${{ matrix.qbt_gui }}
|
||||
cmake --build build --target qbt_update_translations
|
||||
cmake --build build
|
||||
cmake --build build --target check
|
||||
DESTDIR="qbittorrent" cmake --install build
|
||||
|
||||
- name: Run CodeQL analysis
|
||||
uses: github/codeql-action/analyze@v3
|
||||
if: startsWith(matrix.libt_version, 2) && (matrix.qbt_gui == 'GUI=ON')
|
||||
with:
|
||||
category: ${{ github.base_ref || github.ref_name }}
|
||||
|
||||
- name: Prepare build artifacts
|
||||
run: |
|
||||
mkdir upload
|
||||
mkdir upload/cmake
|
||||
cp build/compile_commands.json upload/cmake
|
||||
mkdir upload/cmake/libtorrent
|
||||
cp ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent
|
||||
|
||||
- name: Install AppImage
|
||||
run: |
|
||||
sudo apt install libfuse2
|
||||
curl \
|
||||
-L \
|
||||
-Z \
|
||||
-O https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage \
|
||||
-O https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage \
|
||||
-O https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous/linuxdeploy-plugin-appimage-x86_64.AppImage
|
||||
chmod +x \
|
||||
linuxdeploy-x86_64.AppImage \
|
||||
linuxdeploy-plugin-qt-x86_64.AppImage \
|
||||
linuxdeploy-plugin-appimage-x86_64.AppImage
|
||||
|
||||
- name: Prepare files for AppImage
|
||||
if: matrix.qbt_gui == 'GUI=OFF'
|
||||
run: |
|
||||
mkdir -p qbittorrent/usr/share/applications
|
||||
cp .github/workflows/helper/appimage/org.qbittorrent.qBittorrent.desktop qbittorrent/usr/share/applications/org.qbittorrent.qBittorrent.desktop
|
||||
mkdir -p qbittorrent/usr/share/icons/hicolor/scalable/apps
|
||||
cp dist/unix/menuicons/scalable/apps/qbittorrent.svg qbittorrent/usr/share/icons/hicolor/scalable/apps/qbittorrent.svg
|
||||
|
||||
- name: Package AppImage
|
||||
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
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: qBittorrent-CI_Ubuntu-x64_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
|
||||
path: upload
|
48
.github/workflows/ci_webui.yaml
vendored
48
.github/workflows/ci_webui.yaml
vendored
@@ -1,48 +0,0 @@
|
||||
name: CI - WebUI
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
permissions:
|
||||
security-events: write
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
name: Check
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
defaults:
|
||||
run:
|
||||
working-directory: src/webui/www
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup nodejs
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 'lts/*'
|
||||
|
||||
- name: Install tools
|
||||
run: npm install
|
||||
|
||||
- name: Lint code
|
||||
run: npm run lint
|
||||
|
||||
- name: Format code
|
||||
run: |
|
||||
npm run format
|
||||
git diff --exit-code
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v3
|
||||
with:
|
||||
config-file: ./.github/workflows/helper/codeql/js.yaml
|
||||
languages: javascript
|
||||
|
||||
- name: Run CodeQL analysis
|
||||
uses: github/codeql-action/analyze@v3
|
198
.github/workflows/ci_windows.yaml
vendored
198
.github/workflows/ci_windows.yaml
vendored
@@ -1,198 +0,0 @@
|
||||
name: CI - Windows
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
permissions:
|
||||
actions: write
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
name: Build
|
||||
runs-on: windows-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
libt_version: ["2.0.10", "1.2.19"]
|
||||
|
||||
env:
|
||||
boost_path: "${{ github.workspace }}/../boost"
|
||||
libtorrent_path: "${{ github.workspace }}/../libtorrent"
|
||||
vcpkg_path: "c:/vcpkg"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup devcmd
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
|
||||
- name: Install build tools
|
||||
run: |
|
||||
if ((Get-Command "ninja.exe" -ErrorAction SilentlyContinue) -eq $null)
|
||||
{
|
||||
choco install ninja
|
||||
}
|
||||
where.exe ninja
|
||||
ninja --version
|
||||
|
||||
# https://learn.microsoft.com/en-us/vcpkg/users/binarycaching#gha
|
||||
- name: Set variables for vcpkg
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
core.exportVariable('ACTIONS_CACHE_URL', (process.env.ACTIONS_CACHE_URL || ''));
|
||||
core.exportVariable('ACTIONS_RUNTIME_TOKEN', (process.env.ACTIONS_RUNTIME_TOKEN || ''));
|
||||
|
||||
- name: Install dependencies with vcpkg
|
||||
run: |
|
||||
# create our own triplet
|
||||
New-Item `
|
||||
-Force `
|
||||
-ItemType File `
|
||||
-Path "${{ env.vcpkg_path }}/triplets_overlay/x64-windows-static-md-release.cmake"
|
||||
# OpenSSL isn't compatible with `/guard:cf` flag so we omit it for now, see: https://github.com/openssl/openssl/issues/22554
|
||||
Add-Content `
|
||||
-Path "${{ env.vcpkg_path }}/triplets_overlay/x64-windows-static-md-release.cmake" `
|
||||
-Value @("set(VCPKG_TARGET_ARCHITECTURE x64)",
|
||||
"set(VCPKG_LIBRARY_LINKAGE static)",
|
||||
"set(VCPKG_CRT_LINKAGE dynamic)",
|
||||
"set(VCPKG_BUILD_TYPE release)")
|
||||
# clear buildtrees after each package installation to reduce disk space requirements
|
||||
$packages = `
|
||||
"openssl:x64-windows-static-md-release",
|
||||
"zlib:x64-windows-static-md-release"
|
||||
${{ env.vcpkg_path }}/vcpkg.exe upgrade `
|
||||
--no-dry-run `
|
||||
--overlay-triplets="${{ env.vcpkg_path }}/triplets_overlay"
|
||||
${{ env.vcpkg_path }}/vcpkg.exe install `
|
||||
--binarysource="clear;x-gha,readwrite" `
|
||||
--clean-after-build `
|
||||
--overlay-triplets="${{ env.vcpkg_path }}/triplets_overlay" `
|
||||
$packages
|
||||
|
||||
- name: Install boost
|
||||
env:
|
||||
BOOST_MAJOR_VERSION: "1"
|
||||
BOOST_MINOR_VERSION: "84"
|
||||
BOOST_PATCH_VERSION: "0"
|
||||
run: |
|
||||
$boost_url="https://boostorg.jfrog.io/artifactory/main/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
$boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."
|
||||
if ($LastExitCode -ne 0)
|
||||
{
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."
|
||||
}
|
||||
move "${{ github.workspace }}/../boost_*" "${{ env.boost_path }}"
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: "6.5.2"
|
||||
archives: qtbase qtsvg qttools
|
||||
cache: true
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
git clone `
|
||||
--branch v${{ matrix.libt_version }} `
|
||||
--depth 1 `
|
||||
--recurse-submodules `
|
||||
https://github.com/arvidn/libtorrent.git `
|
||||
${{ env.libtorrent_path }}
|
||||
cd ${{ env.libtorrent_path }}
|
||||
$env:CXXFLAGS+=" /guard:cf"
|
||||
$env:LDFLAGS+=" /guard:cf"
|
||||
cmake `
|
||||
-B build `
|
||||
-G "Ninja" `
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON `
|
||||
-DCMAKE_INSTALL_PREFIX="${{ env.libtorrent_path }}/install" `
|
||||
-DCMAKE_TOOLCHAIN_FILE="${{ env.vcpkg_path }}/scripts/buildsystems/vcpkg.cmake" `
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" `
|
||||
-DBUILD_SHARED_LIBS=OFF `
|
||||
-Ddeprecated-functions=OFF `
|
||||
-Dstatic_runtime=OFF `
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release
|
||||
cmake --build build
|
||||
cmake --install build
|
||||
|
||||
- name: Build qBittorrent
|
||||
run: |
|
||||
$env:CXXFLAGS+=" /WX"
|
||||
cmake `
|
||||
-B build `
|
||||
-G "Ninja" `
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON `
|
||||
-DCMAKE_TOOLCHAIN_FILE="${{ env.vcpkg_path }}/scripts/buildsystems/vcpkg.cmake" `
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" `
|
||||
-DLibtorrentRasterbar_DIR="${{ env.libtorrent_path }}/install/lib/cmake/LibtorrentRasterbar" `
|
||||
-DMSVC_RUNTIME_DYNAMIC=ON `
|
||||
-DTESTING=ON `
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release `
|
||||
-DVERBOSE_CONFIGURE=ON `
|
||||
--graphviz=build/target_graph.dot
|
||||
cmake --build build --target qbt_update_translations
|
||||
cmake --build build
|
||||
cmake --build build --target check
|
||||
|
||||
- name: Prepare build artifacts
|
||||
run: |
|
||||
mkdir upload
|
||||
mkdir upload/qBittorrent
|
||||
copy build/qbittorrent.exe upload/qBittorrent
|
||||
copy build/qbittorrent.pdb upload/qBittorrent
|
||||
copy dist/windows/qt.conf upload/qBittorrent
|
||||
# runtimes
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Core.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Gui.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Network.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Sql.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Svg.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Widgets.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Xml.dll" upload/qBittorrent
|
||||
mkdir upload/qBittorrent/plugins/iconengines
|
||||
copy "${{ env.Qt6_DIR }}/plugins/iconengines/qsvgicon.dll" upload/qBittorrent/plugins/iconengines
|
||||
mkdir upload/qBittorrent/plugins/imageformats
|
||||
copy "${{ env.Qt6_DIR }}/plugins/imageformats/qico.dll" upload/qBittorrent/plugins/imageformats
|
||||
copy "${{ env.Qt6_DIR }}/plugins/imageformats/qsvg.dll" upload/qBittorrent/plugins/imageformats
|
||||
mkdir upload/qBittorrent/plugins/platforms
|
||||
copy "${{ env.Qt6_DIR }}/plugins/platforms/qwindows.dll" upload/qBittorrent/plugins/platforms
|
||||
mkdir upload/qBittorrent/plugins/sqldrivers
|
||||
copy "${{ env.Qt6_DIR }}/plugins/sqldrivers/qsqlite.dll" upload/qBittorrent/plugins/sqldrivers
|
||||
mkdir upload/qBittorrent/plugins/styles
|
||||
copy "${{ env.Qt6_DIR }}/plugins/styles/qwindowsvistastyle.dll" upload/qBittorrent/plugins/styles
|
||||
mkdir upload/qBittorrent/plugins/tls
|
||||
copy "${{ env.Qt6_DIR }}/plugins/tls/qschannelbackend.dll" upload/qBittorrent/plugins/tls
|
||||
# cmake additionals
|
||||
mkdir upload/cmake
|
||||
copy build/compile_commands.json upload/cmake
|
||||
copy build/target_graph.dot upload/cmake
|
||||
mkdir upload/cmake/libtorrent
|
||||
copy ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: qBittorrent-CI_Windows-x64_libtorrent-${{ matrix.libt_version }}
|
||||
path: upload
|
||||
|
||||
- name: Create installer
|
||||
run: |
|
||||
7z x -o"dist/windows/" "dist/windows/NSISPlugins.zip"
|
||||
makensis /DQBT_DIST_DIR="../../upload/qBittorrent" /WX dist/windows/qbittorrent.nsi
|
||||
|
||||
- name: Upload installer
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: qBittorrent-CI_Windows-x64_libtorrent-${{ matrix.libt_version }}-setup
|
||||
path: dist/windows/qbittorrent_*_setup.exe
|
115
.github/workflows/coverity-scan.yaml
vendored
115
.github/workflows/coverity-scan.yaml
vendored
@@ -1,115 +0,0 @@
|
||||
name: Coverity Scan
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 1 * *' # Monthly (1st day of month at midnight)
|
||||
workflow_dispatch: # Mainly for testing. Don't forget the Coverity usage limits.
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
coverity_scan:
|
||||
name: Scan
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
libt_version: ["2.0.10"]
|
||||
qbt_gui: ["GUI=ON"]
|
||||
qt_version: ["6.5.2"]
|
||||
|
||||
env:
|
||||
boost_path: "${{ github.workspace }}/../boost"
|
||||
coverity_path: "${{ github.workspace }}/../coverity"
|
||||
libtorrent_path: "${{ github.workspace }}/../libtorrent"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install \
|
||||
build-essential cmake ninja-build \
|
||||
libssl-dev libxkbcommon-x11-dev libxcb-cursor-dev zlib1g-dev
|
||||
|
||||
- name: Install boost
|
||||
env:
|
||||
BOOST_MAJOR_VERSION: "1"
|
||||
BOOST_MINOR_VERSION: "84"
|
||||
BOOST_PATCH_VERSION: "0"
|
||||
run: |
|
||||
boost_url="https://boostorg.jfrog.io/artifactory/main/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
set +e
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
|
||||
if [ "$_exitCode" -ne "0" ]; then
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
|
||||
fi
|
||||
mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}"
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: ${{ matrix.qt_version }}
|
||||
archives: icu qtbase qtdeclarative qtsvg qttools
|
||||
cache: true
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
git clone \
|
||||
--branch v${{ matrix.libt_version }} \
|
||||
--depth 1 \
|
||||
--recurse-submodules \
|
||||
https://github.com/arvidn/libtorrent.git \
|
||||
${{ env.libtorrent_path }}
|
||||
cd ${{ env.libtorrent_path }}
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-Ddeprecated-functions=OFF
|
||||
cmake --build build
|
||||
sudo cmake --install build
|
||||
|
||||
- name: Download Coverity Build Tool
|
||||
run: |
|
||||
curl \
|
||||
-L \
|
||||
-d "token=${{ secrets.COVERITY_SCAN_TOKEN }}&project=qbittorrent%2FqBittorrent" \
|
||||
-o "${{ runner.temp }}/coverity_tool.tgz" \
|
||||
"https://scan.coverity.com/download/linux64"
|
||||
mkdir -p ${{ env.coverity_path }}
|
||||
tar \
|
||||
-xf "${{ runner.temp }}/coverity_tool.tgz" \
|
||||
-C "${{ env.coverity_path }}" \
|
||||
--strip-components 1
|
||||
|
||||
- name: Build qBittorrent
|
||||
run: |
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
-D${{ matrix.qbt_gui }}
|
||||
PATH="${{ env.coverity_path }}/bin:$PATH" \
|
||||
cov-build \
|
||||
--dir cov-int \
|
||||
cmake --build build
|
||||
|
||||
- name: Submit the result to Coverity Scan
|
||||
run: |
|
||||
tar -caf qbittorrent.xz cov-int
|
||||
curl \
|
||||
--form token="${{ secrets.COVERITY_SCAN_TOKEN }}" \
|
||||
--form email=sledgehammer999@qbittorrent.org \
|
||||
--form file=@qbittorrent.xz \
|
||||
--form version="$(git rev-parse --short HEAD)" \
|
||||
--form description="master" \
|
||||
https://scan.coverity.com/builds?project=qbittorrent%2FqBittorrent
|
13
.github/workflows/helper/appimage/export_vars.sh
vendored
13
.github/workflows/helper/appimage/export_vars.sh
vendored
@@ -1,13 +0,0 @@
|
||||
#!/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}"
|
@@ -1,6 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Name=qBittorrent
|
||||
Exec=qbittorrent-nox %U
|
||||
Icon=qbittorrent
|
||||
Type=Application
|
||||
Categories=Network
|
14
.github/workflows/helper/codeql/cpp.yaml
vendored
14
.github/workflows/helper/codeql/cpp.yaml
vendored
@@ -1,14 +0,0 @@
|
||||
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
11
.github/workflows/helper/codeql/js.yaml
vendored
@@ -1,11 +0,0 @@
|
||||
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
18
.github/workflows/helper/pre-commit/.typos.toml
vendored
@@ -1,18 +0,0 @@
|
||||
# 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"
|
@@ -1,68 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# A pre-commit hook for detecting problematic <translation> tags
|
||||
# Copyright (C) 2021 Mike Tzou (Chocobo1)
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# In addition, as a special exception, the copyright holders give permission to
|
||||
# link this program with the OpenSSL project's "OpenSSL" library (or with
|
||||
# modified versions of it that use the same license as the "OpenSSL" library),
|
||||
# and distribute the linked executables. You must obey the GNU General Public
|
||||
# License in all respects for all of the code used other than "OpenSSL". If you
|
||||
# modify file(s), you may extend this exception to your version of the file(s),
|
||||
# but you are not obligated to do so. If you do not wish to do so, delete this
|
||||
# exception statement from your version.
|
||||
|
||||
from typing import Optional, Sequence
|
||||
import argparse
|
||||
import re
|
||||
|
||||
def main(argv: Optional[Sequence[str]] = None) -> int:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('filenames', nargs='*', help='Filenames to check')
|
||||
args = parser.parse_args(argv)
|
||||
|
||||
error_msg = ""
|
||||
regex = re.compile(r"\s*</translation>")
|
||||
|
||||
for filename in args.filenames:
|
||||
line_counter = 1
|
||||
error_buffer = ""
|
||||
|
||||
with open(filename) as file:
|
||||
try:
|
||||
for line in file:
|
||||
if (match := regex.match(line)) is not None:
|
||||
error_buffer += str(f"Defect file: \"{filename}\"\n"
|
||||
f"Line: {line_counter}\n"
|
||||
f"Column span: {match.span()}\n"
|
||||
f"Part: \"{match.group()}\"\n\n")
|
||||
line_counter += 1
|
||||
|
||||
except UnicodeDecodeError as error:
|
||||
# not a text file, skip
|
||||
continue
|
||||
|
||||
error_msg += error_buffer
|
||||
|
||||
if len(error_msg) > 0:
|
||||
print(error_msg)
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
if __name__ == '__main__':
|
||||
exit(main())
|
25
.github/workflows/stale_bot.yaml
vendored
25
.github/workflows/stale_bot.yaml
vendored
@@ -1,25 +0,0 @@
|
||||
name: Stale bot
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
|
||||
permissions:
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Mark and close stale PRs
|
||||
uses: actions/stale@v9
|
||||
with:
|
||||
stale-pr-message: "This PR is stale because it has been 60 days with no activity. This PR will be automatically closed within 7 days if there is no further activity."
|
||||
close-pr-message: "This PR was closed because it has been stalled for some time with no activity."
|
||||
days-before-stale: -1 # avoid marking issues
|
||||
days-before-pr-stale: 60
|
||||
days-before-close: -1 # avoid closing issues
|
||||
days-before-pr-close: 7
|
||||
exempt-all-pr-assignees: true # avoid stale for all PR with assignees
|
||||
exempt-all-pr-milestones: true # avoid stale for all PR with milestones
|
||||
operations-per-run: 200
|
16
.gitignore
vendored
16
.gitignore
vendored
@@ -1,12 +1,9 @@
|
||||
.vscode/
|
||||
src/gui/geoip/GeoIP.dat
|
||||
src/gui/geoip/GeoIP.dat.gz
|
||||
src/qbittorrent
|
||||
src/qbittorrent-nox
|
||||
src/release
|
||||
src/debug
|
||||
src/base/version.h
|
||||
CMakeLists.txt.user*
|
||||
qbittorrent.pro.user*
|
||||
conf.pri
|
||||
Makefile*
|
||||
@@ -17,7 +14,6 @@ Makefile*
|
||||
*.o
|
||||
*.pdb
|
||||
*.exe
|
||||
*.dll
|
||||
|
||||
# Generated MOC, resource and UI files
|
||||
moc_*.cpp
|
||||
@@ -25,7 +21,7 @@ moc_*.h
|
||||
qrc_*.cpp
|
||||
ui_*.h
|
||||
*.moc
|
||||
*.qm
|
||||
src/lang/qbittorrent_*.qm
|
||||
.DS_Store
|
||||
.qmake.stash
|
||||
src/qbittorrent.app
|
||||
@@ -35,13 +31,3 @@ src/qbittorrent.app
|
||||
aclocal.m4
|
||||
autom4te.cache/*
|
||||
config.status
|
||||
src/icons/qbt-theme/build-icons/node_modules/
|
||||
src/icons/skin/build-icons/node_modules/
|
||||
src/icons/skin/build-icons/icons/*.png
|
||||
|
||||
# CMake build directory
|
||||
build/
|
||||
|
||||
# Web UI tools
|
||||
node_modules
|
||||
package-lock.json
|
||||
|
@@ -1,117 +0,0 @@
|
||||
repos:
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: check-translation-tag
|
||||
name: Check newline characters in <translation> tag
|
||||
entry: .github/workflows/helper/pre-commit/check_translation_tag.py
|
||||
language: script
|
||||
exclude: |
|
||||
(?x)^(
|
||||
src/lang/.*
|
||||
)$
|
||||
types_or:
|
||||
- ts
|
||||
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks.git
|
||||
rev: v4.5.0
|
||||
hooks:
|
||||
- id: check-json
|
||||
name: Check JSON files
|
||||
|
||||
- id: check-yaml
|
||||
name: Check YAML files
|
||||
|
||||
- id: fix-byte-order-marker
|
||||
name: Check file encoding (UTF-8 without BOM)
|
||||
exclude: |
|
||||
(?x)^(
|
||||
src/base/unicodestrings.h
|
||||
)$
|
||||
|
||||
- id: mixed-line-ending
|
||||
name: Check line ending character (LF)
|
||||
args: ["--fix=lf"]
|
||||
exclude: |
|
||||
(?x)^(
|
||||
src/webui/www/private/css/lib/.* |
|
||||
src/webui/www/private/scripts/lib/.* |
|
||||
dist/windows/license.txt |
|
||||
test/testdata/crlf.txt
|
||||
)$
|
||||
|
||||
- id: end-of-file-fixer
|
||||
name: Check trailing newlines
|
||||
exclude: |
|
||||
(?x)^(
|
||||
configure |
|
||||
src/webui/www/private/css/lib/.* |
|
||||
src/webui/www/private/scripts/lib/.* |
|
||||
test/testdata/crlf.txt
|
||||
)$
|
||||
exclude_types:
|
||||
- svg
|
||||
- ts
|
||||
|
||||
- id: trailing-whitespace
|
||||
name: Check trailing whitespaces
|
||||
exclude: |
|
||||
(?x)^(
|
||||
src/webui/www/private/css/lib/.* |
|
||||
src/webui/www/private/scripts/lib/.*
|
||||
)$
|
||||
exclude_types:
|
||||
- ts
|
||||
|
||||
- repo: https://github.com/codespell-project/codespell.git
|
||||
rev: v2.2.6
|
||||
hooks:
|
||||
- id: codespell
|
||||
name: Check spelling (codespell)
|
||||
args: ["--ignore-words-list", "additionals,curren,fo,ist,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/lang/.* |
|
||||
src/webui/www/private/scripts/lib/.* |
|
||||
src/webui/www/public/lang/.* |
|
||||
src/webui/www/public/scripts/lib/.* |
|
||||
src/webui/www/transifex/.*
|
||||
)$
|
||||
exclude_types:
|
||||
- ts
|
||||
|
||||
- repo: https://github.com/crate-ci/typos.git
|
||||
rev: v1.16.18
|
||||
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/lang/.* |
|
||||
src/webui/www/private/scripts/lib/.* |
|
||||
src/webui/www/public/lang/.* |
|
||||
src/webui/www/public/scripts/lib/.* |
|
||||
src/webui/www/transifex/.*
|
||||
)$
|
||||
exclude_types:
|
||||
- svg
|
||||
- ts
|
185
.travis.yml
Normal file
185
.travis.yml
Normal file
@@ -0,0 +1,185 @@
|
||||
language: cpp
|
||||
|
||||
os:
|
||||
- linux
|
||||
- osx
|
||||
osx_image: xcode7.3
|
||||
|
||||
env:
|
||||
matrix:
|
||||
# Uncomment when Travis upgraded "Ubuntu 12.04 LTS" to a newer version whose repo will have a more up-to-date libtorrent package
|
||||
#- lt_branch=dist gui=true
|
||||
#- lt_branch=dist gui=false
|
||||
- lt_branch=RC_1_0 qt=5 gui=true
|
||||
- lt_branch=RC_1_0 qt=5 gui=false
|
||||
- lt_branch=RC_1_0 qt=4 gui=true
|
||||
- lt_branch=RC_1_0 qt=4 gui=false
|
||||
global:
|
||||
- secure: "OI9CUjj4lTb0HwwIZU5PbECU3hLlAL6KC8KsbwohG8/O3j5fLcnmDsK4Ad9us5cC39sS11Jcd1kDP2qRcCuST/glVNhLkcjKkiQerOfd5nQ/qL4JYfz/1mfP5mdpz9jHKzpLUIG+TXkbSTjP6VVmsb5KPT+3pKEdRFZB+Pu9+J8="
|
||||
- coverity_branch: coverity_scan
|
||||
matrix:
|
||||
allow_failures:
|
||||
- os: osx
|
||||
env: lt_branch=RC_1_0 qt=4 gui=true
|
||||
- os: osx
|
||||
env: lt_branch=RC_1_0 qt=4 gui=false
|
||||
|
||||
branches:
|
||||
except:
|
||||
- search_encoding_windows
|
||||
- v2_9_x
|
||||
|
||||
notifications:
|
||||
email:
|
||||
on_success: change
|
||||
on_failure: change
|
||||
|
||||
cache:
|
||||
ccache: true
|
||||
directories:
|
||||
- $HOME/hombebrew_cache
|
||||
|
||||
# opt-in Ubuntu Trusty
|
||||
dist: trusty
|
||||
# container-based builds
|
||||
sudo: false
|
||||
|
||||
addons:
|
||||
coverity_scan:
|
||||
project:
|
||||
name: "qbittorrent/qBittorrent"
|
||||
description: "Build submitted via Travis CI"
|
||||
build_command_prepend: "./bootstrap.sh && ./configure $qbtconf"
|
||||
build_command: make
|
||||
branch_pattern: $coverity_branch
|
||||
notification_email: sledgehammer999@qbittorrent.org
|
||||
apt:
|
||||
sources:
|
||||
# sources list: https://github.com/travis-ci/apt-source-whitelist/blob/master/ubuntu.json
|
||||
#- ubuntu-toolchain-r-test
|
||||
#- boost-latest
|
||||
- sourceline: 'ppa:qbittorrent-team/qbittorrent-stable'
|
||||
- sourceline: 'ppa:beineri/opt-qt551-trusty'
|
||||
packages:
|
||||
# packages list: https://github.com/travis-ci/apt-package-whitelist/blob/master/ubuntu-precise
|
||||
- autoconf
|
||||
- automake
|
||||
- colormake
|
||||
- libssl-dev
|
||||
- libboost-dev
|
||||
- libboost-system-dev
|
||||
- libtorrent-rasterbar-dev
|
||||
# Qt 5.5.1
|
||||
- qt55base
|
||||
- qt55tools
|
||||
# Qt 4.8
|
||||
- qt4-default
|
||||
- libqt4-dev
|
||||
|
||||
before_install:
|
||||
# only allow specific build for coverity scan, others will stop
|
||||
- if [ "$TRAVIS_BRANCH" = "$coverity_branch" ] && ! [ "$TRAVIS_OS_NAME" = "linux" -a "$lt_branch" = "RC_1_0" -a "$gui" = true ]; then exit ; fi
|
||||
|
||||
- shopt -s expand_aliases
|
||||
- alias make="colormake -j3" # Using nprocs/2 sometimes may fail (gcc is killed by system)
|
||||
#- libt_path="$HOME/libt_install"
|
||||
#- ltconf="$ltconf --prefix="$libt_path" --disable-geoip"
|
||||
- qbt_path="$HOME/qbt_install"
|
||||
- qbtconf="$qbtconf --prefix="$qbt_path" PKG_CONFIG_PATH="$libt_path/lib/pkgconfig":/opt/qt55/lib/pkgconfig:$PKG_CONFIG_PATH"
|
||||
|
||||
# options for specific branches
|
||||
- if [ "$qt" = 4 ]; then qbtconf="$qbtconf --with-qt4" ; fi
|
||||
- if [ "$gui" = false ]; then qbtconf="$qbtconf --disable-gui" ; fi
|
||||
- |
|
||||
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
|
||||
# setup virtual display for after_success target
|
||||
if [ "$gui" = true ]; then export "DISPLAY=:99.0" && /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16 ; fi ;
|
||||
|
||||
# Qt 5
|
||||
PATH=/opt/qt55/bin:${PATH}
|
||||
fi
|
||||
|
||||
# print settings
|
||||
- echo $lt_branch
|
||||
- echo $gui
|
||||
- echo $ltconf
|
||||
- echo $qbtconf
|
||||
|
||||
install:
|
||||
#- |
|
||||
#if [ "$TRAVIS_OS_NAME" = "linux" ]; then
|
||||
# build libtorrent from source
|
||||
#if [ "$lt_branch" != "dist" ]; then
|
||||
#cd "$HOME" && pwd && git clone --depth 1 https://github.com/arvidn/libtorrent.git --branch $lt_branch ;
|
||||
#cd libtorrent && ./autotool.sh && ./configure $ltconf && make install ;
|
||||
#fi ;
|
||||
#fi
|
||||
- |
|
||||
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
||||
# dependencies
|
||||
brew update > /dev/null
|
||||
brew install colormake ccache zlib
|
||||
PATH="/usr/local/opt/ccache/libexec:$PATH"
|
||||
brew link --force zlib
|
||||
brew outdated "pkg-config" || brew upgrade "pkg-config"
|
||||
|
||||
wget https://builds.shiki.hu/homebrew/version ;
|
||||
if ! cmp --quiet "version" "$HOME/hombebrew_cache/version" ; then
|
||||
echo "Cached files are different from server. Downloading new ones." ;
|
||||
# First delete old files
|
||||
rm -r "$HOME/hombebrew_cache" ;
|
||||
mkdir "$HOME/hombebrew_cache";
|
||||
cp "version" $HOME/hombebrew_cache ;
|
||||
cd "$HOME/hombebrew_cache" ;
|
||||
wget https://builds.shiki.hu/homebrew/libtorrent-rasterbar.rb ;
|
||||
wget https://builds.shiki.hu/homebrew/libtorrent-rasterbar-1.0.11+git20170910.6d5625e0ea.el_capitan.bottle.tar.gz
|
||||
wget https://builds.shiki.hu/homebrew/qt.rb
|
||||
wget https://builds.shiki.hu/homebrew/qt-5.9.1.el_capitan.bottle.tar.gz
|
||||
fi
|
||||
|
||||
# Copy custom libtorrent bottle to homebrew's cache so it can find and install it
|
||||
# Also install our custom libtorrent formula by passing the local path to it
|
||||
# These 2 files are restored from Travis' cache.
|
||||
cp "$HOME/hombebrew_cache/libtorrent-rasterbar-1.0.11+git20170910.6d5625e0ea.el_capitan.bottle.tar.gz" "$(brew --cache)"
|
||||
brew install "$HOME/hombebrew_cache/libtorrent-rasterbar.rb" ;
|
||||
|
||||
# Qt
|
||||
if [ "$qt" = 4 ]; then brew install qt && ln -s /usr/local/Cellar/qt/4.8.7_2/plugins /usr/local ; fi ;
|
||||
if [ "$qt" = 5 ]; then
|
||||
# Copy custom qt5 bottle to homebrew's cache so it can find and install it
|
||||
# Also install our custom qt5 formula by passing the local path to it
|
||||
# These 2 files are restored from Travis' cache.
|
||||
cp "$HOME/hombebrew_cache/qt-5.9.1.el_capitan.bottle.tar.gz" "$(brew --cache)"
|
||||
brew install "$HOME/hombebrew_cache/qt.rb"
|
||||
brew link --force qt
|
||||
fi
|
||||
fi
|
||||
- |
|
||||
if [ "$TRAVIS_BRANCH" != "$coverity_branch" ]; then
|
||||
export use_ccache=true
|
||||
ccache -V && ccache --show-stats && ccache --zero-stats
|
||||
fi
|
||||
|
||||
script:
|
||||
- if [ "$TRAVIS_BRANCH" = "$coverity_branch" ]; then exit ; fi # skip usual build when running coverity scan
|
||||
- cd "$TRAVIS_BUILD_DIR" && ./bootstrap.sh && ./configure $qbtconf
|
||||
- |
|
||||
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
||||
sed -i "" -e "s/^\(CC.*&&\).*$/\1 $CC/" src/Makefile ; # workaround for Qt & ccache: https://bugreports.qt.io/browse/QTBUG-31034
|
||||
sed -i "" -e "s/^\(CXX.*&&\).*$/\1 $CXX/" src/Makefile ;
|
||||
sed -i "" -e 's/^\(CXXFLAGS.*\)$/\1 -Wno-unused-local-typedefs -Wno-inconsistent-missing-override/' src/Makefile ;
|
||||
fi
|
||||
- make && make install
|
||||
|
||||
after_success:
|
||||
- if [ "$gui" = true ]; then qbt_exe="qbittorrent" ; else qbt_exe="qbittorrent-nox" ; fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then cd "$qbt_path/bin" ; fi
|
||||
- |
|
||||
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
||||
macdeployqt "$TRAVIS_BUILD_DIR/src/$qbt_exe.app" ;
|
||||
cd "$TRAVIS_BUILD_DIR/src/$qbt_exe.app/Contents/MacOS" ;
|
||||
fi
|
||||
- ./$qbt_exe --version
|
||||
|
||||
after_script:
|
||||
- if [ "$use_ccache" = true ]; then ccache --show-stats ; fi
|
37
.tx/config
37
.tx/config
@@ -1,32 +1,19 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[o:sledgehammer999:p:qbittorrent:r:qbittorrent_master]
|
||||
file_filter = src/lang/qbittorrent_<lang>.ts
|
||||
source_file = src/lang/qbittorrent_en.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
[qbittorrent.qbittorrent_v3_3_x]
|
||||
file_filter = src/lang/qbittorrent_<lang>.ts
|
||||
lang_map = pt: pt_PT
|
||||
source_file = src/lang/qbittorrent_en.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
minimum_perc = 23
|
||||
lang_map = pt: pt_PT, zh: zh_CN
|
||||
mode = developer
|
||||
|
||||
[o:sledgehammer999:p:qbittorrent:r:qbittorrent_webui]
|
||||
file_filter = src/webui/www/translations/webui_<lang>.ts
|
||||
source_file = src/webui/www/translations/webui_en.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
minimum_perc = 23
|
||||
lang_map = pt: pt_PT, zh: zh_CN
|
||||
|
||||
[o:sledgehammer999:p:qbittorrent:r:qbittorrent_webui_json]
|
||||
file_filter = src/webui/www/transifex/<lang>.json
|
||||
source_file = src/webui/www/transifex/en.json
|
||||
source_lang = en
|
||||
type = KEYVALUEJSON
|
||||
minimum_perc = 23
|
||||
lang_map = pt: pt_PT, zh: zh_CN
|
||||
|
||||
[o:sledgehammer999:p:qbittorrent:r:qbittorrentdesktop_master]
|
||||
source_file = dist/unix/org.qbittorrent.qBittorrent.desktop
|
||||
source_lang = en
|
||||
type = DESKTOP
|
||||
[qbittorrent.qbittorrentdesktop_master]
|
||||
source_file = src/icons/qBittorrent.desktop
|
||||
source_lang = en
|
||||
type = DESKTOP
|
||||
minimum_perc = 23
|
||||
mode = developer
|
||||
|
99
AUTHORS
99
AUTHORS
@@ -17,78 +17,73 @@ Contributors:
|
||||
* Nick Tiskov <daymansmail@gmail.com>
|
||||
|
||||
Code from other projects:
|
||||
* files src/app/qtlocalpeer/*
|
||||
* files src/qtsingleapplication/* src/lineedit/*
|
||||
copyright: Nokia Corporation
|
||||
license: mixed
|
||||
license: LGPL
|
||||
|
||||
* files src/gui/lineedit.*
|
||||
copyright: Trolltech ASA <info@trolltech.com>
|
||||
license: custom
|
||||
* files src/ico.cpp src/ico.h
|
||||
copyright: Malte Starostik <malte@kde.org>
|
||||
license: LGPL
|
||||
|
||||
* files src/search_engine/socks.py
|
||||
copyright: Dan Haim <negativeiq@users.sourceforge.net>
|
||||
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
|
||||
* file src/stacktrace_win.h
|
||||
copyright: Quassel Project
|
||||
license: GPLv2/3
|
||||
|
||||
Images Authors:
|
||||
* 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)
|
||||
license: GPLv2+
|
||||
* files: src/icons/*.png
|
||||
copyright: Gnome Icon Theme
|
||||
license: GPLv2
|
||||
url: http://ftp.acc.umu.se/pub/GNOME/sources/gnome-icon-theme
|
||||
|
||||
* files: src/qbittorrent_file.ico src/icons/fileicon.svg
|
||||
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+
|
||||
* files: src/oxygen/*.png
|
||||
copyright: Oxygen Icon Theme (KDE)
|
||||
license: LGPL
|
||||
url: http://www.oxygen-icons.org
|
||||
|
||||
* files: src/icons/flags/*.svg
|
||||
copyright: lipis/flag-icons
|
||||
license: MIT
|
||||
url: https://github.com/lipis/flag-icons/
|
||||
* files: src/icons/flags/*.png
|
||||
copyright: Mark James <mjames@gmail.com>
|
||||
license: Public Domain
|
||||
url: http://www.famfamfam.com
|
||||
|
||||
* file: src/webui/www/private/images/tabs.gif
|
||||
* files: src/icons/skin/*.png
|
||||
files: src/menuicons/YYxYY/*.png
|
||||
copyright: Mateusz Tobola <tobejodok@qbittorrent.org>
|
||||
license: GPLv2
|
||||
|
||||
* file: src/icons/skin/tabs.gif
|
||||
copyright: Greg Houston <gregory.houston@gmail.com>
|
||||
license: MIT
|
||||
|
||||
* file: src/icons/qbittorrent-tray-dark.svg src/icons/qbittorrent-tray-light.svg
|
||||
* file: src/icons/skin/qbittorrent_mono*
|
||||
copyright: Daniel Eguren <deguren@gmail.com>
|
||||
modified by: now-im <now-im.d8gcu@simplelogin.com> (@now-im)
|
||||
license: LGPL
|
||||
|
||||
* folder: src/icons/
|
||||
files: application-rss+xml.svg, application-x-mswinurl.svg, connected.svg, disconnected.svg, checked-completed.svg, configure.svg,
|
||||
edit-copy.svg, edit-rename.svg, folder-documents.svg, folder-new.svg, folder-remote.svg, go-bottom.svg, go-down.svg, go-top.svg,
|
||||
go-up.svg, hash.svg, inode-directory.svg, insert-link.svg, kt-magnet.svg, media-playback-pause.svg, media-playback-start.svg,
|
||||
media-seek-forward.svg, network-connect.svg, object-locked.svg, queued.svg, ratio.svg, reannounce.svg, slow_off.svg, slow.svg,
|
||||
speedometer.svg, system-log-out.svg, tags.svg, task-complete.svg, task-reject.svg, tracker-error.svg, tracker-warning.svg,
|
||||
trackerless.svg, trackers.svg, view-categories.svg
|
||||
copyright: now-im <now-im.d8gcu@simplelogin.com> (@now-im) modified from La-Capitaine icon theme (https://github.com/keeferrourke/la-capitaine-icon-theme)
|
||||
license: GPLv3+
|
||||
* file: src/search_engine/engines/btjunkie.png
|
||||
copyright: Downloaded from btjunkie.org
|
||||
|
||||
* folder: src/icons/
|
||||
files: application-exit.svg, collapse.svg, dialog-warning.svg, edit-find-user.svg, edit-find.svg, filter-all.svg, firewalled.svg,
|
||||
help-about.svg, help-contents.svg, ip-blocked.svg, list-remove.svg, loading.svg, mail-folder-inbox.svg, name.svg, network-server.svg,
|
||||
office-chart-line.svg, plugins.svg, preferences-desktop.svg, preferences-other.svg, preferences-system-network.svg, security-high.svg,
|
||||
security-low.svg, set-location.svg, torrent-creator.svg, user-group-delete.svg, user-group-new.svg, view-preview.svg, view-refresh.svg,
|
||||
view-statistics.svg, wallet-open.svg, webuiapplication-exit.svg, collapse.svg, dialog-warning.svg, edit-find-user.svg, edit-find.svg,
|
||||
filter-all.svg, firewalled.svg, help-about.svg, help-contents.svg, ip-blocked.svg, list-remove.svg, loading.svg, mail-folder-inbox.svg,
|
||||
name.svg, network-server.svg, office-chart-line.svg, plugins.svg, preferences-desktop.svg, preferences-other.svg,
|
||||
preferences-system-network.svg, security-high.svg, security-low.svg, set-location.svg, torrent-creator.svg, user-group-delete.svg,
|
||||
user-group-new.svg, view-preview.svg, view-refresh.svg, view-statistics.svg, wallet-open.svg, webui.svg
|
||||
copyright: now-im <now-im.d8gcu@simplelogin.com> (@now-im) modified from Ionicons icon theme (https://github.com/ionic-team/ionicons)
|
||||
license: MIT
|
||||
* file: src/search_engine/engines/isohunt.png
|
||||
copyright: Downloaded from isohunt.com
|
||||
|
||||
* folder: src/icons/
|
||||
files: force-recheck.svg
|
||||
copyright: now-im <now-im.d8gcu@simplelogin.com> (@now-im) modified from Font-Awesome icon theme (https://github.com/FortAwesome/Font-Awesome)
|
||||
license: CC BY 4.0 License
|
||||
* file: src/search_engine/engines/mininova.png
|
||||
copyright: Downloaded from mininova.org
|
||||
|
||||
* folder: src/icons/
|
||||
files: downloading.svg, edit-clear.svg, error.svg, filter-active.svg, filter-inactive.svg, filter-stalled.svg, kt-set-max-download-speed.svg,
|
||||
kt-set-max-upload-speed.svg, list-add.svg, preferences-web-browser-cookies.svg, stalledDL.svg, stalledUP.svg
|
||||
copyright: now-im <now-im.d8gcu@simplelogin.com> (@now-im)
|
||||
license: BSD 2-Clause License
|
||||
* file: src/search_engine/engines/piratebay.png
|
||||
copyright: Downloaded from thepiratebay.org
|
||||
|
||||
* file: src/search_engine/engines/torrentreactor.png
|
||||
copyright: Downloaded from torrentreactor.net
|
||||
|
||||
* file: src/icons/oxygen/checked.png
|
||||
copyright: Victor Buinsky <allok.victor@gmail.com>
|
||||
|
||||
* file: src/icons/skin/ratio.png
|
||||
copyright: Fatcow Web Hosting
|
||||
license: Creative Commons Attribution 3.0 License
|
||||
url: http://www.fatcow.com/free-icons
|
||||
|
||||
Translations authors:
|
||||
* files: src/lang/*.ts
|
||||
@@ -116,7 +111,7 @@ Translations authors:
|
||||
- German: Niels Hoffmann (zentralmaschine@users.sourceforge.net)
|
||||
- Greek: Tsvetan Bankov (emerge_life@users.sourceforge.net), Stephanos Antaris (santaris@csd.auth.gr), sledgehammer999(hammered999@gmail.com) and Γιάννης Ανθυμίδης Evropi(Transifex)
|
||||
- Hebrew: David Deutsch (d.deffo@gmail.com)
|
||||
- Hungarian: Majoros Péter
|
||||
- Hungarian: Majoros Péter (majoros.j.p@t-online.hu)
|
||||
- Italian: bovirus (bovirus@live.it) and Matteo Sechi (bu17714@gmail.com)
|
||||
- Japanese: Masato Hashimoto (cabezon.hashimoto@gmail.com)
|
||||
- Korean: Jin Woo Sin (jin828sin@users.sourceforge.net)
|
||||
|
105
CMakeLists.txt
105
CMakeLists.txt
@@ -1,67 +1,64 @@
|
||||
cmake_minimum_required(VERSION 3.16 FATAL_ERROR) # Policies <= CMP0097 default to NEW
|
||||
|
||||
project(qBittorrent
|
||||
DESCRIPTION "The qBittorrent BitTorrent client"
|
||||
HOMEPAGE_URL "https://www.qbittorrent.org/"
|
||||
LANGUAGES CXX
|
||||
)
|
||||
|
||||
# version requirements - older versions may work, but you are on your own
|
||||
set(minBoostVersion 1.76)
|
||||
set(minQt6Version 6.5.0)
|
||||
set(minOpenSSLVersion 3.0.2)
|
||||
set(minLibtorrent1Version 1.2.19)
|
||||
set(minLibtorrentVersion 2.0.9)
|
||||
set(minZlibVersion 1.2.11)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
cmake_policy(VERSION 3.5)
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules)
|
||||
include(FeatureSummary)
|
||||
include(FeatureOptionsSetup)
|
||||
include(FunctionReadVersion)
|
||||
|
||||
# features, list is loosely sorted by user's interests
|
||||
feature_option(GUI "Build GUI application" ON)
|
||||
feature_option(WEBUI "Enable built-in HTTP server for remote control" ON)
|
||||
feature_option(STACKTRACE "Enable stacktrace support" ON)
|
||||
feature_option(TESTING "Build internal testing suite" OFF)
|
||||
feature_option(VERBOSE_CONFIGURE "Show information about PACKAGES_FOUND and PACKAGES_NOT_FOUND in the configure output (only useful for debugging the CMake build scripts)" OFF)
|
||||
read_version("${CMAKE_CURRENT_SOURCE_DIR}/version.pri" VER_MAJOR VER_MINOR VER_BUGFIX VER_BUILD VER_STATUS)
|
||||
# message(STATUS "Project version is: ${VER_MAJOR}.${VER_MINOR}.${VER_BUGFIX}.${VER_BUILD} (${VER_STATUS})")
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
||||
feature_option_dependent(DBUS
|
||||
"Enable support for notifications and power-management features via D-Bus"
|
||||
ON "GUI" OFF
|
||||
)
|
||||
project(qBittorrent VERSION ${VER_MAJOR}.${VER_MINOR}.${VER_BUGFIX}.${VER_BUILD})
|
||||
|
||||
set(PROJECT_VERSION "${VER_MAJOR}.${VER_MINOR}.${VER_BUGFIX}")
|
||||
|
||||
if (NOT VER_BUILD EQUAL 0)
|
||||
set(PROJECT_VERSION "${PROJECT_VERSION}.${VER_BUILD}")
|
||||
endif()
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
feature_option_dependent(SYSTEMD
|
||||
"Install systemd service file. Target directory is overridable with `SYSTEMD_SERVICES_INSTALL_DIR` variable"
|
||||
OFF "NOT GUI" OFF
|
||||
)
|
||||
endif()
|
||||
set(PROJECT_VERSION "${PROJECT_VERSION}${VER_STATUS}")
|
||||
|
||||
if (MSVC)
|
||||
feature_option(MSVC_RUNTIME_DYNAMIC "Use MSVC dynamic runtime library (-MD) instead of static (-MT)" ON)
|
||||
endif()
|
||||
add_definitions(-DQBT_VERSION_MAJOR=${VER_MAJOR})
|
||||
add_definitions(-DQBT_VERSION_MINOR=${VER_MINOR})
|
||||
add_definitions(-DQBT_VERSION_BUGFIX=${VER_BUGFIX})
|
||||
add_definitions(-DQBT_VERSION_BUILD=${VER_BUILD})
|
||||
|
||||
if (VERBOSE_CONFIGURE)
|
||||
feature_summary(WHAT ALL)
|
||||
else()
|
||||
feature_summary(WHAT ENABLED_FEATURES DISABLED_FEATURES)
|
||||
endif()
|
||||
# os2 {
|
||||
# DEFINES += DQBT_VERSION=\'\"v$${PROJECT_VERSION}\"\'
|
||||
# DEFINES += DQBT_VERSION_2=\'\"$${PROJECT_VERSION}\"\'
|
||||
# } else {
|
||||
add_definitions(-DQBT_VERSION="v${PROJECT_VERSION}")
|
||||
add_definitions(-DQBT_VERSION_2="${PROJECT_VERSION}")
|
||||
# }
|
||||
|
||||
# go check the packages
|
||||
include(CheckPackages)
|
||||
# configure for specific platform
|
||||
include(CommonConfig)
|
||||
if (UNIX AND NOT APPLE)
|
||||
include(GNUInstallDirs)
|
||||
endif (UNIX AND NOT APPLE)
|
||||
|
||||
if(WIN32)
|
||||
include(winconf)
|
||||
endif(WIN32)
|
||||
|
||||
# we need options here, because they are used not only in "src" subdir, but in the "dist" dir too
|
||||
include(CMakeDependentOption)
|
||||
|
||||
option(QT5 "Compile using Qt5" ON)
|
||||
option(SYSTEM_QTSINGLEAPPLICATION
|
||||
"Use the system qtsingleapplication library or shipped one otherwise")
|
||||
cmake_dependent_option(SYSTEM_QJSON
|
||||
"Use the shipped qjson library or the system one (Qt4 only)" OFF "NOT QT5" OFF)
|
||||
|
||||
option(GUI "Allows to disable GUI for headless running. Disables QtDBus and the GeoIP Database" ON)
|
||||
|
||||
option(WEBUI "Allows to disable the WebUI." ON)
|
||||
|
||||
if (WIN32)
|
||||
option(STACKTRACE_WIN "")
|
||||
else (WIN32)
|
||||
cmake_dependent_option(SYSTEMD "Install the systemd service file (headless only)" OFF
|
||||
"NOT GUI" OFF)
|
||||
cmake_dependent_option(DBUS "Enable use of QtDBus (GUI only)" ON "GUI" OFF)
|
||||
endif(WIN32)
|
||||
|
||||
# Generate version header
|
||||
configure_file("src/base/version.h.in" "${CMAKE_CURRENT_SOURCE_DIR}/src/base/version.h" @ONLY)
|
||||
|
||||
add_subdirectory(src)
|
||||
add_subdirectory(dist)
|
||||
|
||||
if (TESTING)
|
||||
add_subdirectory(test)
|
||||
endif()
|
||||
|
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user