You've already forked qBittorrent
							
							
				mirror of
				https://github.com/qbittorrent/qBittorrent
				synced 2025-10-30 23:30:54 +01:00 
			
		
		
		
	Compare commits
	
		
			488 Commits
		
	
	
		
			release-5.
			...
			release-4.
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 359b464958 | ||
|   | b5b0d68dd9 | ||
|   | f48c49c248 | ||
|   | 11ca744548 | ||
|   | 82e6fc700e | ||
|   | 59fd70c638 | ||
|   | 617bf767df | ||
|   | 55180e3598 | ||
|   | 56b62e6573 | ||
|   | b37e7b0340 | ||
|   | 21aebaf16f | ||
|   | 5792465317 | ||
|   | e98f44af63 | ||
|   | 40cf0203fb | ||
|   | 05a82afeb6 | ||
|   | a456f1b0f9 | ||
|   | 4acc44a5b0 | ||
|   | 9c2a1146df | ||
|   | 807abeae87 | ||
|   | dd2a0d0484 | ||
|   | 3f3400f43b | ||
|   | 334b57a89a | ||
|   | 00d6c83ee5 | ||
|   | e8850c7a70 | ||
|   | 2ef96eb218 | ||
|   | 4682e31ab7 | ||
|   | 988f7e2ef8 | ||
|   | 6007913291 | ||
|   | cdcc7a210b | ||
|   | a466ff5057 | ||
|   | e954835579 | ||
|   | 3e9be3a0e8 | ||
|   | 4ab32a76f6 | ||
|   | bad60058df | ||
|   | 31a6ad1eb6 | ||
|   | a8bfec081e | ||
|   | ae21d0f1e2 | ||
|   | c599976b6f | ||
|   | bcee784097 | ||
|   | 697fc626cd | ||
|   | 2f15ea9b54 | ||
|   | d03209a73d | ||
|   | ac9ba255d8 | ||
|   | 9a7e79bd0e | ||
|   | e8be3bf939 | ||
|   | 74e52746b1 | ||
|   | 8d26a221e0 | ||
|   | 3fdab88eb7 | ||
|   | d376d912b3 | ||
|   | e329c41ef2 | ||
|   | 01e4179555 | ||
|   | 06f503b5df | ||
|   | e2f3dad7b8 | ||
|   | 377f31085c | ||
|   | ec13d195f8 | ||
|   | c01aed8d90 | ||
|   | ad7b8a9bfa | ||
|   | 5bba1ed208 | ||
|   | fe94e14bcc | ||
|   | b0af479ab9 | ||
|   | 24ff369f29 | ||
|   | 979c9a7094 | ||
|   | 7b90ac52c1 | ||
|   | ecfbda78bc | ||
|   | 9ba7470815 | ||
|   | 6394467cc7 | ||
|   | f6d72fa79f | ||
|   | 32ed5f1c8e | ||
|   | 5026da5773 | ||
|   | ef130e4438 | ||
|   | 4fbd52c2d5 | ||
|   | 8f29b70c1e | ||
|   | 9a4dd3ea9d | ||
|   | fcd3bb6918 | ||
|   | 9f69fd8750 | ||
|   | ea7e47d113 | ||
|   | 294bb26996 | ||
|   | 4b2e9dba51 | ||
|   | 1d9dcde99b | ||
|   | 32bf448725 | ||
|   | 732d5d6db9 | ||
|   | 3b325106da | ||
|   | 3aeca37c5d | ||
|   | 4253515736 | ||
|   | e365d57063 | ||
|   | df6df20969 | ||
|   | 4e5a85dda5 | ||
|   | bad603454b | ||
|   | 7b006a47ba | ||
|   | 11da8b82e8 | ||
|   | 383a5f11bc | ||
|   | 76ab5f12c5 | ||
|   | be74987084 | ||
|   | 8f6c305d14 | ||
|   | e29b9655eb | ||
|   | ae7fa9ea82 | ||
|   | fee9030337 | ||
|   | f48d057c47 | ||
|   | f14573307c | ||
|   | 560ba8c0b8 | ||
|   | 4b2376c4fd | ||
|   | 76faed3818 | ||
|   | 62657d9fda | ||
|   | 5877308a49 | ||
|   | 24dcbe7d43 | ||
|   | 7649fe0a0e | ||
|   | b3b334da77 | ||
|   | 03a55da260 | ||
|   | 1a9eadf8e6 | ||
|   | 7b3fb2a35a | ||
|   | a55ea29919 | ||
|   | 264b689912 | ||
|   | 684cf82f89 | ||
|   | 3f0e0a319a | ||
|   | 0b4d9c72a7 | ||
|   | ff71f6bcd9 | ||
|   | 7a5c5baad1 | ||
|   | a18976d0b5 | ||
|   | 6d836ea49c | ||
|   | 2e97311147 | ||
|   | 57bc564b2c | ||
|   | 1295f1e31f | ||
|   | 4916ed0efb | ||
|   | f15f99cb27 | ||
|   | 93365d3b20 | ||
|   | c756ab021d | ||
|   | 34528dd544 | ||
|   | 9380209afb | ||
|   | be2895ac6f | ||
|   | e26d4642b8 | ||
|   | f470972bd4 | ||
|   | 443378c041 | ||
|   | e20dbe34a4 | ||
|   | 86bde47a06 | ||
|   | e273c777c7 | ||
|   | 17845c6b25 | ||
|   | 27827ce16a | ||
|   | b444ecc6af | ||
|   | 34995350ee | ||
|   | 73ceee52f8 | ||
|   | 85a3ba0eed | ||
|   | 86cce76e9d | ||
|   | 3358fd8e91 | ||
|   | 120965f823 | ||
|   | e70ee9a5b6 | ||
|   | a2d8e84e83 | ||
|   | 4a3648a693 | ||
|   | baad45e638 | ||
|   | d9cb00aab2 | ||
|   | d703d98836 | ||
|   | 2f0646e7f0 | ||
|   | 1a8a6dcef7 | ||
|   | 990f961126 | ||
|   | 06f04dea19 | ||
|   | 8eced2ef1f | ||
|   | 1e486ea92e | ||
|   | b47f38675e | ||
|   | 864f3393a0 | ||
|   | cebef74326 | ||
|   | e257b35cac | ||
|   | 1f33991e4b | ||
|   | 794053f212 | ||
|   | 3a130e1f74 | ||
|   | 3423f93230 | ||
|   | 2219167253 | ||
|   | a0a32b89a6 | ||
|   | 59162bf426 | ||
|   | dfd148f55f | ||
|   | 3af720b3bc | ||
|   | 11240d0837 | ||
|   | e64fd9c544 | ||
|   | 50ef812427 | ||
|   | bd4d2fa424 | ||
|   | e2ee928017 | ||
|   | 62e71a15a4 | ||
|   | c62127e9f1 | ||
|   | 2171d579ee | ||
|   | 6e5a969e2d | ||
|   | bfbc7ef28a | ||
|   | b1cefbf9b5 | ||
|   | 201638854e | ||
|   | 847ecdeedb | ||
|   | acc159fa60 | ||
|   | bb7e80a8a6 | ||
|   | 39973f1bb1 | ||
|   | 1e9151364a | ||
|   | fd50d6e9af | ||
|   | 427acf0c46 | ||
|   | f0a50424be | ||
|   | aded9afc0e | ||
|   | 060b7480db | ||
|   | 7f2a01dcd6 | ||
|   | fef0e70c9f | ||
|   | 9cc112aa4e | ||
|   | 44d4d41365 | ||
|   | a21c386dbf | ||
|   | 1c4139906a | ||
|   | 1a21f45c75 | ||
|   | 0061b75200 | ||
|   | 420c93a99e | ||
|   | 93f1183cd7 | ||
|   | b8fcc1fed2 | ||
|   | 2b91be1905 | ||
|   | 7c9ef96ef8 | ||
|   | 37b4b69199 | ||
|   | fc18e6f8df | ||
|   | 4793a35e0b | ||
|   | 4599da3ce1 | ||
|   | dec4e41fdd | ||
|   | 780ece0c25 | ||
|   | aac8bfc398 | ||
|   | 1a06a18336 | ||
|   | 2d4f963d65 | ||
|   | b54fe08201 | ||
|   | d1d0300491 | ||
|   | 7fff06f07b | ||
|   | 3f9351042d | ||
|   | 9e01dbab0f | ||
|   | d4a4b02cf6 | ||
|   | 1f2c7a6671 | ||
|   | 5a7b88c16c | ||
|   | 93351476e4 | ||
|   | e1bfa95a63 | ||
|   | 7030cc08e7 | ||
|   | a1da9812a5 | ||
|   | 8ebc0f529c | ||
|   | e0d47649bc | ||
|   | 524d503860 | ||
|   | cffafa8e9f | ||
|   | 0fda919268 | ||
|   | 7d98c34e17 | ||
|   | 93147e787b | ||
|   | 80435bae7e | ||
|   | b367e5c197 | ||
|   | 5336c71da5 | ||
|   | 27f6db976d | ||
|   | 8223d61fa7 | ||
|   | 3eef12bd8f | ||
|   | 9e70a6c499 | ||
|   | fec3a87421 | ||
|   | 59aac32eb9 | ||
|   | 5ef3917769 | ||
|   | 2f767d96d9 | ||
|   | de24fdfdc2 | ||
|   | 3bb6a68c9d | ||
|   | f2406eb2f3 | ||
|   | 4923ed7da0 | ||
|   | 82056355f6 | ||
|   | f3bd2a295f | ||
|   | cc96760839 | ||
|   | ae95943f69 | ||
|   | d3067f939e | ||
|   | b6addd304c | ||
|   | d1ae6e8d58 | ||
|   | 4445c2dab2 | ||
|   | fcc1564a62 | ||
|   | 615eeb7144 | ||
|   | 855bb118b5 | ||
|   | 9f1eb3600a | ||
|   | fb885d89c1 | ||
|   | a846916beb | ||
|   | a574c4a70a | ||
|   | 1e367f818d | ||
|   | 00599c8f02 | ||
|   | 332a836746 | ||
|   | a1992acc16 | ||
|   | c3f002a544 | ||
|   | c28cbe0a74 | ||
|   | 435daaceed | ||
|   | e29ab0087b | ||
|   | aadd5a3312 | ||
|   | 7e354ffad3 | ||
|   | ee6a071fb6 | ||
|   | bc8b838953 | ||
|   | 5251d93b3d | ||
|   | 84f0dbecfe | ||
|   | bba0c8b2cc | ||
|   | 2f90be8bd2 | ||
|   | cb6b6296aa | ||
|   | 9d25fdce2a | ||
|   | 12b2732f1a | ||
|   | 8c9ece73ee | ||
|   | a7db786387 | ||
|   | e5bf65c9bd | ||
|   | 900e7d3a14 | ||
|   | f1ff74a926 | ||
|   | 30bc4b837e | ||
|   | 050a4f8b23 | ||
|   | 487103d58f | ||
|   | eeea69d4c1 | ||
|   | 00360ad418 | ||
|   | a733253ae5 | ||
|   | 9788ee042b | ||
|   | e9c9ea3bba | ||
|   | 312dfb989d | ||
|   | 75deafe5b1 | ||
|   | 4ca257a389 | ||
|   | 03375a78f2 | ||
|   | 423c7066d7 | ||
|   | 5cd5cc71a8 | ||
|   | 45d4d22055 | ||
|   | 916a92aa0d | ||
|   | d1ebbcb35d | ||
|   | 2743d998a8 | ||
|   | dbbfbaff9f | ||
|   | 0be8439cf6 | ||
|   | 66982c5524 | ||
|   | 85af8547f7 | ||
|   | e26977ab2c | ||
|   | ec1cc783a6 | ||
|   | 03b00ec045 | ||
|   | 5e90156e9e | ||
|   | 052206efa1 | ||
|   | 305d73180b | ||
|   | 80000bf0fd | ||
|   | 06ebe756e8 | ||
|   | 5fa3d9f19c | ||
|   | 5b4c6d3665 | ||
|   | 77bd0f17d1 | ||
|   | 03a702cfbd | ||
|   | a932cd2ec1 | ||
|   | 8e5743380a | ||
|   | 8001eb0368 | ||
|   | f214dc88fc | ||
|   | 5cff5ab135 | ||
|   | 82ba154b64 | ||
|   | 4ea44bbd2b | ||
|   | a5e68a8725 | ||
|   | 70291014d1 | ||
|   | 1aabcfc30c | ||
|   | aba80e2b1c | ||
|   | be683fbcd3 | ||
|   | 2bcf09cfa5 | ||
|   | 697325af63 | ||
|   | c21bd77be5 | ||
|   | d5430adaaa | ||
|   | 9e99a0d3f5 | ||
|   | d088ab6f43 | ||
|   | 820d510c12 | ||
|   | 676847fcd0 | ||
|   | 0204630ee6 | ||
|   | b515c7eda4 | ||
|   | 73fcecac76 | ||
|   | a7b82ebcb5 | ||
|   | f8598b010d | ||
|   | 93779bcc4b | ||
|   | 938f5b9dd9 | ||
|   | 3b4d9f49d5 | ||
|   | 171c93af50 | ||
|   | 6f81e40106 | ||
|   | e19b5cb2ce | ||
|   | 2c69faca58 | ||
|   | 9272151d0a | ||
|   | d45ebf5a43 | ||
|   | 8074be7644 | ||
|   | c99ac99a99 | ||
|   | 976e2450ec | ||
|   | 7e4db8fafd | ||
|   | 115a409d92 | ||
|   | c203ab3d16 | ||
|   | 5dff96496d | ||
|   | f813935011 | ||
|   | 2be719449f | ||
|   | 2094c870d5 | ||
|   | 4fe93ae8b8 | ||
|   | fff1103cf4 | ||
|   | 8cede43a45 | ||
|   | 9b1fa3a5af | ||
|   | 409e73c074 | ||
|   | c893729d62 | ||
|   | 945466968c | ||
|   | 54f080b755 | ||
|   | bfad14d552 | ||
|   | 2972e1596d | ||
|   | 987d2aae88 | ||
|   | 4707d34fad | ||
|   | 2ffc09d097 | ||
|   | afa8d6bb8f | ||
|   | a37ead98e8 | ||
|   | c73cd8d618 | ||
|   | 800a3aa61e | ||
|   | ebd815be75 | ||
|   | ef669acf89 | ||
|   | ac6426eab1 | ||
|   | b107b745f2 | ||
|   | 3d851a448f | ||
|   | ce133f01aa | ||
|   | 492d378537 | ||
|   | 7ece484423 | ||
|   | be5ad63e21 | ||
|   | bdac8f8db8 | ||
|   | bb893e70c5 | ||
|   | 57ec9db532 | ||
|   | 0287481001 | ||
|   | 0167496ecb | ||
|   | d86cf193a0 | ||
|   | 246cad1108 | ||
|   | 23bf86a8a8 | ||
|   | 6ce4c885b9 | ||
|   | faf84e483a | ||
|   | 576004c840 | ||
|   | c93b05c293 | ||
|   | 55c3813fac | ||
|   | 725c6857be | ||
|   | 86767c9ab4 | ||
|   | 46aa631d2b | ||
|   | 7c61a937c9 | ||
|   | b8d65dcc45 | ||
|   | b9ab83eaf2 | ||
|   | 8b7b563992 | ||
|   | b813a878d7 | ||
|   | 54e486c389 | ||
|   | 12d0a3acc1 | ||
|   | 6ad2a13386 | ||
|   | 2a9c401db9 | ||
|   | ea5a29018f | ||
|   | c8d0a715e8 | ||
|   | 2cfc6514ab | ||
|   | 1d78bc7206 | ||
|   | e5577e43f8 | ||
|   | 17c0463906 | ||
|   | 4168772904 | ||
|   | 44f2186749 | ||
|   | 0c918bcc3a | ||
|   | 0a8925dc75 | ||
|   | a446597597 | ||
|   | 54354a2732 | ||
|   | d94b8f08ab | ||
|   | 0d8189efeb | ||
|   | 00c886e426 | ||
|   | 551fc35439 | ||
|   | 9ff17c8d9d | ||
|   | ec37732e99 | ||
|   | 8a414f32a8 | ||
|   | bac06acb49 | ||
|   | ae1e3c2a81 | ||
|   | 67940eb0f9 | ||
|   | 007aa8480e | ||
|   | dedec10c58 | ||
|   | 75219e21be | ||
|   | 10f5964f8e | ||
|   | a4a64d51c0 | ||
|   | 1014313d88 | ||
|   | e486bb4c29 | ||
|   | 5c3d9ffb46 | ||
|   | 2e474fd8db | ||
|   | b2b110ae1f | ||
|   | 68a34e0738 | ||
|   | 38fa575958 | ||
|   | 6cfeefe054 | ||
|   | 8007971a53 | ||
|   | d66bd30fae | ||
|   | 3fa59b1b12 | ||
|   | 20e7aff393 | ||
|   | 4b7ce87f57 | ||
|   | 2075533468 | ||
|   | a4ad5c8d11 | ||
|   | 35f2f56757 | ||
|   | e6f4aa6a2f | ||
|   | 92fc62bb0d | ||
|   | 44b57a59f5 | ||
|   | 97b8e02bf5 | ||
|   | 5df42420cb | ||
|   | 0ede11a1b7 | ||
|   | 7d9c282db9 | ||
|   | bc0e0813a4 | ||
|   | f3aebb3001 | ||
|   | 800f966df9 | ||
|   | e33df4dd8c | ||
|   | 96d9d810fd | ||
|   | 8707a1bc86 | ||
|   | 0c988a5fd4 | ||
|   | b396ca771d | ||
|   | a37dfcf961 | ||
|   | 31989740cd | ||
|   | 501191289b | ||
|   | 8971e92d78 | ||
|   | 0c96e79d0d | ||
|   | 0704c0f5e6 | ||
|   | 9cb190ebe7 | ||
|   | 667f84995c | ||
|   | 7a93fae6e4 | ||
|   | 0d6deca15c | ||
|   | f54d7d46f2 | ||
|   | 8cf00ba5e1 | ||
|   | ecc9c6bbd9 | ||
|   | e11199f988 | ||
|   | e9ed621178 | 
							
								
								
									
										57
									
								
								.appveyor.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								.appveyor.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,57 @@ | |||||||
|  | version: '{branch}-{build}' | ||||||
|  |  | ||||||
|  | # Do not build on tags (GitHub only) | ||||||
|  | skip_tags: true | ||||||
|  |  | ||||||
|  | image: Visual Studio 2017 | ||||||
|  |  | ||||||
|  | branches: | ||||||
|  |   except:  # blacklist | ||||||
|  |     - coverity_scan | ||||||
|  |  | ||||||
|  | environment: | ||||||
|  |   REPO_DIR: &REPO_DIR c:\qbittorrent | ||||||
|  |   CACHE_DIR: &CACHE_DIR c:\qbt_cache | ||||||
|  |  | ||||||
|  |   QBT_VER_URL: https://builds.shiki.hu/appveyor/version | ||||||
|  |   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 | ||||||
|  |  | ||||||
|  | clone_depth: 50 | ||||||
|  |  | ||||||
|  | install: | ||||||
|  |   # check if library needs update | ||||||
|  |   - appveyor DownloadFile "%QBT_VER_URL%" -FileName "c:\version_new" && SET /P newVersion=<"c:\version_new" | ||||||
|  |   - IF EXIST "%CACHE_DIR%\version" (SET /P oldVersion=<"%CACHE_DIR%\version") | ||||||
|  |   - IF NOT EXIST "%CACHE_DIR%\version" (SET updateCache=1) | ||||||
|  |   - IF NOT "%oldVersion%" == "%newVersion%" (SET updateCache=1) | ||||||
|  |   # update library | ||||||
|  |   - IF "%updateCache%" == "1" (ECHO "--- Will redownload libraries ---" && | ||||||
|  |       RMDIR /S /Q "%CACHE_DIR%" & MKDIR "%CACHE_DIR%" && | ||||||
|  |       appveyor DownloadFile "%QBT_LIB_URL%" -FileName "c:\qbt_lib.7z" && 7z x "c:\qbt_lib.7z" -o"%CACHE_DIR%" > nul && | ||||||
|  |       COPY "c:\version_new" "%CACHE_DIR%\version") | ||||||
|  |   # Qt stay compressed in cache | ||||||
|  |   - 7z x "%CACHE_DIR%\qt5_32.7z" -o"c:\qbt" > nul | ||||||
|  |  | ||||||
|  | before_build: | ||||||
|  |   # setup env | ||||||
|  |   - CALL "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat" | ||||||
|  |   - SET PATH=%PATH%;c:\qbt\qt5_32\bin;%CACHE_DIR%\jom; | ||||||
|  |   # setup project | ||||||
|  |   - COPY /Y "%CACHE_DIR%\conf.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,10 +1,8 @@ | |||||||
| # EditorConfig is awesome: https://EditorConfig.org | # EditorConfig is awesome: http://EditorConfig.org | ||||||
|  |  | ||||||
| root = true | root = true | ||||||
|  |  | ||||||
| [*] | [*] | ||||||
| charset = utf-8 |  | ||||||
| end_of_line = lf |  | ||||||
| indent_style = space | indent_style = space | ||||||
| indent_size = 4 | indent_size = 4 | ||||||
| insert_final_newline = true | insert_final_newline = true | ||||||
|   | |||||||
							
								
								
									
										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" |  | ||||||
							
								
								
									
										20
									
								
								.github/ISSUE_TEMPLATE.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								.github/ISSUE_TEMPLATE.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | **Please provide the following information** | ||||||
|  |  | ||||||
|  | ### qBittorrent version and Operating System | ||||||
|  | (type here) | ||||||
|  |  | ||||||
|  | ### If on linux, libtorrent and Qt version | ||||||
|  | (type here) | ||||||
|  |  | ||||||
|  | ### What is the problem | ||||||
|  | (type here) | ||||||
|  |  | ||||||
|  | ### What is the expected behavior | ||||||
|  | (type here) | ||||||
|  |  | ||||||
|  | ### Steps to reproduce | ||||||
|  | (type here) | ||||||
|  |  | ||||||
|  | ### Extra info(if any) | ||||||
|  | (type here) | ||||||
|  |  | ||||||
							
								
								
									
										74
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										74
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,74 +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 (**[macOS](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_macos.yaml?query=branch%3Amaster+event%3Apush)** / **[Ubuntu](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_ubuntu.yaml?query=branch%3Amaster+event%3Apush)** / **[Windows](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_windows.yaml?query=branch%3Amaster+event%3Apush)**) builds. |  | ||||||
|         - Perform a **[search of the issue tracker (including closed ones)](https://github.com/qbittorrent/qBittorrent/issues?q=is%3Aissue+is%3Aopen+-label%3A%22Feature+request%22)** to avoid posting a duplicate. |  | ||||||
|         - Make sure this is not a support request or question, both of which are better suited for either the **[discussions section](https://github.com/qbittorrent/qBittorrent/discussions)**, **[forum](https://qbforums.shiki.hu/)**, or **[subreddit](https://www.reddit.com/r/qBittorrent/)**. |  | ||||||
|         - Verify that the **[wiki](https://github.com/qbittorrent/qBittorrent/wiki)** did not contain a suitable solution either. |  | ||||||
|  |  | ||||||
|   - 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.6.6 x64 |  | ||||||
|         Operating system: Windows 10 Pro x64 (22H2) 10.0.19045 |  | ||||||
|         Qt: 6.4.3 |  | ||||||
|         libtorrent-rasterbar: 1.2.19 |  | ||||||
|       placeholder: | |  | ||||||
|         qBittorrent: |  | ||||||
|         Operating system: |  | ||||||
|         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: true |  | ||||||
							
								
								
									
										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" |  | ||||||
							
								
								
									
										71
									
								
								.github/workflows/ci_file_health.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										71
									
								
								.github/workflows/ci_file_health.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -1,71 +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 |  | ||||||
|     permissions: |  | ||||||
|       security-events: write |  | ||||||
|     steps: |  | ||||||
|       - name: Checkout repository |  | ||||||
|         uses: actions/checkout@v4 |  | ||||||
|         with: |  | ||||||
|           persist-credentials: false |  | ||||||
|  |  | ||||||
|       - name: Setup python |  | ||||||
|         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.6/pandoc-3.6-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 |  | ||||||
|  |  | ||||||
|       - name: Check GitHub Actions workflow |  | ||||||
|         env: |  | ||||||
|           GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |  | ||||||
|         run: | |  | ||||||
|           pip install zizmor |  | ||||||
|           IGNORE_RULEID='(.ruleId != "template-injection") |  | ||||||
|             and (.ruleId != "unpinned-uses")' |  | ||||||
|           IGNORE_ID='(.id != "template-injection") |  | ||||||
|             and (.id != "unpinned-uses")' |  | ||||||
|           zizmor \ |  | ||||||
|             --format sarif \ |  | ||||||
|             --pedantic \ |  | ||||||
|             ./ \ |  | ||||||
|             | jq "(.runs[].results |= map(select($IGNORE_RULEID))) |  | ||||||
|               | (.runs[].tool.driver.rules |= map(select($IGNORE_ID)))" \ |  | ||||||
|             > "${{ runner.temp }}/zizmor_results.sarif" |  | ||||||
|  |  | ||||||
|       - name: Upload zizmor results |  | ||||||
|         uses: github/codeql-action/upload-sarif@v3 |  | ||||||
|         with: |  | ||||||
|           category: zizmor |  | ||||||
|           sarif_file: "${{ runner.temp }}/zizmor_results.sarif" |  | ||||||
							
								
								
									
										152
									
								
								.github/workflows/ci_macos.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										152
									
								
								.github/workflows/ci_macos.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -1,152 +0,0 @@ | |||||||
| name: CI - macOS |  | ||||||
|  |  | ||||||
| on: [pull_request, push] |  | ||||||
|  |  | ||||||
| permissions: {} |  | ||||||
|  |  | ||||||
| concurrency: |  | ||||||
|   group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} |  | ||||||
|   cancel-in-progress: ${{ github.head_ref != '' }} |  | ||||||
|  |  | ||||||
| jobs: |  | ||||||
|   ci: |  | ||||||
|     name: Build |  | ||||||
|     runs-on: macos-latest |  | ||||||
|     permissions: |  | ||||||
|       actions: write |  | ||||||
|  |  | ||||||
|     strategy: |  | ||||||
|       fail-fast: false |  | ||||||
|       matrix: |  | ||||||
|         libt_version: ["2.0.11", "1.2.20"] |  | ||||||
|         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 |  | ||||||
|         with: |  | ||||||
|           persist-credentials: false |  | ||||||
|  |  | ||||||
|       - 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: "86" |  | ||||||
|           BOOST_PATCH_VERSION: "0" |  | ||||||
|         run: | |  | ||||||
|           boost_url="https://archives.boost.io/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=20 \ |  | ||||||
|             -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 -DQT_FORCE_ASSERTS -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 |  | ||||||
							
								
								
									
										91
									
								
								.github/workflows/ci_python.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										91
									
								
								.github/workflows/ci_python.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -1,91 +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 |  | ||||||
|         with: |  | ||||||
|           persist-credentials: false |  | ||||||
|  |  | ||||||
|       - 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 B101,B314,B405 $PY_FILES |  | ||||||
|  |  | ||||||
|       - name: Format code (auxiliary scripts) |  | ||||||
|         run: | |  | ||||||
|           pycodestyle \ |  | ||||||
|             --max-line-length=1000 \ |  | ||||||
|             --statistics \ |  | ||||||
|             $PY_FILES |  | ||||||
|  |  | ||||||
|       - name: Build code (auxiliary scripts) |  | ||||||
|         run: | |  | ||||||
|           python -m compileall $PY_FILES |  | ||||||
|  |  | ||||||
|       - name: Setup python (search engine) |  | ||||||
|         uses: actions/setup-python@v5 |  | ||||||
|         with: |  | ||||||
|           python-version: '3.9' |  | ||||||
|  |  | ||||||
|       - name: Install tools (search engine) |  | ||||||
|         run: pip install bandit mypy pycodestyle pyflakes pyright |  | ||||||
|  |  | ||||||
|       - name: Gather files (search engine) |  | ||||||
|         run: | |  | ||||||
|           export "PY_FILES=$(find . -type f -name '*.py' -path '*searchengine*' ! -name 'socks.py' -printf '%p ')" |  | ||||||
|           echo $PY_FILES |  | ||||||
|           echo "PY_FILES=$PY_FILES" >> "$GITHUB_ENV" |  | ||||||
|  |  | ||||||
|       - name: Check typings (search engine) |  | ||||||
|         run: | |  | ||||||
|           MYPYPATH="src/searchengine/nova3" \ |  | ||||||
|           mypy \ |  | ||||||
|             --follow-imports skip \ |  | ||||||
|             --strict \ |  | ||||||
|             $PY_FILES |  | ||||||
|           pyright \ |  | ||||||
|             $PY_FILES |  | ||||||
|  |  | ||||||
|       - name: Lint code (search engine) |  | ||||||
|         run: | |  | ||||||
|           pyflakes $PY_FILES |  | ||||||
|           bandit --skip B110,B310,B314,B405 $PY_FILES |  | ||||||
|  |  | ||||||
|       - name: Format code (search engine) |  | ||||||
|         run: | |  | ||||||
|           pycodestyle \ |  | ||||||
|             --ignore=E265,E402 \ |  | ||||||
|             --max-line-length=1000 \ |  | ||||||
|             --statistics \ |  | ||||||
|             $PY_FILES |  | ||||||
|  |  | ||||||
|       - name: Build code (search engine) |  | ||||||
|         run: | |  | ||||||
|           python -m compileall $PY_FILES |  | ||||||
							
								
								
									
										174
									
								
								.github/workflows/ci_ubuntu.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										174
									
								
								.github/workflows/ci_ubuntu.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -1,174 +0,0 @@ | |||||||
| name: CI - Ubuntu |  | ||||||
|  |  | ||||||
| on: [pull_request, push] |  | ||||||
|  |  | ||||||
| permissions: {} |  | ||||||
|  |  | ||||||
| concurrency: |  | ||||||
|   group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} |  | ||||||
|   cancel-in-progress: ${{ github.head_ref != '' }} |  | ||||||
|  |  | ||||||
| jobs: |  | ||||||
|   ci: |  | ||||||
|     name: Build |  | ||||||
|     runs-on: ubuntu-latest |  | ||||||
|     permissions: |  | ||||||
|       actions: write |  | ||||||
|       security-events: write |  | ||||||
|  |  | ||||||
|     strategy: |  | ||||||
|       fail-fast: false |  | ||||||
|       matrix: |  | ||||||
|         libt_version: ["2.0.11", "1.2.20"] |  | ||||||
|         qbt_gui: ["GUI=ON", "GUI=OFF"] |  | ||||||
|         qt_version: ["6.5.2"] |  | ||||||
|  |  | ||||||
|     env: |  | ||||||
|       boost_path: "${{ github.workspace }}/../boost" |  | ||||||
|       harden_flags: "-D_FORTIFY_SOURCE=3 -D_GLIBCXX_ASSERTIONS" |  | ||||||
|       libtorrent_path: "${{ github.workspace }}/../libtorrent" |  | ||||||
|  |  | ||||||
|     steps: |  | ||||||
|       - name: Checkout repository |  | ||||||
|         uses: actions/checkout@v4 |  | ||||||
|         with: |  | ||||||
|           persist-credentials: false |  | ||||||
|  |  | ||||||
|       - 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: "77" |  | ||||||
|           BOOST_PATCH_VERSION: "0" |  | ||||||
|         run: | |  | ||||||
|           boost_url="https://archives.boost.io/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_CXX_STANDARD=20 \ |  | ||||||
|             -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 }} -DQT_FORCE_ASSERTS -Werror" \ |  | ||||||
|           LDFLAGS="$LDFLAGS -gz" \ |  | ||||||
|           cmake \ |  | ||||||
|             -B build \ |  | ||||||
|             -G "Ninja" \ |  | ||||||
|             -DCMAKE_BUILD_TYPE=RelWithDebInfo \ |  | ||||||
|             -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ |  | ||||||
|             -DBOOST_ROOT="${{ env.boost_path }}" \ |  | ||||||
|             -DCMAKE_INSTALL_PREFIX="/usr" \ |  | ||||||
|             -DTESTING=ON \ |  | ||||||
|             -DVERBOSE_CONFIGURE=ON \ |  | ||||||
|             -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 |  | ||||||
							
								
								
									
										54
									
								
								.github/workflows/ci_webui.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										54
									
								
								.github/workflows/ci_webui.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -1,54 +0,0 @@ | |||||||
| name: CI - WebUI |  | ||||||
|  |  | ||||||
| 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 |  | ||||||
|     permissions: |  | ||||||
|       security-events: write |  | ||||||
|  |  | ||||||
|     defaults: |  | ||||||
|       run: |  | ||||||
|         working-directory: src/webui/www |  | ||||||
|  |  | ||||||
|     steps: |  | ||||||
|       - name: Checkout repository |  | ||||||
|         uses: actions/checkout@v4 |  | ||||||
|         with: |  | ||||||
|           persist-credentials: false |  | ||||||
|  |  | ||||||
|       - name: Setup nodejs |  | ||||||
|         uses: actions/setup-node@v4 |  | ||||||
|         with: |  | ||||||
|           node-version: 'lts/*' |  | ||||||
|  |  | ||||||
|       - name: Install tools |  | ||||||
|         run: | |  | ||||||
|           npm install |  | ||||||
|           npm ls |  | ||||||
|           npm ls --all |  | ||||||
|  |  | ||||||
|       - 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 |  | ||||||
							
								
								
									
										203
									
								
								.github/workflows/ci_windows.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										203
									
								
								.github/workflows/ci_windows.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -1,203 +0,0 @@ | |||||||
| name: CI - Windows |  | ||||||
|  |  | ||||||
| on: [pull_request, push] |  | ||||||
|  |  | ||||||
| permissions: {} |  | ||||||
|  |  | ||||||
| concurrency: |  | ||||||
|   group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} |  | ||||||
|   cancel-in-progress: ${{ github.head_ref != '' }} |  | ||||||
|  |  | ||||||
| jobs: |  | ||||||
|   ci: |  | ||||||
|     name: Build |  | ||||||
|     runs-on: windows-latest |  | ||||||
|     permissions: |  | ||||||
|       actions: write |  | ||||||
|  |  | ||||||
|     strategy: |  | ||||||
|       fail-fast: false |  | ||||||
|       matrix: |  | ||||||
|         libt_version: ["2.0.11", "1.2.20"] |  | ||||||
|  |  | ||||||
|     env: |  | ||||||
|       boost_path: "${{ github.workspace }}/../boost" |  | ||||||
|       libtorrent_path: "${{ github.workspace }}/../libtorrent" |  | ||||||
|       vcpkg_path: "c:/vcpkg" |  | ||||||
|  |  | ||||||
|     steps: |  | ||||||
|       - name: Checkout repository |  | ||||||
|         uses: actions/checkout@v4 |  | ||||||
|         with: |  | ||||||
|           persist-credentials: false |  | ||||||
|  |  | ||||||
|       - 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: "86" |  | ||||||
|           BOOST_PATCH_VERSION: "0" |  | ||||||
|         run: | |  | ||||||
|           $boost_url="https://archives.boost.io/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.8.0" |  | ||||||
|           arch: win64_msvc2022_64 |  | ||||||
|           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_CXX_STANDARD=20 ` |  | ||||||
|             -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+="/DQT_FORCE_ASSERTS /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 |  | ||||||
							
								
								
									
										118
									
								
								.github/workflows/coverity-scan.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										118
									
								
								.github/workflows/coverity-scan.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -1,118 +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.11"] |  | ||||||
|         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 |  | ||||||
|         with: |  | ||||||
|           persist-credentials: false |  | ||||||
|  |  | ||||||
|       - 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: "86" |  | ||||||
|           BOOST_PATCH_VERSION: "0" |  | ||||||
|         run: | |  | ||||||
|           boost_url="https://archives.boost.io/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 \ |  | ||||||
|             -DCMAKE_CXX_STANDARD=20 \ |  | ||||||
|             -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 |  | ||||||
							
								
								
									
										20
									
								
								.github/workflows/helper/pre-commit/.typos.toml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								.github/workflows/helper/pre-commit/.typos.toml
									
									
									
									
										vendored
									
									
								
							| @@ -1,20 +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" |  | ||||||
| Pn = "Pn" |  | ||||||
| UIU = "UIU" |  | ||||||
| @@ -1,95 +0,0 @@ | |||||||
| #!/usr/bin/env python3 |  | ||||||
|  |  | ||||||
| # A pre-commit hook for checking items order in grid layouts |  | ||||||
| # Copyright (C) 2024  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 collections.abc import Callable, Sequence |  | ||||||
| from typing import Optional |  | ||||||
| import argparse |  | ||||||
| import re |  | ||||||
| import xml.etree.ElementTree as ElementTree |  | ||||||
| import sys |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def traversePostOrder(root: ElementTree.Element, visitFunc: Callable[[ElementTree.Element], None]) -> None: |  | ||||||
|     stack = [(root, False)] |  | ||||||
|  |  | ||||||
|     while len(stack) > 0: |  | ||||||
|         (element, visit) = stack.pop() |  | ||||||
|         if visit: |  | ||||||
|             visitFunc(element) |  | ||||||
|         else: |  | ||||||
|             stack.append((element, True)) |  | ||||||
|             stack.extend((child, False) for child in reversed(element)) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def modifyElement(element: ElementTree.Element) -> None: |  | ||||||
|     def getSortKey(e: ElementTree.Element) -> tuple[int, int]: |  | ||||||
|         if e.tag == 'item': |  | ||||||
|             return (int(e.attrib['row']), int(e.attrib['column'])) |  | ||||||
|         return (-1, -1)  # don't care |  | ||||||
|  |  | ||||||
|     if element.tag == 'layout' and element.attrib['class'] == 'QGridLayout' and len(element) > 0: |  | ||||||
|         element[:] = sorted(element, key=getSortKey) |  | ||||||
|  |  | ||||||
|     # workaround_2a: ElementTree will unescape `"` and we need to escape it back |  | ||||||
|     if element.tag == 'string' and element.text is not None: |  | ||||||
|         element.text = element.text.replace('"', '"') |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 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) |  | ||||||
|  |  | ||||||
|     for filename in args.filenames: |  | ||||||
|         with open(filename, 'r+') as f: |  | ||||||
|             orig = f.read() |  | ||||||
|             root = ElementTree.fromstring(orig) |  | ||||||
|             traversePostOrder(root, modifyElement) |  | ||||||
|             ElementTree.indent(root, ' ') |  | ||||||
|  |  | ||||||
|             # workaround_1: cannot use `xml_declaration=True` since it uses single quotes instead of Qt preferred double quotes |  | ||||||
|             ret = f'<?xml version="1.0" encoding="UTF-8"?>\n{ElementTree.tostring(root, 'unicode')}\n' |  | ||||||
|  |  | ||||||
|             # workaround_2b: ElementTree will turn `"` into `&quot;`, so revert it back |  | ||||||
|             ret = ret.replace('&quot;', '"') |  | ||||||
|  |  | ||||||
|             # workaround_3: Qt prefers no whitespaces in self-closing tags |  | ||||||
|             ret = re.sub('<(.+) +/>', r'<\1/>', ret) |  | ||||||
|  |  | ||||||
|             if ret != orig: |  | ||||||
|                 print(f'Tip: run this script to apply the fix: `python {__file__} {filename}`', file=sys.stderr) |  | ||||||
|  |  | ||||||
|                 f.seek(0) |  | ||||||
|                 f.write(ret) |  | ||||||
|                 f.truncate() |  | ||||||
|  |  | ||||||
|     return 0 |  | ||||||
|  |  | ||||||
|  |  | ||||||
| if __name__ == '__main__': |  | ||||||
|     sys.exit(main()) |  | ||||||
| @@ -1,72 +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 collections.abc import Sequence |  | ||||||
| from typing import Optional |  | ||||||
| import argparse |  | ||||||
| import re |  | ||||||
| import sys |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 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__': |  | ||||||
|     sys.exit(main()) |  | ||||||
							
								
								
									
										26
									
								
								.github/workflows/stale_bot.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										26
									
								
								.github/workflows/stale_bot.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -1,26 +0,0 @@ | |||||||
| name: Stale bot |  | ||||||
|  |  | ||||||
| on: |  | ||||||
|   schedule: |  | ||||||
|     - cron: '0 0 * * *' |  | ||||||
|  |  | ||||||
| permissions: {} |  | ||||||
|  |  | ||||||
| jobs: |  | ||||||
|   stale: |  | ||||||
|     runs-on: ubuntu-latest |  | ||||||
|     permissions: |  | ||||||
|       pull-requests: write |  | ||||||
|     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 |  | ||||||
							
								
								
									
										10
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.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,7 +14,6 @@ Makefile* | |||||||
| *.o | *.o | ||||||
| *.pdb | *.pdb | ||||||
| *.exe | *.exe | ||||||
| *.dll |  | ||||||
|  |  | ||||||
| # Generated MOC, resource and UI files | # Generated MOC, resource and UI files | ||||||
| moc_*.cpp | moc_*.cpp | ||||||
| @@ -25,7 +21,8 @@ moc_*.h | |||||||
| qrc_*.cpp | qrc_*.cpp | ||||||
| ui_*.h | ui_*.h | ||||||
| *.moc | *.moc | ||||||
| *.qm | src/lang/qbittorrent_*.qm | ||||||
|  | src/webui/www/translations/webui_*.qm | ||||||
| .DS_Store | .DS_Store | ||||||
| .qmake.stash | .qmake.stash | ||||||
| src/qbittorrent.app | src/qbittorrent.app | ||||||
| @@ -38,6 +35,3 @@ config.status | |||||||
| src/icons/qbt-theme/build-icons/node_modules/ | src/icons/qbt-theme/build-icons/node_modules/ | ||||||
| src/icons/skin/build-icons/node_modules/ | src/icons/skin/build-icons/node_modules/ | ||||||
| src/icons/skin/build-icons/icons/*.png | src/icons/skin/build-icons/icons/*.png | ||||||
|  |  | ||||||
| # CMake build directory |  | ||||||
| build/ |  | ||||||
|   | |||||||
| @@ -1,110 +0,0 @@ | |||||||
| repos: |  | ||||||
|   - repo: local |  | ||||||
|     hooks: |  | ||||||
|       - id: check-grid-order |  | ||||||
|         name: Check items order in grid layouts |  | ||||||
|         entry: .github/workflows/helper/pre-commit/check_grid_items_order.py |  | ||||||
|         language: script |  | ||||||
|         files: \.ui$ |  | ||||||
|  |  | ||||||
|       - 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: v5.0.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.4.0 |  | ||||||
|     hooks: |  | ||||||
|     - id: codespell |  | ||||||
|       name: Check spelling (codespell) |  | ||||||
|       args: ["--ignore-words-list", "additionals,categor,curren,fo,ist,ket,notin,searchin,sectionin,superseeding,te,ths"] |  | ||||||
|       exclude: | |  | ||||||
|         (?x)^( |  | ||||||
|           .*\.desktop | |  | ||||||
|           .*\.qrc | |  | ||||||
|           Changelog | |  | ||||||
|           dist/windows/installer-translations/.* | |  | ||||||
|           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.29.4 |  | ||||||
|     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 | |  | ||||||
|           Changelog | |  | ||||||
|           dist/windows/installer-translations/.* | |  | ||||||
|           src/base/3rdparty/.* | |  | ||||||
|           src/searchengine/nova3/socks.py | |  | ||||||
|           src/webui/www/private/scripts/lib/.* |  | ||||||
|         )$ |  | ||||||
|       exclude_types: |  | ||||||
|         - svg |  | ||||||
|         - ts |  | ||||||
							
								
								
									
										164
									
								
								.travis.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										164
									
								
								.travis.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,164 @@ | |||||||
|  | language: cpp | ||||||
|  |  | ||||||
|  | os: | ||||||
|  |   - linux | ||||||
|  |   - osx | ||||||
|  |  | ||||||
|  | dist: xenial | ||||||
|  |  | ||||||
|  | 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 gui=true build_system=cmake | ||||||
|  |     - lt_branch=RC_1_0 gui=false build_system=cmake | ||||||
|  |     - lt_branch=RC_1_0 gui=true build_system=qmake | ||||||
|  |     - lt_branch=RC_1_0 gui=false build_system=qmake | ||||||
|  |   global: | ||||||
|  |     - secure: "OI9CUjj4lTb0HwwIZU5PbECU3hLlAL6KC8KsbwohG8/O3j5fLcnmDsK4Ad9us5cC39sS11Jcd1kDP2qRcCuST/glVNhLkcjKkiQerOfd5nQ/qL4JYfz/1mfP5mdpz9jHKzpLUIG+TXkbSTjP6VVmsb5KPT+3pKEdRFZB+Pu9+J8=" | ||||||
|  |     - coverity_branch: coverity_scan | ||||||
|  |  | ||||||
|  | matrix: | ||||||
|  |   allow_failures: | ||||||
|  |     - env: lt_branch=RC_1_0 gui=true build_system=cmake | ||||||
|  |     - env: lt_branch=RC_1_0 gui=false build_system=cmake | ||||||
|  |  | ||||||
|  | branches: | ||||||
|  |   except: | ||||||
|  |     - search_encoding_windows | ||||||
|  |     - v2_9_x | ||||||
|  |  | ||||||
|  | notifications: | ||||||
|  |   email: | ||||||
|  |     on_success: change | ||||||
|  |     on_failure: change | ||||||
|  |  | ||||||
|  | cache: | ||||||
|  |   ccache: true | ||||||
|  |   directories: | ||||||
|  |     - $HOME/hombebrew_cache | ||||||
|  |  | ||||||
|  | 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-safelist/blob/master/ubuntu.json | ||||||
|  |       - sourceline: 'ppa:qbittorrent-team/qbittorrent-stable' | ||||||
|  |     packages: | ||||||
|  |       # packages list: https://github.com/travis-ci/apt-package-safelist/blob/master/ubuntu-trusty | ||||||
|  |       - [autoconf, automake, colormake] | ||||||
|  |       - [ninja-build] | ||||||
|  |       - libssl-dev | ||||||
|  |       - [libboost-dev, libboost-system-dev] | ||||||
|  |       - libtorrent-rasterbar-dev | ||||||
|  |       - [qtbase5-dev, qttools5-dev-tools, libqt5svg5-dev] | ||||||
|  |  | ||||||
|  | before_install: | ||||||
|  |   # only allow specific build for coverity scan, others will stop | ||||||
|  |   - if [ "$TRAVIS_BRANCH" = "$coverity_branch" ] && ! [ "$TRAVIS_OS_NAME" = "linux" -a "$lt_branch" = "RC_1_0" -a "$gui" = true -a "$build_system" = "qmake" ]; then exit ; fi | ||||||
|  |  | ||||||
|  |   - shopt -s expand_aliases | ||||||
|  |   - alias make="colormake -j2" # Using nprocs/2 sometimes may fail (gcc is killed by system) | ||||||
|  |   - qbt_path="$HOME/qbt_install" | ||||||
|  |   - | | ||||||
|  |     if [ "$TRAVIS_OS_NAME" = "linux" ]; then | ||||||
|  |       qbtconf="$qbtconf --prefix="$qbt_path" PKG_CONFIG_PATH=/opt/qt55/lib/pkgconfig:$PKG_CONFIG_PATH" | ||||||
|  |     else | ||||||
|  |       qbtconf="$qbtconf --prefix="$qbt_path" PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig:$PKG_CONFIG_PATH" | ||||||
|  |       CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedefs -Wno-inconsistent-missing-override" | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  |   # options for specific branches | ||||||
|  |   - 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 | ||||||
|  |  | ||||||
|  |   # print settings | ||||||
|  |   - echo $lt_branch | ||||||
|  |   - echo $gui | ||||||
|  |   - echo $build_system | ||||||
|  |   - echo $ltconf | ||||||
|  |   - echo $qbtconf | ||||||
|  |  | ||||||
|  | install: | ||||||
|  |   #- | | ||||||
|  |     #if [ "$TRAVIS_OS_NAME" = "linux" ]; then | ||||||
|  |       # build libtorrent from source | ||||||
|  |       #if [ "$lt_branch" != "dist" ]; then | ||||||
|  |         #cd "$HOME" && pwd && git clone --depth 1 https://github.com/arvidn/libtorrent.git --branch $lt_branch | ||||||
|  |         #cd libtorrent && ./autotool.sh && ./configure $ltconf && make install | ||||||
|  |       #fi | ||||||
|  |     #fi | ||||||
|  |   - | | ||||||
|  |     if [ "$TRAVIS_OS_NAME" = "osx" ]; then | ||||||
|  |       # dependencies | ||||||
|  |       brew update > /dev/null | ||||||
|  |       brew outdated "pkg-config" || brew upgrade "pkg-config" | ||||||
|  |       brew install colormake ccache zlib qt openssl libtorrent-rasterbar | ||||||
|  |       PATH="/usr/local/opt/ccache/libexec:$PATH" | ||||||
|  |       brew link --force zlib qt | ||||||
|  |  | ||||||
|  |       if [ "$build_system" = "cmake" ]; then | ||||||
|  |         brew outdated cmake || brew upgrade cmake | ||||||
|  |         brew install ninja | ||||||
|  |  | ||||||
|  |         sudo ln -s /usr/local/opt/qt/mkspecs /usr/local/mkspecs | ||||||
|  |         sudo ln -s /usr/local/opt/qt/plugins /usr/local/plugins | ||||||
|  |          | ||||||
|  |         MY_CMAKE_OPENSSL_HINT="-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl/" | ||||||
|  |       fi | ||||||
|  |     fi | ||||||
|  |   - | | ||||||
|  |     if [ "$TRAVIS_BRANCH" != "$coverity_branch" ]; then | ||||||
|  |       export use_ccache=true | ||||||
|  |       ccache -M 512M | ||||||
|  |       ccache -V && ccache --show-stats && ccache --zero-stats | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  | script: | ||||||
|  |   - if [ "$TRAVIS_BRANCH" = "$coverity_branch" ]; then exit ; fi # skip usual build when running coverity scan | ||||||
|  |   - | | ||||||
|  |     cd "$TRAVIS_BUILD_DIR" | ||||||
|  |     if [ "$build_system" = "cmake" ]; then | ||||||
|  |       mkdir build | ||||||
|  |       cd build | ||||||
|  |       if [ "$gui" = "false" ]; then | ||||||
|  |         DISABLE_GUI_OPTION="-DCMAKE_DISABLE_FIND_PACKAGE_Qt5Widgets=ON" | ||||||
|  |       fi | ||||||
|  |       cmake $DISABLE_GUI_OPTION -DCMAKE_INSTALL_PREFIX="$qbt_path" "$MY_CMAKE_OPENSSL_HINT" \ | ||||||
|  |         -G "Ninja" -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE .. | ||||||
|  |       BUILD_TOOL="ninja" | ||||||
|  |     fi | ||||||
|  |     if [ "$build_system" = "qmake" ]; then | ||||||
|  |       ./bootstrap.sh && ./configure $qbtconf CXXFLAGS="$CXXFLAGS" | ||||||
|  |       BUILD_TOOL="make" | ||||||
|  |     fi | ||||||
|  |   - $BUILD_TOOL && $BUILD_TOOL 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 | ||||||
|  |       if [ "$build_system" = "qmake" ]; then | ||||||
|  |         macdeployqt "$TRAVIS_BUILD_DIR/src/$qbt_exe.app" | ||||||
|  |         cd "$TRAVIS_BUILD_DIR/src/$qbt_exe.app/Contents/MacOS" | ||||||
|  |       else | ||||||
|  |         cd "$qbt_path/$qbt_exe.app/Contents/MacOS" | ||||||
|  |       fi | ||||||
|  |     fi | ||||||
|  |   - ./$qbt_exe --version | ||||||
|  |  | ||||||
|  | after_script: | ||||||
|  |   - if [ "$use_ccache" = true ]; then ccache --show-stats ; fi | ||||||
							
								
								
									
										25
									
								
								.tx/config
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								.tx/config
									
									
									
									
									
								
							| @@ -1,24 +1,27 @@ | |||||||
| [main] | [main] | ||||||
| host = https://www.transifex.com | host = https://www.transifex.com | ||||||
|  |  | ||||||
| [o:sledgehammer999:p:qbittorrent:r:qbittorrent_v51x] | [qbittorrent.qbittorrent_master] | ||||||
| file_filter = src/lang/qbittorrent_<lang>.ts | file_filter = src/lang/qbittorrent_<lang>.ts | ||||||
|  | lang_map = pt: pt_PT | ||||||
| source_file = src/lang/qbittorrent_en.ts | source_file = src/lang/qbittorrent_en.ts | ||||||
| source_lang = en | source_lang = en | ||||||
| type = QT | type = QT | ||||||
| minimum_perc = 23 | minimum_perc = 23 | ||||||
| lang_map     = pt: pt_PT, zh: zh_CN | mode = developer | ||||||
|  |  | ||||||
| [o:sledgehammer999:p:qbittorrent:r:qbittorrent_webui_v51x] | [qbittorrent.qbittorrentdesktop_master] | ||||||
| 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] |  | ||||||
| source_file = dist/unix/org.qbittorrent.qBittorrent.desktop | source_file = dist/unix/org.qbittorrent.qBittorrent.desktop | ||||||
| source_lang = en | source_lang = en | ||||||
| type = DESKTOP | type = DESKTOP | ||||||
| minimum_perc = 23 | minimum_perc = 23 | ||||||
|  | mode = developer | ||||||
|  |  | ||||||
|  | [qbittorrent.qbittorrent_webui] | ||||||
|  | file_filter = src/webui/www/translations/webui_<lang>.ts | ||||||
|  | lang_map = pt: pt_PT | ||||||
|  | source_file = src/webui/www/translations/webui_en.ts | ||||||
|  | source_lang = en | ||||||
|  | type = QT | ||||||
|  | minimum_perc = 23 | ||||||
|  | mode = developer | ||||||
|   | |||||||
							
								
								
									
										99
									
								
								AUTHORS
									
									
									
									
									
								
							
							
						
						
									
										99
									
								
								AUTHORS
									
									
									
									
									
								
							| @@ -17,78 +17,81 @@ 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/skin/qbittorrent-tray.svg (and related pngs) | ||||||
|   copyright: Provided by HVS <hvs linuxmail org> (raster first proposal) and Atif Afzal(@atfzl github) <atif5801@gmail.com> (vectorized and modified) |   copyright: Provided by HVS <hvs linuxmail org> (raster first proposal) and Atif Afzal(@atfzl github) <atif5801@gmail.com> (vectorized and modified) | ||||||
|   license: GPLv2+ |   license: GPLv2+ | ||||||
|  |  | ||||||
| * files: src/qbittorrent_file.ico src/icons/fileicon.svg | * files: src/qbittorrent_file.ico src/icons/fileicon.svg | ||||||
|   copyright: '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: 'uknown.svg' (LGPLv3+) from Oxygen Icon Theme was used as base which was slightly modified and 'qbittorrent-tray.svg' (GPLv2+) was overlayed above it. | ||||||
|   license: GPLv3+ |   license: GPLv3+ | ||||||
|  |  | ||||||
| * files: src/icons/flags/*.svg | * files: src/icons/*.png | ||||||
|   copyright: lipis/flag-icons |   copyright: Gnome Icon Theme | ||||||
|   license: MIT |   license: GPLv2 | ||||||
|   url: https://github.com/lipis/flag-icons/ |   url: http://ftp.acc.umu.se/pub/GNOME/sources/gnome-icon-theme | ||||||
|  |  | ||||||
| * file: src/webui/www/private/images/tabs.gif | * files: src/oxygen/*.png | ||||||
|  |   copyright: Oxygen Icon Theme (KDE) | ||||||
|  |   license: LGPL | ||||||
|  |   url: http://www.oxygen-icons.org | ||||||
|  |  | ||||||
|  | * files: src/icons/flags/*.svg | ||||||
|  |   copyright: lipis/flag-icon-css | ||||||
|  |   license: MIT | ||||||
|  |   url: https://github.com/lipis/flag-icon-css/ | ||||||
|  |  | ||||||
|  | * 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 +119,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) | ||||||
|   | |||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user