You've already forked qBittorrent
mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-10-09 18:32:15 +02:00
Compare commits
686 Commits
release-4.
...
release-5.
Author | SHA1 | Date | |
---|---|---|---|
![]() |
d96ab6ba84 | ||
![]() |
eb2eea8d34 | ||
![]() |
14684c8c83 | ||
![]() |
4c6dd8e68d | ||
![]() |
27451469fa | ||
![]() |
a311c259cc | ||
![]() |
0ad65ceef6 | ||
![]() |
cbf7c09bf4 | ||
![]() |
3fcc298539 | ||
![]() |
7080f85b59 | ||
![]() |
9f0fa4c215 | ||
![]() |
6f31a13f22 | ||
![]() |
200f7fc628 | ||
![]() |
a180162405 | ||
![]() |
2d1c4fc809 | ||
![]() |
e8d8de8f19 | ||
![]() |
90aecfea02 | ||
![]() |
a85736fd27 | ||
![]() |
dafbcf8709 | ||
![]() |
d11622e3c0 | ||
![]() |
d90a9d15ac | ||
![]() |
f8aaea3476 | ||
![]() |
b84a51c76d | ||
![]() |
83b0dd3026 | ||
![]() |
ef5506321a | ||
![]() |
24d349ffba | ||
![]() |
2109e13746 | ||
![]() |
5eec0c0213 | ||
![]() |
f34787e6ba | ||
![]() |
15ea836bb9 | ||
![]() |
72e033db79 | ||
![]() |
e1bd1038c0 | ||
![]() |
3ebdb50457 | ||
![]() |
b0fe6e6c59 | ||
![]() |
8d847eeb18 | ||
![]() |
f022ce8f84 | ||
![]() |
78a5e4ff3e | ||
![]() |
61ff683f11 | ||
![]() |
7300b9f759 | ||
![]() |
6ce2869108 | ||
![]() |
0eba285ff1 | ||
![]() |
88161a6467 | ||
![]() |
7f901a812d | ||
![]() |
6578fd06fd | ||
![]() |
6ddde3f4b6 | ||
![]() |
530631322d | ||
![]() |
928de36093 | ||
![]() |
1e851b3637 | ||
![]() |
c9c85eeb95 | ||
![]() |
ea35aa45d6 | ||
![]() |
e51fcc6ea0 | ||
![]() |
f4eec75488 | ||
![]() |
f73f31619d | ||
![]() |
ede08f3845 | ||
![]() |
c9a55fce95 | ||
![]() |
1cd3c586c1 | ||
![]() |
0f12d077c8 | ||
![]() |
92daca1fef | ||
![]() |
889df72ab3 | ||
![]() |
631e873ff2 | ||
![]() |
69f19d4a0b | ||
![]() |
3ec645674a | ||
![]() |
71f83cf9ba | ||
![]() |
06fe3e5fb0 | ||
![]() |
fe153f8919 | ||
![]() |
568de90923 | ||
![]() |
f89c4c32ed | ||
![]() |
fb9b3c0f34 | ||
![]() |
33e3fb2f46 | ||
![]() |
4bec9b90c4 | ||
![]() |
a6c7aef6c1 | ||
![]() |
4527536858 | ||
![]() |
3da9444688 | ||
![]() |
75d1ac8889 | ||
![]() |
051d7137ea | ||
![]() |
b462a2bf0c | ||
![]() |
c02f80cec5 | ||
![]() |
3bb1e34233 | ||
![]() |
dc30b9c2ec | ||
![]() |
b083029841 | ||
![]() |
6f642776b6 | ||
![]() |
1a7ebfc8f0 | ||
![]() |
0771970627 | ||
![]() |
0f18e80154 | ||
![]() |
08b51fc869 | ||
![]() |
13e3192444 | ||
![]() |
3aefc16c57 | ||
![]() |
7b0b3a1522 | ||
![]() |
8991d994c2 | ||
![]() |
72cbc83569 | ||
![]() |
7af6ac18aa | ||
![]() |
41236d8e58 | ||
![]() |
03dfd983d0 | ||
![]() |
84d895231c | ||
![]() |
91b2687032 | ||
![]() |
be3eefd8de | ||
![]() |
e0e61ffd02 | ||
![]() |
c3c91be578 | ||
![]() |
e0431e3ffb | ||
![]() |
67b6cf5a6f | ||
![]() |
e8dc6b3f73 | ||
![]() |
dfe9daf25d | ||
![]() |
ca933c60a1 | ||
![]() |
c080fc3aa0 | ||
![]() |
5dd41f506e | ||
![]() |
a3ac692c25 | ||
![]() |
e91412ec8b | ||
![]() |
337730ddef | ||
![]() |
3ab9fe55e5 | ||
![]() |
ab8d0d1dae | ||
![]() |
25dbea1388 | ||
![]() |
a47e1cdb48 | ||
![]() |
4805afc1a2 | ||
![]() |
5a0914e333 | ||
![]() |
7031c52d16 | ||
![]() |
8e941a06f1 | ||
![]() |
966387859a | ||
![]() |
fb40275507 | ||
![]() |
3d9e9715b4 | ||
![]() |
21b0367629 | ||
![]() |
ac646f47a2 | ||
![]() |
c4eeb4a14a | ||
![]() |
6418033cc8 | ||
![]() |
cbcb46bcfb | ||
![]() |
0704049026 | ||
![]() |
81509dfb65 | ||
![]() |
b1fd61af3a | ||
![]() |
2d185dc1c7 | ||
![]() |
2d857b6200 | ||
![]() |
871438f557 | ||
![]() |
87644441ad | ||
![]() |
d73201c098 | ||
![]() |
3ea2be41e7 | ||
![]() |
6bbedbea8a | ||
![]() |
56a0692b68 | ||
![]() |
dfa4eebbce | ||
![]() |
6ed662c68b | ||
![]() |
f81d8a85e9 | ||
![]() |
9e5433bcf8 | ||
![]() |
3fb5d7764c | ||
![]() |
e75bcbed6d | ||
![]() |
7f38216d22 | ||
![]() |
e309148147 | ||
![]() |
6981217369 | ||
![]() |
4ff0687b94 | ||
![]() |
dc02a0fc56 | ||
![]() |
c48d2c1dde | ||
![]() |
b5b34c9ff4 | ||
![]() |
7b45566efc | ||
![]() |
c30a07702d | ||
![]() |
d8e24314ec | ||
![]() |
449ca96e28 | ||
![]() |
cebaedf485 | ||
![]() |
fd311fd5ff | ||
![]() |
50acb670b0 | ||
![]() |
3888b465d8 | ||
![]() |
6bbb7b71cd | ||
![]() |
10eb921d70 | ||
![]() |
5e3161a3f9 | ||
![]() |
4cc3fedf37 | ||
![]() |
2952480f37 | ||
![]() |
6bfabad92f | ||
![]() |
0e03e4f8a7 | ||
![]() |
10149de205 | ||
![]() |
960edd95cc | ||
![]() |
8b2d8f3afd | ||
![]() |
81def39d8c | ||
![]() |
a23f45cc70 | ||
![]() |
8a6207d3fc | ||
![]() |
c3224459db | ||
![]() |
183c7c75b1 | ||
![]() |
1c43286616 | ||
![]() |
4555a46e5d | ||
![]() |
23f7275bd5 | ||
![]() |
d2b2afad23 | ||
![]() |
d19f7b12d9 | ||
![]() |
6df1f68ead | ||
![]() |
e06b7f8f4d | ||
![]() |
3058158b69 | ||
![]() |
0ea35c54a3 | ||
![]() |
dbef6da544 | ||
![]() |
a0c32110f1 | ||
![]() |
435385816a | ||
![]() |
1b53fdf9ee | ||
![]() |
f00c5c9fa3 | ||
![]() |
130c0d8487 | ||
![]() |
d9bc7935eb | ||
![]() |
944499814b | ||
![]() |
0e63b83aed | ||
![]() |
f681e954c7 | ||
![]() |
a7f7c5fb73 | ||
![]() |
9d0fa213be | ||
![]() |
fc82abe7f6 | ||
![]() |
72feee6fdd | ||
![]() |
58eab8d453 | ||
![]() |
7ab4758279 | ||
![]() |
e6cd9b90d2 | ||
![]() |
5b7c9d5725 | ||
![]() |
39dd415d43 | ||
![]() |
9a9c375b9d | ||
![]() |
fda797cb76 | ||
![]() |
a91bac8aa0 | ||
![]() |
0904f4a89b | ||
![]() |
9c370bf391 | ||
![]() |
f09d43d073 | ||
![]() |
f818d0dbe0 | ||
![]() |
98623b2cf7 | ||
![]() |
29379232aa | ||
![]() |
0c580c3174 | ||
![]() |
1179fc3de3 | ||
![]() |
e069fbc37f | ||
![]() |
efdc4af448 | ||
![]() |
0535993e41 | ||
![]() |
f5aa0bb126 | ||
![]() |
0da383e7b6 | ||
![]() |
c5b7c82344 | ||
![]() |
b1d2b9d02b | ||
![]() |
d9667b5221 | ||
![]() |
155fe96bdd | ||
![]() |
9a8572bd21 | ||
![]() |
04eb40376e | ||
![]() |
ea06eb9fe6 | ||
![]() |
3e18b1d30c | ||
![]() |
9df3ee0de8 | ||
![]() |
0c7045042d | ||
![]() |
5afeecbf18 | ||
![]() |
4570c0ef9e | ||
![]() |
d0af02cc17 | ||
![]() |
62c5f41f39 | ||
![]() |
bee56f2567 | ||
![]() |
cbabe56fcf | ||
![]() |
2d9e3b3330 | ||
![]() |
989b1d176d | ||
![]() |
142780b863 | ||
![]() |
7b2886e477 | ||
![]() |
66c1acbce2 | ||
![]() |
49507ad670 | ||
![]() |
d74f49111b | ||
![]() |
642a9c29eb | ||
![]() |
9d494e84bf | ||
![]() |
aed103d06e | ||
![]() |
b67495464d | ||
![]() |
bf7e1516d5 | ||
![]() |
7131d1bd6b | ||
![]() |
062904c2bd | ||
![]() |
6b52a04ff1 | ||
![]() |
69a829dfb0 | ||
![]() |
3c5baac150 | ||
![]() |
8e9680bf69 | ||
![]() |
b75c42f850 | ||
![]() |
3b38d0de7f | ||
![]() |
8b7fdf0f22 | ||
![]() |
83d730ffda | ||
![]() |
3acd5409a6 | ||
![]() |
a61df019b3 | ||
![]() |
7df98e1c9a | ||
![]() |
c3b7dfa918 | ||
![]() |
0fd24358ce | ||
![]() |
7e8e6269d0 | ||
![]() |
25dd6c72f7 | ||
![]() |
adde3c3f65 | ||
![]() |
7119de9b8d | ||
![]() |
3999b9a4f9 | ||
![]() |
7f4cb43a33 | ||
![]() |
9feefc8144 | ||
![]() |
9c26e5d4d6 | ||
![]() |
815ab180c1 | ||
![]() |
eba5cbb803 | ||
![]() |
87a202c71e | ||
![]() |
a4f63a5c30 | ||
![]() |
ccdf178ee7 | ||
![]() |
b52fa98a02 | ||
![]() |
d87533bf4c | ||
![]() |
5ef2a1df07 | ||
![]() |
d2fceaa228 | ||
![]() |
4e27e88f6a | ||
![]() |
c5fa05299b | ||
![]() |
0cbe4882c3 | ||
![]() |
610d5ef5ff | ||
![]() |
9d87a813b2 | ||
![]() |
5740238933 | ||
![]() |
ea918da931 | ||
![]() |
9317c25ecb | ||
![]() |
7a2bfae5e4 | ||
![]() |
9894f654cf | ||
![]() |
d71086e400 | ||
![]() |
2000be12ba | ||
![]() |
914728d9a1 | ||
![]() |
c36100fa85 | ||
![]() |
1c49e0973c | ||
![]() |
65d143d4c4 | ||
![]() |
d89f289f82 | ||
![]() |
648dd9988d | ||
![]() |
dd34c85884 | ||
![]() |
1903ddada1 | ||
![]() |
bf4e0df386 | ||
![]() |
b9a1bbbb8a | ||
![]() |
41d8f473b7 | ||
![]() |
4155d4660f | ||
![]() |
455a04b68e | ||
![]() |
4c57318e89 | ||
![]() |
d52995015e | ||
![]() |
b1b6685663 | ||
![]() |
534615373e | ||
![]() |
1ba69be869 | ||
![]() |
c54750469e | ||
![]() |
3ebd15d408 | ||
![]() |
64dfb7e122 | ||
![]() |
b07afa3ea9 | ||
![]() |
24a1537cdd | ||
![]() |
55bff4f07a | ||
![]() |
cb90b6769c | ||
![]() |
6d073771ca | ||
![]() |
a126a7b493 | ||
![]() |
b8a774f1fb | ||
![]() |
e09a871ca3 | ||
![]() |
04154ebb76 | ||
![]() |
fb796ec595 | ||
![]() |
00ca209ab9 | ||
![]() |
4d8713ce11 | ||
![]() |
2c47f09d7a | ||
![]() |
a19ef58400 | ||
![]() |
21a4ab6bac | ||
![]() |
2b728b3bc0 | ||
![]() |
6231208ddf | ||
![]() |
e2d6cd31b2 | ||
![]() |
79eb7b8e38 | ||
![]() |
8ef7d3ec9a | ||
![]() |
05416458db | ||
![]() |
cd3982cf3c | ||
![]() |
a1af077889 | ||
![]() |
42b87963fd | ||
![]() |
775b38079f | ||
![]() |
d65d8558d6 | ||
![]() |
b1175b60e1 | ||
![]() |
d3315f7cc7 | ||
![]() |
321d7e5b17 | ||
![]() |
4ac586c896 | ||
![]() |
ca71c186e0 | ||
![]() |
ddb0ff29e2 | ||
![]() |
6c57fad0cd | ||
![]() |
1c7ecb7371 | ||
![]() |
4945ed576a | ||
![]() |
c6f4e95b7d | ||
![]() |
fc3953dbaa | ||
![]() |
75e2ae2fa0 | ||
![]() |
7310eec74e | ||
![]() |
3e0fd01604 | ||
![]() |
ace5286402 | ||
![]() |
d7cded54e4 | ||
![]() |
6c82d5e305 | ||
![]() |
c036313adf | ||
![]() |
29f0adf215 | ||
![]() |
e697d40382 | ||
![]() |
01cc4ea90b | ||
![]() |
d407e954d1 | ||
![]() |
f085f8c076 | ||
![]() |
92ce507151 | ||
![]() |
67dfce7437 | ||
![]() |
e4aad461c7 | ||
![]() |
f37d0c486c | ||
![]() |
8e6515be2c | ||
![]() |
1d221c22e4 | ||
![]() |
2fe91a6c8f | ||
![]() |
90383567b2 | ||
![]() |
4967f977c5 | ||
![]() |
eb9e98a4b3 | ||
![]() |
f5cac13979 | ||
![]() |
f20467889d | ||
![]() |
5e8b9df859 | ||
![]() |
489bacd766 | ||
![]() |
5d1c249606 | ||
![]() |
f2d6129db3 | ||
![]() |
5c67c5a77d | ||
![]() |
ce013f132f | ||
![]() |
abcf1e076e | ||
![]() |
47c38e8d91 | ||
![]() |
34d19e5714 | ||
![]() |
25b7972f88 | ||
![]() |
845f9a821e | ||
![]() |
b489262f51 | ||
![]() |
a5681f72bc | ||
![]() |
9e569f1a70 | ||
![]() |
9d3c314ac0 | ||
![]() |
931de85ab5 | ||
![]() |
6a82cb1af6 | ||
![]() |
f8ae8f419d | ||
![]() |
ac91c1348b | ||
![]() |
d7aaf80744 | ||
![]() |
50caa231f7 | ||
![]() |
d5e41bf679 | ||
![]() |
773cb1e55d | ||
![]() |
0967bdc715 | ||
![]() |
c06817f4eb | ||
![]() |
1702b6c891 | ||
![]() |
f65af03c67 | ||
![]() |
a567f8b600 | ||
![]() |
71f1e6df59 | ||
![]() |
896f5fe729 | ||
![]() |
8a1bc8e5fd | ||
![]() |
6964132475 | ||
![]() |
f265eb0166 | ||
![]() |
0114610a40 | ||
![]() |
15697f904d | ||
![]() |
46e8ee50c8 | ||
![]() |
364bcf73ee | ||
![]() |
031fa6183c | ||
![]() |
66c34ddb6e | ||
![]() |
3f2b4afc21 | ||
![]() |
e1fa7e01c6 | ||
![]() |
9192c988ed | ||
![]() |
cffd74b62a | ||
![]() |
c6ee0ff017 | ||
![]() |
dc501c39be | ||
![]() |
7786e1b084 | ||
![]() |
80dea08328 | ||
![]() |
bb8a012b1c | ||
![]() |
63c9b6388e | ||
![]() |
3d24a4e0f7 | ||
![]() |
f04edd555f | ||
![]() |
e31b553807 | ||
![]() |
a9741bb203 | ||
![]() |
67e0a2de44 | ||
![]() |
1afb3ff433 | ||
![]() |
16a91f26fb | ||
![]() |
963a7faab8 | ||
![]() |
d06d5b923a | ||
![]() |
6d68ab4dae | ||
![]() |
60bb819e2e | ||
![]() |
8ef99b336c | ||
![]() |
f7e9ff0fb0 | ||
![]() |
9b64d50660 | ||
![]() |
5fe5c333b5 | ||
![]() |
49f819ef78 | ||
![]() |
2755190d8e | ||
![]() |
f87ea1b5d3 | ||
![]() |
88a4990435 | ||
![]() |
9bfb447dd3 | ||
![]() |
d652a10495 | ||
![]() |
df41940ebc | ||
![]() |
94e80d01a8 | ||
![]() |
bab9c15913 | ||
![]() |
31d456c43b | ||
![]() |
c5d7b62473 | ||
![]() |
8ec3db1807 | ||
![]() |
05572a7317 | ||
![]() |
00372dd559 | ||
![]() |
6918316a3d | ||
![]() |
2edb1a0765 | ||
![]() |
582e4dcb59 | ||
![]() |
14513d051d | ||
![]() |
97c0abcbf0 | ||
![]() |
ad22237a2f | ||
![]() |
8bdb83d973 | ||
![]() |
54bcabeca4 | ||
![]() |
114652205c | ||
![]() |
5b3b56c918 | ||
![]() |
e69f857828 | ||
![]() |
0b6d785e87 | ||
![]() |
f3d45327e1 | ||
![]() |
9bf7f3b181 | ||
![]() |
d5bf0358cb | ||
![]() |
fc56fdade7 | ||
![]() |
293a2efca7 | ||
![]() |
8bd604f633 | ||
![]() |
fcd16d56e2 | ||
![]() |
be5bf9a138 | ||
![]() |
8dcc734df5 | ||
![]() |
4057972b2d | ||
![]() |
073ca4267c | ||
![]() |
9d90141c29 | ||
![]() |
cc563d9f78 | ||
![]() |
88ef8a51dd | ||
![]() |
0297f0f34b | ||
![]() |
7a41192597 | ||
![]() |
65771d66fc | ||
![]() |
0dbac78e17 | ||
![]() |
608efc77e8 | ||
![]() |
9ecb3874d8 | ||
![]() |
4ba8eaf4b4 | ||
![]() |
bfd3ce2fca | ||
![]() |
86d5d13ce6 | ||
![]() |
8f230bc2e6 | ||
![]() |
6d0ad62632 | ||
![]() |
c165131c3f | ||
![]() |
9fde5634f1 | ||
![]() |
19b88b7f4a | ||
![]() |
60eaff9fcb | ||
![]() |
c3adc90f7e | ||
![]() |
6f7f418ec1 | ||
![]() |
137df132e8 | ||
![]() |
b2c51a5b9e | ||
![]() |
e99a012bb4 | ||
![]() |
75feacb213 | ||
![]() |
ce34245aaf | ||
![]() |
ef06be63bf | ||
![]() |
a1c78a0455 | ||
![]() |
32fbacf615 | ||
![]() |
75c638e2f8 | ||
![]() |
298e4ba852 | ||
![]() |
50680a3d9b | ||
![]() |
20bfd392ff | ||
![]() |
8cc8ffabb0 | ||
![]() |
2a20764d39 | ||
![]() |
9d6d3a30eb | ||
![]() |
b67da4bebe | ||
![]() |
8e39ac7efd | ||
![]() |
fb497f3410 | ||
![]() |
5d1d3fcf57 | ||
![]() |
0f40fad74d | ||
![]() |
28b5d7230c | ||
![]() |
c88bd7cb3f | ||
![]() |
30d9978c97 | ||
![]() |
f067ab1692 | ||
![]() |
bcfa251290 | ||
![]() |
f49507cb58 | ||
![]() |
606c23d1a4 | ||
![]() |
7c0e3baf5f | ||
![]() |
6cfbc02d8f | ||
![]() |
794cce38f3 | ||
![]() |
f20f009b78 | ||
![]() |
e216a9cf53 | ||
![]() |
7f57324655 | ||
![]() |
0186f44bf4 | ||
![]() |
6b53c57157 | ||
![]() |
5db2c2c2be | ||
![]() |
cecbb44a03 | ||
![]() |
4a20a1660e | ||
![]() |
eddfaedc4d | ||
![]() |
e42d3f38cc | ||
![]() |
e7f38ec6ce | ||
![]() |
a689ccf798 | ||
![]() |
7bd8f262db | ||
![]() |
98576dacae | ||
![]() |
b4642ca9d3 | ||
![]() |
9b924c1931 | ||
![]() |
de2ba53f08 | ||
![]() |
031be41491 | ||
![]() |
c671b7059e | ||
![]() |
347124812e | ||
![]() |
bf95eb50da | ||
![]() |
ee9390fecd | ||
![]() |
12674d2990 | ||
![]() |
35e4b35d12 | ||
![]() |
6860c0d60d | ||
![]() |
9de32a78f1 | ||
![]() |
8d5022c715 | ||
![]() |
921be09d8f | ||
![]() |
116b05009d | ||
![]() |
63499511cb | ||
![]() |
413e7dd3c4 | ||
![]() |
cba433823f | ||
![]() |
90e023f138 | ||
![]() |
e6ec3d0c2b | ||
![]() |
d60f9c6142 | ||
![]() |
a3888811f6 | ||
![]() |
30189ae943 | ||
![]() |
ec90d169c0 | ||
![]() |
3ca0939411 | ||
![]() |
34f7b75f12 | ||
![]() |
c051ee9409 | ||
![]() |
70b438e6d9 | ||
![]() |
73028f9930 | ||
![]() |
bda18ad29b | ||
![]() |
0404ff9fb3 | ||
![]() |
47439a7efd | ||
![]() |
16111496ca | ||
![]() |
43e9403a4c | ||
![]() |
7ab90cfc40 | ||
![]() |
b3fda76027 | ||
![]() |
529e49aea7 | ||
![]() |
46c1c9de65 | ||
![]() |
cacae42e5e | ||
![]() |
f3b688217e | ||
![]() |
5e5c6aa7d8 | ||
![]() |
88d32d57ab | ||
![]() |
1537f1e703 | ||
![]() |
30badbf36e | ||
![]() |
5a334175a8 | ||
![]() |
dcba9eda00 | ||
![]() |
633167a6da | ||
![]() |
c394868f87 | ||
![]() |
2deb7eb3d9 | ||
![]() |
d19f4c2e1f | ||
![]() |
22f63468a2 | ||
![]() |
479639162d | ||
![]() |
5b57abc7d8 | ||
![]() |
d841dda654 | ||
![]() |
4cf933b4fc | ||
![]() |
7cd2445a49 | ||
![]() |
2f94c92df9 | ||
![]() |
39efd0e9ff | ||
![]() |
ff80e0ce66 | ||
![]() |
65930ddf94 | ||
![]() |
4d2015cfed | ||
![]() |
2dc1a7d66f | ||
![]() |
145971b915 | ||
![]() |
43e3d0b4b2 | ||
![]() |
0fdb1b3f53 | ||
![]() |
24da51ffa0 | ||
![]() |
e434812cda | ||
![]() |
9a1df0c595 | ||
![]() |
44763d3e15 | ||
![]() |
9a73a21f3f | ||
![]() |
e045b4678d | ||
![]() |
d8a03cd8d8 | ||
![]() |
270c63d64c | ||
![]() |
bbac94cc95 | ||
![]() |
9ab8203c8a | ||
![]() |
c805606524 | ||
![]() |
34d30ed031 | ||
![]() |
f3f4610ba4 | ||
![]() |
21b77cb4f8 | ||
![]() |
dcf3e97291 | ||
![]() |
e4313d6651 | ||
![]() |
52fbb774a2 | ||
![]() |
a0e41a11de | ||
![]() |
cab5edb721 | ||
![]() |
7a9a102b6f | ||
![]() |
6ba561dea2 | ||
![]() |
56ba5e5182 | ||
![]() |
69d60b5f1c | ||
![]() |
850da9dd83 | ||
![]() |
502b3d3228 | ||
![]() |
c25d14b1d0 | ||
![]() |
31fe327763 | ||
![]() |
870bcc7a19 | ||
![]() |
44f0a63354 | ||
![]() |
9fa48a375d | ||
![]() |
f2b4aa6570 | ||
![]() |
5c06d0aa75 | ||
![]() |
4d98761e99 | ||
![]() |
180e708f3c | ||
![]() |
da4f2c2439 | ||
![]() |
33d767b765 | ||
![]() |
06581636a1 | ||
![]() |
a0fa1709d5 | ||
![]() |
699dc1689a | ||
![]() |
a427b9228d | ||
![]() |
c4ed40b82f | ||
![]() |
e68cf87f05 | ||
![]() |
fccdeb4e78 | ||
![]() |
431860482c | ||
![]() |
d554db4f4e | ||
![]() |
6c16a09385 | ||
![]() |
b35c2bca5d | ||
![]() |
852927bf50 | ||
![]() |
a5a4ea9ba0 | ||
![]() |
45ca5d31c9 | ||
![]() |
b14740aeac | ||
![]() |
5b0706df65 | ||
![]() |
11efd26acc | ||
![]() |
006ad23d0d | ||
![]() |
9975230dea | ||
![]() |
e31c3376bd | ||
![]() |
9898901236 | ||
![]() |
56c52af124 | ||
![]() |
c20a77aa77 | ||
![]() |
d6adebe4c0 | ||
![]() |
c58aa58cba | ||
![]() |
7612d5d0ef | ||
![]() |
1874fd7f93 | ||
![]() |
0bcc1cf4a0 | ||
![]() |
cffcf5783f | ||
![]() |
10ee1ab7a2 | ||
![]() |
f27f2c20e0 | ||
![]() |
d554f4d44a | ||
![]() |
d357cdd5f9 | ||
![]() |
0f862fcf9f | ||
![]() |
6bd56478fd | ||
![]() |
76b5ca6b8b | ||
![]() |
dbb1b1e9bb | ||
![]() |
b5fbfdf106 | ||
![]() |
f3f9cfe44e | ||
![]() |
dbe79484d2 | ||
![]() |
5e610cfdcf | ||
![]() |
2c08dc9dad | ||
![]() |
15b46259f3 | ||
![]() |
d569eaa991 | ||
![]() |
64c3845a7c | ||
![]() |
79afa0b84d | ||
![]() |
38d773ca46 | ||
![]() |
9194f60ac0 | ||
![]() |
4a217dc42f | ||
![]() |
9171b73edb | ||
![]() |
0f0de5e4f8 |
101
.appveyor.yml
101
.appveyor.yml
@@ -1,101 +0,0 @@
|
||||
version: '{branch}-{build}'
|
||||
|
||||
# Do not build on tags (GitHub only)
|
||||
skip_tags: true
|
||||
|
||||
image: Visual Studio 2022
|
||||
|
||||
branches:
|
||||
except: # blacklist
|
||||
- coverity_scan
|
||||
|
||||
environment:
|
||||
REPO_DIR: &REPO_DIR c:\qbittorrent
|
||||
CACHE_DIR: &CACHE_DIR c:\qbt_cache
|
||||
|
||||
QBT_VER_URL: https://builds.shiki.hu/appveyor/version_64
|
||||
QBT_LIB_URL: https://builds.shiki.hu/appveyor/qbt_libraries_64.7z
|
||||
|
||||
# project directory
|
||||
clone_folder: *REPO_DIR
|
||||
|
||||
# cache size should < 100MB (after compressing with fastest option):
|
||||
# see: https://www.appveyor.com/docs/build-cache#save-update-cache-before-build-finishes
|
||||
cache:
|
||||
- *CACHE_DIR
|
||||
|
||||
clone_depth: 50
|
||||
|
||||
install:
|
||||
# check if library needs update
|
||||
- appveyor DownloadFile "%QBT_VER_URL%" -FileName "c:\version_new" && SET /P newVersion=<"c:\version_new"
|
||||
- IF EXIST "%CACHE_DIR%\version" (SET /P oldVersion=<"%CACHE_DIR%\version")
|
||||
- IF NOT EXIST "%CACHE_DIR%\version" (SET updateCache=1)
|
||||
- IF NOT "%oldVersion%" == "%newVersion%" (SET updateCache=1)
|
||||
# update library
|
||||
- IF "%updateCache%" == "1" (ECHO "--- Will redownload libraries ---" &&
|
||||
RMDIR /S /Q "%CACHE_DIR%" & MKDIR "%CACHE_DIR%" &&
|
||||
appveyor DownloadFile "%QBT_LIB_URL%" -FileName "c:\qbt_lib.7z" && 7z x "c:\qbt_lib.7z" -o"%CACHE_DIR%" > nul &&
|
||||
COPY "c:\version_new" "%CACHE_DIR%\version")
|
||||
|
||||
before_build:
|
||||
# setup env
|
||||
- CALL "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
|
||||
- SET PATH=%PATH%;C:\Qt\5.15.2\msvc2019_64\bin;%CACHE_DIR%\jom
|
||||
# setup project
|
||||
- COPY /Y "%CACHE_DIR%\conf.pri" "%REPO_DIR%"
|
||||
# workarounds
|
||||
- MKDIR "c:\qbt"
|
||||
- MKLINK /J "c:\qbt\base" "%CACHE_DIR%\base"
|
||||
|
||||
build_script:
|
||||
- cd "%REPO_DIR%"
|
||||
# lupdate chokes when it parses headers from system includes, especially Boost
|
||||
# it also chokes with the sources from src/app/qtlocalpeer (formerly qtsingleapplication)
|
||||
# Workaround: temporarily rename them to run lupdate with the .pro file
|
||||
- RENAME conf.pri conf.pri.temp
|
||||
- RENAME src\app\qtlocalpeer qtlocalpeer.temp
|
||||
- lupdate qbittorrent.pro
|
||||
- RENAME conf.pri.temp conf.pri
|
||||
- RENAME src\app\qtlocalpeer.temp qtlocalpeer
|
||||
- qmake qbittorrent.pro && cd src && qmake src.pro
|
||||
- jom -j2 -f Makefile.Release
|
||||
|
||||
after_build:
|
||||
- cd "%REPO_DIR%"
|
||||
- MKDIR upload
|
||||
- COPY dist\windows\qt.conf upload
|
||||
- COPY src\release\qbittorrent.exe upload
|
||||
- COPY src\release\qbittorrent.pdb upload
|
||||
- COPY "%CACHE_DIR%\base\bin\libcrypto-1_1-x64.dll" upload
|
||||
- COPY "%CACHE_DIR%\base\bin\libcrypto-1_1-x64.pdb" upload
|
||||
- COPY "%CACHE_DIR%\base\bin\libssl-1_1-x64.dll" upload
|
||||
- COPY "%CACHE_DIR%\base\bin\libssl-1_1-x64.pdb" upload
|
||||
- COPY "%CACHE_DIR%\base\bin\torrent-rasterbar.dll" upload
|
||||
- COPY "%CACHE_DIR%\base\bin\torrent-rasterbar.pdb" upload
|
||||
- COPY "%CACHE_DIR%\base\lib\zlib1.dll" upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Core.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Gui.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Network.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Sql.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Svg.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Widgets.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5WinExtras.dll upload
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Xml.dll upload
|
||||
- MKDIR upload\plugins\iconengines
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\iconengines\qsvgicon.dll upload\plugins\iconengines
|
||||
- MKDIR upload\plugins\imageformats
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\imageformats\qico.dll upload\plugins\imageformats
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\imageformats\qsvg.dll upload\plugins\imageformats
|
||||
- MKDIR upload\plugins\platforms
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\platforms\qwindows.dll upload\plugins\platforms
|
||||
- MKDIR upload\plugins\sqldrivers
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\sqldrivers\qsqlite.dll upload\plugins\sqldrivers
|
||||
- MKDIR upload\plugins\styles
|
||||
- COPY C:\Qt\5.15.2\msvc2019_64\plugins\styles\qwindowsvistastyle.dll upload\plugins\styles
|
||||
|
||||
test: off
|
||||
|
||||
artifacts:
|
||||
- path: upload
|
||||
name: qBittorrent-Appveyor_Windows-x64
|
@@ -35,7 +35,6 @@ Checks: >
|
||||
-modernize-use-auto,
|
||||
-modernize-use-nodiscard,
|
||||
-modernize-use-trailing-return-type,
|
||||
-modernize-use-using,
|
||||
-readability-function-cognitive-complexity,
|
||||
-readability-function-size,
|
||||
-readability-identifier-length,
|
||||
|
@@ -1,8 +1,10 @@
|
||||
# EditorConfig is awesome: http://EditorConfig.org
|
||||
# EditorConfig is awesome: https://EditorConfig.org
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
insert_final_newline = true
|
||||
|
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -6,4 +6,5 @@ core.eol=lf
|
||||
*.qm binary
|
||||
*.zip binary
|
||||
|
||||
dist/windows/license.txt text eol=crlf
|
||||
test/testdata/crlf.txt text eol=crlf
|
||||
|
18
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
18
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -7,19 +7,17 @@ body:
|
||||
#### 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."
|
||||
"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.
|
||||
- (Optional, but recommended) Verify that the issue is not fixed and is reproducible 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.
|
||||
- Perform a **[search of the issue tracker (including closed ones)](https://github.com/qbittorrent/qBittorrent/issues?q=is%3Aissue+is%3Aopen+-label%3A%22Feature+request%22)** 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:
|
||||
@@ -28,10 +26,10 @@ body:
|
||||
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
|
||||
qBittorrent: 4.6.6 x64
|
||||
Operating system: Windows 10 Pro x64 (22H2) 10.0.19045
|
||||
Qt: 6.4.3
|
||||
libtorrent-rasterbar: 1.2.19
|
||||
placeholder: |
|
||||
qBittorrent:
|
||||
Operating system:
|
||||
@@ -73,4 +71,4 @@ body:
|
||||
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
|
||||
required: true
|
||||
|
2
.github/SUPPORT.md
vendored
2
.github/SUPPORT.md
vendored
@@ -9,7 +9,7 @@ For such questions, use one of the following community support resources:
|
||||
|
||||
* The [discussions section][discussions-url]
|
||||
|
||||
* The official forum [official forum][forum-url]
|
||||
* The [official forum][forum-url]
|
||||
|
||||
* The [qBittorrent subreddit][subreddit-url]
|
||||
|
||||
|
15
.github/dependabot.yml
vendored
Normal file
15
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
version: 2
|
||||
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
commit-message:
|
||||
prefix: "GHA CI"
|
||||
groups:
|
||||
github-actions:
|
||||
patterns:
|
||||
- "*"
|
||||
labels:
|
||||
- "CI"
|
||||
schedule:
|
||||
interval: "monthly"
|
25
.github/workflows/ci_file_health.yaml
vendored
25
.github/workflows/ci_file_health.yaml
vendored
@@ -14,12 +14,31 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install tools
|
||||
uses: actions/setup-python@v4
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "*"
|
||||
|
||||
- name: Check files
|
||||
uses: pre-commit/action@v3.0.0
|
||||
uses: pre-commit/action@v3.0.1
|
||||
|
||||
- name: Check doc
|
||||
env:
|
||||
pandoc_path: "${{ github.workspace }}/../pandoc"
|
||||
run: |
|
||||
# install pandoc
|
||||
curl \
|
||||
-L \
|
||||
-o "${{ runner.temp }}/pandoc.tar.gz" \
|
||||
"https://github.com/jgm/pandoc/releases/download/3.4/pandoc-3.4-linux-amd64.tar.gz"
|
||||
tar -xf "${{ runner.temp }}/pandoc.tar.gz" -C "${{ github.workspace }}/.."
|
||||
mv "${{ github.workspace }}/.."/pandoc-* "${{ env.pandoc_path }}"
|
||||
# run pandoc
|
||||
for lang in doc/*/; do
|
||||
"${{ env.pandoc_path }}/bin/pandoc" -f markdown -t man -s "$lang/qbittorrent.1.md" -o "$lang/qbittorrent.1"
|
||||
"${{ env.pandoc_path }}/bin/pandoc" -f markdown -t man -s "$lang/qbittorrent-nox.1.md" -o "$lang/qbittorrent-nox.1"
|
||||
done
|
||||
# check diff, ignore "Automatically generated by ..." part
|
||||
git diff -I '\.\\".*' --exit-code
|
||||
|
89
.github/workflows/ci_macos.yaml
vendored
89
.github/workflows/ci_macos.yaml
vendored
@@ -17,23 +17,20 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
libt_version: ["2.0.9", "1.2.19"]
|
||||
libt_version: ["2.0.10", "1.2.19"]
|
||||
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
||||
qt_version: ["5.15.2", "6.5.0"]
|
||||
exclude:
|
||||
- libt_version: "1.2.19"
|
||||
qt_version: "6.5.0"
|
||||
qt_version: ["6.7.0"]
|
||||
|
||||
env:
|
||||
boost_path: "${{ github.workspace }}/../boost"
|
||||
openssl_root: /usr/local/opt/openssl@1.1
|
||||
libtorrent_path: "${{ github.workspace }}/../libtorrent"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
uses: Wandalen/wretry.action@v1
|
||||
uses: Wandalen/wretry.action@v3
|
||||
env:
|
||||
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
|
||||
HOMEBREW_NO_INSTALL_CLEANUP: 1
|
||||
@@ -44,28 +41,40 @@ jobs:
|
||||
brew update > /dev/null
|
||||
brew install \
|
||||
cmake ninja \
|
||||
openssl@1.1 zlib
|
||||
openssl@3 zlib
|
||||
|
||||
- name: Setup ccache
|
||||
uses: Chocobo1/setup-ccache-action@v1
|
||||
with:
|
||||
store_cache: ${{ github.ref == 'refs/heads/master' }}
|
||||
update_packager_index: false
|
||||
ccache_options: |
|
||||
max_size=2G
|
||||
|
||||
- name: Install boost
|
||||
env:
|
||||
BOOST_MAJOR_VERSION: "1"
|
||||
BOOST_MINOR_VERSION: "86"
|
||||
BOOST_PATCH_VERSION: "0"
|
||||
run: |
|
||||
curl \
|
||||
-L \
|
||||
-o "${{ runner.temp }}/boost.tar.bz2" \
|
||||
"https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/boost_1_82_0.tar.bz2"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.bz2" -C "${{ github.workspace }}/.."
|
||||
boost_url="https://boostorg.jfrog.io/artifactory/main/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
set +e
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
|
||||
if [ "$_exitCode" -ne "0" ]; then
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
|
||||
fi
|
||||
mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}"
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
version: ${{ matrix.qt_version }}
|
||||
archives: qtbase qtdeclarative qtsvg qttools
|
||||
# Not sure why Qt made a hard dependency on qtdeclarative, try removing it when Qt > 6.4.0
|
||||
cache: true
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
@@ -73,8 +82,9 @@ jobs:
|
||||
--branch v${{ matrix.libt_version }} \
|
||||
--depth 1 \
|
||||
--recurse-submodules \
|
||||
https://github.com/arvidn/libtorrent.git
|
||||
cd libtorrent
|
||||
https://github.com/arvidn/libtorrent.git \
|
||||
${{ env.libtorrent_path }}
|
||||
cd ${{ env.libtorrent_path }}
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
@@ -83,15 +93,13 @@ jobs:
|
||||
-DCMAKE_CXX_STANDARD=17 \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-Ddeprecated-functions=OFF \
|
||||
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}"
|
||||
-Ddeprecated-functions=OFF
|
||||
cmake --build build
|
||||
sudo cmake --install build
|
||||
|
||||
- name: Build qBittorrent (Qt5)
|
||||
if: startsWith(matrix.qt_version, 5)
|
||||
- name: Build qBittorrent
|
||||
run: |
|
||||
CXXFLAGS="$CXXFLAGS -Werror -Wno-error=deprecated-declarations" \
|
||||
CXXFLAGS="$CXXFLAGS -DQT_FORCE_ASSERTS -Werror -Wno-error=deprecated-declarations" \
|
||||
LDFLAGS="$LDFLAGS -gz" \
|
||||
cmake \
|
||||
-B build \
|
||||
@@ -99,27 +107,6 @@ jobs:
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \
|
||||
-DTESTING=ON \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
-D${{ matrix.qbt_gui }}
|
||||
cmake --build build --target qbt_update_translations
|
||||
cmake --build build
|
||||
cmake --build build --target check
|
||||
|
||||
- name: Build qBittorrent (Qt6)
|
||||
if: startsWith(matrix.qt_version, 6)
|
||||
run: |
|
||||
CXXFLAGS="$CXXFLAGS -Wno-gnu-zero-variadic-macro-arguments -Werror -Wno-error=deprecated-declarations" \
|
||||
LDFLAGS="$LDFLAGS -gz" \
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \
|
||||
-DQT6=ON \
|
||||
-DTESTING=ON \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
-D${{ matrix.qbt_gui }}
|
||||
@@ -134,8 +121,18 @@ jobs:
|
||||
if [ "${{ matrix.qbt_gui }}" = "GUI=OFF" ]; then
|
||||
appName="qbittorrent-nox"
|
||||
fi
|
||||
# package
|
||||
pushd build
|
||||
macdeployqt "$appName.app" -dmg -no-strip
|
||||
PACKAGE_RETRY=0
|
||||
while [ "$PACKAGE_RETRY" -lt "3" ]; do
|
||||
macdeployqt "$appName.app" -dmg -no-strip
|
||||
if [ -f "$appName.dmg" ]; then
|
||||
break
|
||||
fi
|
||||
sleep 5
|
||||
PACKAGE_RETRY=$((PACKAGE_RETRY + 1))
|
||||
echo "Retry $PACKAGE_RETRY..."
|
||||
done
|
||||
popd
|
||||
# prepare upload folder
|
||||
mkdir upload
|
||||
@@ -143,10 +140,10 @@ jobs:
|
||||
mkdir upload/cmake
|
||||
cp build/compile_commands.json upload/cmake
|
||||
mkdir upload/cmake/libtorrent
|
||||
cp libtorrent/build/compile_commands.json upload/cmake/libtorrent
|
||||
cp ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: qBittorrent-CI_macOS_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
|
||||
path: upload
|
||||
|
89
.github/workflows/ci_python.yaml
vendored
Normal file
89
.github/workflows/ci_python.yaml
vendored
Normal file
@@ -0,0 +1,89 @@
|
||||
name: CI - Python
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
permissions: {}
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
name: Check
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup python (auxiliary scripts)
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3' # use default version
|
||||
|
||||
- name: Install tools (auxiliary scripts)
|
||||
run: pip install bandit pycodestyle pyflakes
|
||||
|
||||
- name: Gather files (auxiliary scripts)
|
||||
run: |
|
||||
export "PY_FILES=$(find . -type f -name '*.py' ! -path '*searchengine*' -printf '%p ')"
|
||||
echo $PY_FILES
|
||||
echo "PY_FILES=$PY_FILES" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Lint code (auxiliary scripts)
|
||||
run: |
|
||||
pyflakes $PY_FILES
|
||||
bandit --skip B314,B405 $PY_FILES
|
||||
|
||||
- name: Format code (auxiliary scripts)
|
||||
run: |
|
||||
pycodestyle \
|
||||
--max-line-length=1000 \
|
||||
--statistics \
|
||||
$PY_FILES
|
||||
|
||||
- name: Build code (auxiliary scripts)
|
||||
run: |
|
||||
python -m compileall $PY_FILES
|
||||
|
||||
- name: Setup python (search engine)
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.9'
|
||||
|
||||
- name: Install tools (search engine)
|
||||
run: pip install bandit mypy pycodestyle pyflakes pyright
|
||||
|
||||
- name: Gather files (search engine)
|
||||
run: |
|
||||
export "PY_FILES=$(find . -type f -name '*.py' -path '*searchengine*' ! -name 'socks.py' -printf '%p ')"
|
||||
echo $PY_FILES
|
||||
echo "PY_FILES=$PY_FILES" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Check typings (search engine)
|
||||
run: |
|
||||
MYPYPATH="src/searchengine/nova3" \
|
||||
mypy \
|
||||
--follow-imports skip \
|
||||
--strict \
|
||||
$PY_FILES
|
||||
pyright \
|
||||
$PY_FILES
|
||||
|
||||
- name: Lint code (search engine)
|
||||
run: |
|
||||
pyflakes $PY_FILES
|
||||
bandit --skip B110,B310,B314,B405 $PY_FILES
|
||||
|
||||
- name: Format code (search engine)
|
||||
run: |
|
||||
pycodestyle \
|
||||
--ignore=E265,E402 \
|
||||
--max-line-length=1000 \
|
||||
--statistics \
|
||||
$PY_FILES
|
||||
|
||||
- name: Build code (search engine)
|
||||
run: |
|
||||
python -m compileall $PY_FILES
|
122
.github/workflows/ci_ubuntu.yaml
vendored
122
.github/workflows/ci_ubuntu.yaml
vendored
@@ -18,36 +18,57 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
libt_version: ["2.0.9", "1.2.19"]
|
||||
libt_version: ["2.0.10", "1.2.19"]
|
||||
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
||||
qt_version: ["5.15.2", "6.2.0"]
|
||||
exclude:
|
||||
- libt_version: "1.2.19"
|
||||
qt_version: "6.2.0"
|
||||
qt_version: ["6.5.2"]
|
||||
|
||||
env:
|
||||
boost_path: "${{ github.workspace }}/../boost"
|
||||
harden_flags: "-D_FORTIFY_SOURCE=2 -D_GLIBCXX_ASSERTIONS"
|
||||
libtorrent_path: "${{ github.workspace }}/../libtorrent"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install \
|
||||
build-essential cmake ninja-build pkg-config \
|
||||
libboost-dev libssl-dev libxkbcommon-x11-dev zlib1g-dev
|
||||
build-essential cmake ninja-build \
|
||||
libssl-dev libxkbcommon-x11-dev libxcb-cursor-dev zlib1g-dev
|
||||
|
||||
- name: Setup ccache
|
||||
uses: Chocobo1/setup-ccache-action@v1
|
||||
with:
|
||||
store_cache: ${{ github.ref == 'refs/heads/master' }}
|
||||
update_packager_index: false
|
||||
ccache_options: |
|
||||
max_size=2G
|
||||
|
||||
- name: Install boost
|
||||
env:
|
||||
BOOST_MAJOR_VERSION: "1"
|
||||
BOOST_MINOR_VERSION: "76"
|
||||
BOOST_PATCH_VERSION: "0"
|
||||
run: |
|
||||
boost_url="https://boostorg.jfrog.io/artifactory/main/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
set +e
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
|
||||
if [ "$_exitCode" -ne "0" ]; then
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
|
||||
fi
|
||||
mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}"
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
version: ${{ matrix.qt_version }}
|
||||
archives: icu qtbase qtsvg qttools
|
||||
archives: icu qtbase qtdeclarative qtsvg qttools
|
||||
cache: true
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
@@ -55,36 +76,39 @@ jobs:
|
||||
--branch v${{ matrix.libt_version }} \
|
||||
--depth 1 \
|
||||
--recurse-submodules \
|
||||
https://github.com/arvidn/libtorrent.git
|
||||
cd libtorrent
|
||||
https://github.com/arvidn/libtorrent.git \
|
||||
${{ env.libtorrent_path }}
|
||||
cd ${{ env.libtorrent_path }}
|
||||
CXXFLAGS="$CXXFLAGS ${{ env.harden_flags }}" \
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-Ddeprecated-functions=OFF
|
||||
cmake --build build
|
||||
sudo cmake --install build
|
||||
|
||||
# to avoid scanning 3rdparty codebases, initialize it just before building qbt
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
if: startsWith(matrix.libt_version, 2) && (matrix.qbt_gui == 'GUI=ON') && startsWith(matrix.qt_version, 6)
|
||||
uses: github/codeql-action/init@v3
|
||||
if: startsWith(matrix.libt_version, 2) && (matrix.qbt_gui == 'GUI=ON')
|
||||
with:
|
||||
config-file: ./.github/workflows/helper/codeql/cpp.yaml
|
||||
languages: cpp
|
||||
|
||||
- name: Build qBittorrent (Qt5)
|
||||
if: startsWith(matrix.qt_version, 5)
|
||||
- name: Build qBittorrent
|
||||
run: |
|
||||
CXXFLAGS="$CXXFLAGS -Werror -Wno-error=deprecated-declarations" \
|
||||
CXXFLAGS="$CXXFLAGS ${{ env.harden_flags }} -DQT_FORCE_ASSERTS -Werror" \
|
||||
LDFLAGS="$LDFLAGS -gz" \
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-DCMAKE_INSTALL_PREFIX="/usr" \
|
||||
-DTESTING=ON \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
@@ -94,29 +118,11 @@ jobs:
|
||||
cmake --build build --target check
|
||||
DESTDIR="qbittorrent" cmake --install build
|
||||
|
||||
- name: Build qBittorrent (Qt6)
|
||||
if: startsWith(matrix.qt_version, 6)
|
||||
run: |
|
||||
CXXFLAGS="$CXXFLAGS -Werror" \
|
||||
LDFLAGS="$LDFLAGS -gz" \
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DCMAKE_INSTALL_PREFIX="/usr" \
|
||||
-DQT6=ON \
|
||||
-DTESTING=ON \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
-D${{ matrix.qbt_gui }}
|
||||
cmake --build build --target qbt_update_translations
|
||||
cmake --build build
|
||||
cmake --build build --target check
|
||||
DESTDIR="qbittorrent" cmake --install build
|
||||
|
||||
- name: Run CodeQL analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
if: startsWith(matrix.libt_version, 2) && (matrix.qbt_gui == 'GUI=ON') && startsWith(matrix.qt_version, 6)
|
||||
uses: github/codeql-action/analyze@v3
|
||||
if: startsWith(matrix.libt_version, 2) && (matrix.qbt_gui == 'GUI=ON')
|
||||
with:
|
||||
category: ${{ github.base_ref || github.ref_name }}
|
||||
|
||||
- name: Prepare build artifacts
|
||||
run: |
|
||||
@@ -124,37 +130,41 @@ jobs:
|
||||
mkdir upload/cmake
|
||||
cp build/compile_commands.json upload/cmake
|
||||
mkdir upload/cmake/libtorrent
|
||||
cp libtorrent/build/compile_commands.json upload/cmake/libtorrent
|
||||
cp ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent
|
||||
|
||||
- name: 'AppImage: Prepare env'
|
||||
- name: Install AppImage
|
||||
run: |
|
||||
sudo apt install libfuse2
|
||||
wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
|
||||
wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
|
||||
wget https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous/linuxdeploy-plugin-appimage-x86_64.AppImage
|
||||
chmod +x linuxdeploy-x86_64.AppImage
|
||||
chmod +x linuxdeploy-plugin-qt-x86_64.AppImage
|
||||
chmod +x linuxdeploy-plugin-appimage-x86_64.AppImage
|
||||
curl \
|
||||
-L \
|
||||
-Z \
|
||||
-O https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-static-x86_64.AppImage \
|
||||
-O https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-static-x86_64.AppImage \
|
||||
-O https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous/linuxdeploy-plugin-appimage-x86_64.AppImage
|
||||
chmod +x \
|
||||
linuxdeploy-static-x86_64.AppImage \
|
||||
linuxdeploy-plugin-qt-static-x86_64.AppImage \
|
||||
linuxdeploy-plugin-appimage-x86_64.AppImage
|
||||
|
||||
- name: 'AppImage: Prepare nox'
|
||||
- name: Prepare files for AppImage
|
||||
if: matrix.qbt_gui == 'GUI=OFF'
|
||||
run: |
|
||||
mkdir -p qbittorrent/usr/share/icons/hicolor/scalable/apps/
|
||||
mkdir -p qbittorrent/usr/share/applications/
|
||||
cp dist/unix/menuicons/scalable/apps/qbittorrent.svg qbittorrent/usr/share/icons/hicolor/scalable/apps/qbittorrent.svg
|
||||
mkdir -p qbittorrent/usr/share/applications
|
||||
cp .github/workflows/helper/appimage/org.qbittorrent.qBittorrent.desktop qbittorrent/usr/share/applications/org.qbittorrent.qBittorrent.desktop
|
||||
mkdir -p qbittorrent/usr/share/icons/hicolor/scalable/apps
|
||||
cp dist/unix/menuicons/scalable/apps/qbittorrent.svg qbittorrent/usr/share/icons/hicolor/scalable/apps/qbittorrent.svg
|
||||
|
||||
- name: 'AppImage: Package'
|
||||
- name: Package AppImage
|
||||
run: |
|
||||
./linuxdeploy-x86_64.AppImage --appdir=qbittorrent --plugin qt
|
||||
./linuxdeploy-static-x86_64.AppImage --appdir qbittorrent --plugin qt
|
||||
rm qbittorrent/apprun-hooks/*
|
||||
cp .github/workflows/helper/appimage/export_vars.sh qbittorrent/apprun-hooks/export_vars.sh
|
||||
NO_APPSTREAM=1 \
|
||||
OUTPUT=upload/qbittorrent-CI_Ubuntu_x86_64.AppImage \
|
||||
./linuxdeploy-x86_64.AppImage --appdir=qbittorrent --output appimage
|
||||
OUTPUT=upload/qbittorrent-CI_Ubuntu_x86_64.AppImage \
|
||||
./linuxdeploy-static-x86_64.AppImage --appdir qbittorrent --output appimage
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: qBittorrent-CI_Ubuntu-x64_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
|
||||
path: upload
|
||||
|
10
.github/workflows/ci_webui.yaml
vendored
10
.github/workflows/ci_webui.yaml
vendored
@@ -20,10 +20,10 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup nodejs
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 'lts/*'
|
||||
|
||||
@@ -39,10 +39,10 @@ jobs:
|
||||
git diff --exit-code
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
uses: github/codeql-action/init@v3
|
||||
with:
|
||||
config-file: ./.github/workflows/helper/codeql/js.yaml
|
||||
config-file: .github/workflows/helper/codeql/js.yaml
|
||||
languages: javascript
|
||||
|
||||
- name: Run CodeQL analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
uses: github/codeql-action/analyze@v3
|
||||
|
175
.github/workflows/ci_windows.yaml
vendored
175
.github/workflows/ci_windows.yaml
vendored
@@ -17,70 +17,88 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
libt_version: ["2.0.9", "1.2.19"]
|
||||
libt_version: ["2.0.10", "1.2.19"]
|
||||
|
||||
env:
|
||||
boost_path: "${{ github.workspace }}/../boost"
|
||||
libtorrent_path: "${{ github.workspace }}/libtorrent"
|
||||
libtorrent_path: "${{ github.workspace }}/../libtorrent"
|
||||
vcpkg_path: "c:/vcpkg"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup devcmd
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
|
||||
- name: Install build tools
|
||||
run: |
|
||||
choco install ninja
|
||||
if ((Get-Command "ninja.exe" -ErrorAction SilentlyContinue) -eq $null)
|
||||
{
|
||||
choco install ninja
|
||||
}
|
||||
where.exe ninja
|
||||
ninja --version
|
||||
|
||||
# use the preinstalled vcpkg from image
|
||||
# https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md#package-management
|
||||
- name: Setup vcpkg
|
||||
uses: lukka/run-vcpkg@v10
|
||||
# https://learn.microsoft.com/en-us/vcpkg/users/binarycaching#gha
|
||||
- name: Set variables for vcpkg
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
vcpkgDirectory: C:/vcpkg
|
||||
doNotUpdateVcpkg: true # the preinstalled vcpkg is updated regularly
|
||||
script: |
|
||||
core.exportVariable('ACTIONS_CACHE_URL', (process.env.ACTIONS_CACHE_URL || ''));
|
||||
core.exportVariable('ACTIONS_RUNTIME_TOKEN', (process.env.ACTIONS_RUNTIME_TOKEN || ''));
|
||||
|
||||
- name: Install dependencies from vcpkg
|
||||
- name: Install dependencies with vcpkg
|
||||
run: |
|
||||
# tell vcpkg to only build Release variants of the dependencies
|
||||
# create our own triplet
|
||||
New-Item `
|
||||
-Path "${{ github.workspace }}" `
|
||||
-Name "triplets_overlay" `
|
||||
-ItemType Directory
|
||||
Copy-Item `
|
||||
"${{ env.RUNVCPKG_VCPKG_ROOT }}/triplets/x64-windows-static.cmake" `
|
||||
"${{ github.workspace }}/triplets_overlay/x64-windows-static-release.cmake"
|
||||
-Force `
|
||||
-ItemType File `
|
||||
-Path "${{ env.vcpkg_path }}/triplets_overlay/x64-windows-static-md-release.cmake"
|
||||
# OpenSSL isn't compatible with `/guard:cf` flag so we omit it for now, see: https://github.com/openssl/openssl/issues/22554
|
||||
Add-Content `
|
||||
"${{ github.workspace }}/triplets_overlay/x64-windows-static-release.cmake" `
|
||||
-Value "set(VCPKG_BUILD_TYPE release)"
|
||||
-Path "${{ env.vcpkg_path }}/triplets_overlay/x64-windows-static-md-release.cmake" `
|
||||
-Value @("set(VCPKG_TARGET_ARCHITECTURE x64)",
|
||||
"set(VCPKG_LIBRARY_LINKAGE static)",
|
||||
"set(VCPKG_CRT_LINKAGE dynamic)",
|
||||
"set(VCPKG_BUILD_TYPE release)")
|
||||
# clear buildtrees after each package installation to reduce disk space requirements
|
||||
$packages = `
|
||||
"openssl:x64-windows-static-release",
|
||||
"zlib:x64-windows-static-release"
|
||||
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe upgrade `
|
||||
--overlay-triplets="${{ github.workspace }}/triplets_overlay" `
|
||||
--no-dry-run
|
||||
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe install `
|
||||
--overlay-triplets="${{ github.workspace }}/triplets_overlay" `
|
||||
"openssl:x64-windows-static-md-release",
|
||||
"zlib:x64-windows-static-md-release"
|
||||
${{ env.vcpkg_path }}/vcpkg.exe upgrade `
|
||||
--no-dry-run `
|
||||
--overlay-triplets="${{ env.vcpkg_path }}/triplets_overlay"
|
||||
${{ env.vcpkg_path }}/vcpkg.exe install `
|
||||
--binarysource="clear;x-gha,readwrite" `
|
||||
--clean-after-build `
|
||||
--overlay-triplets="${{ env.vcpkg_path }}/triplets_overlay" `
|
||||
$packages
|
||||
|
||||
- name: Install boost
|
||||
env:
|
||||
BOOST_MAJOR_VERSION: "1"
|
||||
BOOST_MINOR_VERSION: "86"
|
||||
BOOST_PATCH_VERSION: "0"
|
||||
run: |
|
||||
aria2c `
|
||||
"https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/boost_1_82_0.7z" `
|
||||
-d "${{ runner.temp }}" `
|
||||
-o "boost.7z"
|
||||
7z x "${{ runner.temp }}/boost.7z" -o"${{ github.workspace }}/.."
|
||||
$boost_url="https://boostorg.jfrog.io/artifactory/main/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
$boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."
|
||||
if ($LastExitCode -ne 0)
|
||||
{
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."
|
||||
}
|
||||
move "${{ github.workspace }}/../boost_*" "${{ env.boost_path }}"
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
version: "6.5.0"
|
||||
version: "6.8.0"
|
||||
arch: win64_msvc2022_64
|
||||
archives: qtbase qtsvg qttools
|
||||
cache: true
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
@@ -88,39 +106,40 @@ jobs:
|
||||
--branch v${{ matrix.libt_version }} `
|
||||
--depth 1 `
|
||||
--recurse-submodules `
|
||||
https://github.com/arvidn/libtorrent.git
|
||||
cd libtorrent
|
||||
https://github.com/arvidn/libtorrent.git `
|
||||
${{ env.libtorrent_path }}
|
||||
cd ${{ env.libtorrent_path }}
|
||||
$env:CXXFLAGS+=" /guard:cf"
|
||||
$env:LDFLAGS+=" /guard:cf"
|
||||
cmake `
|
||||
-B build `
|
||||
-G "Ninja" `
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
|
||||
-DCMAKE_CXX_FLAGS=/guard:cf `
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON `
|
||||
-DCMAKE_INSTALL_PREFIX="${{ env.libtorrent_path }}" `
|
||||
-DCMAKE_TOOLCHAIN_FILE="${{ env.RUNVCPKG_VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake" `
|
||||
-DCMAKE_INSTALL_PREFIX="${{ env.libtorrent_path }}/install" `
|
||||
-DCMAKE_TOOLCHAIN_FILE="${{ env.vcpkg_path }}/scripts/buildsystems/vcpkg.cmake" `
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" `
|
||||
-DBUILD_SHARED_LIBS=OFF `
|
||||
-Ddeprecated-functions=OFF `
|
||||
-Dstatic_runtime=ON `
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-release
|
||||
-Dstatic_runtime=OFF `
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release
|
||||
cmake --build build
|
||||
cmake --install build
|
||||
|
||||
- name: Build qBittorrent
|
||||
run: |
|
||||
$env:CXXFLAGS+="/DQT_FORCE_ASSERTS /WX"
|
||||
cmake `
|
||||
-B build `
|
||||
-G "Ninja" `
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
|
||||
-DCMAKE_CXX_FLAGS="/WX" `
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON `
|
||||
-DCMAKE_TOOLCHAIN_FILE="${{ env.RUNVCPKG_VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake" `
|
||||
-DCMAKE_TOOLCHAIN_FILE="${{ env.vcpkg_path }}/scripts/buildsystems/vcpkg.cmake" `
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" `
|
||||
-DLibtorrentRasterbar_DIR="${{ env.libtorrent_path }}/lib/cmake/LibtorrentRasterbar" `
|
||||
-DMSVC_RUNTIME_DYNAMIC=OFF `
|
||||
-DQT6=ON `
|
||||
-DLibtorrentRasterbar_DIR="${{ env.libtorrent_path }}/install/lib/cmake/LibtorrentRasterbar" `
|
||||
-DMSVC_RUNTIME_DYNAMIC=ON `
|
||||
-DTESTING=ON `
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-release `
|
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release `
|
||||
-DVERBOSE_CONFIGURE=ON `
|
||||
--graphviz=build/target_graph.dot
|
||||
cmake --build build --target qbt_update_translations
|
||||
@@ -130,39 +149,51 @@ jobs:
|
||||
- name: Prepare build artifacts
|
||||
run: |
|
||||
mkdir upload
|
||||
copy build/qbittorrent.exe upload
|
||||
copy build/qbittorrent.pdb upload
|
||||
copy dist/windows/qt.conf upload
|
||||
mkdir upload/qBittorrent
|
||||
copy build/qbittorrent.exe upload/qBittorrent
|
||||
copy build/qbittorrent.pdb upload/qBittorrent
|
||||
copy dist/windows/qt.conf upload/qBittorrent
|
||||
# runtimes
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Core.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Gui.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Network.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Sql.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Svg.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Widgets.dll" upload
|
||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Xml.dll" upload
|
||||
mkdir upload/plugins/iconengines
|
||||
copy "${{ env.Qt6_DIR }}/plugins/iconengines/qsvgicon.dll" upload/plugins/iconengines
|
||||
mkdir upload/plugins/imageformats
|
||||
copy "${{ env.Qt6_DIR }}/plugins/imageformats/qico.dll" upload/plugins/imageformats
|
||||
copy "${{ env.Qt6_DIR }}/plugins/imageformats/qsvg.dll" upload/plugins/imageformats
|
||||
mkdir upload/plugins/platforms
|
||||
copy "${{ env.Qt6_DIR }}/plugins/platforms/qwindows.dll" upload/plugins/platforms
|
||||
mkdir upload/plugins/sqldrivers
|
||||
copy "${{ env.Qt6_DIR }}/plugins/sqldrivers/qsqlite.dll" upload/plugins/sqldrivers
|
||||
mkdir upload/plugins/styles
|
||||
copy "${{ env.Qt6_DIR }}/plugins/styles/qwindowsvistastyle.dll" upload/plugins/styles
|
||||
mkdir upload/plugins/tls
|
||||
copy "${{ env.Qt6_DIR }}/plugins/tls/qschannelbackend.dll" upload/plugins/tls
|
||||
copy "${{ env.Qt_ROOT_DIR }}/bin/Qt6Core.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt_ROOT_DIR }}/bin/Qt6Gui.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt_ROOT_DIR }}/bin/Qt6Network.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt_ROOT_DIR }}/bin/Qt6Sql.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt_ROOT_DIR }}/bin/Qt6Svg.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt_ROOT_DIR }}/bin/Qt6Widgets.dll" upload/qBittorrent
|
||||
copy "${{ env.Qt_ROOT_DIR }}/bin/Qt6Xml.dll" upload/qBittorrent
|
||||
mkdir upload/qBittorrent/plugins/iconengines
|
||||
copy "${{ env.Qt_ROOT_DIR }}/plugins/iconengines/qsvgicon.dll" upload/qBittorrent/plugins/iconengines
|
||||
mkdir upload/qBittorrent/plugins/imageformats
|
||||
copy "${{ env.Qt_ROOT_DIR }}/plugins/imageformats/qico.dll" upload/qBittorrent/plugins/imageformats
|
||||
copy "${{ env.Qt_ROOT_DIR }}/plugins/imageformats/qsvg.dll" upload/qBittorrent/plugins/imageformats
|
||||
mkdir upload/qBittorrent/plugins/platforms
|
||||
copy "${{ env.Qt_ROOT_DIR }}/plugins/platforms/qwindows.dll" upload/qBittorrent/plugins/platforms
|
||||
mkdir upload/qBittorrent/plugins/sqldrivers
|
||||
copy "${{ env.Qt_ROOT_DIR }}/plugins/sqldrivers/qsqlite.dll" upload/qBittorrent/plugins/sqldrivers
|
||||
mkdir upload/qBittorrent/plugins/styles
|
||||
copy "${{ env.Qt_ROOT_DIR }}/plugins/styles/qmodernwindowsstyle.dll" upload/qBittorrent/plugins/styles
|
||||
mkdir upload/qBittorrent/plugins/tls
|
||||
copy "${{ env.Qt_ROOT_DIR }}/plugins/tls/qschannelbackend.dll" upload/qBittorrent/plugins/tls
|
||||
# cmake additionals
|
||||
mkdir upload/cmake
|
||||
copy build/compile_commands.json upload/cmake
|
||||
copy build/target_graph.dot upload/cmake
|
||||
mkdir upload/cmake/libtorrent
|
||||
copy libtorrent/build/compile_commands.json upload/cmake/libtorrent
|
||||
copy ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: qBittorrent-CI_Windows-x64_libtorrent-${{ matrix.libt_version }}
|
||||
path: upload
|
||||
|
||||
- name: Create installer
|
||||
run: |
|
||||
7z x -o"dist/windows/" "dist/windows/NSISPlugins.zip"
|
||||
makensis /DQBT_DIST_DIR="../../upload/qBittorrent" /WX dist/windows/qbittorrent.nsi
|
||||
|
||||
- name: Upload installer
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: qBittorrent-CI_Windows-x64_libtorrent-${{ matrix.libt_version }}-setup
|
||||
path: dist/windows/qbittorrent_*_setup.exe
|
||||
|
78
.github/workflows/coverity-scan.yaml
vendored
78
.github/workflows/coverity-scan.yaml
vendored
@@ -12,48 +12,82 @@ jobs:
|
||||
name: Scan
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
libt_version: ["2.0.10"]
|
||||
qbt_gui: ["GUI=ON"]
|
||||
qt_version: ["6.5.2"]
|
||||
|
||||
env:
|
||||
boost_path: "${{ github.workspace }}/../boost"
|
||||
coverity_path: "${{ github.workspace }}/../coverity"
|
||||
libtorrent_path: "${{ github.workspace }}/../libtorrent"
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install \
|
||||
build-essential cmake ninja-build pkg-config \
|
||||
libboost-dev libssl-dev zlib1g-dev
|
||||
build-essential cmake ninja-build \
|
||||
libssl-dev libxkbcommon-x11-dev libxcb-cursor-dev zlib1g-dev
|
||||
|
||||
- name: Install boost
|
||||
env:
|
||||
BOOST_MAJOR_VERSION: "1"
|
||||
BOOST_MINOR_VERSION: "86"
|
||||
BOOST_PATCH_VERSION: "0"
|
||||
run: |
|
||||
boost_url="https://boostorg.jfrog.io/artifactory/main/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
||||
set +e
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
|
||||
if [ "$_exitCode" -ne "0" ]; then
|
||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2"
|
||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?"
|
||||
fi
|
||||
mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}"
|
||||
|
||||
- name: Install Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
version: "6.5.0"
|
||||
archives: icu qtbase qtsvg qttools
|
||||
version: ${{ matrix.qt_version }}
|
||||
archives: icu qtbase qtdeclarative qtsvg qttools
|
||||
cache: true
|
||||
|
||||
- name: Install libtorrent
|
||||
run: |
|
||||
git clone \
|
||||
--branch "v2.0.9" \
|
||||
--branch v${{ matrix.libt_version }} \
|
||||
--depth 1 \
|
||||
--recurse-submodules \
|
||||
https://github.com/arvidn/libtorrent.git
|
||||
cd libtorrent
|
||||
https://github.com/arvidn/libtorrent.git \
|
||||
${{ env.libtorrent_path }}
|
||||
cd ${{ env.libtorrent_path }}
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-Ddeprecated-functions=OFF
|
||||
cmake --build build
|
||||
sudo cmake --install build
|
||||
|
||||
- name: Download Coverity Build Tool
|
||||
run: |
|
||||
wget \
|
||||
-q \
|
||||
https://scan.coverity.com/download/linux64 \
|
||||
--post-data "token=${{ secrets.COVERITY_SCAN_TOKEN }}&project=qbittorrent%2FqBittorrent" \
|
||||
-O coverity_tool.tgz
|
||||
mkdir coverity_tool
|
||||
tar xzf coverity_tool.tgz --strip 1 -C coverity_tool
|
||||
curl \
|
||||
-L \
|
||||
-d "token=${{ secrets.COVERITY_SCAN_TOKEN }}&project=qbittorrent%2FqBittorrent" \
|
||||
-o "${{ runner.temp }}/coverity_tool.tgz" \
|
||||
"https://scan.coverity.com/download/linux64"
|
||||
mkdir -p ${{ env.coverity_path }}
|
||||
tar \
|
||||
-xf "${{ runner.temp }}/coverity_tool.tgz" \
|
||||
-C "${{ env.coverity_path }}" \
|
||||
--strip-components 1
|
||||
|
||||
- name: Build qBittorrent
|
||||
run: |
|
||||
@@ -61,11 +95,13 @@ jobs:
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DGUI=ON \
|
||||
-DQT6=ON \
|
||||
-DVERBOSE_CONFIGURE=ON
|
||||
export PATH="$(pwd)/coverity_tool/bin:$PATH"
|
||||
cov-build --dir cov-int cmake --build build
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-DVERBOSE_CONFIGURE=ON \
|
||||
-D${{ matrix.qbt_gui }}
|
||||
PATH="${{ env.coverity_path }}/bin:$PATH" \
|
||||
cov-build \
|
||||
--dir cov-int \
|
||||
cmake --build build
|
||||
|
||||
- name: Submit the result to Coverity Scan
|
||||
run: |
|
||||
|
@@ -16,3 +16,5 @@ ths = "ths"
|
||||
[default.extend-words]
|
||||
BA = "BA"
|
||||
helo = "helo"
|
||||
Pn = "Pn"
|
||||
UIU = "UIU"
|
||||
|
@@ -30,6 +30,7 @@ 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')
|
||||
@@ -47,12 +48,12 @@ def main(argv: Optional[Sequence[str]] = None) -> int:
|
||||
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")
|
||||
f"Line: {line_counter}\n"
|
||||
f"Column span: {match.span()}\n"
|
||||
f"Part: \"{match.group()}\"\n\n")
|
||||
line_counter += 1
|
||||
|
||||
except UnicodeDecodeError as error:
|
||||
except UnicodeDecodeError:
|
||||
# not a text file, skip
|
||||
continue
|
||||
|
||||
@@ -64,5 +65,6 @@ def main(argv: Optional[Sequence[str]] = None) -> int:
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
exit(main())
|
||||
|
2
.github/workflows/stale_bot.yaml
vendored
2
.github/workflows/stale_bot.yaml
vendored
@@ -12,7 +12,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Mark and close stale PRs
|
||||
uses: actions/stale@v8
|
||||
uses: actions/stale@v9
|
||||
with:
|
||||
stale-pr-message: "This PR is stale because it has been 60 days with no activity. This PR will be automatically closed within 7 days if there is no further activity."
|
||||
close-pr-message: "This PR was closed because it has been stalled for some time with no activity."
|
||||
|
5
.gitignore
vendored
5
.gitignore
vendored
@@ -1,3 +1,4 @@
|
||||
.vscode/
|
||||
src/gui/geoip/GeoIP.dat
|
||||
src/gui/geoip/GeoIP.dat.gz
|
||||
src/qbittorrent
|
||||
@@ -16,6 +17,7 @@ Makefile*
|
||||
*.o
|
||||
*.pdb
|
||||
*.exe
|
||||
*.dll
|
||||
|
||||
# Generated MOC, resource and UI files
|
||||
moc_*.cpp
|
||||
@@ -23,8 +25,7 @@ moc_*.h
|
||||
qrc_*.cpp
|
||||
ui_*.h
|
||||
*.moc
|
||||
src/lang/qbittorrent_*.qm
|
||||
src/webui/www/translations/webui_*.qm
|
||||
*.qm
|
||||
.DS_Store
|
||||
.qmake.stash
|
||||
src/qbittorrent.app
|
||||
|
@@ -13,7 +13,7 @@ repos:
|
||||
- ts
|
||||
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks.git
|
||||
rev: v4.4.0
|
||||
rev: v4.6.0
|
||||
hooks:
|
||||
- id: check-json
|
||||
name: Check JSON files
|
||||
@@ -35,6 +35,7 @@ repos:
|
||||
(?x)^(
|
||||
src/webui/www/private/css/lib/.* |
|
||||
src/webui/www/private/scripts/lib/.* |
|
||||
dist/windows/license.txt |
|
||||
test/testdata/crlf.txt
|
||||
)$
|
||||
|
||||
@@ -61,20 +62,18 @@ repos:
|
||||
exclude_types:
|
||||
- ts
|
||||
|
||||
- repo: https://github.com/codespell-project/codespell
|
||||
rev: v2.2.5
|
||||
- repo: https://github.com/codespell-project/codespell.git
|
||||
rev: v2.3.0
|
||||
hooks:
|
||||
- id: codespell
|
||||
name: Check spelling (codespell)
|
||||
args: ["--ignore-words-list", "additionals,curren,fo,ket,superseeding,te,ths"]
|
||||
args: ["--ignore-words-list", "additionals,categor,curren,fo,ist,ket,notin,searchin,sectionin,superseeding,te,ths"]
|
||||
exclude: |
|
||||
(?x)^(
|
||||
.*\.desktop |
|
||||
.*\.qrc |
|
||||
build-aux/.* |
|
||||
Changelog |
|
||||
dist/windows/installer-translations/.* |
|
||||
m4/.* |
|
||||
src/base/3rdparty/.* |
|
||||
src/searchengine/nova3/socks.py |
|
||||
src/webui/www/private/scripts/lib/.*
|
||||
@@ -82,8 +81,8 @@ repos:
|
||||
exclude_types:
|
||||
- ts
|
||||
|
||||
- repo: https://github.com/crate-ci/typos
|
||||
rev: v1.15.5
|
||||
- repo: https://github.com/crate-ci/typos.git
|
||||
rev: v1.25.0
|
||||
hooks:
|
||||
- id: typos
|
||||
name: Check spelling (typos)
|
||||
@@ -94,11 +93,8 @@ repos:
|
||||
.*\.desktop |
|
||||
.*\.qrc |
|
||||
\.pre-commit-config\.yaml |
|
||||
build-aux/.* |
|
||||
Changelog |
|
||||
configure.* |
|
||||
dist/windows/installer-translations/.* |
|
||||
m4/.* |
|
||||
src/base/3rdparty/.* |
|
||||
src/searchengine/nova3/socks.py |
|
||||
src/webui/www/private/scripts/lib/.*
|
||||
|
10
AUTHORS
10
AUTHORS
@@ -53,7 +53,7 @@ Images Authors:
|
||||
|
||||
* file: src/icons/qbittorrent-tray-dark.svg src/icons/qbittorrent-tray-light.svg
|
||||
copyright: Daniel Eguren <deguren@gmail.com>
|
||||
modified by: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im)
|
||||
modified by: now-im <now-im.d8gcu@simplelogin.com> (@now-im)
|
||||
license: LGPL
|
||||
|
||||
* folder: src/icons/
|
||||
@@ -63,7 +63,7 @@ Images Authors:
|
||||
media-seek-forward.svg, network-connect.svg, object-locked.svg, queued.svg, ratio.svg, reannounce.svg, slow_off.svg, slow.svg,
|
||||
speedometer.svg, system-log-out.svg, tags.svg, task-complete.svg, task-reject.svg, tracker-error.svg, tracker-warning.svg,
|
||||
trackerless.svg, trackers.svg, view-categories.svg
|
||||
copyright: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im) modified from La-Capitaine icon theme (https://github.com/keeferrourke/la-capitaine-icon-theme)
|
||||
copyright: now-im <now-im.d8gcu@simplelogin.com> (@now-im) modified from La-Capitaine icon theme (https://github.com/keeferrourke/la-capitaine-icon-theme)
|
||||
license: GPLv3+
|
||||
|
||||
* folder: src/icons/
|
||||
@@ -76,18 +76,18 @@ Images Authors:
|
||||
name.svg, network-server.svg, office-chart-line.svg, plugins.svg, preferences-desktop.svg, preferences-other.svg,
|
||||
preferences-system-network.svg, security-high.svg, security-low.svg, set-location.svg, torrent-creator.svg, user-group-delete.svg,
|
||||
user-group-new.svg, view-preview.svg, view-refresh.svg, view-statistics.svg, wallet-open.svg, webui.svg
|
||||
copyright: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im) modified from Ionicons icon theme (https://github.com/ionic-team/ionicons)
|
||||
copyright: now-im <now-im.d8gcu@simplelogin.com> (@now-im) modified from Ionicons icon theme (https://github.com/ionic-team/ionicons)
|
||||
license: MIT
|
||||
|
||||
* folder: src/icons/
|
||||
files: force-recheck.svg
|
||||
copyright: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im) modified from Font-Awesome icon theme (https://github.com/FortAwesome/Font-Awesome)
|
||||
copyright: now-im <now-im.d8gcu@simplelogin.com> (@now-im) modified from Font-Awesome icon theme (https://github.com/FortAwesome/Font-Awesome)
|
||||
license: CC BY 4.0 License
|
||||
|
||||
* folder: src/icons/
|
||||
files: downloading.svg, edit-clear.svg, error.svg, filter-active.svg, filter-inactive.svg, filter-stalled.svg, kt-set-max-download-speed.svg,
|
||||
kt-set-max-upload-speed.svg, list-add.svg, preferences-web-browser-cookies.svg, stalledDL.svg, stalledUP.svg
|
||||
copyright: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im)
|
||||
copyright: now-im <now-im.d8gcu@simplelogin.com> (@now-im)
|
||||
license: BSD 2-Clause License
|
||||
|
||||
Translations authors:
|
||||
|
@@ -7,15 +7,13 @@ project(qBittorrent
|
||||
)
|
||||
|
||||
# version requirements - older versions may work, but you are on your own
|
||||
set(minBoostVersion 1.71)
|
||||
set(minQt5Version 5.15.2)
|
||||
set(minQt6Version 6.2)
|
||||
set(minOpenSSLVersion 1.1.1)
|
||||
set(minBoostVersion 1.76)
|
||||
set(minQt6Version 6.5.0)
|
||||
set(minOpenSSLVersion 3.0.2)
|
||||
set(minLibtorrent1Version 1.2.19)
|
||||
set(minLibtorrentVersion 2.0.9)
|
||||
set(minLibtorrentVersion 2.0.10)
|
||||
set(minZlibVersion 1.2.11)
|
||||
|
||||
include(CheckCXXSourceCompiles) # TODO: migrate to CheckSourceCompiles in CMake >= 3.19
|
||||
include(GNUInstallDirs)
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules)
|
||||
@@ -25,21 +23,25 @@ include(FeatureOptionsSetup)
|
||||
# features, list is loosely sorted by user's interests
|
||||
feature_option(GUI "Build GUI application" ON)
|
||||
feature_option(WEBUI "Enable built-in HTTP server for remote control" ON)
|
||||
feature_option(QT6 "Build with Qt 6 instead of Qt 5" OFF)
|
||||
feature_option(STACKTRACE "Enable stacktrace support" ON)
|
||||
feature_option(TESTING "Build internal testing suite" OFF)
|
||||
feature_option(VERBOSE_CONFIGURE "Show information about PACKAGES_FOUND and PACKAGES_NOT_FOUND in the configure output (only useful for debugging the CMake build scripts)" OFF)
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
||||
feature_option_dependent(DBUS
|
||||
"Enable support for notifications and power-management features via D-Bus on Linux"
|
||||
"Enable support for notifications and power-management features via D-Bus"
|
||||
ON "GUI" OFF
|
||||
)
|
||||
endif()
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
feature_option_dependent(SYSTEMD
|
||||
"Install systemd service file. Target directory is overridable with `SYSTEMD_SERVICES_INSTALL_DIR` variable"
|
||||
OFF "NOT GUI" OFF
|
||||
)
|
||||
elseif (MSVC)
|
||||
endif()
|
||||
|
||||
if (MSVC)
|
||||
feature_option(MSVC_RUNTIME_DYNAMIC "Use MSVC dynamic runtime library (-MD) instead of static (-MT)" ON)
|
||||
endif()
|
||||
|
||||
|
@@ -276,7 +276,7 @@ struct StructName {};
|
||||
|
||||
enum EnumName {};
|
||||
|
||||
typedef QList<ClassName> SomeList;
|
||||
using SomeList = QList<ClassName>;
|
||||
|
||||
namespace NamespaceName
|
||||
{
|
||||
@@ -318,7 +318,7 @@ The headers should be ordered alphabetically within each group. \
|
||||
If there are conditionals for the same header group, then put them at the bottom of the respective group. \
|
||||
If there are conditionals that contain headers from several different header groups, then put them above the "qBittorrent's own headers" group.
|
||||
|
||||
One exception is the header containing the library version (for example, QtGlobal), this particular header isn't constrained by the aforementioned order.
|
||||
One exception is the header containing the library version (for example, QtVersionChecks), this particular header isn't constrained by the aforementioned order.
|
||||
|
||||
Example:
|
||||
|
||||
@@ -331,7 +331,7 @@ Example:
|
||||
// exceptions, headers containing version number
|
||||
#include <boost/version.hpp>
|
||||
#include <libtorrent/version.hpp>
|
||||
#include <QtGlobal>
|
||||
#include <QtVersionChecks>
|
||||
|
||||
// C++ Standard Library headers
|
||||
#include <cstdio>
|
||||
@@ -342,7 +342,7 @@ Example:
|
||||
|
||||
// System headers
|
||||
#ifdef Q_OS_WIN
|
||||
#include <Windows.h>
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
// Boost library headers
|
||||
|
@@ -2,7 +2,7 @@
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
<https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
@@ -304,8 +304,7 @@ the "copyright" line and a pointer to where the full notice is found.
|
||||
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.
|
||||
with this program; if not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
@@ -329,8 +328,8 @@ necessary. Here is a sample; alter the names:
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
<signature of Moe Ghoul>, 1 April 1989
|
||||
Moe Ghoul, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
|
24
INSTALL
24
INSTALL
@@ -3,22 +3,22 @@ qBittorrent - A BitTorrent client in C++ / Qt
|
||||
|
||||
1) Install these dependencies:
|
||||
|
||||
- Boost >= 1.71
|
||||
- Boost >= 1.76
|
||||
|
||||
- libtorrent-rasterbar 1.2.19 - 1.2.x || 2.0.9 - 2.0.x
|
||||
- libtorrent-rasterbar 1.2.19 - 1.2.x || 2.0.10 - 2.0.x
|
||||
* By Arvid Norberg, https://www.libtorrent.org/
|
||||
* Be careful: another library (the one used by rTorrent) uses a similar name
|
||||
|
||||
- OpenSSL >= 1.1.1
|
||||
- OpenSSL >= 3.0.2
|
||||
|
||||
- Qt 5.15.2 - 5.x || 6.2.0 - 6.x
|
||||
- Qt 6.5.0 - 6.x
|
||||
|
||||
- zlib >= 1.2.11
|
||||
|
||||
- pkg-config *
|
||||
* Compile-time only on *nix systems
|
||||
- CMake >= 3.16
|
||||
* Compile-time only
|
||||
|
||||
- Python >= 3.7.0
|
||||
- Python >= 3.9.0
|
||||
* Optional, run-time only
|
||||
* Used by the bundled search engine
|
||||
|
||||
@@ -28,16 +28,18 @@ Please ensure you are building with an officially supported configuration when r
|
||||
|
||||
2a) Compile and install qBittorrent with Qt graphical interface
|
||||
|
||||
$ ./configure
|
||||
$ make && make install
|
||||
$ cmake -B build -DCMAKE_BUILD_TYPE=Release
|
||||
$ cmake --build build
|
||||
$ cmake --install build
|
||||
$ qbittorrent
|
||||
|
||||
will install and execute qBittorrent.
|
||||
|
||||
2b) Compile and install qBittorrent without Qt graphical interface
|
||||
|
||||
$ ./configure --disable-gui
|
||||
$ make && make install
|
||||
$ cmake -B build -DCMAKE_BUILD_TYPE=Release -DGUI=OFF
|
||||
$ cmake --build build
|
||||
$ cmake --install build
|
||||
$ qbittorrent-nox
|
||||
|
||||
will install and execute qBittorrent.
|
||||
|
12
README.md
12
README.md
@@ -1,8 +1,7 @@
|
||||
qBittorrent - A BitTorrent client in Qt
|
||||
------------------------------------------
|
||||
|
||||
[](https://ci.appveyor.com/project/qbittorrent/qBittorrent)
|
||||
[](https://github.com/qbittorrent/qBittorrent/actions)
|
||||
[](https://github.com/qbittorrent/qBittorrent/actions)
|
||||
[](https://scan.coverity.com/projects/5494)
|
||||
********************************
|
||||
### Description:
|
||||
@@ -16,15 +15,8 @@ support as well as many features.
|
||||
The free [IP to Country Lite database](https://db-ip.com/db/download/ip-to-country-lite) by [DB-IP](https://db-ip.com/) is used for resolving the countries of peers. The database is licensed under the [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/).
|
||||
|
||||
### Installation:
|
||||
For installation, follow the instructions from INSTALL file, but simple:
|
||||
|
||||
```
|
||||
./configure
|
||||
make && make install
|
||||
qbittorrent
|
||||
```
|
||||
|
||||
will install and execute qBittorrent hopefully without any problem.
|
||||
Refer to the [INSTALL](INSTALL) file.
|
||||
|
||||
### Public key:
|
||||
Starting from v3.3.4 all source tarballs and binaries are signed.<br />
|
||||
|
18
SECURITY.md
Normal file
18
SECURITY.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# Security Policy
|
||||
|
||||
qBittorrent takes the security of our software seriously, including all source code repositories managed through our GitHub organisation.
|
||||
If you believe you have found a security vulnerability in qBittorrent, please report it to us as described below.
|
||||
|
||||
## Reporting Security Issues
|
||||
|
||||
Please do not report security vulnerabilities through public GitHub issues. Instead, please use GitHubs private vulnerability reporting functionality associated to this repository. Additionally, you may email us with all security-related inquiries and notifications at `security@qbittorrent.org`.
|
||||
|
||||
Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
|
||||
1. Type of issue
|
||||
2. Step-by-step instructions to reproduce the issue
|
||||
3. Proof-of-concept or exploit code (if possible)
|
||||
4. Potential impact of the issue, including how an attacker might exploit the issue
|
||||
|
||||
This information will help us triage your report more quickly. Any and all CVEs will be requested and issued through GitHubs private vulnerability reporting functionality, which will be published alongside the disclosure.
|
||||
|
||||
This security policy only applies to the most recent stable branch of qBittorrent. Flaws in old versions that are not present in the current stable branch will not be fixed.
|
@@ -1,4 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
aclocal -I m4
|
||||
autoconf
|
File diff suppressed because it is too large
Load Diff
1665
build-aux/config.guess
vendored
1665
build-aux/config.guess
vendored
File diff suppressed because it is too large
Load Diff
1793
build-aux/config.sub
vendored
1793
build-aux/config.sub
vendored
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user