You've already forked qBittorrent
mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-10-19 05:12:18 +02:00
Compare commits
1420 Commits
release-4.
...
release-4.
Author | SHA1 | Date | |
---|---|---|---|
![]() |
5e4a94e6b6 | ||
![]() |
db7850e218 | ||
![]() |
1dcfd7bb59 | ||
![]() |
b28704a6ec | ||
![]() |
0c6e56a150 | ||
![]() |
d71ff734a9 | ||
![]() |
90652d3555 | ||
![]() |
f8a2fbc4c5 | ||
![]() |
80759f9e69 | ||
![]() |
e692a191ed | ||
![]() |
4e06a9629a | ||
![]() |
b3334e5fac | ||
![]() |
4e326229da | ||
![]() |
021222b407 | ||
![]() |
6c60fa5161 | ||
![]() |
cd405ffc32 | ||
![]() |
537b1c1ea9 | ||
![]() |
257914b0d5 | ||
![]() |
5cfaaa5d1a | ||
![]() |
109c45bb95 | ||
![]() |
851374e517 | ||
![]() |
4094a4c448 | ||
![]() |
987e1b544a | ||
![]() |
5cf6b1cbde | ||
![]() |
4318de6dc5 | ||
![]() |
459d1cf82c | ||
![]() |
48d52d9ab7 | ||
![]() |
16a99e687f | ||
![]() |
fb37b0c147 | ||
![]() |
9877ff330e | ||
![]() |
6f88609d60 | ||
![]() |
6263c4786b | ||
![]() |
3061f6cf5b | ||
![]() |
cc8c1a5748 | ||
![]() |
ca897a8a35 | ||
![]() |
77dd8bd27b | ||
![]() |
fe34749cfe | ||
![]() |
646322b2a2 | ||
![]() |
670b381df7 | ||
![]() |
ddf4b94bc6 | ||
![]() |
794a92f911 | ||
![]() |
f6e2715f4a | ||
![]() |
082e6f8830 | ||
![]() |
ee38124db7 | ||
![]() |
e06e1d9911 | ||
![]() |
3851e76179 | ||
![]() |
d693f97a46 | ||
![]() |
ca274635d5 | ||
![]() |
525692759d | ||
![]() |
e5491645e4 | ||
![]() |
9f511a47e8 | ||
![]() |
7b0644cdcd | ||
![]() |
7527343629 | ||
![]() |
d173216941 | ||
![]() |
d28b5f7834 | ||
![]() |
04f6ee79c3 | ||
![]() |
b046b40668 | ||
![]() |
0a289e15b4 | ||
![]() |
ce8b51e7ef | ||
![]() |
df5ea9b675 | ||
![]() |
ff7fe7c107 | ||
![]() |
ac6af55335 | ||
![]() |
001c3906b5 | ||
![]() |
0d5d6db0ee | ||
![]() |
72941b10bb | ||
![]() |
d6c92704a1 | ||
![]() |
ba511e07b4 | ||
![]() |
aa6b29fe7e | ||
![]() |
f5836c9fc9 | ||
![]() |
d7d1a90de6 | ||
![]() |
16482c507b | ||
![]() |
5abd72d42a | ||
![]() |
2fa5ad982d | ||
![]() |
43df7d0cd4 | ||
![]() |
17d40855d2 | ||
![]() |
c924fe7950 | ||
![]() |
908f345e22 | ||
![]() |
858eea1e9e | ||
![]() |
06c704c740 | ||
![]() |
916e53c260 | ||
![]() |
3f94a68e62 | ||
![]() |
5c96f16e3d | ||
![]() |
8e33d99901 | ||
![]() |
d27dd85dfd | ||
![]() |
15515200ee | ||
![]() |
7f40602da9 | ||
![]() |
33e6ca6778 | ||
![]() |
54b50c3a8a | ||
![]() |
fa3d98aa37 | ||
![]() |
e24aaa4ce1 | ||
![]() |
aed492b881 | ||
![]() |
a4c2363f43 | ||
![]() |
0056a61db3 | ||
![]() |
6d1573f901 | ||
![]() |
ef297dd8e6 | ||
![]() |
958929aa77 | ||
![]() |
1c0479a795 | ||
![]() |
748226be29 | ||
![]() |
27e1a8ad80 | ||
![]() |
0802b6d506 | ||
![]() |
29f8b4b786 | ||
![]() |
2ebdf6060d | ||
![]() |
b98e7cb69f | ||
![]() |
2071ec0c96 | ||
![]() |
36bc77e2e2 | ||
![]() |
88556078be | ||
![]() |
27a07e20f5 | ||
![]() |
5d1115f591 | ||
![]() |
88d9e82fc9 | ||
![]() |
50b01ed45d | ||
![]() |
243d130667 | ||
![]() |
e33f73d08e | ||
![]() |
f505d742d8 | ||
![]() |
727d20cc92 | ||
![]() |
3567ae3529 | ||
![]() |
a9906e5d2a | ||
![]() |
6ab35512da | ||
![]() |
cfcbe3d6e1 | ||
![]() |
39c0c1a088 | ||
![]() |
f7ae010274 | ||
![]() |
4fd5037c10 | ||
![]() |
3fe09aa673 | ||
![]() |
3a6858a277 | ||
![]() |
c287c7bb01 | ||
![]() |
99061d92c1 | ||
![]() |
5b269a782a | ||
![]() |
71e53a4628 | ||
![]() |
275387a972 | ||
![]() |
e68e3b516e | ||
![]() |
3f7376f26b | ||
![]() |
0e3ce019e4 | ||
![]() |
f20f479a4b | ||
![]() |
e95066a37c | ||
![]() |
e281b667c6 | ||
![]() |
ce0e92e12a | ||
![]() |
56bb379024 | ||
![]() |
bafe4e909c | ||
![]() |
b6b0b54cdb | ||
![]() |
a9a45b9569 | ||
![]() |
864d806ee8 | ||
![]() |
4cda5d89fb | ||
![]() |
5b730ffb72 | ||
![]() |
e2b140b8dd | ||
![]() |
d2a29c2f87 | ||
![]() |
60e62dc5ab | ||
![]() |
4f1684c714 | ||
![]() |
d3e7e8a630 | ||
![]() |
437ddd3f76 | ||
![]() |
0d715d879d | ||
![]() |
cfdf5cffac | ||
![]() |
d6314b30a2 | ||
![]() |
03da68b1cf | ||
![]() |
890630944d | ||
![]() |
8d73ab65b2 | ||
![]() |
e54124fdb8 | ||
![]() |
e4fafb911a | ||
![]() |
2ef059807a | ||
![]() |
dba711d099 | ||
![]() |
ec13bba4da | ||
![]() |
8736c9ec4c | ||
![]() |
286df8f560 | ||
![]() |
92afbd45e8 | ||
![]() |
d293c22a52 | ||
![]() |
c660c9df8e | ||
![]() |
ed2eadaf56 | ||
![]() |
fa26333a5b | ||
![]() |
be7cfb78de | ||
![]() |
ec1d2cba40 | ||
![]() |
a93cd20e4d | ||
![]() |
25b3f2d1a6 | ||
![]() |
b44bdd21cb | ||
![]() |
53ea1843ab | ||
![]() |
34091176d5 | ||
![]() |
ac8a6887b6 | ||
![]() |
cc0a0b56ed | ||
![]() |
0e989185ce | ||
![]() |
aadf961184 | ||
![]() |
1abeac8811 | ||
![]() |
f8a304abdc | ||
![]() |
41a38428fc | ||
![]() |
d3850cf98f | ||
![]() |
02d906d3ae | ||
![]() |
6de72ecc77 | ||
![]() |
2a5dbe840c | ||
![]() |
86b6bcc1d9 | ||
![]() |
3023cff2b5 | ||
![]() |
f3a4764a1d | ||
![]() |
0d46a108b8 | ||
![]() |
8114c11d58 | ||
![]() |
e3425cfa9e | ||
![]() |
af78344e5d | ||
![]() |
a2121f2483 | ||
![]() |
7d97905716 | ||
![]() |
61adfea196 | ||
![]() |
3dd616f6ff | ||
![]() |
d5e6d161f2 | ||
![]() |
d1515456bc | ||
![]() |
7faa8b7a02 | ||
![]() |
5b0cbf9eb1 | ||
![]() |
74db0576af | ||
![]() |
d0b13f0eb0 | ||
![]() |
29a964d5b7 | ||
![]() |
5e6174c087 | ||
![]() |
199d770e15 | ||
![]() |
c47e29c7c8 | ||
![]() |
fed969ed64 | ||
![]() |
9cb686a6b7 | ||
![]() |
eddeda7bab | ||
![]() |
ca07540675 | ||
![]() |
fb5f563537 | ||
![]() |
2f9c5cdb22 | ||
![]() |
fcf50820e8 | ||
![]() |
3fd0241abb | ||
![]() |
ab0c82965c | ||
![]() |
5173a56ebd | ||
![]() |
9cd993d1da | ||
![]() |
73faf67084 | ||
![]() |
fd51362545 | ||
![]() |
56b99f4e19 | ||
![]() |
63cdfa2d85 | ||
![]() |
242874e705 | ||
![]() |
a5caa807f5 | ||
![]() |
c2c17fd053 | ||
![]() |
f54cc5796e | ||
![]() |
a9f99aed48 | ||
![]() |
7eaaa8f92a | ||
![]() |
ca9f5a18d4 | ||
![]() |
4f62900cd3 | ||
![]() |
2c9e1d942b | ||
![]() |
4032393c0e | ||
![]() |
8e854062e8 | ||
![]() |
cbf9c8ec1a | ||
![]() |
494593c745 | ||
![]() |
3af832ec18 | ||
![]() |
7e0cd223fd | ||
![]() |
8c0cd09823 | ||
![]() |
f931fc5a85 | ||
![]() |
c8b4611d8d | ||
![]() |
7764169aa3 | ||
![]() |
567dd3fabb | ||
![]() |
8d3c19c599 | ||
![]() |
b84333f8a1 | ||
![]() |
acdd08e9a2 | ||
![]() |
dbfd6a2368 | ||
![]() |
5af96943e3 | ||
![]() |
05325b135d | ||
![]() |
9d858d5cd7 | ||
![]() |
e82c50ed73 | ||
![]() |
4ce98d57dd | ||
![]() |
114c6d36d1 | ||
![]() |
538c88ced4 | ||
![]() |
7c35904062 | ||
![]() |
5c3c6b63ba | ||
![]() |
e698c09298 | ||
![]() |
a048ea668f | ||
![]() |
5af78ad2cd | ||
![]() |
338e89176d | ||
![]() |
a266599118 | ||
![]() |
80f624e4cc | ||
![]() |
002d56d8b3 | ||
![]() |
be4a1e7fd7 | ||
![]() |
a0a45333f1 | ||
![]() |
dba998fea0 | ||
![]() |
fe2b49cf81 | ||
![]() |
c90f1511dc | ||
![]() |
763d17281f | ||
![]() |
1ae5339c33 | ||
![]() |
7562e0e870 | ||
![]() |
0e456f33c1 | ||
![]() |
6778d36454 | ||
![]() |
bc54860ad6 | ||
![]() |
4894578b72 | ||
![]() |
fb7f7d0c75 | ||
![]() |
48fa4e116c | ||
![]() |
e9d3928fe0 | ||
![]() |
2a6f02fa29 | ||
![]() |
ce0e5be7ce | ||
![]() |
a8b6a40f13 | ||
![]() |
88a91e0769 | ||
![]() |
21f4676b16 | ||
![]() |
bb2a874fd5 | ||
![]() |
56667e717b | ||
![]() |
caaaa05710 | ||
![]() |
d69e6bb7aa | ||
![]() |
a1903e5d67 | ||
![]() |
64d8db0c93 | ||
![]() |
7b608fd0c9 | ||
![]() |
19cbffb5e2 | ||
![]() |
c5ea6b0502 | ||
![]() |
639ed40314 | ||
![]() |
c5cbda0bbe | ||
![]() |
59e37210f3 | ||
![]() |
9351f66c26 | ||
![]() |
7432c4dbfe | ||
![]() |
1069bea273 | ||
![]() |
c740d105c9 | ||
![]() |
66a5a9863f | ||
![]() |
7ca47b8916 | ||
![]() |
bcfa4866fe | ||
![]() |
de8377ab53 | ||
![]() |
b85b1e8834 | ||
![]() |
eba5a48abd | ||
![]() |
a90ade0446 | ||
![]() |
0b86eb9b4c | ||
![]() |
359c4fef9d | ||
![]() |
71b1cb3b9c | ||
![]() |
b740cc23d3 | ||
![]() |
613e9866aa | ||
![]() |
bc937d38a2 | ||
![]() |
35fcf39fc8 | ||
![]() |
bd45dc5d0f | ||
![]() |
7377974731 | ||
![]() |
669b67e666 | ||
![]() |
a2b85ba1fd | ||
![]() |
dc22109fa7 | ||
![]() |
4471a6377e | ||
![]() |
3f762a416d | ||
![]() |
a59a6ce8e4 | ||
![]() |
189514c6de | ||
![]() |
dded874350 | ||
![]() |
e42fa0e027 | ||
![]() |
33ffe95294 | ||
![]() |
0657238ad1 | ||
![]() |
4efece4ab8 | ||
![]() |
b9b2ed64f9 | ||
![]() |
16bc0531f4 | ||
![]() |
39c34078d6 | ||
![]() |
9318f05e2b | ||
![]() |
95f3073e6f | ||
![]() |
6f4a9390ba | ||
![]() |
0eb6967bb2 | ||
![]() |
2854630b1c | ||
![]() |
bbd781c420 | ||
![]() |
f7cfdfcf63 | ||
![]() |
af7c32d3aa | ||
![]() |
0d334369f0 | ||
![]() |
08f3630f01 | ||
![]() |
2b17838820 | ||
![]() |
0b0338a9cb | ||
![]() |
a24f2ae884 | ||
![]() |
ec5b0b5403 | ||
![]() |
df2d449f9b | ||
![]() |
eecd221d40 | ||
![]() |
3951b891c1 | ||
![]() |
eab455422f | ||
![]() |
75c93d72be | ||
![]() |
6842e8263d | ||
![]() |
f35d94d98e | ||
![]() |
01206a0e2e | ||
![]() |
cf9e3193bc | ||
![]() |
f5239ffb0b | ||
![]() |
746fe7ba09 | ||
![]() |
7c1a986e61 | ||
![]() |
c6b772da11 | ||
![]() |
11cfe38d1c | ||
![]() |
4ca6de2b54 | ||
![]() |
e1abcc684a | ||
![]() |
bbd936fdfa | ||
![]() |
f58eed13d0 | ||
![]() |
8a708fd97e | ||
![]() |
bf8d993743 | ||
![]() |
c029122a8e | ||
![]() |
54327d579b | ||
![]() |
6c10aa33e1 | ||
![]() |
b7c098c5e6 | ||
![]() |
c18c42e866 | ||
![]() |
386f99cb1d | ||
![]() |
a4b606c6e9 | ||
![]() |
baa8d2c326 | ||
![]() |
e1ca0f3ff9 | ||
![]() |
ca2be2f499 | ||
![]() |
5960e7dda6 | ||
![]() |
efc04645b7 | ||
![]() |
f888fb4ac7 | ||
![]() |
e71e97cb68 | ||
![]() |
1b4c5fd34d | ||
![]() |
802ec5a14e | ||
![]() |
5341478036 | ||
![]() |
7694b21dff | ||
![]() |
cf061b7d30 | ||
![]() |
7fffb6526c | ||
![]() |
dd5b16831c | ||
![]() |
b3ca2ea179 | ||
![]() |
b5d67f90e4 | ||
![]() |
ce42f7c9f1 | ||
![]() |
02869d7428 | ||
![]() |
67b35b76ac | ||
![]() |
baebabbfd8 | ||
![]() |
154ee1a73e | ||
![]() |
b3fb6bd990 | ||
![]() |
926d51839f | ||
![]() |
8de966ea88 | ||
![]() |
85b0a40a0e | ||
![]() |
88fe94bd6a | ||
![]() |
1b53c590f2 | ||
![]() |
2ee5b35f48 | ||
![]() |
f0dd7b7dae | ||
![]() |
f08c0afbea | ||
![]() |
5a417c6a29 | ||
![]() |
9f32e6e50d | ||
![]() |
801cfdbc24 | ||
![]() |
889d994dbc | ||
![]() |
97c28e1e51 | ||
![]() |
ad6e2b4b94 | ||
![]() |
da12daffee | ||
![]() |
30319e51e5 | ||
![]() |
294ea17222 | ||
![]() |
fad954df18 | ||
![]() |
25be00931a | ||
![]() |
cd9ed1706d | ||
![]() |
b034b86be8 | ||
![]() |
aa189a7fc6 | ||
![]() |
074cbdad28 | ||
![]() |
cbc0ef860b | ||
![]() |
ab64ee872b | ||
![]() |
a63515b8f4 | ||
![]() |
4dcd6df136 | ||
![]() |
cea1bbde23 | ||
![]() |
2c8447853b | ||
![]() |
116664285d | ||
![]() |
213b18e33b | ||
![]() |
299f981441 | ||
![]() |
7ea827f8d3 | ||
![]() |
c2af5c6a3f | ||
![]() |
63812ca951 | ||
![]() |
98bdfcef65 | ||
![]() |
ac97ed685f | ||
![]() |
c5ff9b353c | ||
![]() |
04c1988665 | ||
![]() |
36c14ca587 | ||
![]() |
0c118bed61 | ||
![]() |
6c6474291e | ||
![]() |
7fa89c9ba4 | ||
![]() |
d2aad3a3ca | ||
![]() |
ca09b0491e | ||
![]() |
2e08ae82b1 | ||
![]() |
2652c73a4f | ||
![]() |
a21bff1dbd | ||
![]() |
14fc3dc9b3 | ||
![]() |
5cb295341c | ||
![]() |
b854c3b00e | ||
![]() |
2d3ff6a97c | ||
![]() |
c627ed4b6f | ||
![]() |
70ec183fca | ||
![]() |
1e45b7f50b | ||
![]() |
293479a1f2 | ||
![]() |
7b8962a796 | ||
![]() |
852a14992c | ||
![]() |
37e6a9ebc2 | ||
![]() |
b3f5bf1583 | ||
![]() |
a3a8c19dc2 | ||
![]() |
bc94de5626 | ||
![]() |
c3a64b3d6c | ||
![]() |
70eed10a34 | ||
![]() |
56c3983885 | ||
![]() |
78eaa49cd6 | ||
![]() |
2668a42f0c | ||
![]() |
4a7f1116ac | ||
![]() |
f12ce78b5c | ||
![]() |
610009fb7f | ||
![]() |
4cb075b168 | ||
![]() |
cf96e6c642 | ||
![]() |
dd1bd8ad10 | ||
![]() |
facfa26eed | ||
![]() |
0012a3ede7 | ||
![]() |
b61a818a3f | ||
![]() |
a2c44dedce | ||
![]() |
a8ad4f784a | ||
![]() |
78d69bcbf0 | ||
![]() |
414361a3db | ||
![]() |
1d4071d6d8 | ||
![]() |
47daf1b358 | ||
![]() |
7a910a8cc1 | ||
![]() |
9818c7b6a4 | ||
![]() |
ca9e5e8531 | ||
![]() |
aafee60033 | ||
![]() |
adf7c4ffb6 | ||
![]() |
96965ae347 | ||
![]() |
bc2ef5d726 | ||
![]() |
7a539d9890 | ||
![]() |
c40408b337 | ||
![]() |
4e2daf117b | ||
![]() |
9553afc3c2 | ||
![]() |
26352c9eb4 | ||
![]() |
62c167fc77 | ||
![]() |
03c774eae7 | ||
![]() |
53992bf0d5 | ||
![]() |
ff99e5ac9a | ||
![]() |
0cc318664d | ||
![]() |
43c427b253 | ||
![]() |
44c8d60a70 | ||
![]() |
54252184ab | ||
![]() |
7ae68b20e7 | ||
![]() |
208234b934 | ||
![]() |
1729b9f29c | ||
![]() |
5d69334287 | ||
![]() |
4d54fb675f | ||
![]() |
e93de54eb5 | ||
![]() |
43441d8291 | ||
![]() |
d6dce1efe9 | ||
![]() |
dca69f053a | ||
![]() |
5ebbed8160 | ||
![]() |
3fdb330bd9 | ||
![]() |
c05dbc451a | ||
![]() |
5f623e32c4 | ||
![]() |
7c37c5c06f | ||
![]() |
4d541ca969 | ||
![]() |
e4a67183bd | ||
![]() |
d25be686ee | ||
![]() |
a3be239a60 | ||
![]() |
709a053c7c | ||
![]() |
d39c6bef4b | ||
![]() |
84a8158aa2 | ||
![]() |
a7c5826e05 | ||
![]() |
2da39e2fbb | ||
![]() |
d6e0164766 | ||
![]() |
fbc85bed64 | ||
![]() |
52b54fe154 | ||
![]() |
f44341a8e2 | ||
![]() |
9f6130cbaa | ||
![]() |
24d73f5822 | ||
![]() |
d3bdeaab3f | ||
![]() |
b66f4b9322 | ||
![]() |
9dfe5f5f07 | ||
![]() |
d6fc020ba7 | ||
![]() |
8397b118b7 | ||
![]() |
74dc000ac1 | ||
![]() |
9b61991523 | ||
![]() |
702c79a92f | ||
![]() |
a27822b557 | ||
![]() |
bdcb00a3b2 | ||
![]() |
ac5a485651 | ||
![]() |
e8c65388eb | ||
![]() |
f2cbb61d49 | ||
![]() |
0a1c61d9d3 | ||
![]() |
01a0fff4c2 | ||
![]() |
bf9516d164 | ||
![]() |
fdbf8cb0ee | ||
![]() |
7e8a176751 | ||
![]() |
61504ae3b1 | ||
![]() |
dd76525372 | ||
![]() |
1c0f8b4289 | ||
![]() |
63043b4927 | ||
![]() |
3ea4c66d41 | ||
![]() |
781d7fbf1a | ||
![]() |
e7ebbffbfd | ||
![]() |
39f054eef6 | ||
![]() |
7a620c794d | ||
![]() |
cc13f3e10d | ||
![]() |
b0e41abf5a | ||
![]() |
5347897b7d | ||
![]() |
6f8fae9a7b | ||
![]() |
62b50d1475 | ||
![]() |
2fb0c86f1e | ||
![]() |
aedd997604 | ||
![]() |
aa3da942cb | ||
![]() |
87e1a14a4b | ||
![]() |
00f6bb7c82 | ||
![]() |
cca93c2be2 | ||
![]() |
ad9d0608d4 | ||
![]() |
3c5688c6f6 | ||
![]() |
ece92a886a | ||
![]() |
85777ea491 | ||
![]() |
b8a84dbd83 | ||
![]() |
35c31906b7 | ||
![]() |
1fa940876f | ||
![]() |
c652123145 | ||
![]() |
1c52fff1cc | ||
![]() |
261f08b90e | ||
![]() |
2d48581570 | ||
![]() |
b8a7ecfe69 | ||
![]() |
cbc2de6b85 | ||
![]() |
9d2bb67834 | ||
![]() |
3d7ff9765a | ||
![]() |
28f2def21f | ||
![]() |
0ee303789a | ||
![]() |
6ccc92020c | ||
![]() |
e3fe66d3ec | ||
![]() |
ab5605d54b | ||
![]() |
a7a90613c2 | ||
![]() |
19d95ebd10 | ||
![]() |
0e1849346b | ||
![]() |
0f34e3bed9 | ||
![]() |
c8b66b25e8 | ||
![]() |
e6f07a6fe4 | ||
![]() |
51469f8fa2 | ||
![]() |
d78b2a569f | ||
![]() |
ec6c970775 | ||
![]() |
67c45efff7 | ||
![]() |
a54772bf35 | ||
![]() |
166be2a94d | ||
![]() |
7150d05399 | ||
![]() |
36a6e22f27 | ||
![]() |
dc13eaed1f | ||
![]() |
001bd60d36 | ||
![]() |
b063042988 | ||
![]() |
fa1d49add5 | ||
![]() |
b45248bf99 | ||
![]() |
dfe862dcd5 | ||
![]() |
d4ddeaa917 | ||
![]() |
13a49866a7 | ||
![]() |
7e2aea92b0 | ||
![]() |
7db51b2f8d | ||
![]() |
ae1b963e0f | ||
![]() |
b29b7e0185 | ||
![]() |
71270260bf | ||
![]() |
22abbc1d41 | ||
![]() |
32698fe0be | ||
![]() |
16f8d6a936 | ||
![]() |
046d6f3bc1 | ||
![]() |
e33c4086b9 | ||
![]() |
51d754a53e | ||
![]() |
49976bcd83 | ||
![]() |
f991d2bdb4 | ||
![]() |
e6ff23885e | ||
![]() |
7aa859a442 | ||
![]() |
180deb867a | ||
![]() |
a5c531f0a4 | ||
![]() |
5dd70b88d3 | ||
![]() |
40f2718265 | ||
![]() |
ddd106655d | ||
![]() |
cc61ad01b6 | ||
![]() |
8a44c1f6d5 | ||
![]() |
e370cbb06b | ||
![]() |
cb0c2e3b9c | ||
![]() |
80360cc79a | ||
![]() |
559a979536 | ||
![]() |
5e88537809 | ||
![]() |
8b60baea99 | ||
![]() |
ac61c33d1c | ||
![]() |
3088f04e6f | ||
![]() |
864dca1b67 | ||
![]() |
15320018f0 | ||
![]() |
6226dd5b80 | ||
![]() |
aafc1064d9 | ||
![]() |
fb2fbc875d | ||
![]() |
8085db6ba9 | ||
![]() |
4f20769a6c | ||
![]() |
090199f9de | ||
![]() |
cd3635985e | ||
![]() |
8a7179195f | ||
![]() |
e45e29b431 | ||
![]() |
ca28fc27dc | ||
![]() |
08b2cde8e8 | ||
![]() |
489d88e02a | ||
![]() |
dff39ffd20 | ||
![]() |
3c948ef063 | ||
![]() |
7087565d92 | ||
![]() |
3467358663 | ||
![]() |
45a1c25a29 | ||
![]() |
70a11a12b3 | ||
![]() |
5d5b0d572e | ||
![]() |
7c8eadfddf | ||
![]() |
89ca0c537d | ||
![]() |
a92a6404cb | ||
![]() |
78459fcb31 | ||
![]() |
41fc0fd084 | ||
![]() |
5c9655abc3 | ||
![]() |
3301797491 | ||
![]() |
eb5e1d34df | ||
![]() |
9e92e5995f | ||
![]() |
e96f2d7be0 | ||
![]() |
03cb51844b | ||
![]() |
6b06cc9216 | ||
![]() |
6b49323f05 | ||
![]() |
4a11fab2b1 | ||
![]() |
c382191e75 | ||
![]() |
4d480b8761 | ||
![]() |
cd25562fd2 | ||
![]() |
9a3d560d9e | ||
![]() |
4924fb95f8 | ||
![]() |
6de67fe81f | ||
![]() |
bc71827c01 | ||
![]() |
a8ade3a04b | ||
![]() |
eca04e2e92 | ||
![]() |
763b9fc1da | ||
![]() |
add75fbc77 | ||
![]() |
86b1ac5d7c | ||
![]() |
b51197936b | ||
![]() |
64609ce5cf | ||
![]() |
b81cbf9062 | ||
![]() |
e7e881e5d7 | ||
![]() |
e236a76d5a | ||
![]() |
ad8a827c1f | ||
![]() |
08ac33bc5c | ||
![]() |
5cf39a2970 | ||
![]() |
1c9321d5a1 | ||
![]() |
97a8d865dc | ||
![]() |
982133d9b6 | ||
![]() |
d23935a269 | ||
![]() |
1c343a444b | ||
![]() |
1c9696b68e | ||
![]() |
ecd23d0abd | ||
![]() |
010d1b5ff8 | ||
![]() |
46394a7c0f | ||
![]() |
fc86034fab | ||
![]() |
03012cc175 | ||
![]() |
8518333406 | ||
![]() |
b2e0e25f1c | ||
![]() |
9673be17cb | ||
![]() |
fa8786e230 | ||
![]() |
21f72baae2 | ||
![]() |
4b78af268f | ||
![]() |
a734199383 | ||
![]() |
046b741700 | ||
![]() |
ce0b6f0d56 | ||
![]() |
6de0622c1a | ||
![]() |
6229b81730 | ||
![]() |
c701379a2e | ||
![]() |
0783968121 | ||
![]() |
307f5e6e56 | ||
![]() |
cb29685a24 | ||
![]() |
dabba89682 | ||
![]() |
2efd4f2a77 | ||
![]() |
90296b3ef0 | ||
![]() |
8f02fe0cc6 | ||
![]() |
7a6edcdddb | ||
![]() |
81139c0098 | ||
![]() |
6a6268c068 | ||
![]() |
68133ec8e3 | ||
![]() |
314f92f2d8 | ||
![]() |
8b5db328ec | ||
![]() |
615b76f78c | ||
![]() |
f2912c14ea | ||
![]() |
08f33d7e9e | ||
![]() |
c034cb5985 | ||
![]() |
e3cd15dced | ||
![]() |
8439d4e827 | ||
![]() |
2b501904cf | ||
![]() |
ea986a1f1b | ||
![]() |
b924357ea9 | ||
![]() |
b823d74ac3 | ||
![]() |
d1e2019cd7 | ||
![]() |
70573eba2c | ||
![]() |
cf46653333 | ||
![]() |
8d3fcbd897 | ||
![]() |
1900538315 | ||
![]() |
a9feae6110 | ||
![]() |
8d822f2cb4 | ||
![]() |
c12e486f59 | ||
![]() |
d0d0bed333 | ||
![]() |
8799321312 | ||
![]() |
00d2997971 | ||
![]() |
69f7f233fd | ||
![]() |
793e8643bf | ||
![]() |
521ef8e28f | ||
![]() |
7433d85418 | ||
![]() |
ba1cf12817 | ||
![]() |
7dc7b95bfd | ||
![]() |
59352e4ca7 | ||
![]() |
011d026d76 | ||
![]() |
89a8184ad2 | ||
![]() |
a23e10dff5 | ||
![]() |
535603fac4 | ||
![]() |
fb6282da57 | ||
![]() |
23766cd01d | ||
![]() |
44b2afb218 | ||
![]() |
9e82e59fc8 | ||
![]() |
e006538514 | ||
![]() |
fad5dfa4f4 | ||
![]() |
b737ee0240 | ||
![]() |
9d9f774dad | ||
![]() |
526ee9c9db | ||
![]() |
671eff324d | ||
![]() |
a93cf04aca | ||
![]() |
e93a67e644 | ||
![]() |
b29a52dfa8 | ||
![]() |
4ed99ba851 | ||
![]() |
3e92e716b2 | ||
![]() |
c6c8f6563d | ||
![]() |
138c911ef4 | ||
![]() |
e5fe6401a0 | ||
![]() |
bed643e627 | ||
![]() |
4ac25a50ed | ||
![]() |
d9cf189ef6 | ||
![]() |
6e19878973 | ||
![]() |
9f9c4d6ed0 | ||
![]() |
567848e94f | ||
![]() |
221cbcc1ac | ||
![]() |
dc2086dab4 | ||
![]() |
7be2a03c86 | ||
![]() |
e87f8f5b93 | ||
![]() |
11a063ea66 | ||
![]() |
1d26f4c5f7 | ||
![]() |
8a09558ed8 | ||
![]() |
60b1e692b9 | ||
![]() |
0a1865d0dd | ||
![]() |
3d94c70c48 | ||
![]() |
7d7f967d5e | ||
![]() |
ce554e6c77 | ||
![]() |
5d151cca9d | ||
![]() |
e47d90b5a6 | ||
![]() |
e4730191db | ||
![]() |
49aab492e0 | ||
![]() |
2d4d246268 | ||
![]() |
09e558ae0b | ||
![]() |
a3fd6633c4 | ||
![]() |
1eb246c98b | ||
![]() |
96e0c0df20 | ||
![]() |
aa8f420681 | ||
![]() |
7974b5a95c | ||
![]() |
ed4570cb4d | ||
![]() |
01d851440b | ||
![]() |
e5943b64c1 | ||
![]() |
933e56494c | ||
![]() |
140e73be4e | ||
![]() |
960b9b855f | ||
![]() |
1e1d55b26d | ||
![]() |
925bf7715c | ||
![]() |
399d3ad85a | ||
![]() |
d923c03d52 | ||
![]() |
699b91ab8d | ||
![]() |
abd6eb2ff3 | ||
![]() |
32f29e72c6 | ||
![]() |
e76bac4131 | ||
![]() |
8b94642ab1 | ||
![]() |
d3497148c5 | ||
![]() |
27baa55443 | ||
![]() |
fd3d4d479a | ||
![]() |
4b0a2d050a | ||
![]() |
d85c14864b | ||
![]() |
ee696e6f36 | ||
![]() |
6ccbd8472c | ||
![]() |
8ec26e9ea9 | ||
![]() |
45e31a153c | ||
![]() |
7c23d800e6 | ||
![]() |
4dbf6af733 | ||
![]() |
bdc03b1c75 | ||
![]() |
9bfc74a1bc | ||
![]() |
5d03917877 | ||
![]() |
d2f975a0f3 | ||
![]() |
eedd47860a | ||
![]() |
6e59248ea6 | ||
![]() |
365554d064 | ||
![]() |
70d1cb86fd | ||
![]() |
ccb7c0d579 | ||
![]() |
fd9941e2d8 | ||
![]() |
2f89563fca | ||
![]() |
261f601bd5 | ||
![]() |
5157e4965a | ||
![]() |
3ffd25f9e1 | ||
![]() |
665ab34f25 | ||
![]() |
37f227ae74 | ||
![]() |
f6eb29d800 | ||
![]() |
f5315d9ba7 | ||
![]() |
124cc9621d | ||
![]() |
3faa7226e7 | ||
![]() |
6070b41c9b | ||
![]() |
50ddfea617 | ||
![]() |
e74ad86f14 | ||
![]() |
2bd2490539 | ||
![]() |
5c0378a684 | ||
![]() |
2bd5aca3a4 | ||
![]() |
ccb59fbad3 | ||
![]() |
6c66d02aff | ||
![]() |
9f03598259 | ||
![]() |
8191246c19 | ||
![]() |
437769ac0b | ||
![]() |
f97a1103b1 | ||
![]() |
9b0c9be7dd | ||
![]() |
97c7f3bc67 | ||
![]() |
2503271a45 | ||
![]() |
d335f263f3 | ||
![]() |
1c34635016 | ||
![]() |
b6a35e9477 | ||
![]() |
6aa8251b98 | ||
![]() |
3b4bf90a13 | ||
![]() |
0c71756009 | ||
![]() |
2f6abb8aa1 | ||
![]() |
42582e21f7 | ||
![]() |
af49a4dd5a | ||
![]() |
b2081faf87 | ||
![]() |
f960934eb9 | ||
![]() |
5522725f5d | ||
![]() |
9f3d36bab0 | ||
![]() |
87e7085c22 | ||
![]() |
d8eac56f5e | ||
![]() |
c20557f690 | ||
![]() |
65bdc4cf43 | ||
![]() |
ee79c196df | ||
![]() |
41682bfcbb | ||
![]() |
34be8c9213 | ||
![]() |
aebb9f89d1 | ||
![]() |
40f6201509 | ||
![]() |
2e8e2b04a1 | ||
![]() |
015780fc72 | ||
![]() |
c64e433a69 | ||
![]() |
e21f46d824 | ||
![]() |
ef79546508 | ||
![]() |
2993fdb169 | ||
![]() |
365b1c6299 | ||
![]() |
9565b695ef | ||
![]() |
89cedd411e | ||
![]() |
a51742b47c | ||
![]() |
ea3b897d5d | ||
![]() |
e432d67b3b | ||
![]() |
bd7dc8b5e7 | ||
![]() |
a7ac700fe1 | ||
![]() |
ff87958188 | ||
![]() |
f308cd392b | ||
![]() |
e4bea17fb8 | ||
![]() |
2c47cfbe25 | ||
![]() |
b0685541d9 | ||
![]() |
f097c15c61 | ||
![]() |
511fa37c84 | ||
![]() |
a82ca6adb2 | ||
![]() |
05e3e46f5a | ||
![]() |
6d399f0303 | ||
![]() |
ecebfc34fa | ||
![]() |
59b53f3db4 | ||
![]() |
e86916a7f9 | ||
![]() |
11ae073c12 | ||
![]() |
aec53b2849 | ||
![]() |
0f42ab230e | ||
![]() |
211c92c387 | ||
![]() |
2f1ec09aef | ||
![]() |
4561d844e4 | ||
![]() |
3caa57358f | ||
![]() |
94195d5339 | ||
![]() |
c9a552c89c | ||
![]() |
6b123921a4 | ||
![]() |
383eaf44ac | ||
![]() |
223d15802e | ||
![]() |
bdf2f6c3e1 | ||
![]() |
fdc186c92f | ||
![]() |
ab6141edb7 | ||
![]() |
d0dcf53575 | ||
![]() |
ab906f17de | ||
![]() |
28ef33b0a0 | ||
![]() |
376dedebb1 | ||
![]() |
137c6458f7 | ||
![]() |
75e0990eb3 | ||
![]() |
62a6c725d6 | ||
![]() |
d4554c2e5c | ||
![]() |
d6a398cf2c | ||
![]() |
68e3bcbcda | ||
![]() |
6864e13e6f | ||
![]() |
942fad1d6f | ||
![]() |
29e6b229ac | ||
![]() |
a4ce5d1687 | ||
![]() |
cb8d6a0939 | ||
![]() |
e38128119c | ||
![]() |
c7c7924d37 | ||
![]() |
b5a24fd877 | ||
![]() |
e1ed5b73d0 | ||
![]() |
3e47d26e44 | ||
![]() |
e0d17e496a | ||
![]() |
6cf99cd0f2 | ||
![]() |
31d84100cd | ||
![]() |
0eb39aa9e3 | ||
![]() |
f457069881 | ||
![]() |
47eef78365 | ||
![]() |
eaaadf40c9 | ||
![]() |
c9e2da5f53 | ||
![]() |
53b7956968 | ||
![]() |
d13be829c3 | ||
![]() |
e18b2ab437 | ||
![]() |
6777a615d4 | ||
![]() |
41f2375053 | ||
![]() |
f385bd2236 | ||
![]() |
35032d7eed | ||
![]() |
bfd48f187a | ||
![]() |
7662da52e6 | ||
![]() |
7722916fad | ||
![]() |
d82a1d7198 | ||
![]() |
45925efe32 | ||
![]() |
a64bb1a990 | ||
![]() |
650bf15db8 | ||
![]() |
2b8e50b296 | ||
![]() |
2731eb1c05 | ||
![]() |
f97aa05bdb | ||
![]() |
4a68df084e | ||
![]() |
83530b7adb | ||
![]() |
a2ef09466f | ||
![]() |
7c9488105e | ||
![]() |
3f32b040dc | ||
![]() |
21b3c61162 | ||
![]() |
5045fa6dcd | ||
![]() |
c4a3d70500 | ||
![]() |
435bb34435 | ||
![]() |
bb9ca7f418 | ||
![]() |
2e30ed17bd | ||
![]() |
0b3d088782 | ||
![]() |
6514eaf565 | ||
![]() |
f8e7602d96 | ||
![]() |
565aef9637 | ||
![]() |
82efb83c43 | ||
![]() |
f29ff67585 | ||
![]() |
825bf8d61e | ||
![]() |
1344b31535 | ||
![]() |
9b8bddf7b2 | ||
![]() |
8a087a876e | ||
![]() |
f8067aa592 | ||
![]() |
2b837381f3 | ||
![]() |
cd6959b712 | ||
![]() |
3e5f8c64d4 | ||
![]() |
2d1c34d8e0 | ||
![]() |
48d532777a | ||
![]() |
f6336a6056 | ||
![]() |
cd7bdc8998 | ||
![]() |
2b7b3c65cc | ||
![]() |
98e02a8fed | ||
![]() |
a93391e247 | ||
![]() |
102cc684dd | ||
![]() |
a230228441 | ||
![]() |
135cad576c | ||
![]() |
561fbf2cca | ||
![]() |
a8127d6102 | ||
![]() |
2f28d3c7b6 | ||
![]() |
e59c735331 | ||
![]() |
221014a2e3 | ||
![]() |
e2dbfa9ace | ||
![]() |
121ff2b7be | ||
![]() |
45465e994e | ||
![]() |
af85a8a340 | ||
![]() |
5fe0e9395f | ||
![]() |
1f1cabd144 | ||
![]() |
c3bab70434 | ||
![]() |
1d6af22813 | ||
![]() |
a50798c78f | ||
![]() |
379d41b6fb | ||
![]() |
09da6828b8 | ||
![]() |
9f386afe9c | ||
![]() |
35dedd3d83 | ||
![]() |
45c0d5a823 | ||
![]() |
7bc5bfa140 | ||
![]() |
fda6def384 | ||
![]() |
4bf4d45389 | ||
![]() |
4e8eb2c996 | ||
![]() |
e43a9de2f3 | ||
![]() |
1a9e97ee3b | ||
![]() |
901fca2d12 | ||
![]() |
c23f8542b2 | ||
![]() |
0189606445 | ||
![]() |
9b31496b22 | ||
![]() |
b9676ac3eb | ||
![]() |
764aabc459 | ||
![]() |
61d2ff359b | ||
![]() |
87ad8a1495 | ||
![]() |
5d889e4a8f | ||
![]() |
b65a714d17 | ||
![]() |
ea1c4a8fc8 | ||
![]() |
5beb1b2cd0 | ||
![]() |
f55e0b6775 | ||
![]() |
d124041726 | ||
![]() |
7a26a92edd | ||
![]() |
43c8ac0aa1 | ||
![]() |
46e6ed480a | ||
![]() |
9f30aba2b3 | ||
![]() |
560ecbc6c3 | ||
![]() |
8d9b6cca63 | ||
![]() |
3972597163 | ||
![]() |
b0d17221f2 | ||
![]() |
be2cdca1e9 | ||
![]() |
f6ab1d63e8 | ||
![]() |
cf5e833898 | ||
![]() |
6ed2e2694f | ||
![]() |
04827188f2 | ||
![]() |
560239c918 | ||
![]() |
a78929dadf | ||
![]() |
349cc54c69 | ||
![]() |
a8ae97ba91 | ||
![]() |
aad6b69f00 | ||
![]() |
d74df935f4 | ||
![]() |
5c8806b307 | ||
![]() |
a078633a32 | ||
![]() |
f022458383 | ||
![]() |
6139d0d65a | ||
![]() |
86a283b4ae | ||
![]() |
bb39a41e9e | ||
![]() |
1568e98d43 | ||
![]() |
0c9ecd1d76 | ||
![]() |
799e67bbca | ||
![]() |
561b597031 | ||
![]() |
6d6908e625 | ||
![]() |
4da4fb0676 | ||
![]() |
7a8c05dc7c | ||
![]() |
d7bacdcbff | ||
![]() |
73e927ff19 | ||
![]() |
e2c785b2d5 | ||
![]() |
20e9952d98 | ||
![]() |
0bf36ad031 | ||
![]() |
f3435c5e35 | ||
![]() |
166ec74ff9 | ||
![]() |
6b3c6c12ff | ||
![]() |
5161758193 | ||
![]() |
bea32cfe38 | ||
![]() |
8cfd803222 | ||
![]() |
9a567721a8 | ||
![]() |
3a49c8f2da | ||
![]() |
12938799a6 | ||
![]() |
89807fb55f | ||
![]() |
891a24c6ba | ||
![]() |
752b45083c | ||
![]() |
f00f552369 | ||
![]() |
5c2b81d78f | ||
![]() |
a2b0531d5f | ||
![]() |
752eb58ec0 | ||
![]() |
7373b60522 | ||
![]() |
59f0961594 | ||
![]() |
b776f98df8 | ||
![]() |
7400284cff | ||
![]() |
da87eb7b4c | ||
![]() |
e1f9083c81 | ||
![]() |
614376ed64 | ||
![]() |
529dd6e3a8 | ||
![]() |
acb1bc0c0e | ||
![]() |
8233f60569 | ||
![]() |
4ae2160372 | ||
![]() |
1df2dd9593 | ||
![]() |
d53a1d1412 | ||
![]() |
de9b43984a | ||
![]() |
4a0b36a50b | ||
![]() |
fffe5e7003 | ||
![]() |
0bac639a04 | ||
![]() |
0d0d0a7c23 | ||
![]() |
c8e8a44747 | ||
![]() |
173f8b093f | ||
![]() |
e46c88580a | ||
![]() |
e6033c952e | ||
![]() |
3dfd0ff3b3 | ||
![]() |
dd65f35e5a | ||
![]() |
0d550c9bce | ||
![]() |
2aeb8b9390 | ||
![]() |
afa2fc0ba9 | ||
![]() |
6a45919b25 | ||
![]() |
e4f7d607e1 | ||
![]() |
0690ef31d1 | ||
![]() |
c3f02d833c | ||
![]() |
e273ac3a0d | ||
![]() |
459d02abc8 | ||
![]() |
f5e8b26a55 | ||
![]() |
2d27083509 | ||
![]() |
ce482c20cb | ||
![]() |
c2f149cca3 | ||
![]() |
ab0e1ec6e8 | ||
![]() |
5e4f548321 | ||
![]() |
e53634ecef | ||
![]() |
03e7019182 | ||
![]() |
82b0bc63a3 | ||
![]() |
04275e7d5d | ||
![]() |
7a471ea6b2 | ||
![]() |
45874fa333 | ||
![]() |
74a5c6e745 | ||
![]() |
cfafe90fe0 | ||
![]() |
12d396ffc5 | ||
![]() |
dc39b9e643 | ||
![]() |
e6a8c02745 | ||
![]() |
88d695f7af | ||
![]() |
b673e0c219 | ||
![]() |
5c819f7242 | ||
![]() |
40bd2039d4 | ||
![]() |
53f29613c2 | ||
![]() |
3371709472 | ||
![]() |
50c009265e | ||
![]() |
e169c0ce5e | ||
![]() |
f04d4b10e4 | ||
![]() |
f3e4338efc | ||
![]() |
c8979a6a49 | ||
![]() |
5b495e2f51 | ||
![]() |
42637a642b | ||
![]() |
2375e7c100 | ||
![]() |
ae1b852821 | ||
![]() |
44e4dd3700 | ||
![]() |
24d7d599f1 | ||
![]() |
d85a41ad75 | ||
![]() |
478ddfe102 | ||
![]() |
198f832c3d | ||
![]() |
f0b78ffc04 | ||
![]() |
a445311705 | ||
![]() |
1fe1fa9eac | ||
![]() |
6258652c7b | ||
![]() |
28d31b9d5b | ||
![]() |
75426cc498 | ||
![]() |
ae29e8bbab | ||
![]() |
2b9c7e04a4 | ||
![]() |
d1aba56096 | ||
![]() |
3985d58d3c | ||
![]() |
1479b61214 | ||
![]() |
15a249eb54 | ||
![]() |
08b3d6bbb0 | ||
![]() |
710c5e2c31 | ||
![]() |
17fa615bd3 | ||
![]() |
6bfed97710 | ||
![]() |
f9e286123f | ||
![]() |
613fd1bcf0 | ||
![]() |
52ce52d466 | ||
![]() |
cede5ac9d2 | ||
![]() |
89559eae2b | ||
![]() |
d7fb2e6403 | ||
![]() |
e3119b457c | ||
![]() |
ae27a5b7b7 | ||
![]() |
302cb27e98 | ||
![]() |
2d3481b9a9 | ||
![]() |
9b67e988db | ||
![]() |
15f1fdddd9 | ||
![]() |
24fa9e32b0 | ||
![]() |
0b4fef19f6 | ||
![]() |
35731b96dc | ||
![]() |
b79a1b5755 | ||
![]() |
1561f6f09f | ||
![]() |
36d7fce909 | ||
![]() |
b8d6058b28 | ||
![]() |
8771e1a339 | ||
![]() |
7b657c942d | ||
![]() |
531ae501ad | ||
![]() |
d0cac421bb | ||
![]() |
4429a16ca8 | ||
![]() |
c669401767 | ||
![]() |
4d349f5f81 | ||
![]() |
08e0349ca3 | ||
![]() |
ee5fe424e8 | ||
![]() |
552ff0489d | ||
![]() |
04a9ce6e81 | ||
![]() |
586bdc0567 | ||
![]() |
4bb3d13921 | ||
![]() |
7c02630186 | ||
![]() |
ff63ad8b97 | ||
![]() |
bdf1fb6db8 | ||
![]() |
d21fdb7546 | ||
![]() |
be5af2796d | ||
![]() |
b1020c599f | ||
![]() |
b2199202ab | ||
![]() |
06105072f9 | ||
![]() |
b676ca7d96 | ||
![]() |
90f355cfaf | ||
![]() |
757ab3dc92 | ||
![]() |
e022c371ff | ||
![]() |
50a2cc9917 | ||
![]() |
5209b0172b | ||
![]() |
cfb55d9d77 | ||
![]() |
df2bbe129d | ||
![]() |
f7cae610a4 | ||
![]() |
bb698d682c | ||
![]() |
5bd6ff2285 | ||
![]() |
e6cf186c23 | ||
![]() |
e8b5508463 | ||
![]() |
d70b893852 | ||
![]() |
a579b4a519 | ||
![]() |
fffa2f097e | ||
![]() |
cabb2198b0 | ||
![]() |
3af2168b02 | ||
![]() |
f1337524f6 | ||
![]() |
348109a1f9 | ||
![]() |
0b0597be0c | ||
![]() |
690dbc4725 | ||
![]() |
cc9b1ea8a1 | ||
![]() |
ffebe82586 | ||
![]() |
4453e7fcdd | ||
![]() |
60d65d8137 | ||
![]() |
c8eefe749f | ||
![]() |
162421a59a | ||
![]() |
79048812e9 | ||
![]() |
70b242f190 | ||
![]() |
8db4bde15d | ||
![]() |
fbb8f0cbf5 | ||
![]() |
aafa12eb6e | ||
![]() |
76f285f19c | ||
![]() |
e1073de36f | ||
![]() |
ae48e49cba | ||
![]() |
4180db601d | ||
![]() |
423983e023 | ||
![]() |
90a1ea4281 | ||
![]() |
0ebd864db9 | ||
![]() |
02e85913da | ||
![]() |
1d5dc283fe | ||
![]() |
769f0a78d4 | ||
![]() |
4029f86c60 | ||
![]() |
f6d1fea9b7 | ||
![]() |
fa6524d377 | ||
![]() |
c56cb8adb6 | ||
![]() |
78638a15be | ||
![]() |
d4a51979bb | ||
![]() |
77555cd5c2 | ||
![]() |
7c48ba2f19 | ||
![]() |
4dbe0a0d0e | ||
![]() |
ca92a74a39 | ||
![]() |
c01d28a471 | ||
![]() |
98ff09931d | ||
![]() |
20ae89c2a1 | ||
![]() |
0baa23f553 | ||
![]() |
10fbb6a2a8 | ||
![]() |
6152b83405 | ||
![]() |
aed25ff87c | ||
![]() |
5f94238d23 | ||
![]() |
4d1d5d6b20 | ||
![]() |
5ba6a5fca1 | ||
![]() |
cba8d83b21 | ||
![]() |
aaeffe3846 | ||
![]() |
6881e8fbe3 | ||
![]() |
137e455f03 | ||
![]() |
ff3d0346eb | ||
![]() |
498da509db | ||
![]() |
d484c0e7ce | ||
![]() |
5c1c561d7d | ||
![]() |
9f0429ca6f | ||
![]() |
3485ad39d9 | ||
![]() |
d899923876 | ||
![]() |
4e04cd27c9 | ||
![]() |
7e4b428a3e | ||
![]() |
9f65a318da | ||
![]() |
2f6ed86c78 | ||
![]() |
6590915b15 | ||
![]() |
0c3fe54b0b | ||
![]() |
a93b675cb8 | ||
![]() |
0f2df23800 | ||
![]() |
e4e0a24416 | ||
![]() |
6aa5abf298 | ||
![]() |
bd672c4c4e | ||
![]() |
8d768bda31 | ||
![]() |
5110994f81 | ||
![]() |
83d17b5c0e | ||
![]() |
e6c174c33b | ||
![]() |
9497300a4a | ||
![]() |
acab62e345 | ||
![]() |
0e8feed2f2 | ||
![]() |
82716d8014 | ||
![]() |
af262e9a14 | ||
![]() |
d0d5af8c66 | ||
![]() |
86f9b1f6db | ||
![]() |
c4485d0af7 | ||
![]() |
7c5d0a0e00 | ||
![]() |
5f014a2056 | ||
![]() |
eaaacd71a8 | ||
![]() |
75cead9266 | ||
![]() |
d79c5824b8 | ||
![]() |
4381739b6d | ||
![]() |
8f2cdcef0e | ||
![]() |
990cc41e80 | ||
![]() |
9721acbf63 | ||
![]() |
be5cb1683b | ||
![]() |
a4e7e546ff | ||
![]() |
4259b4571c | ||
![]() |
2414a79578 | ||
![]() |
84623ac1f6 | ||
![]() |
d46343fb9c | ||
![]() |
5c788a6130 | ||
![]() |
281cf584ec | ||
![]() |
13c4581c86 | ||
![]() |
9c938b91b7 | ||
![]() |
f71f7a0b63 | ||
![]() |
b8c03a1905 | ||
![]() |
9515b40ca5 | ||
![]() |
df3d3db776 | ||
![]() |
e15df81351 | ||
![]() |
77ec423510 | ||
![]() |
c41df9ffbd | ||
![]() |
acad35c5bc | ||
![]() |
6b3fe68a17 | ||
![]() |
6ec07d744e | ||
![]() |
989fdb5895 | ||
![]() |
e60b91b5e2 | ||
![]() |
0be2567d97 | ||
![]() |
61770ad69e | ||
![]() |
85bd0feee0 | ||
![]() |
b249216db6 | ||
![]() |
2a2a80b0bf | ||
![]() |
7ddd5e9bc3 | ||
![]() |
6b4a4517ec | ||
![]() |
7c1c91ac43 | ||
![]() |
6b56768e9c | ||
![]() |
b2b7d02c01 | ||
![]() |
8bb097fd10 | ||
![]() |
a5f8f1f0f5 | ||
![]() |
424e2c76fa | ||
![]() |
41ae2bfb84 | ||
![]() |
4bdf9eda41 | ||
![]() |
ef1c7eec74 | ||
![]() |
87527fccc6 | ||
![]() |
f23234d0df | ||
![]() |
fdbc3a692f | ||
![]() |
571aaea3e0 | ||
![]() |
d0986297ca | ||
![]() |
188e679ea3 | ||
![]() |
4209a5699a | ||
![]() |
80ca7796ca | ||
![]() |
02f19bfbee | ||
![]() |
49d5591f48 | ||
![]() |
816bc45707 | ||
![]() |
73e9dce143 | ||
![]() |
9f0edde12b | ||
![]() |
cf55b67cee | ||
![]() |
9ca415c665 | ||
![]() |
af029e6c3f | ||
![]() |
6d514c97f8 | ||
![]() |
e812ac2c0b | ||
![]() |
480832318c | ||
![]() |
7a3e397949 | ||
![]() |
c95e450b8d | ||
![]() |
b63a34110e | ||
![]() |
0a2a71e83b | ||
![]() |
831bf71ce6 | ||
![]() |
172eda5471 | ||
![]() |
aa899f0693 | ||
![]() |
82602b51bf | ||
![]() |
3971a12f0e | ||
![]() |
70c4eb44fd | ||
![]() |
9ce54162c2 | ||
![]() |
92c6fc04a8 | ||
![]() |
46ebf9b7e5 | ||
![]() |
799ad0feff | ||
![]() |
1a56385cf9 | ||
![]() |
71827fe4e6 | ||
![]() |
8568f7a0fb | ||
![]() |
39c61327b5 | ||
![]() |
81d2130b06 | ||
![]() |
536f5ff091 | ||
![]() |
7e258bfe38 | ||
![]() |
66f0e6a8f2 | ||
![]() |
04306a544f | ||
![]() |
e4fe3bfe35 | ||
![]() |
b636bf4b2a | ||
![]() |
05c7796909 | ||
![]() |
e2b3463c05 | ||
![]() |
6c016cf443 | ||
![]() |
fc48168153 | ||
![]() |
096e6f2f80 | ||
![]() |
4a00bfcc55 | ||
![]() |
6ebc19fccb | ||
![]() |
0fa40c9ac3 |
@@ -3,7 +3,7 @@ version: '{branch}-{build}'
|
||||
# Do not build on tags (GitHub only)
|
||||
skip_tags: true
|
||||
|
||||
image: Visual Studio 2019
|
||||
image: Visual Studio 2022
|
||||
|
||||
branches:
|
||||
except: # blacklist
|
||||
@@ -13,8 +13,8 @@ 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
|
||||
QBT_VER_URL: https://builds.shiki.hu/appveyor/version_64
|
||||
QBT_LIB_URL: https://builds.shiki.hu/appveyor/qbt_libraries_64.7z
|
||||
|
||||
# project directory
|
||||
clone_folder: *REPO_DIR
|
||||
@@ -38,12 +38,12 @@ install:
|
||||
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
|
||||
- 7z x "%CACHE_DIR%\qt5_64.7z" -o"c:\qbt" > nul
|
||||
|
||||
before_build:
|
||||
# setup env
|
||||
- CALL "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars32.bat"
|
||||
- SET PATH=%PATH%;c:\qbt\qt5_32\bin;%CACHE_DIR%\jom;
|
||||
- CALL "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
|
||||
- SET PATH=%PATH%;C:\Qt\5.15.2\msvc2019_64\bin;%CACHE_DIR%\jom
|
||||
# setup project
|
||||
- COPY /Y "%CACHE_DIR%\conf.pri" "%REPO_DIR%"
|
||||
# workarounds
|
||||
@@ -51,9 +51,49 @@ before_build:
|
||||
|
||||
build_script:
|
||||
- cd "%REPO_DIR%"
|
||||
# scan only as lupdate is prone to hang
|
||||
- lupdate -extensions c,cpp,h,hpp,ui .
|
||||
# lupdate chokes when it parses headers from system inludes, especially Boost
|
||||
# it also chokes with the sources from src/app/qtlocalpeer (formerly qtsingleapplication)
|
||||
# Workaround: temporarily rename them to run lupdate with the .pro file
|
||||
- RENAME conf.pri conf.pri.temp
|
||||
- RENAME src\app\qtlocalpeer qtlocalpeer.temp
|
||||
- lupdate qbittorrent.pro
|
||||
- RENAME conf.pri.temp conf.pri
|
||||
- RENAME src\app\qtlocalpeer.temp qtlocalpeer
|
||||
- qmake qbittorrent.pro && cd src && qmake src.pro
|
||||
- jom -j2 -f Makefile.Release
|
||||
|
||||
after_build:
|
||||
- cd "%REPO_DIR%"
|
||||
- MKDIR upload
|
||||
- COPY dist\windows\qt.conf upload
|
||||
- COPY src\release\qbittorrent.exe upload
|
||||
- COPY src\release\qbittorrent.pdb upload
|
||||
- COPY "%CACHE_DIR%\base\bin\libcrypto-1_1-x64.dll" upload
|
||||
- COPY "%CACHE_DIR%\base\bin\libssl-1_1-x64.dll" upload
|
||||
- COPY "%CACHE_DIR%\base\lib\torrent-rasterbar.dll" upload
|
||||
- COPY "%CACHE_DIR%\base\lib\zlib1.dll" upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Core.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Gui.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Network.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Sql.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Svg.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Widgets.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5WinExtras.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Xml.dll upload
|
||||
- MKDIR upload\plugins\iconengines
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\iconengines\qsvgicon.dll upload\plugins\iconengines
|
||||
- MKDIR upload\plugins\imageformats
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\imageformats\qico.dll upload\plugins\imageformats
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\imageformats\qsvg.dll upload\plugins\imageformats
|
||||
- MKDIR upload\plugins\platforms
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\platforms\qwindows.dll upload\plugins\platforms
|
||||
- MKDIR upload\plugins\sqldrivers
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\sqldrivers\qsqlite.dll upload\plugins\sqldrivers
|
||||
- MKDIR upload\plugins\styles
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\styles\qwindowsvistastyle.dll upload\plugins\styles
|
||||
|
||||
test: off
|
||||
|
||||
artifacts:
|
||||
- path: upload
|
||||
name: qBittorrent-Appveyor_Windows-x64
|
||||
|
8
.gitattributes
vendored
8
.gitattributes
vendored
@@ -1,7 +1,7 @@
|
||||
core.eol=lf
|
||||
* text eol=lf
|
||||
*.zip binary
|
||||
*.png binary
|
||||
*.ico binary
|
||||
*.qm binary
|
||||
*.icns binary
|
||||
*.ico binary
|
||||
*.png binary
|
||||
*.qm binary
|
||||
*.zip binary
|
||||
|
19
.github/ISSUE_TEMPLATE.md
vendored
19
.github/ISSUE_TEMPLATE.md
vendored
@@ -1,19 +0,0 @@
|
||||
**Please provide the following information**
|
||||
|
||||
### qBittorrent version and Operating System
|
||||
(type here)
|
||||
|
||||
### If on linux, libtorrent-rasterbar and Qt version
|
||||
(type here)
|
||||
|
||||
### What is the problem
|
||||
(type here)
|
||||
|
||||
### What is the expected behavior
|
||||
(type here)
|
||||
|
||||
### Steps to reproduce
|
||||
(type here)
|
||||
|
||||
### Extra info(if any)
|
||||
(type here)
|
76
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
76
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
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
Normal file
17
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
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
Normal file
37
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
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
Normal file
5
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
<!--
|
||||
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
Normal file
18
.github/SUPPORT.md
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
# 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 [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/
|
68
.github/workflows/check_translation_tag.py
vendored
Executable file
68
.github/workflows/check_translation_tag.py
vendored
Executable file
@@ -0,0 +1,68 @@
|
||||
#!/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())
|
15
.github/workflows/ci_file_health.yaml
vendored
15
.github/workflows/ci_file_health.yaml
vendored
@@ -2,19 +2,22 @@ name: CI - File health
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
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@v2
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install tools
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install zsh
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: "*"
|
||||
|
||||
- name: Check files
|
||||
run: |
|
||||
./.github/workflows/file_health.sh
|
||||
uses: pre-commit/action@v3.0.0
|
||||
|
110
.github/workflows/ci_macos.yaml
vendored
110
.github/workflows/ci_macos.yaml
vendored
@@ -1,73 +1,127 @@
|
||||
name: CI - macOS
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
name: Build
|
||||
runs-on: macos-10.15
|
||||
runs-on: macos-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
libt_version: ["v1.2.12"]
|
||||
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
||||
fail-fast: false
|
||||
matrix:
|
||||
libt_version: ["2.0.7", "1.2.17"]
|
||||
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
||||
qt_version: ["5.15.2", "6.2.0"]
|
||||
exclude:
|
||||
- libt_version: "1.2.17"
|
||||
qt_version: "6.2.0"
|
||||
|
||||
env:
|
||||
boost_path: "${{ github.workspace }}/../boost"
|
||||
openssl_root: /usr/local/opt/openssl@1.1
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Setup ccache
|
||||
uses: hendrikmuhs/ccache-action@v1
|
||||
with:
|
||||
key: ${{ runner.os }}
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
brew update > /dev/null
|
||||
brew install \
|
||||
cmake ninja \
|
||||
boost openssl@1.1 qt@5 zlib
|
||||
brew link --force \
|
||||
qt@5
|
||||
# workaround for cmake + Qt
|
||||
sudo ln -s /usr/local/opt/qt@5/mkspecs /usr/local/mkspecs
|
||||
sudo ln -s /usr/local/opt/qt@5/plugins /usr/local/plugins
|
||||
openssl@1.1 zlib
|
||||
|
||||
- name: Setup ccache
|
||||
uses: Chocobo1/setup-ccache-action@v1
|
||||
with:
|
||||
update_packager_index: false
|
||||
|
||||
- name: Install boost
|
||||
run: |
|
||||
curl \
|
||||
-L \
|
||||
-o "${{ runner.temp }}/boost.tar.bz2" \
|
||||
"https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.bz2"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.bz2" -C "${{ github.workspace }}/.."
|
||||
mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}"
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: ${{ matrix.qt_version }}
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
git clone --branch ${{ matrix.libt_version }} --depth 1 https://github.com/arvidn/libtorrent.git
|
||||
git clone \
|
||||
--branch v${{ matrix.libt_version }} \
|
||||
--depth 1 \
|
||||
--recurse-submodules \
|
||||
https://github.com/arvidn/libtorrent.git
|
||||
cd libtorrent
|
||||
git submodule update --init --recursive
|
||||
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-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
|
||||
- name: Build qBittorrent (Qt5)
|
||||
if: ${{ startsWith(matrix.qt_version, 5) }}
|
||||
run: |
|
||||
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-D${{ matrix.qbt_gui }} \
|
||||
-DCMAKE_CXX_FLAGS="-Werror -Wno-error=deprecated-declarations" \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \
|
||||
-DTESTING=ON \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}"
|
||||
-D${{ matrix.qbt_gui }}
|
||||
cmake --build build --target qbt_update_translations
|
||||
cmake --build build
|
||||
cmake --build build --target check
|
||||
|
||||
- name: Build qBittorrent (Qt6)
|
||||
if: ${{ startsWith(matrix.qt_version, 6) }}
|
||||
run: |
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_CXX_FLAGS="-Werror -Wno-error=deprecated-declarations" \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \
|
||||
-DQT6=ON \
|
||||
-DTESTING=ON \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
-D${{ matrix.qbt_gui }}
|
||||
cmake --build build --target qbt_update_translations
|
||||
cmake --build build
|
||||
cmake --build build --target check
|
||||
|
||||
- name: Prepare build artifacts
|
||||
run: |
|
||||
mkdir upload
|
||||
mkdir upload/cmake
|
||||
cp build/compile_commands.json upload/cmake
|
||||
mkdir upload/cmake/libtorrent
|
||||
cp libtorrent/build/compile_commands.json upload/cmake/libtorrent
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: qBittorrent-CI_macOS_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}
|
||||
path: |
|
||||
build/qbittorrent.app
|
||||
build/qbittorrent-nox.app
|
||||
name: build-info_macOS_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
|
||||
path: upload
|
||||
|
111
.github/workflows/ci_ubuntu.yaml
vendored
111
.github/workflows/ci_ubuntu.yaml
vendored
@@ -1,84 +1,113 @@
|
||||
name: CI - Ubuntu
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
name: Build
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
libt_version: ["v1.2.12"]
|
||||
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
||||
fail-fast: false
|
||||
matrix:
|
||||
libt_version: ["2.0.7", "1.2.17"]
|
||||
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
||||
qt_version: ["5.15.2", "6.2.0"]
|
||||
exclude:
|
||||
- libt_version: "1.2.17"
|
||||
qt_version: "6.2.0"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Setup ccache
|
||||
uses: hendrikmuhs/ccache-action@v1
|
||||
with:
|
||||
key: ${{ runner.os }}
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install \
|
||||
build-essential cmake git ninja-build pkg-config \
|
||||
libssl-dev libgeoip-dev zlib1g-dev \
|
||||
libboost-dev libboost-chrono-dev libboost-random-dev libboost-system-dev
|
||||
# sudo apt install libqt5svg5-dev qtbase5-dev qttools5-dev # the Qt version in the standard repositories is too old...
|
||||
build-essential cmake ninja-build pkg-config \
|
||||
libboost-dev libssl-dev zlib1g-dev
|
||||
|
||||
- name: Setup ccache
|
||||
uses: Chocobo1/setup-ccache-action@v1
|
||||
with:
|
||||
update_packager_index: false
|
||||
ccache_options: |
|
||||
max_size=2G
|
||||
|
||||
# this will be installed under /opt/qt515. CMake will still find it automatically without additional hints
|
||||
# to speed up the process, only the required components are installed rather than the full qt515-meta-full metapackage
|
||||
- name: Install Qt
|
||||
run: |
|
||||
sudo add-apt-repository ppa:beineri/opt-qt-5.15.2-focal
|
||||
sudo apt install \
|
||||
qt515base qt515svg qt515tools
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: ${{ matrix.qt_version }}
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
git clone --branch ${{ matrix.libt_version }} --depth 1 https://github.com/arvidn/libtorrent.git
|
||||
git clone \
|
||||
--branch v${{ matrix.libt_version }} \
|
||||
--depth 1 \
|
||||
--recurse-submodules \
|
||||
https://github.com/arvidn/libtorrent.git
|
||||
cd libtorrent
|
||||
git submodule update --init --recursive
|
||||
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-Ddeprecated-functions=OFF \
|
||||
--graphviz=cmake-build-dir/target_graph.dot
|
||||
-Ddeprecated-functions=OFF
|
||||
cmake --build build
|
||||
sudo cmake --install build
|
||||
|
||||
- name: Build qBittorrent
|
||||
- name: Build qBittorrent (Qt5)
|
||||
if: ${{ startsWith(matrix.qt_version, 5) }}
|
||||
run: |
|
||||
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_CXX_FLAGS="-Werror -Wno-error=deprecated-declarations" \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-D${{ matrix.qbt_gui }} \
|
||||
-DCMAKE_INSTALL_PREFIX="/usr" \
|
||||
-DTESTING=ON \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
--graphviz=build/target_graph.dot
|
||||
-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: Install qBittorrent
|
||||
run: sudo cmake --install build
|
||||
- name: Build qBittorrent (Qt6)
|
||||
if: ${{ startsWith(matrix.qt_version, 6) }}
|
||||
run: |
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_CXX_FLAGS="-Werror" \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DCMAKE_INSTALL_PREFIX="/usr" \
|
||||
-DQT6=ON \
|
||||
-DTESTING=ON \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
-D${{ matrix.qbt_gui }}
|
||||
cmake --build build --target qbt_update_translations
|
||||
cmake --build build
|
||||
cmake --build build --target check
|
||||
DESTDIR="qbittorrent" cmake --install build
|
||||
|
||||
- name: Prepare build artifacts
|
||||
run: |
|
||||
mkdir upload
|
||||
mkdir upload/cmake
|
||||
cp build/compile_commands.json upload/cmake
|
||||
mkdir upload/cmake/libtorrent
|
||||
cp libtorrent/build/compile_commands.json upload/cmake/libtorrent
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: qBittorrent-CI_ubuntu-20.04-x64_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}
|
||||
path: |
|
||||
build/compile_commands.json
|
||||
build/install_manifest.txt
|
||||
build/target_graph.dot
|
||||
build/qbittorrent
|
||||
build/qbittorrent-nox
|
||||
libtorrent/cmake-build-dir/compile_commands.json
|
||||
libtorrent/cmake-build-dir/target_graph.dot
|
||||
name: build-info_ubuntu-x64_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
|
||||
path: upload
|
||||
|
8
.github/workflows/ci_webui.yaml
vendored
8
.github/workflows/ci_webui.yaml
vendored
@@ -2,6 +2,10 @@ name: CI - WebUI
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
name: Check
|
||||
@@ -13,10 +17,10 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup nodejs
|
||||
uses: actions/setup-node@v2
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 'lts/*'
|
||||
|
||||
|
131
.github/workflows/ci_windows.yaml
vendored
131
.github/workflows/ci_windows.yaml
vendored
@@ -1,14 +1,31 @@
|
||||
name: CI - Windows
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
name: Build
|
||||
runs-on: windows-2019
|
||||
runs-on: windows-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
libt_version: ["2.0.7", "1.2.17"]
|
||||
|
||||
env:
|
||||
boost_path: "${{ github.workspace }}/../boost"
|
||||
libtorrent_path: "${{ github.workspace }}/libtorrent"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup devcmd
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
|
||||
- name: Install build tools
|
||||
run: |
|
||||
@@ -17,15 +34,14 @@ jobs:
|
||||
# use the preinstalled vcpkg from image
|
||||
# https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md#package-management
|
||||
- name: Setup vcpkg
|
||||
uses: lukka/run-vcpkg@v7
|
||||
uses: lukka/run-vcpkg@v10
|
||||
with:
|
||||
vcpkgDirectory: C:/vcpkg
|
||||
doNotUpdateVcpkg: true # the preinstalled vcpkg is updated regularly
|
||||
setupOnly: true
|
||||
|
||||
# tell vcpkg to only build Release variants of the dependencies
|
||||
- name: Configure vcpkg triplet overlay
|
||||
- name: Install dependencies from vcpkg
|
||||
run: |
|
||||
# tell vcpkg to only build Release variants of the dependencies
|
||||
New-Item `
|
||||
-Path "${{ github.workspace }}" `
|
||||
-Name "triplets_overlay" `
|
||||
@@ -36,17 +52,10 @@ jobs:
|
||||
Add-Content `
|
||||
"${{ github.workspace }}/triplets_overlay/x64-windows-static-release.cmake" `
|
||||
-Value "set(VCPKG_BUILD_TYPE release)"
|
||||
|
||||
# clear buildtrees after each package installation to reduce disk space requirements
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
# clear buildtrees after each package installation to reduce disk space requirements
|
||||
$packages = `
|
||||
"boost-circular-buffer:x64-windows-static-release",
|
||||
"libtorrent:x64-windows-static-release",
|
||||
"qt5-base:x64-windows-static-release",
|
||||
"qt5-svg:x64-windows-static-release",
|
||||
"qt5-tools:x64-windows-static-release",
|
||||
"qt5-winextras:x64-windows-static-release"
|
||||
"openssl:x64-windows-static-release",
|
||||
"zlib:x64-windows-static-release"
|
||||
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe upgrade `
|
||||
--overlay-triplets="${{ github.workspace }}/triplets_overlay" `
|
||||
--no-dry-run
|
||||
@@ -55,9 +64,43 @@ jobs:
|
||||
--clean-after-build `
|
||||
$packages
|
||||
|
||||
# this is necessary to correctly find and use cl.exe with the Ninja generator for now
|
||||
- name: Setup devcmd
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
- name: Install boost
|
||||
run: |
|
||||
aria2c `
|
||||
"https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.7z" `
|
||||
-d "${{ runner.temp }}" `
|
||||
-o "boost.7z"
|
||||
7z x "${{ runner.temp }}/boost.7z" -o"${{ github.workspace }}/.."
|
||||
move "${{ github.workspace }}/../boost_*" "${{ env.boost_path }}"
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: "6.3.0"
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
git clone `
|
||||
--branch v${{ matrix.libt_version }} `
|
||||
--depth 1 `
|
||||
--recurse-submodules `
|
||||
https://github.com/arvidn/libtorrent.git
|
||||
cd libtorrent
|
||||
cmake `
|
||||
-B build `
|
||||
-G "Ninja" `
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
|
||||
-DCMAKE_CXX_FLAGS=/guard:cf `
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON `
|
||||
-DCMAKE_INSTALL_PREFIX="${{ env.libtorrent_path }}" `
|
||||
-DCMAKE_TOOLCHAIN_FILE="${{ env.RUNVCPKG_VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake" `
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" `
|
||||
-DBUILD_SHARED_LIBS=OFF `
|
||||
-Ddeprecated-functions=OFF `
|
||||
-Dstatic_runtime=ON `
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-release
|
||||
cmake --build build
|
||||
cmake --install build
|
||||
|
||||
- name: Build qBittorrent
|
||||
run: |
|
||||
@@ -65,21 +108,55 @@ jobs:
|
||||
-B build `
|
||||
-G "Ninja" `
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
|
||||
-DCMAKE_CXX_FLAGS="/WX" `
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON `
|
||||
-DCMAKE_TOOLCHAIN_FILE="${{ env.RUNVCPKG_VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake" `
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" `
|
||||
-DLibtorrentRasterbar_DIR="${{ env.libtorrent_path }}/lib/cmake/LibtorrentRasterbar" `
|
||||
-DMSVC_RUNTIME_DYNAMIC=OFF `
|
||||
-DQT6=ON `
|
||||
-DTESTING=ON `
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-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
|
||||
copy build/qbittorrent.exe upload
|
||||
copy build/qbittorrent.pdb upload
|
||||
copy dist/windows/qt.conf upload
|
||||
# runtimes
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Core.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Gui.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Network.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Sql.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Svg.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Widgets.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Xml.dll" upload
|
||||
mkdir upload/plugins/iconengines
|
||||
copy "${{ env.Qt6_DIR }}/plugins/iconengines/qsvgicon.dll" upload/plugins/iconengines
|
||||
mkdir upload/plugins/imageformats
|
||||
copy "${{ env.Qt6_DIR }}/plugins/imageformats/qico.dll" upload/plugins/imageformats
|
||||
copy "${{ env.Qt6_DIR }}/plugins/imageformats/qsvg.dll" upload/plugins/imageformats
|
||||
mkdir upload/plugins/platforms
|
||||
copy "${{ env.Qt6_DIR }}/plugins/platforms/qwindows.dll" upload/plugins/platforms
|
||||
mkdir upload/plugins/sqldrivers
|
||||
copy "${{ env.Qt6_DIR }}/plugins/sqldrivers/qsqlite.dll" upload/plugins/sqldrivers
|
||||
mkdir upload/plugins/styles
|
||||
copy "${{ env.Qt6_DIR }}/plugins/styles/qwindowsvistastyle.dll" upload/plugins/styles
|
||||
# cmake additionals
|
||||
mkdir upload/cmake
|
||||
copy build/compile_commands.json upload/cmake
|
||||
copy build/target_graph.dot upload/cmake
|
||||
mkdir upload/cmake/libtorrent
|
||||
copy libtorrent/build/compile_commands.json upload/cmake/libtorrent
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: qBittorrent-CI_Windows-x64
|
||||
path: |
|
||||
build/compile_commands.json
|
||||
build/qbittorrent.exe
|
||||
build/qbittorrent.pdb
|
||||
build/target_graph.dot
|
||||
dist/windows/qt.conf
|
||||
name: qBittorrent-CI_Windows-x64_libtorrent-${{ matrix.libt_version }}
|
||||
path: upload
|
||||
|
75
.github/workflows/coverity-scan.yml
vendored
Normal file
75
.github/workflows/coverity-scan.yml
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
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.
|
||||
|
||||
jobs:
|
||||
coverity_scan:
|
||||
name: Scan
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install \
|
||||
build-essential cmake ninja-build pkg-config \
|
||||
libboost-dev libssl-dev zlib1g-dev
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
with:
|
||||
version: "6.3.0"
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
git clone \
|
||||
--branch "v2.0.7" \
|
||||
--depth 1 \
|
||||
--recurse-submodules \
|
||||
https://github.com/arvidn/libtorrent.git
|
||||
cd libtorrent
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-Ddeprecated-functions=OFF
|
||||
cmake --build build
|
||||
sudo cmake --install build
|
||||
|
||||
- name: Download Coverity Build Tool
|
||||
run: |
|
||||
wget \
|
||||
-q \
|
||||
https://scan.coverity.com/download/linux64 \
|
||||
--post-data "token=${{ secrets.COVERITY_SCAN_TOKEN }}&project=qbittorrent%2FqBittorrent" \
|
||||
-O coverity_tool.tgz
|
||||
mkdir coverity_tool
|
||||
tar xzf coverity_tool.tgz --strip 1 -C coverity_tool
|
||||
|
||||
- name: Build qBittorrent
|
||||
run: |
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DGUI=ON \
|
||||
-DVERBOSE_CONFIGURE=ON
|
||||
export PATH="$(pwd)/coverity_tool/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
|
85
.github/workflows/file_health.sh
vendored
85
.github/workflows/file_health.sh
vendored
@@ -1,85 +0,0 @@
|
||||
#!/usr/bin/env zsh
|
||||
|
||||
set -o nounset
|
||||
|
||||
# Assumption: file names don't contain `:` (for the `cut` invocation).
|
||||
# Safe to assume, as such a character in a filename would cause trouble on Windows, a platform we support
|
||||
|
||||
# any regression turn this non-zero
|
||||
regressions=0
|
||||
|
||||
# exclusions (these are just grep extended regular expressions to match against paths relative to the root of the repository)
|
||||
exclusions_nonutf8='(.*(7z|gif|ic(ns|o)|png|qm|zip))'
|
||||
exclusions_bom='src/base/unicodestrings.h'
|
||||
exclusions_tw='(*.ts)|src/webui/www/private/scripts/lib/*'
|
||||
exclusions_trailing_newline='configure'
|
||||
exclusions_no_lf='(*.ts)|(.*svg)|compile_commands.json|src/webui/www/private/scripts/lib/*'
|
||||
|
||||
echo -e "\n*** Detect files not encoded in UTF-8 ***\n"
|
||||
|
||||
find . -path ./build -prune -false -o -path ./.git -prune -false -o -type f -exec file --mime {} \; | sort \
|
||||
| grep -v -e "charset=us-ascii" -e "charset=utf-8" | cut -d ":" -f 1 \
|
||||
| grep -E -v -e "${exclusions_nonutf8}" \
|
||||
| tee >(echo -e "--> Files not encoded in UTF-8: found" "$(wc -l < /dev/stdin)" "regression(s)\n") \
|
||||
| xargs -I my_input -0 bash -c 'echo "my_input"; test "$(echo -n "my_input" | wc -l)" -eq 0'
|
||||
regressions=$((regressions+$?))
|
||||
|
||||
echo -e "\n*** Detect files encoded in UTF-8 with BOM ***\n"
|
||||
|
||||
grep --exclude-dir={.git,build} -rIl $'\xEF\xBB\xBF' | sort \
|
||||
| grep -E -v -e "${exclusions_bom}" \
|
||||
| tee >(echo -e "--> Files encoded in UTF-8 with BOM: found" "$(wc -l < /dev/stdin)" "regression(s)\n") \
|
||||
| xargs -I my_input -0 bash -c 'echo "my_input"; test "$(echo -n "my_input" | wc -l)" -eq 0'
|
||||
regressions=$((regressions+$?))
|
||||
|
||||
echo -e "\n*** Detect usage of CR byte ***\n"
|
||||
|
||||
grep --exclude-dir={.git,build} -rIlU $'\x0D' | sort \
|
||||
| tee >(echo -e "--> Usage of CR byte: found" "$(wc -l < /dev/stdin)" "regression(s)\n") \
|
||||
| xargs -I my_input -0 bash -c 'echo "my_input"; test "$(echo -n "my_input" | wc -l)" -eq 0'
|
||||
regressions=$((regressions+$?))
|
||||
|
||||
echo -e "\n*** Detect trailing whitespace in lines ***\n"
|
||||
|
||||
grep --exclude-dir={.git,build} -rIl "[[:blank:]]$" | sort \
|
||||
| grep -E -v -e "${exclusions_tw}" \
|
||||
| tee >(echo -e "--> Trailing whitespace in lines: found" "$(wc -l < /dev/stdin)" "regression(s)\n") \
|
||||
| xargs -I my_input -0 bash -c 'echo "my_input"; test "$(echo -n "my_input" | wc -l)" -eq 0';
|
||||
regressions=$((regressions+$?))
|
||||
|
||||
echo -e "\n*** Detect too many trailing newlines ***\n"
|
||||
|
||||
find . -path ./build -prune -false -o -path ./.git -prune -false -o -type f -exec file --mime {} \; | sort \
|
||||
| grep -e "charset=us-ascii" -e "charset=utf-8" | cut -d ":" -f 1 \
|
||||
| grep -E -v -e "${exclusions_trailing_newline}" \
|
||||
| xargs -L1 -I my_input bash -c 'test "$(tail -q -c2 "my_input" | hexdump -C | grep "0a 0a")" && echo "my_input"' \
|
||||
| tee >(echo -e "--> Too many trailing newlines: found" "$(wc -l < /dev/stdin)" "regression(s)\n") \
|
||||
| xargs -I my_input -0 bash -c 'echo "my_input"; test "$(echo -n "my_input" | wc -l)" -eq 0'
|
||||
regressions=$((regressions+$?))
|
||||
|
||||
echo -e "\n*** Detect no trailing newline ***\n"
|
||||
|
||||
find . -path ./build -prune -false -o -path ./.git -prune -false -o -type f -exec file --mime {} \; | sort \
|
||||
| grep -e "charset=us-ascii" -e "charset=utf-8" | cut -d ":" -f 1 \
|
||||
| grep -E -v -e "${exclusions_no_lf}" \
|
||||
| xargs -L1 -I my_input bash -c 'test "$(tail -q -c1 "my_input" | hexdump -C | grep "0a")" || echo "my_input"' \
|
||||
| tee >(echo -e "--> No trailing newline: found" "$(wc -l < /dev/stdin)" "regression(s)\n") \
|
||||
| xargs -I my_input -0 bash -c 'echo "my_input"; test "$(echo -n "my_input" | wc -l)" -eq 0'
|
||||
regressions=$((regressions+$?))
|
||||
|
||||
echo -e "\n*** Detect translation closing tag in new line ***\n"
|
||||
|
||||
grep --exclude-dir={.git,build} -nri "^</translation>" | sort \
|
||||
| cut -d ":" -f 1,2 \
|
||||
| tee >(echo -e "--> Translation closing tag in new line: found" "$(wc -l < /dev/stdin)" "regression(s)\n") \
|
||||
| xargs -I my_input -0 bash -c 'echo "my_input"; test "$(echo -n "my_input" | wc -l)" -eq 0'
|
||||
regressions=$((regressions+$?))
|
||||
|
||||
if [ "$regressions" -ne 0 ]; then
|
||||
regressions=1
|
||||
echo "\nFile health regressions found. Please fix them (or add them as exclusions)."
|
||||
else
|
||||
echo "All OK, no file health regressions found."
|
||||
fi
|
||||
|
||||
exit $regressions;
|
22
.github/workflows/stale_bot.yaml
vendored
Normal file
22
.github/workflows/stale_bot.yaml
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
name: Stale bot
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Mark and close stale PRs
|
||||
uses: actions/stale@v5
|
||||
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
|
59
.pre-commit-config.yaml
Normal file
59
.pre-commit-config.yaml
Normal file
@@ -0,0 +1,59 @@
|
||||
repos:
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: check-translation-tag
|
||||
name: Check newline characters in <translation> tag
|
||||
entry: .github/workflows/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.3.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)^(
|
||||
compile_commands.json |
|
||||
src/webui/www/private/scripts/lib/.*
|
||||
)$
|
||||
|
||||
- id: end-of-file-fixer
|
||||
name: Check trailing newlines
|
||||
exclude: |
|
||||
(?x)^(
|
||||
compile_commands.json |
|
||||
configure |
|
||||
src/webui/www/private/scripts/lib/.*
|
||||
)$
|
||||
exclude_types:
|
||||
- svg
|
||||
- ts
|
||||
|
||||
- id: trailing-whitespace
|
||||
name: Check trailing whitespaces
|
||||
exclude: |
|
||||
(?x)^(
|
||||
src/webui/www/private/scripts/lib/.*
|
||||
)$
|
||||
exclude_types:
|
||||
- ts
|
83
AUTHORS
83
AUTHORS
@@ -29,16 +29,8 @@ Code from other projects:
|
||||
copyright: Dan Haim <negativeiq@users.sourceforge.net>
|
||||
license: BSD
|
||||
|
||||
* file src/app/stacktrace.h
|
||||
copyright: Timo Bingmann from http://idlebox.net/
|
||||
license: WTFPL v2.0
|
||||
|
||||
* file src/app/stacktrace_win.h
|
||||
copyright: Quassel Project
|
||||
license: GPLv2/3
|
||||
|
||||
Images Authors:
|
||||
* files: src/icons/skin/qbittorrent-tray.svg (and related pngs)
|
||||
* 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+
|
||||
|
||||
@@ -46,56 +38,53 @@ Images Authors:
|
||||
copyright: 'uknown.svg' (LGPLv3+) from Oxygen Icon Theme was used as base which was slightly modified and 'qbittorrent-tray.svg' (GPLv2+) was overlayed above it.
|
||||
license: GPLv3+
|
||||
|
||||
* files: src/icons/*.png
|
||||
copyright: Gnome Icon Theme
|
||||
license: GPLv2
|
||||
url: http://ftp.acc.umu.se/pub/GNOME/sources/gnome-icon-theme
|
||||
|
||||
* 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-icon-css
|
||||
copyright: lipis/flag-icons
|
||||
license: MIT
|
||||
url: https://github.com/lipis/flag-icon-css/
|
||||
url: https://github.com/lipis/flag-icons/
|
||||
|
||||
* files: src/icons/skin/*.png
|
||||
files: src/menuicons/YYxYY/*.png
|
||||
copyright: Mateusz Tobola <tobejodok@qbittorrent.org>
|
||||
license: GPLv2
|
||||
|
||||
* file: src/icons/tabs.gif
|
||||
* file: src/webui/www/private/images/tabs.gif
|
||||
copyright: Greg Houston <gregory.houston@gmail.com>
|
||||
license: MIT
|
||||
|
||||
* file: src/icons/skin/qbittorrent_mono*
|
||||
* file: src/icons/qbittorrent-tray-dark.svg src/icons/qbittorrent-tray-light.svg
|
||||
copyright: Daniel Eguren <deguren@gmail.com>
|
||||
modified by: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im)
|
||||
license: LGPL
|
||||
|
||||
* file: src/search_engine/engines/btjunkie.png
|
||||
copyright: Downloaded from btjunkie.org
|
||||
* 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: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im) modified from La-Capitaine icon theme (https://github.com/keeferrourke/la-capitaine-icon-theme)
|
||||
license: GPLv3+
|
||||
|
||||
* file: src/search_engine/engines/isohunt.png
|
||||
copyright: Downloaded from isohunt.com
|
||||
* 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: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im) modified from Ionicons icon theme (https://github.com/ionic-team/ionicons)
|
||||
license: MIT
|
||||
|
||||
* file: src/search_engine/engines/mininova.png
|
||||
copyright: Downloaded from mininova.org
|
||||
* folder: src/icons/
|
||||
files: force-recheck.svg
|
||||
copyright: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im) modified from Font-Awesome icon theme (https://github.com/FortAwesome/Font-Awesome)
|
||||
license: CC BY 4.0 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
|
||||
* folder: src/icons/
|
||||
files: downloading.svg, edit-clear.svg, error.svg, filter-active.svg, filter-inactive.svg, filter-stalled.svg, kt-set-max-download-speed.svg,
|
||||
kt-set-max-upload-speed.svg, list-add.svg, preferences-web-browser-cookies.svg, stalledDL.svg, stalledUP.svg
|
||||
copyright: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im)
|
||||
license: BSD 2-Clause License
|
||||
|
||||
Translations authors:
|
||||
* files: src/lang/*.ts
|
||||
|
@@ -1,64 +1,65 @@
|
||||
cmake_minimum_required(VERSION 3.16 FATAL_ERROR) # Policies <= CMP0097 default to NEW
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules)
|
||||
|
||||
project(qBittorrent
|
||||
DESCRIPTION "The qBittorrent BitTorrent client"
|
||||
HOMEPAGE_URL "https://www.qbittorrent.org/"
|
||||
LANGUAGES CXX
|
||||
)
|
||||
|
||||
# use CONFIG mode first in find_package
|
||||
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON)
|
||||
# version requirements - older versions may work, but you are on your own
|
||||
set(minBoostVersion 1.65)
|
||||
set(minQtVersion 5.11)
|
||||
set(minBoostVersion 1.71)
|
||||
set(minQt5Version 5.15.2)
|
||||
set(minQt6Version 6.2)
|
||||
set(minOpenSSLVersion 1.1.1)
|
||||
set(minLibtorrentVersion 1.2.12)
|
||||
set(minLibtorrent1Version 1.2.14)
|
||||
set(minLibtorrentVersion 2.0.7)
|
||||
set(minZlibVersion 1.2.11)
|
||||
|
||||
# features (some are platform-specific)
|
||||
include(CheckCXXSourceCompiles) # TODO: migrate to CheckSourceCompiles in CMake >= 3.19
|
||||
include(GNUInstallDirs)
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules)
|
||||
include(FeatureSummary)
|
||||
include(FeatureOptionsSetup)
|
||||
feature_option(STACKTRACE "Enable stacktraces" ON)
|
||||
|
||||
# features, list is loosely sorted by user's interests
|
||||
feature_option(GUI "Build GUI application" ON)
|
||||
feature_option(WEBUI "Enables built-in HTTP server for headless use" ON)
|
||||
feature_option(WEBUI "Enable built-in HTTP server for remote control" ON)
|
||||
feature_option(QT6 "Build with Qt 6 instead of Qt 5" OFF)
|
||||
feature_option(STACKTRACE "Enable stacktrace support" ON)
|
||||
feature_option(TESTING "Build internal testing suite" OFF)
|
||||
feature_option(VERBOSE_CONFIGURE "Show information about PACKAGES_FOUND and PACKAGES_NOT_FOUND in the configure output (only useful for debugging the CMake build scripts)" OFF)
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
feature_option_dependent(DBUS
|
||||
"Enables support for notifications and power-management features on Linux via D-Bus"
|
||||
"Enable support for notifications and power-management features via D-Bus on Linux"
|
||||
ON "GUI" OFF
|
||||
)
|
||||
feature_option_dependent(SYSTEMD
|
||||
"Install systemd service file to a directory manually overridable with Systemd_SERVICES_INSTALL_DIR"
|
||||
"Install systemd service file. Target directory is overridable with `SYSTEMD_SERVICES_INSTALL_DIR` variable"
|
||||
OFF "NOT GUI" OFF
|
||||
)
|
||||
if (STACKTRACE)
|
||||
check_cxx_source_compiles(
|
||||
"#include <execinfo.h>
|
||||
int main(){return 0;}"
|
||||
QBITTORRENT_HAS_EXECINFO_H
|
||||
)
|
||||
if (NOT QBITTORRENT_HAS_EXECINFO_H)
|
||||
message(FATAL_ERROR "execinfo.h header file not found.\n"
|
||||
"Please either disable the STACKTRACE feature or use a libc that has this header file, such as glibc (GNU libc)."
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
elseif (MSVC)
|
||||
feature_option(MSVC_RUNTIME_DYNAMIC "Use MSVC dynamic runtime library (-MD) instead of static (-MT)" ON)
|
||||
endif()
|
||||
|
||||
include(GNUInstallDirs)
|
||||
add_subdirectory(src)
|
||||
add_subdirectory(dist)
|
||||
|
||||
if (VERBOSE_CONFIGURE)
|
||||
feature_summary(WHAT ALL)
|
||||
else()
|
||||
feature_summary(WHAT ENABLED_FEATURES DISABLED_FEATURES)
|
||||
endif()
|
||||
|
||||
# go check the packages
|
||||
include(CheckPackages)
|
||||
# configure for specific platform
|
||||
include(CommonConfig)
|
||||
|
||||
# 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()
|
||||
|
@@ -1,6 +1,7 @@
|
||||
# Coding Guidelines
|
||||
|
||||
All new code **must** follow the following coding guidelines. \
|
||||
All new code **must** follow the following coding guidelines.
|
||||
|
||||
If you make changes in a file that still uses another coding style, make sure that you follow these guidelines for your changes. \
|
||||
For programming languages other than C++ (e.g. JavaScript) used in this repository and submodules, unless otherwise specified, coding guidelines listed here applies as much as possible.
|
||||
|
||||
@@ -456,8 +457,8 @@ class ExampleWidget : public QWidget
|
||||
* Prefer pre-increment, pre-decrement operators
|
||||
|
||||
```c++
|
||||
++i, --j; // Yes
|
||||
i++, j--; // No
|
||||
++i, --j; // yes
|
||||
i++, j--; // no
|
||||
```
|
||||
|
||||
* private/public/protected must not be indented
|
||||
|
@@ -6,22 +6,14 @@ Read the respective section to find out more.
|
||||
### Table Of Contents
|
||||
|
||||
* **[Bug reporting etiquette](#bug-reporting-etiquette)**
|
||||
|
||||
|
||||
* **[Submitting an issue/bug report](#submitting-an-issuebug-report)**
|
||||
* [What is an actual bug report?](#what-is-an-actual-bug-report)
|
||||
* [Before submitting a bug report](#before-submitting-a-bug-report)
|
||||
* [Steps to ensure a good bug report](#steps-to-ensure-a-good-bug-report)
|
||||
|
||||
|
||||
* **[Suggesting enhancements/feature requests](#suggesting-enhancementsfeature-requests)**
|
||||
* [Before submitting an enhancement/feature request](#before-submitting-an-enhancementfeature-request)
|
||||
* [Steps to ensure a good enhancement/feature suggestion](#steps-to-ensure-a-good-enhancementfeature-suggestion)
|
||||
|
||||
|
||||
* **[Opening a pull request](#opening-a-pull-request)**
|
||||
* [Must read](#must-read)
|
||||
* [Good to know](#good-to-know)
|
||||
|
||||
# Bug reporting etiquette
|
||||
|
||||
@@ -31,7 +23,7 @@ Read the respective section to find out more.
|
||||
|
||||
* **Be patient.** The development team is small and resource limited. Developers and contributors take from their free time to analyze the problem and fix the issue. :clock3:
|
||||
|
||||
* Harsh words or threats won't help your situation. What's worse, your complain will (very likely) be **ignored.** :fearful:
|
||||
* Harsh words or threats won't help your situation. Your complaint will (very likely) be **ignored.** :fearful:
|
||||
|
||||
# Submitting an issue/bug report
|
||||
|
||||
@@ -47,7 +39,7 @@ Developers and contributors are not supposed to deal with issues for which littl
|
||||
|
||||
Positive contributions are those which are reported with efforts to find the actual cause of an issue, or at the very least efforts were made to narrow it as much as possible.
|
||||
|
||||
Requiring people to investigate as much as possible before opening an issue will more than likely avoid burdening the project with invalid issues or issues unrelated to qBittorrent.
|
||||
Requiring people to investigate as much as possible before opening an issue avoids burdening the project with invalid issues or issues unrelated to qBittorrent.
|
||||
|
||||
The following are _not_ bug reports. **Check the [wiki][wiki-url], [forum][forum-url] or other places for help and support for issues like these**:
|
||||
|
||||
@@ -194,28 +186,26 @@ Following these guidelines helps maintainers and the community understand your s
|
||||
|
||||
# Opening a pull request
|
||||
|
||||
### Must read
|
||||
* Read our [**coding guidelines**][coding-guidelines-url]. There are some scripts to help you: [uncrustify script][uncrustify-script-url], [astyle script][astyle-script-url], [(related thread)][coding-guidelines-thread-url].
|
||||
* Keep the title **short** and provide a **clear** description about what your pull request does.
|
||||
* Provide **screenshots** for UI related changes.
|
||||
* Keep your git commit history **clean** and **precise.** Refer to the section about "Git commit messages" in the [**coding guidelines**][coding-guidelines-url].
|
||||
* If your commit fixes a reported issue (for example #4134), add the following message to the commit `Closes #4134.`. Example [here][commit-message-fix-issue-example-url].
|
||||
* Consult [coding guidelines][coding-guidelines-url] first. If you are working on translation/i18n, read ["How to translate qBittorrent"][how-to-translate-url].
|
||||
* Keep your git commit history clean.
|
||||
* Refer to the section about ["Git commit messages"][coding-guidelines-git-commit-message-url] in the coding guidelines.
|
||||
* When merge conflicts arise, do `git rebase <target_branch_name>` and fix the conflicts, don't do `git pull`. Here is a good explanation: [merging-vs-rebasing][merging-vs-rebasing-url].
|
||||
* Keep pull request title concise and provide motivation and "what it does" in the pull request description area. Make it easy to read and understand.
|
||||
* Provide screenshots for UI related changes.
|
||||
* If your commit addresses a reported issue (for example issue #8454), append the following text to the commit body `Closes #8454.`. Example [commit][commit-message-fix-issue-example-url].
|
||||
* Search [pull request list][pull-request-list-url] first. Others might have already implemented your idea (or got rejected already).
|
||||
|
||||
### Good to know
|
||||
* **Search** pull request history! Others might have already implemented your idea and it is waiting to be merged (or got rejected already). Save your precious time by doing a search first.
|
||||
* When resolving merge conflicts, do `git rebase <target_branch_name>`, don't do `git pull`. Then you can start fixing the conflicts. Here is a good explanation: [link][merging-vs-rebasing-url].
|
||||
|
||||
[astyle-script-url]: https://gist.github.com/Chocobo1/539cee860d1eef0acfa6
|
||||
[attachments-howto-url]: https://help.github.com/articles/file-attachments-on-issues-and-pull-requests
|
||||
[builds-url]: https://sourceforge.net/projects/qbittorrent/files/
|
||||
[coding-guidelines-url]: https://github.com/qbittorrent/qBittorrent/blob/master/CODING_GUIDELINES.md
|
||||
[coding-guidelines-thread-url]: https://github.com/qbittorrent/qBittorrent/issues/2192
|
||||
[coding-guidelines-git-commit-message-url]: https://github.com/qbittorrent/qBittorrent/blob/master/CODING_GUIDELINES.md#10-git-commit-message
|
||||
[commit-message-fix-issue-example-url]: https://github.com/qbittorrent/qBittorrent/commit/c07cd440cd46345297debb47cb260f8688975f50
|
||||
[forum-url]: http://forum.qbittorrent.org/
|
||||
[howto-report-bugs-url]: https://www.chiark.greenend.org.uk/~sgtatham/bugs.html
|
||||
[how-to-translate-url]: https://github.com/qbittorrent/qBittorrent/wiki/How-to-translate-qBittorrent
|
||||
[merging-vs-rebasing-url]: https://www.atlassian.com/git/tutorials/merging-vs-rebasing
|
||||
[pull-request-list-url]: https://github.com/qbittorrent/qBittorrent/pulls
|
||||
[python-url]: https://www.python.org/
|
||||
[releases-url]: https://github.com/qbittorrent/qBittorrent/releases
|
||||
[search-plugins-url]: https://github.com/qbittorrent/search-plugins
|
||||
[uncrustify-script-url]: https://raw.githubusercontent.com/qbittorrent/qBittorrent/master/uncrustify.cfg
|
||||
[wiki-url]: https://github.com/qbittorrent/qBittorrent/wiki
|
||||
[builds-url]: https://sourceforge.net/projects/qbittorrent/files/
|
||||
|
339
COPYING.GPLv2
Normal file
339
COPYING.GPLv2
Normal file
File diff suppressed because it is too large
Load Diff
674
COPYING.GPLv3
Normal file
674
COPYING.GPLv3
Normal file
File diff suppressed because it is too large
Load Diff
179
Changelog
179
Changelog
@@ -1,3 +1,61 @@
|
||||
Unreleased - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.5.0
|
||||
|
||||
Thu Jan 06 2022 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.4.0
|
||||
- FEATURE: Support for v2 torrents along with libtorrent 2.0.x support (glassez, Chocobo1)
|
||||
- FEATURE: Support for Qt6 (glassez)
|
||||
- FEATURE: Expose libtorrent hashing_threads settings (Anton Bershanskiy)
|
||||
- FEATURE: Add "Notification timeout" option (kevtechxx)
|
||||
- FEATURE: Add `connection_speed` to advanced settings (Chocobo1)
|
||||
- FEATURE: Announce to all trackers if IP changed (#15001) (zhuangzi926)
|
||||
- FEATURE: Add tooltip for various columns (Chocobo1)
|
||||
- FEATURE: Add context menu to toggle content tab columns (#15164) (AbeniMatteo)
|
||||
- FEATURE: Add filter "Checking" to side panel (#15166) (AbeniMatteo)
|
||||
- FEATURE: Add "Forced metadata downloading" state (#15185) (AbeniMatteo)
|
||||
- FEATURE: Remember last viewed page in Options dialog (#15230) (Chocobo1)
|
||||
- FEATURE: Add tooltip to listening port spinbox (Chocobo1)
|
||||
- FEATURE: Add "Skip hash check" option for watched folders (glassez)
|
||||
- FEATURE: Add "Show torrent options" double-click action (glassez)
|
||||
- FEATURE: Allow setting temp folder per torrent/catergory (glassez)
|
||||
- FEATURE: Support folder based UI Themes (Prince Gupta)
|
||||
- BUGFIX: Save "resume data" once file priority is changed (glassez)
|
||||
- BUGFIX: Show priority menu at top level if there is no other in Add New Torrent dialog (FozzeY)
|
||||
- BUGFIX: Capitalize "peer flags" descriptions (Chocobo1)
|
||||
- BUGFIX: Reorder peer flags (Chocobo1)
|
||||
- BUGFIX: Show "last activity" value under all circumstances (Chocobo1)
|
||||
- BUGFIX: Elide text from the right for all columns' header (smigii)
|
||||
- BUGFIX: Fix startup with different profiles (jagannatharjun)
|
||||
- BUGFIX: Move a few torrent context menu actions into "Torrent options" dialog (thalieht)
|
||||
- BUGFIX: Allow deselecting radio buttons in "Torrent options" for mixed torrents (thalieht)
|
||||
- BUGFIX: Apply file priority changes correctly (a-sum-duma, Chocobo1)
|
||||
- BUGFIX: Use proper string for Korean language (OctopusET)
|
||||
- BUGFIX: Disable "add peers" menu items instead of hiding it (Chocobo1)
|
||||
- BUGFIX: Disable system tray icon menu when app is exiting (Chocobo1)
|
||||
- BUGFIX: Show GUI lock icon after system tray icon is initialized (Chocobo1)
|
||||
- BUGFIX: Apply selected layout to displayed torrent content in "Add New Torrent" dialog (glassez)
|
||||
- WEBUI: Add reverse proxy source IP resolution (#15047) (HiFiPhile)
|
||||
- WEBUI: Support navigating UI tables with arrow keys (Thomas Piccirello)
|
||||
- WEBUI: Support expanding/collapsing UI folders with arrow keys (Thomas Piccirello)
|
||||
- WEBUI: Support sorting UI tables via touch (#15205) (Tom Piccirello)
|
||||
- WEBUI: Add pieces progress bar to General tab (Jesse Smick)
|
||||
- WEBUI: Update authors page (Chocobo1)
|
||||
- WEBUI: Set icon sizes attribute (Daniel Aleksandersen)
|
||||
- WEBUI: Add meta application name (Daniel Aleksandersen)
|
||||
- WEBUI: Sort WebUI language selection values (Chocobo1)
|
||||
- WEBUI: Use correct URL scheme in user prompt when HTTPS is enabled (Chocobo1)
|
||||
- RSS: Stick Unread row to top in RSS feed list (Prince Gupta)
|
||||
- RSS: Correctly use fallback icons for RSS feed in GUI (jagannatharjun)
|
||||
- SEARCH: Add context menu for tabs in search widget (#14926) (Anton)
|
||||
- SEARCH: Add more download options to torrent search result right-click menu (a-sum-duma)
|
||||
- WINDOWS: Add windows-clang support (#15115) (Biswapriyo Nath)
|
||||
- WINDOWS: Update python installer URL for Windows (xavier2k6)
|
||||
- WINDOWS: NSIS: Update Simplified Chinese translation (Losiki)
|
||||
- LINUX: Prolong wait time for shutdown for qbittorrent-nox (Chocobo1)
|
||||
- LINUX: Install vector program icon (Chocobo1)
|
||||
- LINUX: Add detection for OpenBSD, Haiku in configure script (Chocobo1)
|
||||
- MACOS: Update Mac icons for Big Sur (17jiangz1)
|
||||
- EXPERIMENTAL: Setting to store/load fastresume/torrent files in an SQLite database (glassez)
|
||||
- OTHER: Many internal code refactorings and bug fixing by many people
|
||||
|
||||
Sun Oct 31 2021 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.3.9
|
||||
- BUGFIX: Fix "no action" option on torrent double click (Jose M. Abuin)
|
||||
- BUGFIX: Fix broken behavior of "priority by shown file order" (Chocobo1)
|
||||
@@ -217,6 +275,127 @@ Sun Oct 18 2020 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.3.0
|
||||
- OTHER: Support for libtorrent 1.1.x is dropped (Chocobo1)
|
||||
- OTHER: Many code cleanups and improvements (FranciscoPombal, Chocobo1, glassez)
|
||||
|
||||
Sat Apr 25 2020 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.2.5
|
||||
- BUGFIX: Fix crash when torrent is deleted on limit reached (glassez)
|
||||
- BUGFIX: Register datatype properly (Chocobo1)
|
||||
- WEBUI: Add ability to send custom HTTP headers (Chocobo1)
|
||||
- WEBUI: Expand RSS related API (Sepro)
|
||||
- WINDOWS: Installer: Update german translation (schnurlos)
|
||||
|
||||
Wed Apr 22 2020 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.2.4
|
||||
- BUGFIX: Fix sub-sorting of Transfer list (glassez)
|
||||
- BUGFIX: Fix wrong logic that disables "prevent sleeping" timer (Chocobo1)
|
||||
- BUGFIX: Set disk cache size for older libtorrent versions (NotTsunami)
|
||||
- BUGFIX: Sort locale language list (Chocobo1)
|
||||
- BUGFIX: Remove white outline around mascot.png (adem)
|
||||
- BUGFIX: Various fixes in configuring the chosen network interface and not leaking the IP (Raif Atef, an0n666)
|
||||
- BUGFIX: Save "resume data" when torrent storage is moved (glassez)
|
||||
- BUGFIX: Avoid holding encoded resume data in memory (Chocobo1)
|
||||
- BUGFIX: Fix date format for "Last seen complete" (Chocobo1)
|
||||
- BUGFIX: Remove deprecated strict super seeding mode from advanced settings (an0n666)
|
||||
- BUGFIX: Change default stop_tracker_timeout settings (an0n666)
|
||||
- BUGFIX: Convert the Log widget to use custom View/Model (jagannatharjun)
|
||||
- BUGFIX: Change default upload slot choking limits (an0n666)
|
||||
- BUGFIX: Don't uncheck Authentication checkbox when changing proxy type (thalieht)
|
||||
- BUGFIX: Reduce ambiguity for selecting tray icons (Chocobo1)
|
||||
- WEBUI: Fix unable to add multiple peers in WebUI (Sepro)
|
||||
- WEBUI: Fix UPnP lease duration get/set (NotTsunami)
|
||||
- SEARCH: Detect python3 executable on Windows (József Sallai)
|
||||
|
||||
Wed Apr 01 2020 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.2.3
|
||||
- FEATURE: Add logging for SOCKS5 proxy errors (Chocobo1)
|
||||
- FEATURE: Add UPnP lease duration advanced option (NotTsunami)
|
||||
- BUGFIX: Allow to translate error messages (Chocobo1)
|
||||
- BUGFIX: Don't round scaling factor (Nick Korotysh)
|
||||
- BUGFIX: Save log file in UTF-8 encoding (Chocobo1)
|
||||
- BUGFIX: Avoid log file excessive flushing (Chocobo1)
|
||||
- BUGFIX: Fix regression when fastresume contains network path (Tester798)
|
||||
- BUGFIX: Fix broken UNC paths in fastresumes on Windows (sledgehammer999)
|
||||
- BUGFIX: Prevent multiple instances for the same app config (glassez)
|
||||
- BUGFIX: Fix unexpected torrent resume after app restart with libtorrent 1.1.x (glassez)
|
||||
- WEBUI: Add alt and title tags for WebUI footer (LameLemon)
|
||||
- WINDOWS: Installer: Update Finnish translation (Roope Jukkara)
|
||||
- WINDOWS: Installer: Update Japanese translation (maboroshin)
|
||||
- WINDOWS: Installer: Update Turkish translation (Burak Yavuz)
|
||||
- WINDOWS: Installer: Update Russian translation (Andrei Stepanov)
|
||||
|
||||
Tue Mar 24 2020 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.2.2
|
||||
- FEATURE: Allow transfer list text color changes through QSS (Prince Gupta)
|
||||
- FEATURE: Option to show console when external program is run (sledgehammer999)
|
||||
- FEATURE: Rename Country column to "Country / Region" (Thomas Piccirello)
|
||||
- FEATURE: Change the defaults of some settings (FranciscoPombal)
|
||||
- FEATURE: Refactored Transfer List code to allow theming. As a sideffect the row height has more padding. (glassez)
|
||||
- FEATURE: Allow double-click in preview dialog (thalieht)
|
||||
- FEATURE: Expose stop_tracker_timeout in advanced settings (an0n666)
|
||||
- FEATURE: Add piece_extent_affinity to AdvancedSettings (FranciscoPombal)
|
||||
- FEATURE: Reorganize UI theme selection (Prince Gupta)
|
||||
- FEATURE: Show any multiple connections from the same IP in peer list (thalieht)
|
||||
- FEATURE: Add stalled filters to GUI and Web API/UI (FranciscoPombal)
|
||||
- FEATURE: Use IP geolocation database by DB-IP instead of MaxMind (sledgehammer999)
|
||||
- FEATURE: Allow to save downloaded metadata as torrent file (glassez)
|
||||
- FEATURE: Allow single app instance per configuration (glassez)
|
||||
- PERFORMANCE: Move multiple torrents one by one (glassez)
|
||||
- BUGFIX: Disable Torrent Queue by default for new users (an0n666)
|
||||
- BUGFIX: Update free disk space label on Category change in Auto Mode (Medvedishce)
|
||||
- BUGFIX: Save resume data after recheck (glassez)
|
||||
- BUGFIX: Tracker is errored only if all local endpoints fail (sledgehammer999)
|
||||
- BUGFIX: Change placement of stop tracker timeout setting (An0n)
|
||||
- BUGFIX: Redesign torrent startup handling (glassez)
|
||||
- BUGFIX: Show "∞" instead of " -1" in Preferences (Sakib-Abrar)
|
||||
- BUGFIX: Improve code efficiency for reverse resolution of peers (Chocobo1)
|
||||
- BUGFIX: Handle HTTP redirection to magnet URI (glassez)
|
||||
- BUGFIX: Various fixes for portable mode (Tester798)
|
||||
- BUGFIX: Include resume folder path in exception message (Chocobo1)
|
||||
- BUGFIX: Change placeholder text in torrent list's filter (djt3)
|
||||
- BUGFIX: Improvements in the embedded tracker to be more spec compliant (FranciscoPombal)
|
||||
- BUGFIX: Improve the options tooltips (NotTsunami)
|
||||
- BUGFIX: Check if file exists in seed mode (an0n666)
|
||||
- BUGFIX: Delegate GUI scaling work to Qt (Nick Korotysh)
|
||||
- BUGFIX: Fix crash when renaming torrent contents (Chocobo1)
|
||||
- BUGFIX: Fix total connected peers count calculation (FranciscoPombal)
|
||||
- BUGFIX: Allow other keypresses in LogListWidget (NotTsunami)
|
||||
- BUGFIX: Disable Auto TMM when not using default savepath from monitored folder (thalieht)
|
||||
- WEBUI: Fix first row renaming in files tab (Denis)
|
||||
- WEBUI: Use SVG image for WebUI favicon (Nick Korotysh)
|
||||
- WEBUI: Inherit text color for filter list elements (Nick Korotysh)
|
||||
- WEBUI: Expose WebUI ban counter to users (Chocobo1)
|
||||
- WEBUI: Expose WebUI ban duration to users (Chocobo1)
|
||||
- WEBUI: Implement "Secure" flag for session cookie (FranciscoPombal)
|
||||
- WEBUI: Remove unused/deprecated option (FranciscoPombal)
|
||||
- WEBUI: Prevent excessive sync requests (FranciscoPombal)
|
||||
- WEBUI: Fix populating statistics window (FranciscoPombal)
|
||||
- WEBUI: Fix matching uncategorized torrents (FranciscoPombal)
|
||||
- WEBUI: Always allow whitespace in category names (FranciscoPombal)
|
||||
- SEARCH: Bump python version for new installation (Chocobo1)
|
||||
- SEARCH: Fix missing string (Chocobo1)
|
||||
- SEARCH: Drop python2 support (Chocobo1)
|
||||
- WINDOWS: Installer: Option to start qBittorrent on Windows start up (An0n)
|
||||
- WINDOWS: Installer: Improve Czech translation (slrslr)
|
||||
- WINDOWS: Installer: Update French translation (zywo)
|
||||
- WINDOWS: Installer: Update German translation (schnurlos)
|
||||
- WINDOWS: Installer: Update Japanese translation (maboroshin)
|
||||
- WINDOWS: Path length limitation is removed on Windows 10 1607 onwards (an0n666)
|
||||
|
||||
Wed Dec 18 2019 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.2.1
|
||||
- FEATURE: Enable portable mode if "profile" directory exists (Tester798)
|
||||
- FEATURE: Enable "Apply rate limit to peers on LAN" option by default (Chocobo1)
|
||||
- BUGFIX: Sync translations from Transifex and run lupdate (sledgehammer999)
|
||||
- BUGFIX: Don't unnecessarily delete OS files in folders (sledgehammer999)
|
||||
- BUGFIX: Use the incomplete folder where appropriate (sledgehammer999)
|
||||
- BUGFIX: Align Properties tab bar correctly on window resize (Prince Gupta)
|
||||
- BUGFIX: Rework the listening IP/interface selection code (sledgehammer999)
|
||||
- BUGFIX: Fix inconsistent icon for deleting torrent (Chocobo1)
|
||||
- BUGFIX: Show torrent error message in transfer list (Chocobo1)
|
||||
- BUGFIX: Fix stuck in wrong torrent state (Chocobo1)
|
||||
- BUGFIX: Expand single-item folders in torrent content (warren)
|
||||
- WEBUI: Bump Web API version (sledgehammer999)
|
||||
- WEBUI: Add ability to rename torrent files from the WebUI (Thomas Piccirello)
|
||||
- WEBUI: Mention lack of HTTPS in WebUI magnet link warning (nl6720)
|
||||
- WEBUI: Fix HTML elements size in search tab (Chocobo1)
|
||||
- SEARCH: Fix incorrect translation displayed after language change (Chocobo1)
|
||||
- SEARCH: Fix missing translations in search plugins dialog (Chocobo1)
|
||||
- WINDOWS: Update russian translation of the installer (Andrei Stepanov)
|
||||
|
||||
Tue Dec 03 2019 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.2.0
|
||||
- FEATURE: Libtorrent 1.2.x series are supported now (glassez)
|
||||
- FEATURE: Add OpenSSL version to GUI and stackdump (Chocobo1)
|
||||
|
16
INSTALL
16
INSTALL
@@ -3,22 +3,24 @@ qBittorrent - A BitTorrent client in C++ / Qt
|
||||
|
||||
1) Install these dependencies:
|
||||
|
||||
- Boost >= 1.65
|
||||
- Boost >= 1.71
|
||||
|
||||
- libtorrent-rasterbar >= 1.2.12 (by Arvid Norberg)
|
||||
* https://www.libtorrent.org/
|
||||
- libtorrent-rasterbar 1.2.14 - 1.2.x || 2.0.7 - 2.0.x
|
||||
* By Arvid Norberg, https://www.libtorrent.org/
|
||||
* Be careful: another library (the one used by rTorrent) uses a similar name
|
||||
|
||||
- OpenSSL >= 1.1.1
|
||||
|
||||
- Qt >= 5.12
|
||||
- Qt 5.15.2 - 5.x || 6.2.0 - 6.x
|
||||
|
||||
- zlib >= 1.2.11
|
||||
|
||||
- pkg-config (compile-time only on *nix systems)
|
||||
- pkg-config *
|
||||
* Compile-time only on *nix systems
|
||||
|
||||
- Python >= 3.5.0 (optional, runtime only)
|
||||
* Required by the internal search engine
|
||||
- Python >= 3.5.0
|
||||
* Optional, run-time only
|
||||
* Used by the bundled search engine
|
||||
|
||||
Dependency version numbers are bumped every once in a while to keep the range of properly tested configurations manageable, even if not strictly required to build.
|
||||
You may be able to build with older versions of (some of) the dependencies other than the minimum versions specified in the build scripts, but support for such builds is not provided - you are on your own.
|
||||
|
4
NEWS
4
NEWS
@@ -1,4 +0,0 @@
|
||||
See Changelog
|
||||
|
||||
*******************************************
|
||||
Christophe dumez - chris@qbittorrent.org
|
@@ -46,7 +46,7 @@ Please report any bug (or feature request) to:
|
||||
http://bugs.qbittorrent.org
|
||||
|
||||
Official IRC channel:
|
||||
`#qbittorrent on irc.libera.chat`
|
||||
[#qbittorrent on irc.libera.chat](ircs://irc.libera.chat:6697/qbittorrent)
|
||||
|
||||
------------------------------------------
|
||||
sledgehammer999 <sledgehammer999@qbittorrent.org>
|
||||
sledgehammer999 \<sledgehammer999@qbittorrent.org\>
|
||||
|
67
cmake/Modules/CheckPackages.cmake
Normal file
67
cmake/Modules/CheckPackages.cmake
Normal file
@@ -0,0 +1,67 @@
|
||||
# use CONFIG mode first in find_package
|
||||
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON)
|
||||
|
||||
macro(find_libtorrent version)
|
||||
if (UNIX AND (NOT APPLE) AND (NOT CYGWIN))
|
||||
find_package(LibtorrentRasterbar QUIET ${version} COMPONENTS torrent-rasterbar)
|
||||
if (NOT LibtorrentRasterbar_FOUND)
|
||||
include(FindPkgConfig)
|
||||
pkg_check_modules(LibtorrentRasterbar IMPORTED_TARGET GLOBAL "libtorrent-rasterbar>=${version}")
|
||||
if (NOT LibtorrentRasterbar_FOUND)
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"Package LibtorrentRasterbar >= ${version} not found"
|
||||
" with CMake or pkg-config.\n- Set LibtorrentRasterbar_DIR to a directory containing"
|
||||
" a LibtorrentRasterbarConfig.cmake file or add the installation prefix of LibtorrentRasterbar"
|
||||
" to CMAKE_PREFIX_PATH.\n- Alternatively, make sure there is a valid libtorrent-rasterbar.pc"
|
||||
" file in your system's pkg-config search paths (use the system environment variable PKG_CONFIG_PATH"
|
||||
" to specify additional search paths if needed)."
|
||||
)
|
||||
endif()
|
||||
add_library(LibtorrentRasterbar::torrent-rasterbar ALIAS PkgConfig::LibtorrentRasterbar)
|
||||
# force a fake package to show up in the feature summary
|
||||
set_property(GLOBAL APPEND PROPERTY
|
||||
PACKAGES_FOUND
|
||||
"LibtorrentRasterbar via pkg-config (version >= ${version})"
|
||||
)
|
||||
set_package_properties("LibtorrentRasterbar via pkg-config (version >= ${version})"
|
||||
PROPERTIES
|
||||
TYPE REQUIRED
|
||||
)
|
||||
else()
|
||||
set_package_properties(LibtorrentRasterbar PROPERTIES TYPE REQUIRED)
|
||||
endif()
|
||||
else()
|
||||
find_package(LibtorrentRasterbar ${version} REQUIRED COMPONENTS torrent-rasterbar)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
find_libtorrent(${minLibtorrent1Version})
|
||||
if (LibtorrentRasterbar_FOUND AND (LibtorrentRasterbar_VERSION VERSION_GREATER_EQUAL 2.0))
|
||||
find_libtorrent(${minLibtorrentVersion})
|
||||
endif()
|
||||
|
||||
# force variable type so that it always shows up in ccmake/cmake-gui frontends
|
||||
set_property(CACHE LibtorrentRasterbar_DIR PROPERTY TYPE PATH)
|
||||
find_package(Boost ${minBoostVersion} REQUIRED)
|
||||
find_package(OpenSSL ${minOpenSSLVersion} REQUIRED)
|
||||
find_package(ZLIB ${minZlibVersion} REQUIRED)
|
||||
if (QT6)
|
||||
find_package(Qt6 ${minQt6Version} REQUIRED COMPONENTS Core Network Sql Xml LinguistTools)
|
||||
if (DBUS)
|
||||
find_package(Qt6 ${minQt6Version} REQUIRED COMPONENTS DBus)
|
||||
set_package_properties(Qt6DBus PROPERTIES
|
||||
DESCRIPTION "Qt6 module for inter-process communication over the D-Bus protocol"
|
||||
PURPOSE "Required by the DBUS feature"
|
||||
)
|
||||
endif()
|
||||
else()
|
||||
find_package(Qt5 ${minQt5Version} REQUIRED COMPONENTS Core Network Sql Xml LinguistTools)
|
||||
if (DBUS)
|
||||
find_package(Qt5 ${minQt5Version} REQUIRED COMPONENTS DBus)
|
||||
set_package_properties(Qt5DBus PROPERTIES
|
||||
DESCRIPTION "Qt5 module for inter-process communication over the D-Bus protocol"
|
||||
PURPOSE "Required by the DBUS feature"
|
||||
)
|
||||
endif()
|
||||
endif()
|
106
cmake/Modules/CommonConfig.cmake
Normal file
106
cmake/Modules/CommonConfig.cmake
Normal file
@@ -0,0 +1,106 @@
|
||||
# Set platform variables and create some interface-only library targets
|
||||
# that some or all other targets will link to, either directly or transitively,
|
||||
# to consume common compile options/definitions
|
||||
|
||||
# treat value specified by the CXX_STANDARD target property as a requirement by default
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
set(CMAKE_AUTORCC_OPTIONS --compress 9 --threshold 5)
|
||||
|
||||
add_library(qbt_common_cfg INTERFACE)
|
||||
|
||||
# Full C++ 17 support is required
|
||||
# See also https://cmake.org/cmake/help/latest/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.html
|
||||
# for a breakdown of the features that CMake recognizes for each C++ standard
|
||||
target_compile_features(qbt_common_cfg INTERFACE
|
||||
cxx_std_17
|
||||
)
|
||||
|
||||
target_compile_definitions(qbt_common_cfg INTERFACE
|
||||
QT_DISABLE_DEPRECATED_BEFORE=0x050f02
|
||||
QT_NO_CAST_FROM_ASCII
|
||||
QT_NO_CAST_TO_ASCII
|
||||
QT_NO_CAST_FROM_BYTEARRAY
|
||||
QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
|
||||
QT_USE_QSTRINGBUILDER
|
||||
QT_STRICT_ITERATORS
|
||||
$<$<NOT:$<CONFIG:Debug>>:QT_NO_DEBUG_OUTPUT>
|
||||
)
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||
target_compile_definitions(qbt_common_cfg INTERFACE
|
||||
_DARWIN_FEATURE_64_BIT_INODE
|
||||
)
|
||||
endif()
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
target_compile_definitions(qbt_common_cfg INTERFACE
|
||||
NTDDI_VERSION=0x06010000
|
||||
_WIN32_WINNT=0x0601
|
||||
_WIN32_IE=0x0601
|
||||
WIN32_LEAN_AND_MEAN
|
||||
NOMINMAX
|
||||
UNICODE
|
||||
_UNICODE
|
||||
)
|
||||
endif()
|
||||
|
||||
if ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang"))
|
||||
target_compile_options(qbt_common_cfg INTERFACE
|
||||
-Wall
|
||||
-Wextra
|
||||
-Wcast-qual
|
||||
-Wcast-align
|
||||
-Winvalid-pch
|
||||
-Woverloaded-virtual
|
||||
-Wold-style-cast
|
||||
-Wnon-virtual-dtor
|
||||
-pedantic
|
||||
-pedantic-errors
|
||||
)
|
||||
|
||||
# Clang 11 still doesn't support -Wstrict-null-sentinel
|
||||
include(CheckCXXCompilerFlag)
|
||||
check_cxx_compiler_flag(-Wstrict-null-sentinel SNS_SUPPORT)
|
||||
if (SNS_SUPPORT)
|
||||
target_compile_options(qbt_common_cfg INTERFACE -Wstrict-null-sentinel)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if ((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang"))
|
||||
target_compile_options(qbt_common_cfg INTERFACE
|
||||
-Wno-range-loop-analysis
|
||||
)
|
||||
endif()
|
||||
|
||||
if (MINGW)
|
||||
target_link_options(qbt_common_cfg INTERFACE $<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:LINKER:--dynamicbase>)
|
||||
endif()
|
||||
|
||||
if (MSVC)
|
||||
target_compile_options(qbt_common_cfg INTERFACE
|
||||
/guard:cf
|
||||
/utf-8
|
||||
# https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/
|
||||
/Zc:__cplusplus
|
||||
)
|
||||
target_link_options(qbt_common_cfg INTERFACE
|
||||
/guard:cf
|
||||
$<$<NOT:$<CONFIG:Debug>>:/OPT:REF /OPT:ICF>
|
||||
# suppress linking warning due to /INCREMENTAL and /OPT:ICF being both ON
|
||||
$<$<CONFIG:RelWithDebInfo>:/INCREMENTAL:NO>
|
||||
)
|
||||
|
||||
if (MSVC_RUNTIME_DYNAMIC)
|
||||
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
|
||||
else()
|
||||
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (LibtorrentRasterbar_VERSION VERSION_GREATER_EQUAL ${minLibtorrentVersion})
|
||||
target_compile_definitions(qbt_common_cfg INTERFACE QBT_USES_LIBTORRENT2)
|
||||
endif()
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user