You've already forked qBittorrent
mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-10-14 11:52:15 +02:00
Compare commits
570 Commits
release-5.
...
release-3.
Author | SHA1 | Date | |
---|---|---|---|
![]() |
4eac2cab31 | ||
![]() |
87f4f57f8e | ||
![]() |
a6e250fa43 | ||
![]() |
b118079379 | ||
![]() |
cb2d39f2a7 | ||
![]() |
4cf549ff25 | ||
![]() |
b5c6342dca | ||
![]() |
46ec556921 | ||
![]() |
33ae1a7bee | ||
![]() |
87a3a67668 | ||
![]() |
055b1e0163 | ||
![]() |
2bd5ea2c68 | ||
![]() |
1479a74198 | ||
![]() |
9a0d25284c | ||
![]() |
284e836992 | ||
![]() |
43f5b31843 | ||
![]() |
cada6cfc88 | ||
![]() |
99f157927f | ||
![]() |
664664394c | ||
![]() |
a790901691 | ||
![]() |
fdc70eaa62 | ||
![]() |
b05a23e1ab | ||
![]() |
9f6a0882e2 | ||
![]() |
b351b21e55 | ||
![]() |
ef22f06e92 | ||
![]() |
8ea7426bc1 | ||
![]() |
79e7e1727f | ||
![]() |
98c33dd77c | ||
![]() |
9c6504f6dd | ||
![]() |
76c350bdcb | ||
![]() |
106dcfd00e | ||
![]() |
668c8cb0e2 | ||
![]() |
3159bdf4dd | ||
![]() |
97d2c0d187 | ||
![]() |
0041ee3636 | ||
![]() |
1ed523bec3 | ||
![]() |
b131a6e9df | ||
![]() |
56d9d370e9 | ||
![]() |
a6efc4d92d | ||
![]() |
a77db6e822 | ||
![]() |
95a558941e | ||
![]() |
867d69d0f2 | ||
![]() |
a6d381da38 | ||
![]() |
f0eb708b07 | ||
![]() |
1d70698bd0 | ||
![]() |
79871c8e21 | ||
![]() |
25d5524213 | ||
![]() |
8d21b73434 | ||
![]() |
2ef01a314c | ||
![]() |
a8b4aca5e6 | ||
![]() |
67e7315eae | ||
![]() |
a25a15d1c6 | ||
![]() |
086588eeed | ||
![]() |
44fa308681 | ||
![]() |
6188287094 | ||
![]() |
17d10afd65 | ||
![]() |
89bd0e4397 | ||
![]() |
1c1917f885 | ||
![]() |
642377bd65 | ||
![]() |
bb4668c071 | ||
![]() |
689316db09 | ||
![]() |
ad0c008a3e | ||
![]() |
09e3698b37 | ||
![]() |
6450ebfc6c | ||
![]() |
e9f38ebcfd | ||
![]() |
4dba31f534 | ||
![]() |
04c1aad0dd | ||
![]() |
6763f3ac33 | ||
![]() |
afca704db0 | ||
![]() |
eaec8fcddd | ||
![]() |
f86fd52d6f | ||
![]() |
f3f175570c | ||
![]() |
729c80f910 | ||
![]() |
fcaca558a0 | ||
![]() |
983df9113e | ||
![]() |
acf9874252 | ||
![]() |
d7cf6bb11b | ||
![]() |
558ea53cc2 | ||
![]() |
87a6478430 | ||
![]() |
cea673b267 | ||
![]() |
4a5ab93c62 | ||
![]() |
4c86fc8973 | ||
![]() |
1c485ffb07 | ||
![]() |
f283734f13 | ||
![]() |
dca4ff0649 | ||
![]() |
1975f2269e | ||
![]() |
6fac9b42da | ||
![]() |
dabae4c914 | ||
![]() |
b1e9b4493d | ||
![]() |
2fa207e728 | ||
![]() |
7adcd909e7 | ||
![]() |
50805fc2b5 | ||
![]() |
3a1b7b6159 | ||
![]() |
498b7c2436 | ||
![]() |
4f17364305 | ||
![]() |
9ebc115719 | ||
![]() |
a6fa8c3a8e | ||
![]() |
8187366c89 | ||
![]() |
366ad01120 | ||
![]() |
4da05e5914 | ||
![]() |
3fb19b6a28 | ||
![]() |
88f59070a4 | ||
![]() |
476ffbe68a | ||
![]() |
8a1846cb26 | ||
![]() |
1cafde2afe | ||
![]() |
bdf7312f5d | ||
![]() |
a848d3d2d8 | ||
![]() |
4a328843e4 | ||
![]() |
edeb2342be | ||
![]() |
0639a06809 | ||
![]() |
7590d0fdad | ||
![]() |
fe54da80cd | ||
![]() |
e4ac654795 | ||
![]() |
1848180faa | ||
![]() |
4e9b71078f | ||
![]() |
fe1b388347 | ||
![]() |
23b4e62834 | ||
![]() |
7fb96431b9 | ||
![]() |
5213f35ec0 | ||
![]() |
8e2297510d | ||
![]() |
18505e2517 | ||
![]() |
10908a6ece | ||
![]() |
c1ee91cd2a | ||
![]() |
036b4e1a85 | ||
![]() |
3a4dc08304 | ||
![]() |
e805e6806a | ||
![]() |
f2163f6c3d | ||
![]() |
6288cb4fd3 | ||
![]() |
409e877f8a | ||
![]() |
f2d5ba2907 | ||
![]() |
b33d0f0a59 | ||
![]() |
63245de69b | ||
![]() |
b9fd9f1d8d | ||
![]() |
c6fe1d3620 | ||
![]() |
73f08dd6e1 | ||
![]() |
22dc71f365 | ||
![]() |
455cc29dad | ||
![]() |
9d39a2cddc | ||
![]() |
efeb46571b | ||
![]() |
a7b564bb2e | ||
![]() |
10df509bce | ||
![]() |
7b394d6e99 | ||
![]() |
f1968de2c9 | ||
![]() |
b5db0eeec1 | ||
![]() |
3ed803f59b | ||
![]() |
ff10702bfd | ||
![]() |
73d3664f92 | ||
![]() |
aa6025aa87 | ||
![]() |
a344886ef6 | ||
![]() |
c181019f40 | ||
![]() |
5962efde23 | ||
![]() |
d43466d466 | ||
![]() |
29fb8e8085 | ||
![]() |
b076ff68ac | ||
![]() |
5f2da3a529 | ||
![]() |
576fbe5dc1 | ||
![]() |
8fc7f3fdc0 | ||
![]() |
becd67ac84 | ||
![]() |
7761a2604a | ||
![]() |
c6546db138 | ||
![]() |
f0dd4d5673 | ||
![]() |
7f245b63d7 | ||
![]() |
af17f4df9e | ||
![]() |
3ec2f94b27 | ||
![]() |
d7f1beb7f1 | ||
![]() |
8c7a4ab86c | ||
![]() |
ce2d42a264 | ||
![]() |
dc011a5599 | ||
![]() |
3c6b79805c | ||
![]() |
7e7055f2ff | ||
![]() |
18c9a65340 | ||
![]() |
f5ce39a36a | ||
![]() |
58e4f9d38e | ||
![]() |
5bd7dce396 | ||
![]() |
d9d49b6d0b | ||
![]() |
cc48ca1fdc | ||
![]() |
2dc6002064 | ||
![]() |
1478b21e8d | ||
![]() |
726c2fd56d | ||
![]() |
df86d66702 | ||
![]() |
223415fb69 | ||
![]() |
a4c9b667a7 | ||
![]() |
5f8e05ba50 | ||
![]() |
ed2689de15 | ||
![]() |
9e124527e1 | ||
![]() |
59971aa577 | ||
![]() |
164ca0289a | ||
![]() |
c0aa50d74b | ||
![]() |
66d7dc751c | ||
![]() |
c1738f97f1 | ||
![]() |
105874613a | ||
![]() |
d6829b253b | ||
![]() |
c1291539bf | ||
![]() |
3060c979f4 | ||
![]() |
d71a18b945 | ||
![]() |
4078fc5e2d | ||
![]() |
b7cb53a251 | ||
![]() |
275a775769 | ||
![]() |
1c49ff1df6 | ||
![]() |
fc77fdbcb5 | ||
![]() |
e0e757b610 | ||
![]() |
33fe9b6d87 | ||
![]() |
fca78d1a3f | ||
![]() |
92794a786f | ||
![]() |
08d9ad7f80 | ||
![]() |
6023093329 | ||
![]() |
c070193c30 | ||
![]() |
633fb7a7de | ||
![]() |
14a37e8d45 | ||
![]() |
d03a71899e | ||
![]() |
283338f5f3 | ||
![]() |
b600253313 | ||
![]() |
c97b5ab617 | ||
![]() |
9016b698c9 | ||
![]() |
eb7a7b9c04 | ||
![]() |
9e0a3ee692 | ||
![]() |
c899ed5b50 | ||
![]() |
a6c50aff95 | ||
![]() |
ab4a608342 | ||
![]() |
e7cfd7a31d | ||
![]() |
c4ea13b284 | ||
![]() |
5d09639109 | ||
![]() |
885f5b4bee | ||
![]() |
3cd06c457a | ||
![]() |
373e22660d | ||
![]() |
92f58a40e7 | ||
![]() |
dbf5a264bd | ||
![]() |
145dcf9efe | ||
![]() |
f05e25c750 | ||
![]() |
fc02377171 | ||
![]() |
3816052b0a | ||
![]() |
fae583e0da | ||
![]() |
1114c198ca | ||
![]() |
c5f9567c0b | ||
![]() |
e9a5768e4f | ||
![]() |
858e5f8db8 | ||
![]() |
0afa83dbfa | ||
![]() |
fc95ce310e | ||
![]() |
e2c9e7b877 | ||
![]() |
b1e62ca006 | ||
![]() |
a063ebd396 | ||
![]() |
728dd744bb | ||
![]() |
a0c1ee76a2 | ||
![]() |
c7b15b9cc5 | ||
![]() |
0770fe8b09 | ||
![]() |
cf98220c40 | ||
![]() |
2eb393ae9a | ||
![]() |
d65d11d64c | ||
![]() |
f4fdb80cc9 | ||
![]() |
50a0ce1da2 | ||
![]() |
2e9370481d | ||
![]() |
c60c58b092 | ||
![]() |
ba5dded076 | ||
![]() |
eb36949e87 | ||
![]() |
b7358a3039 | ||
![]() |
d0f082e238 | ||
![]() |
b301444f5e | ||
![]() |
900a80adc1 | ||
![]() |
d4887ee736 | ||
![]() |
e23566cde1 | ||
![]() |
b5f30a6efb | ||
![]() |
deb1d54999 | ||
![]() |
7779efbc30 | ||
![]() |
acd65e3185 | ||
![]() |
f2dd050ade | ||
![]() |
9c28a48f2e | ||
![]() |
3e8af95d30 | ||
![]() |
cba9d222de | ||
![]() |
b137eb01ed | ||
![]() |
fd156580a0 | ||
![]() |
21c17f2a81 | ||
![]() |
5f19cd2c0e | ||
![]() |
9279fedd49 | ||
![]() |
2361d6f12d | ||
![]() |
78bfbc5669 | ||
![]() |
6101f11673 | ||
![]() |
15361a6c16 | ||
![]() |
835a999464 | ||
![]() |
b9b0739efd | ||
![]() |
a34c072b7a | ||
![]() |
72e88ba7ec | ||
![]() |
afb143cad1 | ||
![]() |
1ca5d10abb | ||
![]() |
67675b6cdc | ||
![]() |
ef47983d8d | ||
![]() |
cf47517ee3 | ||
![]() |
33199bbd74 | ||
![]() |
4fb735c6d1 | ||
![]() |
99ca42bf48 | ||
![]() |
f6b4b5f6f0 | ||
![]() |
6f73c32fcc | ||
![]() |
c1611988b4 | ||
![]() |
fbe1d2d78a | ||
![]() |
34fec15ceb | ||
![]() |
1977e4f24d | ||
![]() |
5774d27c7b | ||
![]() |
3a6a857371 | ||
![]() |
e2f88feaf9 | ||
![]() |
16fec04b6a | ||
![]() |
fbac4afa2d | ||
![]() |
d6e9736af1 | ||
![]() |
76b3c72c86 | ||
![]() |
ef954fea55 | ||
![]() |
11d085712e | ||
![]() |
e4bc7852e5 | ||
![]() |
3d107e0588 | ||
![]() |
8e5c31ae82 | ||
![]() |
3c03ccc14a | ||
![]() |
0795320086 | ||
![]() |
bd6877a0bd | ||
![]() |
b47292c39f | ||
![]() |
3d2b1b876b | ||
![]() |
843472e663 | ||
![]() |
e952e3167e | ||
![]() |
67f05edf71 | ||
![]() |
3ab76cb985 | ||
![]() |
509d97b0ad | ||
![]() |
67ae08df3c | ||
![]() |
38de6b1e41 | ||
![]() |
72b179805d | ||
![]() |
beeda5e0b2 | ||
![]() |
356db2f2f7 | ||
![]() |
19acbf587f | ||
![]() |
5eee3f7357 | ||
![]() |
8f990d5d7e | ||
![]() |
f0ec94c31c | ||
![]() |
e37dfa96f9 | ||
![]() |
4b48db3273 | ||
![]() |
545002a809 | ||
![]() |
e2e9470e10 | ||
![]() |
0bf1abba6a | ||
![]() |
24165856e9 | ||
![]() |
657f0640b9 | ||
![]() |
faffefc4ff | ||
![]() |
0619aacf1f | ||
![]() |
9edbbb6473 | ||
![]() |
87ee720c0c | ||
![]() |
b7ca036bc3 | ||
![]() |
c4442c98b9 | ||
![]() |
fee8036a7a | ||
![]() |
94bd4308c7 | ||
![]() |
5e5785435a | ||
![]() |
d7f02a7ee7 | ||
![]() |
e6480f9dff | ||
![]() |
e9f6cfc2e8 | ||
![]() |
4f68d263d4 | ||
![]() |
6a672472a2 | ||
![]() |
3590ac2997 | ||
![]() |
98fe5e11dd | ||
![]() |
9df5c0292b | ||
![]() |
1f2d25a1ff | ||
![]() |
f1dd7a091c | ||
![]() |
5457bde8d0 | ||
![]() |
2e325d9506 | ||
![]() |
0264a7bf58 | ||
![]() |
32fe930b88 | ||
![]() |
72883ffb73 | ||
![]() |
f2c24dd8c3 | ||
![]() |
8904139c6d | ||
![]() |
571f46886f | ||
![]() |
0cd691e167 | ||
![]() |
4f65e2d468 | ||
![]() |
35981f6ef5 | ||
![]() |
dc493880f3 | ||
![]() |
872e78ca21 | ||
![]() |
7b601796d7 | ||
![]() |
09ef552aea | ||
![]() |
b4c9cae0d1 | ||
![]() |
6d2a0ae83b | ||
![]() |
238a925000 | ||
![]() |
cce01cfb8e | ||
![]() |
b2db1972f3 | ||
![]() |
8b851fe2b9 | ||
![]() |
e3c9488fb0 | ||
![]() |
c27fb110f8 | ||
![]() |
ec61f24099 | ||
![]() |
130ee5a71e | ||
![]() |
cb3e7e6bd6 | ||
![]() |
7fd65d5428 | ||
![]() |
442f521bf5 | ||
![]() |
016052aea1 | ||
![]() |
411982e2b0 | ||
![]() |
4b93ccd4e4 | ||
![]() |
6603a8947a | ||
![]() |
031e354577 | ||
![]() |
ec7fb331e0 | ||
![]() |
a232b77104 | ||
![]() |
8c11245469 | ||
![]() |
60857d3b8e | ||
![]() |
2fe6b76968 | ||
![]() |
6c7350fce0 | ||
![]() |
c770f4d0bc | ||
![]() |
876e96911f | ||
![]() |
5620fd120e | ||
![]() |
ea7f6046b4 | ||
![]() |
fddac5d679 | ||
![]() |
2c4bc68af1 | ||
![]() |
7676f49612 | ||
![]() |
e879279019 | ||
![]() |
84b7680718 | ||
![]() |
be180140a3 | ||
![]() |
c051c279d4 | ||
![]() |
964dcc4d8a | ||
![]() |
64cf93b889 | ||
![]() |
365737afe1 | ||
![]() |
2cf14f0120 | ||
![]() |
46bb25ba9f | ||
![]() |
ee5a72c570 | ||
![]() |
18b56f4d0a | ||
![]() |
f626276218 | ||
![]() |
e28554f85c | ||
![]() |
a0a3447b2e | ||
![]() |
4049ca7308 | ||
![]() |
c28151ba92 | ||
![]() |
81e1a050a2 | ||
![]() |
34d5824c4a | ||
![]() |
bb875df400 | ||
![]() |
61f47d366a | ||
![]() |
8347eb157d | ||
![]() |
dd22c9b138 | ||
![]() |
7f6ad55042 | ||
![]() |
55b06ab9ba | ||
![]() |
21f0a5eb76 | ||
![]() |
16ed11623f | ||
![]() |
c184cf8d7d | ||
![]() |
6a90214eb2 | ||
![]() |
226ec0610a | ||
![]() |
694bd7cb95 | ||
![]() |
9e807e7151 | ||
![]() |
78fe7fcf9d | ||
![]() |
c2465f931e | ||
![]() |
8d50325961 | ||
![]() |
570a651a59 | ||
![]() |
0eaa2aeef2 | ||
![]() |
2c7e309493 | ||
![]() |
ded3cf5798 | ||
![]() |
4edac3e974 | ||
![]() |
53885fb5e4 | ||
![]() |
3942c095f6 | ||
![]() |
94be3b930d | ||
![]() |
09bc14cc57 | ||
![]() |
51b93b4284 | ||
![]() |
9c50ea14cb | ||
![]() |
42a74ea78e | ||
![]() |
1ac68a9192 | ||
![]() |
29b5d460ea | ||
![]() |
a441bca4de | ||
![]() |
e2da3f2ebd | ||
![]() |
f235d412f8 | ||
![]() |
60b103b062 | ||
![]() |
0fdb23098b | ||
![]() |
51c296ac69 | ||
![]() |
a120842ba2 | ||
![]() |
8911de9349 | ||
![]() |
013a1b8403 | ||
![]() |
1492a24391 | ||
![]() |
bf1559320b | ||
![]() |
d5648a67ae | ||
![]() |
a6ec82682d | ||
![]() |
bd359ad498 | ||
![]() |
458f48b290 | ||
![]() |
a0ae21148a | ||
![]() |
5dc9b5c2dd | ||
![]() |
48175bbb85 | ||
![]() |
3b03bb286e | ||
![]() |
23fdf3a0bc | ||
![]() |
4cf7618c52 | ||
![]() |
6fd9413dae | ||
![]() |
120d073a04 | ||
![]() |
8fa2adb6fc | ||
![]() |
70105d5834 | ||
![]() |
05961faf42 | ||
![]() |
386706f05b | ||
![]() |
1813e96a42 | ||
![]() |
eaf6e47391 | ||
![]() |
8ba82064cd | ||
![]() |
5d5a0de694 | ||
![]() |
145180c2a1 | ||
![]() |
50881b9972 | ||
![]() |
a115932bc1 | ||
![]() |
c7fd0fbe45 | ||
![]() |
d513d002cc | ||
![]() |
a570bd5e2c | ||
![]() |
bdacfd540c | ||
![]() |
c89b9edf27 | ||
![]() |
0fdf788624 | ||
![]() |
f0ae30070b | ||
![]() |
8fb8f4b467 | ||
![]() |
c3a2e50191 | ||
![]() |
b045b5ebf7 | ||
![]() |
6436152c75 | ||
![]() |
9c3ae53330 | ||
![]() |
acd5fcfb00 | ||
![]() |
9a6f8ab402 | ||
![]() |
0f854014af | ||
![]() |
a11175afba | ||
![]() |
c5776c3bf1 | ||
![]() |
19d566253f | ||
![]() |
0d59d6a03e | ||
![]() |
c7b2ee367f | ||
![]() |
510ec029ea | ||
![]() |
1f2daed9d6 | ||
![]() |
08b854ce74 | ||
![]() |
6b34803c59 | ||
![]() |
fca224b9d0 | ||
![]() |
4f5009351f | ||
![]() |
c1f77d45ab | ||
![]() |
60f0447603 | ||
![]() |
6ae208a661 | ||
![]() |
781c8034a5 | ||
![]() |
4cf8359257 | ||
![]() |
3ed4de3043 | ||
![]() |
a374b99ba2 | ||
![]() |
601734a59b | ||
![]() |
69cc97c3dd | ||
![]() |
226f74a866 | ||
![]() |
cf35392cd2 | ||
![]() |
27319e9e64 | ||
![]() |
69b8544e26 | ||
![]() |
41e5dc8911 | ||
![]() |
ba1ffa4e54 | ||
![]() |
4edc073373 | ||
![]() |
1f00d2e5d7 | ||
![]() |
d87e42ba00 | ||
![]() |
975b1d5257 | ||
![]() |
5f84363afb | ||
![]() |
545c526e2f | ||
![]() |
06fcc57619 | ||
![]() |
06c6a444c9 | ||
![]() |
8474d0d199 | ||
![]() |
0f4610c127 | ||
![]() |
d753988729 | ||
![]() |
a6b948077a | ||
![]() |
3276cc4987 | ||
![]() |
71557fe784 | ||
![]() |
29fc5bc80d | ||
![]() |
db07551e4c | ||
![]() |
8f6eb795e3 | ||
![]() |
0a37799e6e | ||
![]() |
76d6d9a4f9 | ||
![]() |
0c8abd0abb | ||
![]() |
ddc8420810 | ||
![]() |
a4ff039abc | ||
![]() |
c8be062e19 | ||
![]() |
29443a2c10 | ||
![]() |
e402556e91 | ||
![]() |
4ed4ebcdb7 | ||
![]() |
a280467270 | ||
![]() |
9b1090332b | ||
![]() |
18a520c9f9 | ||
![]() |
af871ef8af | ||
![]() |
3af7eb8e03 | ||
![]() |
3439300cda | ||
![]() |
a8027565c9 | ||
![]() |
3d4e1a8127 | ||
![]() |
7b6a1a1955 | ||
![]() |
3f8dc60680 | ||
![]() |
9be449dd7f | ||
![]() |
c46f2ba097 | ||
![]() |
c2c441ed08 | ||
![]() |
c1e52fa1cd | ||
![]() |
fbed5dc606 | ||
![]() |
97978068c6 | ||
![]() |
006e34880a | ||
![]() |
1fd5c5d8b5 | ||
![]() |
68ac9fda2d | ||
![]() |
c5d807ef65 | ||
![]() |
e17f10ae6b | ||
![]() |
78c5d1c12f | ||
![]() |
26fb54299b |
52
.appveyor.yml
Normal file
52
.appveyor.yml
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
version: '{branch}-{build}'
|
||||||
|
|
||||||
|
# Do not build on tags (GitHub only)
|
||||||
|
skip_tags: true
|
||||||
|
|
||||||
|
os: Visual Studio 2015
|
||||||
|
|
||||||
|
environment:
|
||||||
|
REPO_DIR: &REPO_DIR c:\qbittorrent
|
||||||
|
CACHE_DIR: &CACHE_DIR c:\qbt_cache
|
||||||
|
|
||||||
|
QBT_VER_URL: https://builds.shiki.hu/appveyor/version
|
||||||
|
QBT_LIB_URL: https://builds.shiki.hu/appveyor/qbt_libraries.7z
|
||||||
|
|
||||||
|
# project directory
|
||||||
|
clone_folder: *REPO_DIR
|
||||||
|
|
||||||
|
# cache size should < 100MB (after compressing with fastest option):
|
||||||
|
# see: https://www.appveyor.com/docs/build-cache#save-update-cache-before-build-finishes
|
||||||
|
cache:
|
||||||
|
- *CACHE_DIR
|
||||||
|
|
||||||
|
install:
|
||||||
|
# check if library needs update
|
||||||
|
- appveyor DownloadFile "%QBT_VER_URL%" -FileName "c:\version_new" && SET /P newVersion=<"c:\version_new"
|
||||||
|
- IF EXIST "%CACHE_DIR%\version" (SET /P oldVersion=<"%CACHE_DIR%\version")
|
||||||
|
- IF NOT EXIST "%CACHE_DIR%\version" (SET updateCache=1)
|
||||||
|
- IF NOT "%oldVersion%" == "%newVersion%" (SET updateCache=1)
|
||||||
|
# update library
|
||||||
|
- IF "%updateCache%" == "1" (ECHO "--- Will redownload libraries ---" &&
|
||||||
|
RMDIR /S /Q "%CACHE_DIR%" & MKDIR "%CACHE_DIR%" &&
|
||||||
|
appveyor DownloadFile "%QBT_LIB_URL%" -FileName "c:\qbt_lib.7z" && 7z x "c:\qbt_lib.7z" -o"%CACHE_DIR%" > nul &&
|
||||||
|
COPY "c:\version_new" "%CACHE_DIR%\version")
|
||||||
|
# Qt stay compressed in cache
|
||||||
|
- 7z x "%CACHE_DIR%\qt5_32.7z" -o"c:\qbt" > nul
|
||||||
|
|
||||||
|
before_build:
|
||||||
|
# setup env
|
||||||
|
- CALL "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\vcvars32.bat"
|
||||||
|
- SET PATH=%PATH%;c:\qbt\qt5_32\bin;%CACHE_DIR%\jom;
|
||||||
|
# setup project
|
||||||
|
- COPY /Y "%CACHE_DIR%\winconf.pri" "%REPO_DIR%"
|
||||||
|
- COPY /Y "%CACHE_DIR%\winconf-msvc.pri" "%REPO_DIR%"
|
||||||
|
# workarounds
|
||||||
|
- MKLINK /J "c:\qbt\base" "%CACHE_DIR%\base"
|
||||||
|
|
||||||
|
build_script:
|
||||||
|
- cd "%REPO_DIR%"
|
||||||
|
- qmake qbittorrent.pro && cd src && qmake src.pro
|
||||||
|
- jom -j2 -f Makefile.Release
|
||||||
|
|
||||||
|
test: off
|
81
.clang-tidy
81
.clang-tidy
@@ -1,81 +0,0 @@
|
|||||||
Checks: >
|
|
||||||
bugprone-*,
|
|
||||||
cert-*,
|
|
||||||
concurrency-*,
|
|
||||||
cppcoreguidelines-*,
|
|
||||||
misc-*,
|
|
||||||
modernize-*,
|
|
||||||
performance-*,
|
|
||||||
portability-*,
|
|
||||||
readability-*,
|
|
||||||
-# not applicable at all,
|
|
||||||
-bugprone-easily-swappable-parameters,
|
|
||||||
-bugprone-implicit-widening-of-multiplication-result,
|
|
||||||
-bugprone-macro-parentheses,
|
|
||||||
-cppcoreguidelines-avoid-c-arrays,
|
|
||||||
-cppcoreguidelines-avoid-magic-numbers,
|
|
||||||
-cppcoreguidelines-avoid-non-const-global-variables,
|
|
||||||
-cppcoreguidelines-macro-usage,
|
|
||||||
-cppcoreguidelines-non-private-member-variables-in-classes,
|
|
||||||
-cppcoreguidelines-owning-memory,
|
|
||||||
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
|
|
||||||
-cppcoreguidelines-pro-bounds-constant-array-index,
|
|
||||||
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
|
|
||||||
-cppcoreguidelines-pro-type-const-cast,
|
|
||||||
-cppcoreguidelines-pro-type-reinterpret-cast,
|
|
||||||
-cppcoreguidelines-pro-type-union-access,
|
|
||||||
-cppcoreguidelines-pro-type-vararg,
|
|
||||||
-cppcoreguidelines-special-member-functions,
|
|
||||||
-cppcoreguidelines-virtual-class-destructor,
|
|
||||||
-misc-no-recursion,
|
|
||||||
-misc-non-private-member-variables-in-classes,
|
|
||||||
-misc-unused-parameters,
|
|
||||||
-modernize-avoid-c-arrays,
|
|
||||||
-modernize-pass-by-value,
|
|
||||||
-modernize-use-auto,
|
|
||||||
-modernize-use-nodiscard,
|
|
||||||
-modernize-use-trailing-return-type,
|
|
||||||
-readability-function-cognitive-complexity,
|
|
||||||
-readability-function-size,
|
|
||||||
-readability-identifier-length,
|
|
||||||
-readability-implicit-bool-conversion,
|
|
||||||
-readability-isolate-declaration,
|
|
||||||
-readability-magic-numbers,
|
|
||||||
-readability-named-parameter,
|
|
||||||
-readability-redundant-access-specifiers,
|
|
||||||
-readability-simplify-boolean-expr,
|
|
||||||
-readability-uppercase-literal-suffix,
|
|
||||||
-# only sometimes useful,
|
|
||||||
-bugprone-narrowing-conversions,
|
|
||||||
-cert-dcl58-cpp,
|
|
||||||
-cert-err33-c,
|
|
||||||
-cert-err58-cpp,
|
|
||||||
-clang-analyzer-core.CallAndMessage,
|
|
||||||
-clang-analyzer-cplusplus.NewDelete,
|
|
||||||
-clang-analyzer-cplusplus.NewDeleteLeaks,
|
|
||||||
-concurrency-mt-unsafe,
|
|
||||||
-cppcoreguidelines-init-variables,
|
|
||||||
-cppcoreguidelines-narrowing-conversions,
|
|
||||||
-cppcoreguidelines-prefer-member-initializer,
|
|
||||||
-cppcoreguidelines-pro-type-static-cast-downcast,
|
|
||||||
-misc-definitions-in-headers,
|
|
||||||
-modernize-concat-nested-namespaces,
|
|
||||||
-modernize-loop-convert,
|
|
||||||
-modernize-raw-string-literal,
|
|
||||||
-modernize-unary-static-assert,
|
|
||||||
-performance-no-automatic-move,
|
|
||||||
-readability-convert-member-functions-to-static,
|
|
||||||
-readability-else-after-return,
|
|
||||||
-readability-redundant-declaration,
|
|
||||||
-# obsoleted,
|
|
||||||
-cert-dcl21-cpp
|
|
||||||
|
|
||||||
CheckOptions:
|
|
||||||
- { key: cppcoreguidelines-explicit-virtual-functions.IgnoreDestructors, value: true }
|
|
||||||
- { key: modernize-use-override.IgnoreDestructors, value: true }
|
|
||||||
- { key: performance-for-range-copy.AllowedTypes, value: "QJsonValue" }
|
|
||||||
- { key: performance-for-range-copy.WarnOnAllAutoCopies, value: true }
|
|
||||||
- { key: readability-braces-around-statements.ShortStatementLines, value: 3 }
|
|
||||||
|
|
||||||
HeaderFilterRegex: ".+/src/.*\\.h"
|
|
||||||
WarningsAsErrors: "*"
|
|
@@ -1,14 +0,0 @@
|
|||||||
# EditorConfig is awesome: https://EditorConfig.org
|
|
||||||
|
|
||||||
root = true
|
|
||||||
|
|
||||||
[*]
|
|
||||||
charset = utf-8
|
|
||||||
end_of_line = lf
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 4
|
|
||||||
insert_final_newline = true
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
|
|
||||||
[**.yml]
|
|
||||||
indent_size = 2
|
|
11
.gitattributes
vendored
11
.gitattributes
vendored
@@ -1,10 +1,7 @@
|
|||||||
core.eol=lf
|
core.eol=lf
|
||||||
* text eol=lf
|
* text eol=lf
|
||||||
*.icns binary
|
|
||||||
*.ico binary
|
|
||||||
*.png binary
|
|
||||||
*.qm binary
|
|
||||||
*.zip binary
|
*.zip binary
|
||||||
|
*.png binary
|
||||||
dist/windows/license.txt text eol=crlf
|
*.ico binary
|
||||||
test/testdata/crlf.txt text eol=crlf
|
*.qm binary
|
||||||
|
*.icns binary
|
||||||
|
1
.github/FUNDING.yml
vendored
1
.github/FUNDING.yml
vendored
@@ -1 +0,0 @@
|
|||||||
custom: "https://www.qbittorrent.org/donate.php"
|
|
76
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
76
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -1,76 +0,0 @@
|
|||||||
name: Bug Report
|
|
||||||
description: File a bug report to help improve qBittorrent user experience.
|
|
||||||
body:
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
#### ADVISORY
|
|
||||||
"We do not support any versions older than the current release series"
|
|
||||||
|
|
||||||
"We do not support any 3rd party/forked versions e.g. `portableapps`/`Enhanced Edition`etc."
|
|
||||||
|
|
||||||
"Please post all details in **English**."
|
|
||||||
|
|
||||||
#### Prerequisites before submitting an issue!
|
|
||||||
- Read the issue reporting section in the **[contributing guidelines](https://github.com/qbittorrent/qBittorrent/blob/master/CONTRIBUTING.md)**, to know how to submit a good bug report with the required information.
|
|
||||||
- Verify that the issue is not fixed and is reproducible in the **[latest official qBittorrent version](https://www.qbittorrent.org/download.php).**
|
|
||||||
- (Optional, but recommended) Verify that the issue is not fixed and is reproducible in the latest CI (currently only on **[Windows](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_windows.yaml?query=branch%3Amaster+event%3Apush)**) builds.
|
|
||||||
- Check the **[frequent/common issues list](https://github.com/qbittorrent/qBittorrent/projects/2)** and perform a **[search of the issue tracker (including closed ones)](https://github.com/qbittorrent/qBittorrent/issues)** to avoid posting a duplicate.
|
|
||||||
- Make sure this is not a support request or question, both of which are better suited for either the **[discussions section](https://github.com/qbittorrent/qBittorrent/discussions)**, **[forum](https://qbforums.shiki.hu/)**, or **[subreddit](https://www.reddit.com/r/qBittorrent/)**.
|
|
||||||
- Verify that the **[wiki](https://github.com/qbittorrent/qBittorrent/wiki)** did not contain a suitable solution either.
|
|
||||||
- If relevant to issue/when asked, the qBittorrent preferences file, qBittorrent.log & watched_folders.json (if using "Watched Folders" feature) must be provided.
|
|
||||||
See **[Where does qBittorrent save its settings?](https://github.com/qbittorrent/qBittorrent/wiki/Frequently-Asked-Questions#Where_does_qBittorrent_save_its_settings)**
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: qBittorrent & operating system versions
|
|
||||||
description: |
|
|
||||||
Qt and libtorrent-rasterbar versions are required when: 1. You are using linux. 2. You are not using an official build downloaded from our website.
|
|
||||||
|
|
||||||
Example of preferred formatting:
|
|
||||||
qBittorrent: 4.3.7 x64
|
|
||||||
Operating system: Windows 10 Pro 21H1/2009 x64
|
|
||||||
Qt: 5.15.2
|
|
||||||
libtorrent-rasterbar: 1.2.14
|
|
||||||
placeholder: |
|
|
||||||
qBittorrent:
|
|
||||||
Operating system:
|
|
||||||
Qt:
|
|
||||||
libtorrent-rasterbar:
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: What is the problem?
|
|
||||||
description: Please add the "crash report" (if encountered) or give a clear and concise description of problem.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Steps to reproduce
|
|
||||||
description: Please provide reliable steps to reproduce the problem.
|
|
||||||
placeholder: |
|
|
||||||
1. First step
|
|
||||||
2. Second step
|
|
||||||
3. and so on...
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Additional context
|
|
||||||
description: Add screenshots etc. (Anything that will provide more context about the problem)
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Log(s) & preferences file(s)
|
|
||||||
description: |
|
|
||||||
Add these files: qBittorrent preferences file, qBittorrent.log & watched_folders.json (if using "Watched Folders" feature).
|
|
||||||
See **[Where does qBittorrent save its settings?](https://github.com/qbittorrent/qBittorrent/wiki/Frequently-Asked-Questions#Where_does_qBittorrent_save_its_settings)**
|
|
||||||
#### Note: It's the user's responsibility to redact any sensitive information
|
|
||||||
validations:
|
|
||||||
required: false
|
|
17
.github/ISSUE_TEMPLATE/config.yml
vendored
17
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1,17 +0,0 @@
|
|||||||
blank_issues_enabled: false
|
|
||||||
contact_links:
|
|
||||||
- name: Wiki
|
|
||||||
url: "https://github.com/qbittorrent/qBittorrent/wiki/"
|
|
||||||
about: "Consult the wiki first (especially the FAQ), it might already contain the information you are looking for"
|
|
||||||
|
|
||||||
- name: Question
|
|
||||||
url: "https://github.com/qbittorrent/qBittorrent/discussions"
|
|
||||||
about: "Please ask questions related to usage/setup/support/non-issue development discussion in the Discussions section"
|
|
||||||
|
|
||||||
- name: Question
|
|
||||||
url: "http://forum.qbittorrent.org/"
|
|
||||||
about: "Alternatively, ask on the official forum"
|
|
||||||
|
|
||||||
- name: Question
|
|
||||||
url: "https://www.reddit.com/r/qBittorrent/"
|
|
||||||
about: "Alternatively, use the subreddit"
|
|
37
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
37
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@@ -1,37 +0,0 @@
|
|||||||
name: Feature Request
|
|
||||||
description: Suggest a new feature or enhancement for qBittorrent.
|
|
||||||
labels: ["Feature request"]
|
|
||||||
body:
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
#### ADVISORY
|
|
||||||
|
|
||||||
"Please post all details in **English**."
|
|
||||||
|
|
||||||
#### Prerequisites before submitting a feature request!
|
|
||||||
- Read the feature request section in the **[contributing guidelines](https://github.com/qbittorrent/qBittorrent/blob/master/CONTRIBUTING.md)**, to know how to submit a good feature request with the required information.
|
|
||||||
- Verify that the feature being requested is not available in the **[latest official qBittorrent version](https://www.qbittorrent.org/download.php).**
|
|
||||||
- (Optional but recommended) Verify that the feature being requested is not available in the latest CI (**[macOS](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_macos.yaml?query=branch%3Amaster+event%3Apush)** / **[Ubuntu](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_ubuntu.yaml?query=branch%3Amaster+event%3Apush)** / **[Windows](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_windows.yaml?query=branch%3Amaster+event%3Apush)**) builds.
|
|
||||||
- Search the issue tracker with the **[feature request filter](https://github.com/qbittorrent/qBittorrent/issues?q=is%3Aopen+is%3Aissue+label%3A%22Feature+request%22)** for similar feature requests (including closed ones) to avoid posting a duplicate.
|
|
||||||
- Make sure this is not a support request or question, both of which are better suited for either the **[discussions section](https://github.com/qbittorrent/qBittorrent/discussions)**, **[forum](https://qbforums.shiki.hu/)**, or **[subreddit](https://www.reddit.com/r/qBittorrent/)**.
|
|
||||||
- Verify that the **[wiki](https://github.com/qbittorrent/qBittorrent/wiki)** did not contain a suitable solution either.
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Suggestion
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Use case
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Extra info/examples/attachments
|
|
||||||
description: Add screenshots etc. (Anything that will give us more context about what is being requested!)
|
|
||||||
validations:
|
|
||||||
required: false
|
|
5
.github/PULL_REQUEST_TEMPLATE.md
vendored
5
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -1,5 +0,0 @@
|
|||||||
<!--
|
|
||||||
MANDATORY Before submitting your work, make sure you have:
|
|
||||||
1. Read https://github.com/qbittorrent/qBittorrent/blob/master/CONTRIBUTING.md#opening-a-pull-request
|
|
||||||
2. Delete this comment block
|
|
||||||
-->
|
|
18
.github/SUPPORT.md
vendored
18
.github/SUPPORT.md
vendored
@@ -1,18 +0,0 @@
|
|||||||
# Support Resources
|
|
||||||
|
|
||||||
The issue tracker is only for bug reports/feature requests related to the project itself.
|
|
||||||
|
|
||||||
Please do not use the issue tracker for questions about general program usage,
|
|
||||||
how BitTorrent (the protocol) works in general, etc.
|
|
||||||
|
|
||||||
For such questions, use one of the following community support resources:
|
|
||||||
|
|
||||||
* The [discussions section][discussions-url]
|
|
||||||
|
|
||||||
* The [official forum][forum-url]
|
|
||||||
|
|
||||||
* The [qBittorrent subreddit][subreddit-url]
|
|
||||||
|
|
||||||
[discussions-url]: https://github.com/qbittorrent/qBittorrent/discussions
|
|
||||||
[forum-url]: http://forum.qbittorrent.org/
|
|
||||||
[subreddit-url]: https://www.reddit.com/r/qBittorrent/
|
|
15
.github/dependabot.yml
vendored
15
.github/dependabot.yml
vendored
@@ -1,15 +0,0 @@
|
|||||||
version: 2
|
|
||||||
|
|
||||||
updates:
|
|
||||||
- package-ecosystem: "github-actions"
|
|
||||||
directory: "/"
|
|
||||||
commit-message:
|
|
||||||
prefix: "GHA CI"
|
|
||||||
groups:
|
|
||||||
github-actions:
|
|
||||||
patterns:
|
|
||||||
- "*"
|
|
||||||
labels:
|
|
||||||
- "CI"
|
|
||||||
schedule:
|
|
||||||
interval: "monthly"
|
|
44
.github/workflows/ci_file_health.yaml
vendored
44
.github/workflows/ci_file_health.yaml
vendored
@@ -1,44 +0,0 @@
|
|||||||
name: CI - File health
|
|
||||||
|
|
||||||
on: [pull_request, push]
|
|
||||||
|
|
||||||
permissions: {}
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
ci:
|
|
||||||
name: Check
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Install tools
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: "*"
|
|
||||||
|
|
||||||
- name: Check files
|
|
||||||
uses: pre-commit/action@v3.0.1
|
|
||||||
|
|
||||||
- name: Check doc
|
|
||||||
env:
|
|
||||||
pandoc_path: "${{ github.workspace }}/../pandoc"
|
|
||||||
run: |
|
|
||||||
# install pandoc
|
|
||||||
curl \
|
|
||||||
-L \
|
|
||||||
-o "${{ runner.temp }}/pandoc.tar.gz" \
|
|
||||||
"https://github.com/jgm/pandoc/releases/download/3.1.7/pandoc-3.1.7-linux-amd64.tar.gz"
|
|
||||||
tar -xf "${{ runner.temp }}/pandoc.tar.gz" -C "${{ github.workspace }}/.."
|
|
||||||
mv "${{ github.workspace }}/.."/pandoc-* "${{ env.pandoc_path }}"
|
|
||||||
# run pandoc
|
|
||||||
for lang in doc/*/; do
|
|
||||||
"${{ env.pandoc_path }}/bin/pandoc" -f markdown -t man -s "$lang/qbittorrent.1.md" -o "$lang/qbittorrent.1"
|
|
||||||
"${{ env.pandoc_path }}/bin/pandoc" -f markdown -t man -s "$lang/qbittorrent-nox.1.md" -o "$lang/qbittorrent-nox.1"
|
|
||||||
done
|
|
||||||
# check diff, ignore "Automatically generated by ..." part
|
|
||||||
git diff -I '\.\\".*' --exit-code
|
|
149
.github/workflows/ci_macos.yaml
vendored
149
.github/workflows/ci_macos.yaml
vendored
@@ -1,149 +0,0 @@
|
|||||||
name: CI - macOS
|
|
||||||
|
|
||||||
on: [pull_request, push]
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
actions: write
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
ci:
|
|
||||||
name: Build
|
|
||||||
runs-on: macos-latest
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
libt_version: ["2.0.10", "1.2.19"]
|
|
||||||
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
|
||||||
qt_version: ["6.7.0"]
|
|
||||||
|
|
||||||
env:
|
|
||||||
boost_path: "${{ github.workspace }}/../boost"
|
|
||||||
libtorrent_path: "${{ github.workspace }}/../libtorrent"
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
uses: Wandalen/wretry.action@v3
|
|
||||||
env:
|
|
||||||
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
|
|
||||||
HOMEBREW_NO_INSTALL_CLEANUP: 1
|
|
||||||
with:
|
|
||||||
attempt_delay: 20000
|
|
||||||
attempt_limit: 6
|
|
||||||
command: |
|
|
||||||
brew update > /dev/null
|
|
||||||
brew install \
|
|
||||||
cmake ninja \
|
|
||||||
openssl@3 zlib
|
|
||||||
|
|
||||||
- name: Setup ccache
|
|
||||||
uses: Chocobo1/setup-ccache-action@v1
|
|
||||||
with:
|
|
||||||
store_cache: ${{ 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: "85"
|
|
||||||
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@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: |
|
|
||||||
git clone \
|
|
||||||
--branch v${{ matrix.libt_version }} \
|
|
||||||
--depth 1 \
|
|
||||||
--recurse-submodules \
|
|
||||||
https://github.com/arvidn/libtorrent.git \
|
|
||||||
${{ env.libtorrent_path }}
|
|
||||||
cd ${{ env.libtorrent_path }}
|
|
||||||
cmake \
|
|
||||||
-B build \
|
|
||||||
-G "Ninja" \
|
|
||||||
-DBUILD_SHARED_LIBS=OFF \
|
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
|
||||||
-DCMAKE_CXX_STANDARD=17 \
|
|
||||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
|
||||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
|
||||||
-Ddeprecated-functions=OFF
|
|
||||||
cmake --build build
|
|
||||||
sudo cmake --install build
|
|
||||||
|
|
||||||
- name: Build qBittorrent
|
|
||||||
run: |
|
|
||||||
CXXFLAGS="$CXXFLAGS -Werror -Wno-error=deprecated-declarations" \
|
|
||||||
LDFLAGS="$LDFLAGS -gz" \
|
|
||||||
cmake \
|
|
||||||
-B build \
|
|
||||||
-G "Ninja" \
|
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
|
||||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
|
||||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
|
||||||
-DTESTING=ON \
|
|
||||||
-DVERBOSE_CONFIGURE=ON \
|
|
||||||
-D${{ matrix.qbt_gui }}
|
|
||||||
cmake --build build --target qbt_update_translations
|
|
||||||
cmake --build build
|
|
||||||
cmake --build build --target check
|
|
||||||
|
|
||||||
- name: Prepare build artifacts
|
|
||||||
run: |
|
|
||||||
# create .dmg
|
|
||||||
appName="qbittorrent"
|
|
||||||
if [ "${{ matrix.qbt_gui }}" = "GUI=OFF" ]; then
|
|
||||||
appName="qbittorrent-nox"
|
|
||||||
fi
|
|
||||||
# package
|
|
||||||
pushd build
|
|
||||||
PACKAGE_RETRY=0
|
|
||||||
while [ "$PACKAGE_RETRY" -lt "3" ]; do
|
|
||||||
macdeployqt "$appName.app" -dmg -no-strip
|
|
||||||
if [ -f "$appName.dmg" ]; then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
sleep 5
|
|
||||||
PACKAGE_RETRY=$((PACKAGE_RETRY + 1))
|
|
||||||
echo "Retry $PACKAGE_RETRY..."
|
|
||||||
done
|
|
||||||
popd
|
|
||||||
# prepare upload folder
|
|
||||||
mkdir upload
|
|
||||||
cp "build/$appName.dmg" upload
|
|
||||||
mkdir upload/cmake
|
|
||||||
cp build/compile_commands.json upload/cmake
|
|
||||||
mkdir upload/cmake/libtorrent
|
|
||||||
cp ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent
|
|
||||||
|
|
||||||
- name: Upload build artifacts
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: qBittorrent-CI_macOS_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
|
|
||||||
path: upload
|
|
89
.github/workflows/ci_python.yaml
vendored
89
.github/workflows/ci_python.yaml
vendored
@@ -1,89 +0,0 @@
|
|||||||
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.7'
|
|
||||||
|
|
||||||
- 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
|
|
170
.github/workflows/ci_ubuntu.yaml
vendored
170
.github/workflows/ci_ubuntu.yaml
vendored
@@ -1,170 +0,0 @@
|
|||||||
name: CI - Ubuntu
|
|
||||||
|
|
||||||
on: [pull_request, push]
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
actions: write
|
|
||||||
security-events: write
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
ci:
|
|
||||||
name: Build
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
libt_version: ["2.0.10", "1.2.19"]
|
|
||||||
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
|
||||||
qt_version: ["6.5.2"]
|
|
||||||
|
|
||||||
env:
|
|
||||||
boost_path: "${{ github.workspace }}/../boost"
|
|
||||||
harden_flags: "-D_FORTIFY_SOURCE=2 -D_GLIBCXX_ASSERTIONS"
|
|
||||||
libtorrent_path: "${{ github.workspace }}/../libtorrent"
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
sudo apt update
|
|
||||||
sudo apt install \
|
|
||||||
build-essential cmake ninja-build \
|
|
||||||
libssl-dev libxkbcommon-x11-dev libxcb-cursor-dev zlib1g-dev
|
|
||||||
|
|
||||||
- name: Setup ccache
|
|
||||||
uses: Chocobo1/setup-ccache-action@v1
|
|
||||||
with:
|
|
||||||
store_cache: ${{ 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@v4
|
|
||||||
with:
|
|
||||||
version: ${{ matrix.qt_version }}
|
|
||||||
archives: icu qtbase qtdeclarative qtsvg qttools
|
|
||||||
cache: true
|
|
||||||
|
|
||||||
- name: Install libtorrent
|
|
||||||
run: |
|
|
||||||
git clone \
|
|
||||||
--branch v${{ matrix.libt_version }} \
|
|
||||||
--depth 1 \
|
|
||||||
--recurse-submodules \
|
|
||||||
https://github.com/arvidn/libtorrent.git \
|
|
||||||
${{ env.libtorrent_path }}
|
|
||||||
cd ${{ env.libtorrent_path }}
|
|
||||||
CXXFLAGS="$CXXFLAGS ${{ env.harden_flags }}" \
|
|
||||||
cmake \
|
|
||||||
-B build \
|
|
||||||
-G "Ninja" \
|
|
||||||
-DBUILD_SHARED_LIBS=OFF \
|
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
|
||||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
|
||||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
|
||||||
-Ddeprecated-functions=OFF
|
|
||||||
cmake --build build
|
|
||||||
sudo cmake --install build
|
|
||||||
|
|
||||||
# to avoid scanning 3rdparty codebases, initialize it just before building qbt
|
|
||||||
- name: Initialize CodeQL
|
|
||||||
uses: github/codeql-action/init@v3
|
|
||||||
if: startsWith(matrix.libt_version, 2) && (matrix.qbt_gui == 'GUI=ON')
|
|
||||||
with:
|
|
||||||
config-file: ./.github/workflows/helper/codeql/cpp.yaml
|
|
||||||
languages: cpp
|
|
||||||
|
|
||||||
- name: Build qBittorrent
|
|
||||||
run: |
|
|
||||||
CXXFLAGS="$CXXFLAGS ${{ env.harden_flags }} -Werror" \
|
|
||||||
LDFLAGS="$LDFLAGS -gz" \
|
|
||||||
cmake \
|
|
||||||
-B build \
|
|
||||||
-G "Ninja" \
|
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
|
||||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
|
||||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
|
||||||
-DCMAKE_INSTALL_PREFIX="/usr" \
|
|
||||||
-DTESTING=ON \
|
|
||||||
-DVERBOSE_CONFIGURE=ON \
|
|
||||||
-D${{ matrix.qbt_gui }}
|
|
||||||
cmake --build build --target qbt_update_translations
|
|
||||||
cmake --build build
|
|
||||||
cmake --build build --target check
|
|
||||||
DESTDIR="qbittorrent" cmake --install build
|
|
||||||
|
|
||||||
- name: Run CodeQL analysis
|
|
||||||
uses: github/codeql-action/analyze@v3
|
|
||||||
if: startsWith(matrix.libt_version, 2) && (matrix.qbt_gui == 'GUI=ON')
|
|
||||||
with:
|
|
||||||
category: ${{ github.base_ref || github.ref_name }}
|
|
||||||
|
|
||||||
- name: Prepare build artifacts
|
|
||||||
run: |
|
|
||||||
mkdir upload
|
|
||||||
mkdir upload/cmake
|
|
||||||
cp build/compile_commands.json upload/cmake
|
|
||||||
mkdir upload/cmake/libtorrent
|
|
||||||
cp ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent
|
|
||||||
|
|
||||||
- name: Install AppImage
|
|
||||||
run: |
|
|
||||||
sudo apt install libfuse2
|
|
||||||
curl \
|
|
||||||
-L \
|
|
||||||
-Z \
|
|
||||||
-O https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-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: Prepare files for AppImage
|
|
||||||
if: matrix.qbt_gui == 'GUI=OFF'
|
|
||||||
run: |
|
|
||||||
mkdir -p qbittorrent/usr/share/applications
|
|
||||||
cp .github/workflows/helper/appimage/org.qbittorrent.qBittorrent.desktop qbittorrent/usr/share/applications/org.qbittorrent.qBittorrent.desktop
|
|
||||||
mkdir -p qbittorrent/usr/share/icons/hicolor/scalable/apps
|
|
||||||
cp dist/unix/menuicons/scalable/apps/qbittorrent.svg qbittorrent/usr/share/icons/hicolor/scalable/apps/qbittorrent.svg
|
|
||||||
|
|
||||||
- name: Package AppImage
|
|
||||||
run: |
|
|
||||||
./linuxdeploy-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-static-x86_64.AppImage --appdir qbittorrent --output appimage
|
|
||||||
|
|
||||||
- name: Upload build artifacts
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: qBittorrent-CI_Ubuntu-x64_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
|
|
||||||
path: upload
|
|
48
.github/workflows/ci_webui.yaml
vendored
48
.github/workflows/ci_webui.yaml
vendored
@@ -1,48 +0,0 @@
|
|||||||
name: CI - WebUI
|
|
||||||
|
|
||||||
on: [pull_request, push]
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
security-events: write
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
ci:
|
|
||||||
name: Check
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: src/webui/www
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup nodejs
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: 'lts/*'
|
|
||||||
|
|
||||||
- name: Install tools
|
|
||||||
run: npm install
|
|
||||||
|
|
||||||
- name: Lint code
|
|
||||||
run: npm run lint
|
|
||||||
|
|
||||||
- name: Format code
|
|
||||||
run: |
|
|
||||||
npm run format
|
|
||||||
git diff --exit-code
|
|
||||||
|
|
||||||
- name: Initialize CodeQL
|
|
||||||
uses: github/codeql-action/init@v3
|
|
||||||
with:
|
|
||||||
config-file: .github/workflows/helper/codeql/js.yaml
|
|
||||||
languages: javascript
|
|
||||||
|
|
||||||
- name: Run CodeQL analysis
|
|
||||||
uses: github/codeql-action/analyze@v3
|
|
198
.github/workflows/ci_windows.yaml
vendored
198
.github/workflows/ci_windows.yaml
vendored
@@ -1,198 +0,0 @@
|
|||||||
name: CI - Windows
|
|
||||||
|
|
||||||
on: [pull_request, push]
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
actions: write
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
ci:
|
|
||||||
name: Build
|
|
||||||
runs-on: windows-latest
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
libt_version: ["2.0.10", "1.2.19"]
|
|
||||||
|
|
||||||
env:
|
|
||||||
boost_path: "${{ github.workspace }}/../boost"
|
|
||||||
libtorrent_path: "${{ github.workspace }}/../libtorrent"
|
|
||||||
vcpkg_path: "c:/vcpkg"
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup devcmd
|
|
||||||
uses: ilammy/msvc-dev-cmd@v1
|
|
||||||
|
|
||||||
- name: Install build tools
|
|
||||||
run: |
|
|
||||||
if ((Get-Command "ninja.exe" -ErrorAction SilentlyContinue) -eq $null)
|
|
||||||
{
|
|
||||||
choco install ninja
|
|
||||||
}
|
|
||||||
where.exe ninja
|
|
||||||
ninja --version
|
|
||||||
|
|
||||||
# https://learn.microsoft.com/en-us/vcpkg/users/binarycaching#gha
|
|
||||||
- name: Set variables for vcpkg
|
|
||||||
uses: actions/github-script@v7
|
|
||||||
with:
|
|
||||||
script: |
|
|
||||||
core.exportVariable('ACTIONS_CACHE_URL', (process.env.ACTIONS_CACHE_URL || ''));
|
|
||||||
core.exportVariable('ACTIONS_RUNTIME_TOKEN', (process.env.ACTIONS_RUNTIME_TOKEN || ''));
|
|
||||||
|
|
||||||
- name: Install dependencies with vcpkg
|
|
||||||
run: |
|
|
||||||
# create our own triplet
|
|
||||||
New-Item `
|
|
||||||
-Force `
|
|
||||||
-ItemType File `
|
|
||||||
-Path "${{ env.vcpkg_path }}/triplets_overlay/x64-windows-static-md-release.cmake"
|
|
||||||
# OpenSSL isn't compatible with `/guard:cf` flag so we omit it for now, see: https://github.com/openssl/openssl/issues/22554
|
|
||||||
Add-Content `
|
|
||||||
-Path "${{ env.vcpkg_path }}/triplets_overlay/x64-windows-static-md-release.cmake" `
|
|
||||||
-Value @("set(VCPKG_TARGET_ARCHITECTURE x64)",
|
|
||||||
"set(VCPKG_LIBRARY_LINKAGE static)",
|
|
||||||
"set(VCPKG_CRT_LINKAGE dynamic)",
|
|
||||||
"set(VCPKG_BUILD_TYPE release)")
|
|
||||||
# clear buildtrees after each package installation to reduce disk space requirements
|
|
||||||
$packages = `
|
|
||||||
"openssl:x64-windows-static-md-release",
|
|
||||||
"zlib:x64-windows-static-md-release"
|
|
||||||
${{ env.vcpkg_path }}/vcpkg.exe upgrade `
|
|
||||||
--no-dry-run `
|
|
||||||
--overlay-triplets="${{ env.vcpkg_path }}/triplets_overlay"
|
|
||||||
${{ env.vcpkg_path }}/vcpkg.exe install `
|
|
||||||
--binarysource="clear;x-gha,readwrite" `
|
|
||||||
--clean-after-build `
|
|
||||||
--overlay-triplets="${{ env.vcpkg_path }}/triplets_overlay" `
|
|
||||||
$packages
|
|
||||||
|
|
||||||
- name: Install boost
|
|
||||||
env:
|
|
||||||
BOOST_MAJOR_VERSION: "1"
|
|
||||||
BOOST_MINOR_VERSION: "85"
|
|
||||||
BOOST_PATCH_VERSION: "0"
|
|
||||||
run: |
|
|
||||||
$boost_url="https://boostorg.jfrog.io/artifactory/main/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
|
||||||
$boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz"
|
|
||||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url"
|
|
||||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."
|
|
||||||
if ($LastExitCode -ne 0)
|
|
||||||
{
|
|
||||||
curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2"
|
|
||||||
tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."
|
|
||||||
}
|
|
||||||
move "${{ github.workspace }}/../boost_*" "${{ env.boost_path }}"
|
|
||||||
|
|
||||||
- name: Install Qt
|
|
||||||
uses: jurplel/install-qt-action@v4
|
|
||||||
with:
|
|
||||||
version: "6.7.0"
|
|
||||||
archives: qtbase qtsvg qttools
|
|
||||||
cache: true
|
|
||||||
|
|
||||||
- name: Install libtorrent
|
|
||||||
run: |
|
|
||||||
git clone `
|
|
||||||
--branch v${{ matrix.libt_version }} `
|
|
||||||
--depth 1 `
|
|
||||||
--recurse-submodules `
|
|
||||||
https://github.com/arvidn/libtorrent.git `
|
|
||||||
${{ env.libtorrent_path }}
|
|
||||||
cd ${{ env.libtorrent_path }}
|
|
||||||
$env:CXXFLAGS+=" /guard:cf"
|
|
||||||
$env:LDFLAGS+=" /guard:cf"
|
|
||||||
cmake `
|
|
||||||
-B build `
|
|
||||||
-G "Ninja" `
|
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
|
|
||||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON `
|
|
||||||
-DCMAKE_INSTALL_PREFIX="${{ env.libtorrent_path }}/install" `
|
|
||||||
-DCMAKE_TOOLCHAIN_FILE="${{ env.vcpkg_path }}/scripts/buildsystems/vcpkg.cmake" `
|
|
||||||
-DBOOST_ROOT="${{ env.boost_path }}" `
|
|
||||||
-DBUILD_SHARED_LIBS=OFF `
|
|
||||||
-Ddeprecated-functions=OFF `
|
|
||||||
-Dstatic_runtime=OFF `
|
|
||||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release
|
|
||||||
cmake --build build
|
|
||||||
cmake --install build
|
|
||||||
|
|
||||||
- name: Build qBittorrent
|
|
||||||
run: |
|
|
||||||
$env:CXXFLAGS+=" /WX"
|
|
||||||
cmake `
|
|
||||||
-B build `
|
|
||||||
-G "Ninja" `
|
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
|
|
||||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON `
|
|
||||||
-DCMAKE_TOOLCHAIN_FILE="${{ env.vcpkg_path }}/scripts/buildsystems/vcpkg.cmake" `
|
|
||||||
-DBOOST_ROOT="${{ env.boost_path }}" `
|
|
||||||
-DLibtorrentRasterbar_DIR="${{ env.libtorrent_path }}/install/lib/cmake/LibtorrentRasterbar" `
|
|
||||||
-DMSVC_RUNTIME_DYNAMIC=ON `
|
|
||||||
-DTESTING=ON `
|
|
||||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release `
|
|
||||||
-DVERBOSE_CONFIGURE=ON `
|
|
||||||
--graphviz=build/target_graph.dot
|
|
||||||
cmake --build build --target qbt_update_translations
|
|
||||||
cmake --build build
|
|
||||||
cmake --build build --target check
|
|
||||||
|
|
||||||
- name: Prepare build artifacts
|
|
||||||
run: |
|
|
||||||
mkdir upload
|
|
||||||
mkdir upload/qBittorrent
|
|
||||||
copy build/qbittorrent.exe upload/qBittorrent
|
|
||||||
copy build/qbittorrent.pdb upload/qBittorrent
|
|
||||||
copy dist/windows/qt.conf upload/qBittorrent
|
|
||||||
# runtimes
|
|
||||||
copy "${{ env.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 ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent
|
|
||||||
|
|
||||||
- name: Upload build artifacts
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: qBittorrent-CI_Windows-x64_libtorrent-${{ matrix.libt_version }}
|
|
||||||
path: upload
|
|
||||||
|
|
||||||
- name: Create installer
|
|
||||||
run: |
|
|
||||||
7z x -o"dist/windows/" "dist/windows/NSISPlugins.zip"
|
|
||||||
makensis /DQBT_DIST_DIR="../../upload/qBittorrent" /WX dist/windows/qbittorrent.nsi
|
|
||||||
|
|
||||||
- name: Upload installer
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: qBittorrent-CI_Windows-x64_libtorrent-${{ matrix.libt_version }}-setup
|
|
||||||
path: dist/windows/qbittorrent_*_setup.exe
|
|
115
.github/workflows/coverity-scan.yaml
vendored
115
.github/workflows/coverity-scan.yaml
vendored
@@ -1,115 +0,0 @@
|
|||||||
name: Coverity Scan
|
|
||||||
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: '0 0 1 * *' # Monthly (1st day of month at midnight)
|
|
||||||
workflow_dispatch: # Mainly for testing. Don't forget the Coverity usage limits.
|
|
||||||
|
|
||||||
permissions: {}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
coverity_scan:
|
|
||||||
name: Scan
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
libt_version: ["2.0.10"]
|
|
||||||
qbt_gui: ["GUI=ON"]
|
|
||||||
qt_version: ["6.5.2"]
|
|
||||||
|
|
||||||
env:
|
|
||||||
boost_path: "${{ github.workspace }}/../boost"
|
|
||||||
coverity_path: "${{ github.workspace }}/../coverity"
|
|
||||||
libtorrent_path: "${{ github.workspace }}/../libtorrent"
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
sudo apt update
|
|
||||||
sudo apt install \
|
|
||||||
build-essential cmake ninja-build \
|
|
||||||
libssl-dev libxkbcommon-x11-dev libxcb-cursor-dev zlib1g-dev
|
|
||||||
|
|
||||||
- name: Install boost
|
|
||||||
env:
|
|
||||||
BOOST_MAJOR_VERSION: "1"
|
|
||||||
BOOST_MINOR_VERSION: "85"
|
|
||||||
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@v4
|
|
||||||
with:
|
|
||||||
version: ${{ matrix.qt_version }}
|
|
||||||
archives: icu qtbase qtdeclarative qtsvg qttools
|
|
||||||
cache: true
|
|
||||||
|
|
||||||
- name: Install libtorrent
|
|
||||||
run: |
|
|
||||||
git clone \
|
|
||||||
--branch v${{ matrix.libt_version }} \
|
|
||||||
--depth 1 \
|
|
||||||
--recurse-submodules \
|
|
||||||
https://github.com/arvidn/libtorrent.git \
|
|
||||||
${{ env.libtorrent_path }}
|
|
||||||
cd ${{ env.libtorrent_path }}
|
|
||||||
cmake \
|
|
||||||
-B build \
|
|
||||||
-G "Ninja" \
|
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
|
||||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
|
||||||
-Ddeprecated-functions=OFF
|
|
||||||
cmake --build build
|
|
||||||
sudo cmake --install build
|
|
||||||
|
|
||||||
- name: Download Coverity Build Tool
|
|
||||||
run: |
|
|
||||||
curl \
|
|
||||||
-L \
|
|
||||||
-d "token=${{ secrets.COVERITY_SCAN_TOKEN }}&project=qbittorrent%2FqBittorrent" \
|
|
||||||
-o "${{ runner.temp }}/coverity_tool.tgz" \
|
|
||||||
"https://scan.coverity.com/download/linux64"
|
|
||||||
mkdir -p ${{ env.coverity_path }}
|
|
||||||
tar \
|
|
||||||
-xf "${{ runner.temp }}/coverity_tool.tgz" \
|
|
||||||
-C "${{ env.coverity_path }}" \
|
|
||||||
--strip-components 1
|
|
||||||
|
|
||||||
- name: Build qBittorrent
|
|
||||||
run: |
|
|
||||||
cmake \
|
|
||||||
-B build \
|
|
||||||
-G "Ninja" \
|
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
|
||||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
|
||||||
-DVERBOSE_CONFIGURE=ON \
|
|
||||||
-D${{ matrix.qbt_gui }}
|
|
||||||
PATH="${{ env.coverity_path }}/bin:$PATH" \
|
|
||||||
cov-build \
|
|
||||||
--dir cov-int \
|
|
||||||
cmake --build build
|
|
||||||
|
|
||||||
- name: Submit the result to Coverity Scan
|
|
||||||
run: |
|
|
||||||
tar -caf qbittorrent.xz cov-int
|
|
||||||
curl \
|
|
||||||
--form token="${{ secrets.COVERITY_SCAN_TOKEN }}" \
|
|
||||||
--form email=sledgehammer999@qbittorrent.org \
|
|
||||||
--form file=@qbittorrent.xz \
|
|
||||||
--form version="$(git rev-parse --short HEAD)" \
|
|
||||||
--form description="master" \
|
|
||||||
https://scan.coverity.com/builds?project=qbittorrent%2FqBittorrent
|
|
13
.github/workflows/helper/appimage/export_vars.sh
vendored
13
.github/workflows/helper/appimage/export_vars.sh
vendored
@@ -1,13 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# this file is called from AppRun so 'root_dir' will point to where AppRun is
|
|
||||||
root_dir="$(readlink -f "$(dirname "$0")")"
|
|
||||||
|
|
||||||
# Insert the default values because after the test we prepend our path
|
|
||||||
# and it will create problems with DEs (eg KDE) that don't set the variable
|
|
||||||
# and rely on the default paths
|
|
||||||
if [ -z "${XDG_DATA_DIRS}" ]; then
|
|
||||||
XDG_DATA_DIRS="/usr/local/share/:/usr/share/"
|
|
||||||
fi
|
|
||||||
|
|
||||||
export XDG_DATA_DIRS="${root_dir}/usr/share:${XDG_DATA_DIRS}"
|
|
@@ -1,6 +0,0 @@
|
|||||||
[Desktop Entry]
|
|
||||||
Name=qBittorrent
|
|
||||||
Exec=qbittorrent-nox %U
|
|
||||||
Icon=qbittorrent
|
|
||||||
Type=Application
|
|
||||||
Categories=Network
|
|
14
.github/workflows/helper/codeql/cpp.yaml
vendored
14
.github/workflows/helper/codeql/cpp.yaml
vendored
@@ -1,14 +0,0 @@
|
|||||||
name: "CodeQL config for C++"
|
|
||||||
|
|
||||||
queries:
|
|
||||||
- uses: security-and-quality
|
|
||||||
|
|
||||||
query-filters:
|
|
||||||
- exclude:
|
|
||||||
id: cpp/commented-out-code
|
|
||||||
- exclude:
|
|
||||||
id: cpp/include-non-header
|
|
||||||
- exclude:
|
|
||||||
id: cpp/loop-variable-changed
|
|
||||||
- exclude:
|
|
||||||
id: cpp/useless-expression
|
|
11
.github/workflows/helper/codeql/js.yaml
vendored
11
.github/workflows/helper/codeql/js.yaml
vendored
@@ -1,11 +0,0 @@
|
|||||||
name: "CodeQL config for Javascript"
|
|
||||||
|
|
||||||
paths-ignore:
|
|
||||||
- "**/lib/*"
|
|
||||||
|
|
||||||
queries:
|
|
||||||
- uses: security-and-quality
|
|
||||||
|
|
||||||
query-filters:
|
|
||||||
- exclude:
|
|
||||||
id: js/superfluous-trailing-arguments
|
|
18
.github/workflows/helper/pre-commit/.typos.toml
vendored
18
.github/workflows/helper/pre-commit/.typos.toml
vendored
@@ -1,18 +0,0 @@
|
|||||||
# https://github.com/crate-ci/typos/blob/master/docs/reference.md
|
|
||||||
# https://github.com/crate-ci/typos/blob/master/docs/design.md#identifiers-and-words
|
|
||||||
|
|
||||||
# try adding to `identifiers` list first, if doesn't work then `words` list
|
|
||||||
|
|
||||||
[default.extend-identifiers]
|
|
||||||
additionals = "additionals"
|
|
||||||
caf = "caf"
|
|
||||||
curren = "curren"
|
|
||||||
FO = "FO"
|
|
||||||
ket = "ket"
|
|
||||||
Q_INVOKABLE = "Q_INVOKABLE"
|
|
||||||
switchs = "switchs"
|
|
||||||
ths = "ths"
|
|
||||||
|
|
||||||
[default.extend-words]
|
|
||||||
BA = "BA"
|
|
||||||
helo = "helo"
|
|
@@ -1,70 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
# A pre-commit hook for detecting problematic <translation> tags
|
|
||||||
# Copyright (C) 2021 Mike Tzou (Chocobo1)
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or
|
|
||||||
# modify it under the terms of the GNU General Public License
|
|
||||||
# as published by the Free Software Foundation; either version 2
|
|
||||||
# of the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
#
|
|
||||||
# In addition, as a special exception, the copyright holders give permission to
|
|
||||||
# link this program with the OpenSSL project's "OpenSSL" library (or with
|
|
||||||
# modified versions of it that use the same license as the "OpenSSL" library),
|
|
||||||
# and distribute the linked executables. You must obey the GNU General Public
|
|
||||||
# License in all respects for all of the code used other than "OpenSSL". If you
|
|
||||||
# modify file(s), you may extend this exception to your version of the file(s),
|
|
||||||
# but you are not obligated to do so. If you do not wish to do so, delete this
|
|
||||||
# exception statement from your version.
|
|
||||||
|
|
||||||
from typing import Optional, Sequence
|
|
||||||
import argparse
|
|
||||||
import re
|
|
||||||
|
|
||||||
|
|
||||||
def main(argv: Optional[Sequence[str]] = None) -> int:
|
|
||||||
parser = argparse.ArgumentParser()
|
|
||||||
parser.add_argument('filenames', nargs='*', help='Filenames to check')
|
|
||||||
args = parser.parse_args(argv)
|
|
||||||
|
|
||||||
error_msg = ""
|
|
||||||
regex = re.compile(r"\s*</translation>")
|
|
||||||
|
|
||||||
for filename in args.filenames:
|
|
||||||
line_counter = 1
|
|
||||||
error_buffer = ""
|
|
||||||
|
|
||||||
with open(filename) as file:
|
|
||||||
try:
|
|
||||||
for line in file:
|
|
||||||
if (match := regex.match(line)) is not None:
|
|
||||||
error_buffer += str(f"Defect file: \"{filename}\"\n"
|
|
||||||
f"Line: {line_counter}\n"
|
|
||||||
f"Column span: {match.span()}\n"
|
|
||||||
f"Part: \"{match.group()}\"\n\n")
|
|
||||||
line_counter += 1
|
|
||||||
|
|
||||||
except UnicodeDecodeError:
|
|
||||||
# not a text file, skip
|
|
||||||
continue
|
|
||||||
|
|
||||||
error_msg += error_buffer
|
|
||||||
|
|
||||||
if len(error_msg) > 0:
|
|
||||||
print(error_msg)
|
|
||||||
return 1
|
|
||||||
|
|
||||||
return 0
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
exit(main())
|
|
25
.github/workflows/stale_bot.yaml
vendored
25
.github/workflows/stale_bot.yaml
vendored
@@ -1,25 +0,0 @@
|
|||||||
name: Stale bot
|
|
||||||
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: '0 0 * * *'
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
pull-requests: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
stale:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Mark and close stale PRs
|
|
||||||
uses: actions/stale@v9
|
|
||||||
with:
|
|
||||||
stale-pr-message: "This PR is stale because it has been 60 days with no activity. This PR will be automatically closed within 7 days if there is no further activity."
|
|
||||||
close-pr-message: "This PR was closed because it has been stalled for some time with no activity."
|
|
||||||
days-before-stale: -1 # avoid marking issues
|
|
||||||
days-before-pr-stale: 60
|
|
||||||
days-before-close: -1 # avoid closing issues
|
|
||||||
days-before-pr-close: 7
|
|
||||||
exempt-all-pr-assignees: true # avoid stale for all PR with assignees
|
|
||||||
exempt-all-pr-milestones: true # avoid stale for all PR with milestones
|
|
||||||
operations-per-run: 200
|
|
17
.gitignore
vendored
17
.gitignore
vendored
@@ -1,12 +1,9 @@
|
|||||||
.vscode/
|
|
||||||
src/gui/geoip/GeoIP.dat
|
src/gui/geoip/GeoIP.dat
|
||||||
src/gui/geoip/GeoIP.dat.gz
|
src/gui/geoip/GeoIP.dat.gz
|
||||||
src/qbittorrent
|
src/qbittorrent
|
||||||
src/qbittorrent-nox
|
src/qbittorrent-nox
|
||||||
src/release
|
src/release
|
||||||
src/debug
|
src/debug
|
||||||
src/base/version.h
|
|
||||||
CMakeLists.txt.user*
|
|
||||||
qbittorrent.pro.user*
|
qbittorrent.pro.user*
|
||||||
conf.pri
|
conf.pri
|
||||||
Makefile*
|
Makefile*
|
||||||
@@ -17,15 +14,13 @@ Makefile*
|
|||||||
*.o
|
*.o
|
||||||
*.pdb
|
*.pdb
|
||||||
*.exe
|
*.exe
|
||||||
*.dll
|
|
||||||
|
|
||||||
# Generated MOC, resource and UI files
|
# Generated MOC, resource and UI files
|
||||||
moc_*.cpp
|
moc_*.cpp
|
||||||
moc_*.h
|
|
||||||
qrc_*.cpp
|
qrc_*.cpp
|
||||||
ui_*.h
|
ui_*.h
|
||||||
*.moc
|
*.moc
|
||||||
*.qm
|
src/lang/qbittorrent_*.qm
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.qmake.stash
|
.qmake.stash
|
||||||
src/qbittorrent.app
|
src/qbittorrent.app
|
||||||
@@ -35,13 +30,3 @@ src/qbittorrent.app
|
|||||||
aclocal.m4
|
aclocal.m4
|
||||||
autom4te.cache/*
|
autom4te.cache/*
|
||||||
config.status
|
config.status
|
||||||
src/icons/qbt-theme/build-icons/node_modules/
|
|
||||||
src/icons/skin/build-icons/node_modules/
|
|
||||||
src/icons/skin/build-icons/icons/*.png
|
|
||||||
|
|
||||||
# CMake build directory
|
|
||||||
build/
|
|
||||||
|
|
||||||
# Web UI tools
|
|
||||||
node_modules
|
|
||||||
package-lock.json
|
|
||||||
|
@@ -1,109 +0,0 @@
|
|||||||
repos:
|
|
||||||
- repo: local
|
|
||||||
hooks:
|
|
||||||
- id: check-translation-tag
|
|
||||||
name: Check newline characters in <translation> tag
|
|
||||||
entry: .github/workflows/helper/pre-commit/check_translation_tag.py
|
|
||||||
language: script
|
|
||||||
exclude: |
|
|
||||||
(?x)^(
|
|
||||||
src/lang/.*
|
|
||||||
)$
|
|
||||||
types_or:
|
|
||||||
- ts
|
|
||||||
|
|
||||||
- repo: https://github.com/pre-commit/pre-commit-hooks.git
|
|
||||||
rev: v4.5.0
|
|
||||||
hooks:
|
|
||||||
- id: check-json
|
|
||||||
name: Check JSON files
|
|
||||||
|
|
||||||
- id: check-yaml
|
|
||||||
name: Check YAML files
|
|
||||||
|
|
||||||
- id: fix-byte-order-marker
|
|
||||||
name: Check file encoding (UTF-8 without BOM)
|
|
||||||
exclude: |
|
|
||||||
(?x)^(
|
|
||||||
src/base/unicodestrings.h
|
|
||||||
)$
|
|
||||||
|
|
||||||
- id: mixed-line-ending
|
|
||||||
name: Check line ending character (LF)
|
|
||||||
args: ["--fix=lf"]
|
|
||||||
exclude: |
|
|
||||||
(?x)^(
|
|
||||||
src/webui/www/private/css/lib/.* |
|
|
||||||
src/webui/www/private/scripts/lib/.* |
|
|
||||||
dist/windows/license.txt |
|
|
||||||
test/testdata/crlf.txt
|
|
||||||
)$
|
|
||||||
|
|
||||||
- id: end-of-file-fixer
|
|
||||||
name: Check trailing newlines
|
|
||||||
exclude: |
|
|
||||||
(?x)^(
|
|
||||||
configure |
|
|
||||||
src/webui/www/private/css/lib/.* |
|
|
||||||
src/webui/www/private/scripts/lib/.* |
|
|
||||||
test/testdata/crlf.txt
|
|
||||||
)$
|
|
||||||
exclude_types:
|
|
||||||
- svg
|
|
||||||
- ts
|
|
||||||
|
|
||||||
- id: trailing-whitespace
|
|
||||||
name: Check trailing whitespaces
|
|
||||||
exclude: |
|
|
||||||
(?x)^(
|
|
||||||
src/webui/www/private/css/lib/.* |
|
|
||||||
src/webui/www/private/scripts/lib/.*
|
|
||||||
)$
|
|
||||||
exclude_types:
|
|
||||||
- ts
|
|
||||||
|
|
||||||
- repo: https://github.com/codespell-project/codespell.git
|
|
||||||
rev: v2.2.6
|
|
||||||
hooks:
|
|
||||||
- id: codespell
|
|
||||||
name: Check spelling (codespell)
|
|
||||||
args: ["--ignore-words-list", "additionals,curren,fo,ist,ket,searchin,superseeding,te,ths"]
|
|
||||||
exclude: |
|
|
||||||
(?x)^(
|
|
||||||
.*\.desktop |
|
|
||||||
.*\.qrc |
|
|
||||||
build-aux/.* |
|
|
||||||
Changelog |
|
|
||||||
dist/windows/installer-translations/.* |
|
|
||||||
m4/.* |
|
|
||||||
src/base/3rdparty/.* |
|
|
||||||
src/searchengine/nova3/socks.py |
|
|
||||||
src/webui/www/private/scripts/lib/.*
|
|
||||||
)$
|
|
||||||
exclude_types:
|
|
||||||
- ts
|
|
||||||
|
|
||||||
- repo: https://github.com/crate-ci/typos.git
|
|
||||||
rev: v1.16.18
|
|
||||||
hooks:
|
|
||||||
- id: typos
|
|
||||||
name: Check spelling (typos)
|
|
||||||
args: ["--config", ".github/workflows/helper/pre-commit/.typos.toml"]
|
|
||||||
exclude: |
|
|
||||||
(?x)^(
|
|
||||||
.*\.asc |
|
|
||||||
.*\.desktop |
|
|
||||||
.*\.qrc |
|
|
||||||
\.pre-commit-config\.yaml |
|
|
||||||
build-aux/.* |
|
|
||||||
Changelog |
|
|
||||||
configure.* |
|
|
||||||
dist/windows/installer-translations/.* |
|
|
||||||
m4/.* |
|
|
||||||
src/base/3rdparty/.* |
|
|
||||||
src/searchengine/nova3/socks.py |
|
|
||||||
src/webui/www/private/scripts/lib/.*
|
|
||||||
)$
|
|
||||||
exclude_types:
|
|
||||||
- svg
|
|
||||||
- ts
|
|
172
.travis.yml
Normal file
172
.travis.yml
Normal file
@@ -0,0 +1,172 @@
|
|||||||
|
language: cpp
|
||||||
|
|
||||||
|
os:
|
||||||
|
- linux
|
||||||
|
- osx
|
||||||
|
osx_image: xcode7.3
|
||||||
|
|
||||||
|
env:
|
||||||
|
matrix:
|
||||||
|
# Uncomment when Travis upgraded "Ubuntu 12.04 LTS" to a newer version whose repo will have a more up-to-date libtorrent package
|
||||||
|
#- lt_branch=dist gui=true
|
||||||
|
#- lt_branch=dist gui=false
|
||||||
|
- lt_branch=RC_1_0 qt=5 gui=true
|
||||||
|
- lt_branch=RC_1_0 qt=5 gui=false
|
||||||
|
- lt_branch=RC_1_0 qt=4 gui=true
|
||||||
|
- lt_branch=RC_1_0 qt=4 gui=false
|
||||||
|
global:
|
||||||
|
- secure: "OI9CUjj4lTb0HwwIZU5PbECU3hLlAL6KC8KsbwohG8/O3j5fLcnmDsK4Ad9us5cC39sS11Jcd1kDP2qRcCuST/glVNhLkcjKkiQerOfd5nQ/qL4JYfz/1mfP5mdpz9jHKzpLUIG+TXkbSTjP6VVmsb5KPT+3pKEdRFZB+Pu9+J8="
|
||||||
|
- coverity_branch: coverity_scan
|
||||||
|
|
||||||
|
branches:
|
||||||
|
except:
|
||||||
|
- search_encoding_windows
|
||||||
|
- v2_9_x
|
||||||
|
|
||||||
|
notifications:
|
||||||
|
email:
|
||||||
|
on_success: change
|
||||||
|
on_failure: change
|
||||||
|
|
||||||
|
# container-based builds
|
||||||
|
#sudo: false
|
||||||
|
cache:
|
||||||
|
ccache: true
|
||||||
|
directories:
|
||||||
|
- $HOME/hombebrew_cache
|
||||||
|
|
||||||
|
# opt-in Ubuntu Trusty
|
||||||
|
sudo: required
|
||||||
|
dist: trusty
|
||||||
|
|
||||||
|
addons:
|
||||||
|
coverity_scan:
|
||||||
|
project:
|
||||||
|
name: "qbittorrent/qBittorrent"
|
||||||
|
description: "Build submitted via Travis CI"
|
||||||
|
build_command_prepend: "./bootstrap.sh && ./configure $qbtconf"
|
||||||
|
build_command: make
|
||||||
|
branch_pattern: $coverity_branch
|
||||||
|
notification_email: sledgehammer999@qbittorrent.org
|
||||||
|
apt:
|
||||||
|
#sources:
|
||||||
|
# sources list: https://github.com/travis-ci/apt-source-whitelist/blob/master/ubuntu.json
|
||||||
|
#- ubuntu-toolchain-r-test
|
||||||
|
#- boost-latest
|
||||||
|
packages:
|
||||||
|
# packages list: https://github.com/travis-ci/apt-package-whitelist/blob/master/ubuntu-precise
|
||||||
|
- autoconf
|
||||||
|
- automake
|
||||||
|
- colormake
|
||||||
|
- libssl-dev
|
||||||
|
- libboost-dev
|
||||||
|
- libboost-system-dev
|
||||||
|
# uncomment when Travis upgraded "Ubuntu 12.04 LTS" to a newer version whose repo will have a more up-to-date libtorrent package
|
||||||
|
#- libtorrent-rasterbar6
|
||||||
|
|
||||||
|
before_install:
|
||||||
|
# only allow specific build for coverity scan, others will stop
|
||||||
|
- if [ "$TRAVIS_BRANCH" = "$coverity_branch" ] && ! [ "$TRAVIS_OS_NAME" = "linux" -a "$lt_branch" = "RC_1_0" -a "$gui" = true ]; then exit ; fi
|
||||||
|
|
||||||
|
- shopt -s expand_aliases
|
||||||
|
- alias make="colormake -j3" # Using nprocs/2 sometimes may fail (gcc is killed by system)
|
||||||
|
#- libt_path="$HOME/libt_install"
|
||||||
|
#- ltconf="$ltconf --prefix="$libt_path" --disable-geoip"
|
||||||
|
- qbt_path="$HOME/qbt_install"
|
||||||
|
- qbtconf="$qbtconf --prefix="$qbt_path" PKG_CONFIG_PATH="$libt_path/lib/pkgconfig":$PKG_CONFIG_PATH"
|
||||||
|
|
||||||
|
# options for specific branches
|
||||||
|
- if [ "$qt" = 4 ]; then qbtconf="$qbtconf --with-qt4" ; fi
|
||||||
|
- if [ "$gui" = false ]; then qbtconf="$qbtconf --disable-gui" ; fi
|
||||||
|
- |
|
||||||
|
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
|
||||||
|
# setup virtual display for after_success target
|
||||||
|
if [ "$gui" = true ]; then export "DISPLAY=:99.0" && /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16 ; fi ;
|
||||||
|
fi
|
||||||
|
- |
|
||||||
|
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
||||||
|
qbtconf="$qbtconf --disable-qt-dbus" ;
|
||||||
|
fi
|
||||||
|
|
||||||
|
# print settings
|
||||||
|
- echo $lt_branch
|
||||||
|
- echo $gui
|
||||||
|
- echo $ltconf
|
||||||
|
- echo $qbtconf
|
||||||
|
|
||||||
|
install:
|
||||||
|
- |
|
||||||
|
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
|
||||||
|
# libtorrent
|
||||||
|
sudo add-apt-repository --yes ppa:qbittorrent-team/qbittorrent-stable ;
|
||||||
|
sudo apt-get update -qq ;
|
||||||
|
sudo apt-get install -qq libtorrent-rasterbar-dev ;
|
||||||
|
|
||||||
|
# build libtorrent from source
|
||||||
|
#if [ "$lt_branch" != "dist" ]; then
|
||||||
|
#cd "$HOME" && pwd && git clone --depth 1 https://github.com/arvidn/libtorrent.git --branch $lt_branch ;
|
||||||
|
#cd libtorrent && ./autotool.sh && ./configure $ltconf && make install ;
|
||||||
|
#fi ;
|
||||||
|
|
||||||
|
# Qt
|
||||||
|
if [ "$qt" = 4 ]; then sudo apt-get -qq install qt4-default libqt4-dev ; fi ;
|
||||||
|
if [ "$qt" = 5 ]; then sudo apt-get -qq install qt5-default qtbase5-dev qttools5-dev-tools ; fi ;
|
||||||
|
|
||||||
|
# ccache
|
||||||
|
if [ "$TRAVIS_BRANCH" != "$coverity_branch" ]; then
|
||||||
|
dpkg-query -L ccache && export use_ccache=true ;
|
||||||
|
ccache -V && ccache --show-stats && ccache --zero-stats ;
|
||||||
|
fi ;
|
||||||
|
fi
|
||||||
|
- |
|
||||||
|
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
||||||
|
mkdir -p "$HOME/hombebrew_cache" ;
|
||||||
|
wget https://builds.shiki.hu/homebrew/version ;
|
||||||
|
if ! cmp --quiet "version" "$HOME/hombebrew_cache/version" ; then
|
||||||
|
echo "Cached files are different from server. Downloading new ones." ;
|
||||||
|
cp "version" $HOME/hombebrew_cache ;
|
||||||
|
cd "$HOME/hombebrew_cache" ;
|
||||||
|
wget https://builds.shiki.hu/homebrew/libtorrent-rasterbar.rb ;
|
||||||
|
wget https://builds.shiki.hu/homebrew/libtorrent-rasterbar-1.0.10.el_capitan.bottle.tar.gz ;
|
||||||
|
fi
|
||||||
|
|
||||||
|
# dependencies
|
||||||
|
brew update > /dev/null ;
|
||||||
|
brew install colormake ccache ;
|
||||||
|
brew outdated "pkg-config" || brew upgrade "pkg-config" ;
|
||||||
|
# Copy custom libtorrent bottle to homebrew's cache so it can find and install it
|
||||||
|
# Also install our custom libtorrent formula by passing the local path to it
|
||||||
|
# These 2 files are restored from Travis' cache.
|
||||||
|
cp "$HOME/hombebrew_cache/libtorrent-rasterbar-1.0.10.el_capitan.bottle.tar.gz" "$(brew --cache)" ;
|
||||||
|
brew install "$HOME/hombebrew_cache/libtorrent-rasterbar.rb" ;
|
||||||
|
|
||||||
|
# Qt
|
||||||
|
if [ "$qt" = 4 ]; then brew install qt && ln -s /usr/local/Cellar/qt/4.8.7_2/plugins /usr/local ; fi ;
|
||||||
|
if [ "$qt" = 5 ]; then brew install qt5 && brew link --force qt5 && ln -s /usr/local/Cellar/qt5/5.7.0/plugins /usr/local ; fi ;
|
||||||
|
|
||||||
|
# ccache
|
||||||
|
if [ "$TRAVIS_BRANCH" != "$coverity_branch" ]; then
|
||||||
|
export PATH="/usr/local/opt/ccache/libexec:$PATH" && export use_ccache=true ;
|
||||||
|
ccache -V && ccache --show-stats && ccache --zero-stats ;
|
||||||
|
fi ;
|
||||||
|
fi
|
||||||
|
|
||||||
|
script:
|
||||||
|
- if [ "$TRAVIS_BRANCH" = "$coverity_branch" ]; then exit ; fi # skip usual build when running coverity scan
|
||||||
|
- cd "$TRAVIS_BUILD_DIR" && ./bootstrap.sh && ./configure $qbtconf
|
||||||
|
- |
|
||||||
|
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
|
||||||
|
sed -i "" -e "s/^\(CC.*&&\).*$/\1 $CC/" src/Makefile ; # workaround for Qt & ccache: https://bugreports.qt.io/browse/QTBUG-31034
|
||||||
|
sed -i "" -e "s/^\(CXX.*&&\).*$/\1 $CXX/" src/Makefile ;
|
||||||
|
sed -i "" -e 's/^\(CXXFLAGS.*\)$/\1 -Wno-unused-local-typedefs -Wno-inconsistent-missing-override/' src/Makefile ;
|
||||||
|
fi
|
||||||
|
- make && make install
|
||||||
|
|
||||||
|
after_success:
|
||||||
|
- if [ "$gui" = true ]; then qbt_exe="qbittorrent" ; else qbt_exe="qbittorrent-nox" ; fi
|
||||||
|
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then cd "$qbt_path/bin" ; fi
|
||||||
|
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then cd "$TRAVIS_BUILD_DIR/src/" && macdeployqt "$qbt_exe.app" && cd "$qbt_exe.app/Contents/MacOS" ; fi
|
||||||
|
- ./$qbt_exe --version
|
||||||
|
|
||||||
|
after_script:
|
||||||
|
- if [ "$use_ccache" = true ]; then ccache --show-stats ; fi
|
29
.tx/config
29
.tx/config
@@ -1,24 +1,19 @@
|
|||||||
[main]
|
[main]
|
||||||
host = https://www.transifex.com
|
host = https://www.transifex.com
|
||||||
|
|
||||||
[o:sledgehammer999:p:qbittorrent:r:qbittorrent_master]
|
[qbittorrent.qbittorrent_v3_3_x]
|
||||||
file_filter = src/lang/qbittorrent_<lang>.ts
|
file_filter = src/lang/qbittorrent_<lang>.ts
|
||||||
source_file = src/lang/qbittorrent_en.ts
|
lang_map = pt: pt_PT
|
||||||
source_lang = en
|
source_file = src/lang/qbittorrent_en.ts
|
||||||
type = QT
|
source_lang = en
|
||||||
|
type = QT
|
||||||
minimum_perc = 23
|
minimum_perc = 23
|
||||||
lang_map = pt: pt_PT, zh: zh_CN
|
mode = developer
|
||||||
|
|
||||||
[o:sledgehammer999:p:qbittorrent:r:qbittorrent_webui]
|
|
||||||
file_filter = src/webui/www/translations/webui_<lang>.ts
|
|
||||||
source_file = src/webui/www/translations/webui_en.ts
|
|
||||||
source_lang = en
|
|
||||||
type = QT
|
|
||||||
minimum_perc = 23
|
|
||||||
lang_map = pt: pt_PT, zh: zh_CN
|
|
||||||
|
|
||||||
[o:sledgehammer999:p:qbittorrent:r:qbittorrentdesktop_master]
|
[qbittorrent.qbittorrentdesktop_master]
|
||||||
source_file = dist/unix/org.qbittorrent.qBittorrent.desktop
|
source_file = src/icons/qBittorrent.desktop
|
||||||
source_lang = en
|
source_lang = en
|
||||||
type = DESKTOP
|
type = DESKTOP
|
||||||
minimum_perc = 23
|
minimum_perc = 23
|
||||||
|
mode = developer
|
||||||
|
87
5B7CC9A2.asc
87
5B7CC9A2.asc
@@ -26,67 +26,28 @@ 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
|
=tDGM
|
||||||
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
|
|
||||||
xdpwp07LYo2ilhMI8RnzmtoRmg==
|
|
||||||
=UBeB
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
99
AUTHORS
99
AUTHORS
@@ -17,78 +17,73 @@ Contributors:
|
|||||||
* Nick Tiskov <daymansmail@gmail.com>
|
* Nick Tiskov <daymansmail@gmail.com>
|
||||||
|
|
||||||
Code from other projects:
|
Code from other projects:
|
||||||
* files src/app/qtlocalpeer/*
|
* files src/qtsingleapplication/* src/lineedit/*
|
||||||
copyright: Nokia Corporation
|
copyright: Nokia Corporation
|
||||||
license: mixed
|
license: LGPL
|
||||||
|
|
||||||
* files src/gui/lineedit.*
|
* files src/ico.cpp src/ico.h
|
||||||
copyright: Trolltech ASA <info@trolltech.com>
|
copyright: Malte Starostik <malte@kde.org>
|
||||||
license: custom
|
license: LGPL
|
||||||
|
|
||||||
* files src/search_engine/socks.py
|
* files src/search_engine/socks.py
|
||||||
copyright: Dan Haim <negativeiq@users.sourceforge.net>
|
copyright: Dan Haim <negativeiq@users.sourceforge.net>
|
||||||
license: BSD
|
license: BSD
|
||||||
|
|
||||||
* files src/webui/www/private/css/lib/vanillaSelectBox.css src/webui/www/private/scripts/lib/vanillaSelectBox.js
|
* file src/stacktrace_win.h
|
||||||
copyright: Philippe Meyer <pmg.meyer@gmail.com>
|
copyright: Quassel Project
|
||||||
license: MIT
|
license: GPLv2/3
|
||||||
|
|
||||||
Images Authors:
|
Images Authors:
|
||||||
* files: src/icons/qbittorrent-tray.svg
|
* files: src/icons/*.png
|
||||||
copyright: Provided by HVS <hvs linuxmail org> (raster first proposal) and Atif Afzal(@atfzl github) <atif5801@gmail.com> (vectorized and modified)
|
copyright: Gnome Icon Theme
|
||||||
license: GPLv2+
|
license: GPLv2
|
||||||
|
url: http://ftp.acc.umu.se/pub/GNOME/sources/gnome-icon-theme
|
||||||
|
|
||||||
* files: src/qbittorrent_file.ico src/icons/fileicon.svg
|
* files: src/oxygen/*.png
|
||||||
copyright: 'unknown.svg' (LGPLv3+) from Oxygen Icon Theme was used as base which was slightly modified and 'qbittorrent-tray.svg' (GPLv2+) was overlaid above it.
|
copyright: Oxygen Icon Theme (KDE)
|
||||||
license: GPLv3+
|
license: LGPL
|
||||||
|
url: http://www.oxygen-icons.org
|
||||||
|
|
||||||
* files: src/icons/flags/*.svg
|
* files: src/icons/flags/*.png
|
||||||
copyright: lipis/flag-icons
|
copyright: Mark James <mjames@gmail.com>
|
||||||
license: MIT
|
license: Public Domain
|
||||||
url: https://github.com/lipis/flag-icons/
|
url: http://www.famfamfam.com
|
||||||
|
|
||||||
* file: src/webui/www/private/images/tabs.gif
|
* files: src/icons/skin/*.png
|
||||||
|
files: src/menuicons/YYxYY/*.png
|
||||||
|
copyright: Mateusz Tobola <tobejodok@qbittorrent.org>
|
||||||
|
license: GPLv2
|
||||||
|
|
||||||
|
* file: src/icons/skin/tabs.gif
|
||||||
copyright: Greg Houston <gregory.houston@gmail.com>
|
copyright: Greg Houston <gregory.houston@gmail.com>
|
||||||
license: MIT
|
license: MIT
|
||||||
|
|
||||||
* file: src/icons/qbittorrent-tray-dark.svg src/icons/qbittorrent-tray-light.svg
|
* file: src/icons/skin/qbittorrent_mono*
|
||||||
copyright: Daniel Eguren <deguren@gmail.com>
|
copyright: Daniel Eguren <deguren@gmail.com>
|
||||||
modified by: now-im <now-im.d8gcu@simplelogin.com> (@now-im)
|
|
||||||
license: LGPL
|
license: LGPL
|
||||||
|
|
||||||
* folder: src/icons/
|
* file: src/search_engine/engines/btjunkie.png
|
||||||
files: application-rss+xml.svg, application-x-mswinurl.svg, connected.svg, disconnected.svg, checked-completed.svg, configure.svg,
|
copyright: Downloaded from btjunkie.org
|
||||||
edit-copy.svg, edit-rename.svg, folder-documents.svg, folder-new.svg, folder-remote.svg, go-bottom.svg, go-down.svg, go-top.svg,
|
|
||||||
go-up.svg, hash.svg, inode-directory.svg, insert-link.svg, kt-magnet.svg, media-playback-pause.svg, media-playback-start.svg,
|
|
||||||
media-seek-forward.svg, network-connect.svg, object-locked.svg, queued.svg, ratio.svg, reannounce.svg, slow_off.svg, slow.svg,
|
|
||||||
speedometer.svg, system-log-out.svg, tags.svg, task-complete.svg, task-reject.svg, tracker-error.svg, tracker-warning.svg,
|
|
||||||
trackerless.svg, trackers.svg, view-categories.svg
|
|
||||||
copyright: now-im <now-im.d8gcu@simplelogin.com> (@now-im) modified from La-Capitaine icon theme (https://github.com/keeferrourke/la-capitaine-icon-theme)
|
|
||||||
license: GPLv3+
|
|
||||||
|
|
||||||
* folder: src/icons/
|
* file: src/search_engine/engines/isohunt.png
|
||||||
files: application-exit.svg, collapse.svg, dialog-warning.svg, edit-find-user.svg, edit-find.svg, filter-all.svg, firewalled.svg,
|
copyright: Downloaded from isohunt.com
|
||||||
help-about.svg, help-contents.svg, ip-blocked.svg, list-remove.svg, loading.svg, mail-folder-inbox.svg, name.svg, network-server.svg,
|
|
||||||
office-chart-line.svg, plugins.svg, preferences-desktop.svg, preferences-other.svg, preferences-system-network.svg, security-high.svg,
|
|
||||||
security-low.svg, set-location.svg, torrent-creator.svg, user-group-delete.svg, user-group-new.svg, view-preview.svg, view-refresh.svg,
|
|
||||||
view-statistics.svg, wallet-open.svg, webuiapplication-exit.svg, collapse.svg, dialog-warning.svg, edit-find-user.svg, edit-find.svg,
|
|
||||||
filter-all.svg, firewalled.svg, help-about.svg, help-contents.svg, ip-blocked.svg, list-remove.svg, loading.svg, mail-folder-inbox.svg,
|
|
||||||
name.svg, network-server.svg, office-chart-line.svg, plugins.svg, preferences-desktop.svg, preferences-other.svg,
|
|
||||||
preferences-system-network.svg, security-high.svg, security-low.svg, set-location.svg, torrent-creator.svg, user-group-delete.svg,
|
|
||||||
user-group-new.svg, view-preview.svg, view-refresh.svg, view-statistics.svg, wallet-open.svg, webui.svg
|
|
||||||
copyright: now-im <now-im.d8gcu@simplelogin.com> (@now-im) modified from Ionicons icon theme (https://github.com/ionic-team/ionicons)
|
|
||||||
license: MIT
|
|
||||||
|
|
||||||
* folder: src/icons/
|
* file: src/search_engine/engines/mininova.png
|
||||||
files: force-recheck.svg
|
copyright: Downloaded from mininova.org
|
||||||
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/
|
* file: src/search_engine/engines/piratebay.png
|
||||||
files: downloading.svg, edit-clear.svg, error.svg, filter-active.svg, filter-inactive.svg, filter-stalled.svg, kt-set-max-download-speed.svg,
|
copyright: Downloaded from thepiratebay.org
|
||||||
kt-set-max-upload-speed.svg, list-add.svg, preferences-web-browser-cookies.svg, stalledDL.svg, stalledUP.svg
|
|
||||||
copyright: now-im <now-im.d8gcu@simplelogin.com> (@now-im)
|
* file: src/search_engine/engines/torrentreactor.png
|
||||||
license: BSD 2-Clause License
|
copyright: Downloaded from torrentreactor.net
|
||||||
|
|
||||||
|
* file: src/icons/oxygen/checked.png
|
||||||
|
copyright: Victor Buinsky <allok.victor@gmail.com>
|
||||||
|
|
||||||
|
* file: src/icons/skin/ratio.png
|
||||||
|
copyright: Fatcow Web Hosting
|
||||||
|
license: Creative Commons Attribution 3.0 License
|
||||||
|
url: http://www.fatcow.com/free-icons
|
||||||
|
|
||||||
Translations authors:
|
Translations authors:
|
||||||
* files: src/lang/*.ts
|
* files: src/lang/*.ts
|
||||||
@@ -116,7 +111,7 @@ Translations authors:
|
|||||||
- German: Niels Hoffmann (zentralmaschine@users.sourceforge.net)
|
- German: Niels Hoffmann (zentralmaschine@users.sourceforge.net)
|
||||||
- Greek: Tsvetan Bankov (emerge_life@users.sourceforge.net), Stephanos Antaris (santaris@csd.auth.gr), sledgehammer999(hammered999@gmail.com) and Γιάννης Ανθυμίδης Evropi(Transifex)
|
- Greek: Tsvetan Bankov (emerge_life@users.sourceforge.net), Stephanos Antaris (santaris@csd.auth.gr), sledgehammer999(hammered999@gmail.com) and Γιάννης Ανθυμίδης Evropi(Transifex)
|
||||||
- Hebrew: David Deutsch (d.deffo@gmail.com)
|
- Hebrew: David Deutsch (d.deffo@gmail.com)
|
||||||
- Hungarian: Majoros Péter
|
- Hungarian: Majoros Péter (majoros.j.p@t-online.hu)
|
||||||
- Italian: bovirus (bovirus@live.it) and Matteo Sechi (bu17714@gmail.com)
|
- Italian: bovirus (bovirus@live.it) and Matteo Sechi (bu17714@gmail.com)
|
||||||
- Japanese: Masato Hashimoto (cabezon.hashimoto@gmail.com)
|
- Japanese: Masato Hashimoto (cabezon.hashimoto@gmail.com)
|
||||||
- Korean: Jin Woo Sin (jin828sin@users.sourceforge.net)
|
- Korean: Jin Woo Sin (jin828sin@users.sourceforge.net)
|
||||||
|
106
CMakeLists.txt
106
CMakeLists.txt
@@ -1,67 +1,65 @@
|
|||||||
cmake_minimum_required(VERSION 3.16 FATAL_ERROR) # Policies <= CMP0097 default to NEW
|
cmake_minimum_required(VERSION 3.5)
|
||||||
|
cmake_policy(VERSION 3.5)
|
||||||
|
|
||||||
project(qBittorrent
|
project(qBittorrent VERSION 3.4.0.0)
|
||||||
DESCRIPTION "The qBittorrent BitTorrent client"
|
|
||||||
HOMEPAGE_URL "https://www.qbittorrent.org/"
|
|
||||||
LANGUAGES CXX
|
|
||||||
)
|
|
||||||
|
|
||||||
# version requirements - older versions may work, but you are on your own
|
set(VER_MAJOR ${qBittorrent_VERSION_MAJOR})
|
||||||
set(minBoostVersion 1.76)
|
set(VER_MINOR ${qBittorrent_VERSION_MINOR})
|
||||||
set(minQt6Version 6.5.0)
|
set(VER_BUGFIX ${qBittorrent_VERSION_PATCH})
|
||||||
set(minOpenSSLVersion 3.0.2)
|
set(VER_BUILD ${qBittorrent_VERSION_TWEAK})
|
||||||
set(minLibtorrent1Version 1.2.19)
|
set(VER_STATUS "alpha") # Should be empty for stable releases!
|
||||||
set(minLibtorrentVersion 2.0.10)
|
|
||||||
set(minZlibVersion 1.2.11)
|
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
# Don't touch the rest part
|
||||||
|
set(PROJECT_VERSION "${VER_MAJOR}.${VER_MINOR}.${VER_BUGFIX}")
|
||||||
|
|
||||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules)
|
if (NOT VER_BUILD EQUAL 0)
|
||||||
include(FeatureSummary)
|
set(PROJECT_VERSION "${PROJECT_VERSION}.${VER_BUILD}")
|
||||||
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(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" OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
|
||||||
feature_option_dependent(DBUS
|
|
||||||
"Enable support for notifications and power-management features via D-Bus"
|
|
||||||
ON "GUI" OFF
|
|
||||||
)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
set(PROJECT_VERSION "${PROJECT_VERSION}${VER_STATUS}")
|
||||||
feature_option_dependent(SYSTEMD
|
|
||||||
"Install systemd service file. Target directory is overridable with `SYSTEMD_SERVICES_INSTALL_DIR` variable"
|
|
||||||
OFF "NOT GUI" OFF
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (MSVC)
|
add_definitions(-DVERSION_MAJOR=${VER_MAJOR})
|
||||||
feature_option(MSVC_RUNTIME_DYNAMIC "Use MSVC dynamic runtime library (-MD) instead of static (-MT)" ON)
|
add_definitions(-DVERSION_MINOR=${VER_MINOR})
|
||||||
endif()
|
add_definitions(-DVERSION_BUGFIX=${VER_BUGFIX})
|
||||||
|
add_definitions(-DVERSION_BUILD=${VER_BUILD})
|
||||||
|
|
||||||
if (VERBOSE_CONFIGURE)
|
# os2 {
|
||||||
feature_summary(WHAT ALL)
|
# DEFINES += VERSION=\'\"v$${PROJECT_VERSION}\"\'
|
||||||
else()
|
# } else {
|
||||||
feature_summary(WHAT ENABLED_FEATURES DISABLED_FEATURES)
|
add_definitions(-DVERSION="v${PROJECT_VERSION}")
|
||||||
endif()
|
# }
|
||||||
|
list(APPEND CMAKE_MODULE_PATH ${qBittorrent_SOURCE_DIR}/cmake/Modules)
|
||||||
|
|
||||||
# go check the packages
|
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Og")
|
||||||
include(CheckPackages)
|
if (UNIX AND NOT APPLE)
|
||||||
# configure for specific platform
|
include(GNUInstallDirs)
|
||||||
include(CommonConfig)
|
endif (UNIX AND NOT APPLE)
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
include(winconf)
|
||||||
|
endif(WIN32)
|
||||||
|
|
||||||
|
# we need options here, because they are used not only in "src" subdir, but in the "dist" dir too
|
||||||
|
include(CMakeDependentOption)
|
||||||
|
|
||||||
|
option(QT5 "Compile using Qt5" ON)
|
||||||
|
option(SYSTEM_QTSINGLEAPPLICATION
|
||||||
|
"Use the system qtsingleapplication library or shipped one otherwise")
|
||||||
|
cmake_dependent_option(SYSTEM_QJSON
|
||||||
|
"Use the shipped qjson library or the system one (Qt4 only)" OFF "NOT QT5" OFF)
|
||||||
|
|
||||||
|
option(GUI "Allows to disable GUI for headless running. Disables QtDBus and the GeoIP Database" ON)
|
||||||
|
|
||||||
|
option(WEBUI "Allows to disable the WebUI." ON)
|
||||||
|
|
||||||
|
if (WIN32)
|
||||||
|
option(STACKTRACE_WIN "")
|
||||||
|
else (WIN32)
|
||||||
|
cmake_dependent_option(SYSTEMD "Install the systemd service file (headless only)" OFF
|
||||||
|
"NOT GUI" OFF)
|
||||||
|
cmake_dependent_option(DBUS "Enable use of QtDBus (GUI only)" ON "GUI" OFF)
|
||||||
|
endif(WIN32)
|
||||||
|
|
||||||
# Generate version header
|
|
||||||
configure_file("src/base/version.h.in" "${CMAKE_CURRENT_SOURCE_DIR}/src/base/version.h" @ONLY)
|
|
||||||
|
|
||||||
add_subdirectory(src)
|
add_subdirectory(src)
|
||||||
add_subdirectory(dist)
|
add_subdirectory(dist)
|
||||||
|
|
||||||
if (TESTING)
|
|
||||||
add_subdirectory(test)
|
|
||||||
endif()
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user