You've already forked qBittorrent
							
							
				mirror of
				https://github.com/qbittorrent/qBittorrent
				synced 2025-10-30 23:30:54 +01:00 
			
		
		
		
	Compare commits
	
		
			305 Commits
		
	
	
		
			release-4.
			...
			release-4.
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | f9811ec3b0 | ||
|   | 9129c42177 | ||
|   | e331db077c | ||
|   | 4a56c3f5df | ||
|   | b1e2e511bb | ||
|   | ac1fd66f05 | ||
|   | 6431fe5f73 | ||
|   | c31931324d | ||
|   | f1d78563af | ||
|   | 99b5983143 | ||
|   | c1e8849b40 | ||
|   | 330f20171f | ||
|   | b53eadaec8 | ||
|   | 26d78f6462 | ||
|   | 9890bb7501 | ||
|   | c7daaf95fc | ||
|   | b760f37093 | ||
|   | 7f5271ae7c | ||
|   | 1130bf300a | ||
|   | 3f142360ed | ||
|   | af07a98784 | ||
|   | 6c546df70b | ||
|   | a46348ada9 | ||
|   | 5fc9bf5d29 | ||
|   | 556db6a91a | ||
|   | 9ed9ffcaf2 | ||
|   | bf986fcf4c | ||
|   | 0036a02a72 | ||
|   | 6e268b007b | ||
|   | 2be2ee6fc2 | ||
|   | be4fa061ee | ||
|   | 665bbc2421 | ||
|   | 8d408ffc8b | ||
|   | aa39c7aae5 | ||
|   | 7ad667e8d2 | ||
|   | 0c8220c9fd | ||
|   | e9364b72f9 | ||
|   | a004f0afc5 | ||
|   | d7f172060c | ||
|   | 9eae2b8ea9 | ||
|   | 26e220e003 | ||
|   | d7e9533e8c | ||
|   | 8306a41d11 | ||
|   | 169c4991d5 | ||
|   | 78344a10fa | ||
|   | f8d9f70e7f | ||
|   | 011ac90a52 | ||
|   | c1b38221d2 | ||
|   | c621cae43b | ||
|   | ede7c8acbb | ||
|   | 9195df5179 | ||
|   | a3d5ea829b | ||
|   | c062f86bac | ||
|   | e5894831ec | ||
|   | f40e92f186 | ||
|   | 0ab10ef2b3 | ||
|   | 049e376953 | ||
|   | 6dab4615aa | ||
|   | 0b9a1dfd9d | ||
|   | 11c45db2ec | ||
|   | ba147d72b9 | ||
|   | 97ead6d7c9 | ||
|   | 51cb3ca0c8 | ||
|   | c514c2b7a8 | ||
|   | d26e582cc1 | ||
|   | 5d161d2477 | ||
|   | b9ea6a5dc5 | ||
|   | 7b0b64a04e | ||
|   | 4cb386af35 | ||
|   | 14ab1b015c | ||
|   | 0a4971c994 | ||
|   | a75ae21434 | ||
|   | 01eed5dae9 | ||
|   | e73397c750 | ||
|   | 869d079507 | ||
|   | 71174edf72 | ||
|   | b3d46ecb78 | ||
|   | 80035a2520 | ||
|   | 6790335239 | ||
|   | 48ff494dca | ||
|   | c5b361ce74 | ||
|   | 397b7b9407 | ||
|   | 6e0c1e2147 | ||
|   | e93c360db6 | ||
|   | 270e2023cd | ||
|   | 5ac858213b | ||
|   | f0ee6aba29 | ||
|   | fa418087c4 | ||
|   | 8493e1ad64 | ||
|   | fe90fcef5b | ||
|   | 210fd80167 | ||
|   | 0a1e864f74 | ||
|   | 7adccab687 | ||
|   | 67e536d869 | ||
|   | 86e8d848f6 | ||
|   | 88114b4588 | ||
|   | e468f004f4 | ||
|   | 4cfccc54ea | ||
|   | 5ffa7e4752 | ||
|   | d7fd576293 | ||
|   | 83b34053a1 | ||
|   | b9164adb7a | ||
|   | 8397b118b7 | ||
|   | 74dc000ac1 | ||
|   | 9b61991523 | ||
|   | 702c79a92f | ||
|   | a27822b557 | ||
|   | bdcb00a3b2 | ||
|   | ac5a485651 | ||
|   | e8c65388eb | ||
|   | f2cbb61d49 | ||
|   | 0a1c61d9d3 | ||
|   | 01a0fff4c2 | ||
|   | bf9516d164 | ||
|   | fdbf8cb0ee | ||
|   | 7e8a176751 | ||
|   | 61504ae3b1 | ||
|   | dd76525372 | ||
|   | 1c0f8b4289 | ||
|   | 63043b4927 | ||
|   | 3ea4c66d41 | ||
|   | 781d7fbf1a | ||
|   | e7ebbffbfd | ||
|   | 39f054eef6 | ||
|   | 7a620c794d | ||
|   | cc13f3e10d | ||
|   | b0e41abf5a | ||
|   | 5347897b7d | ||
|   | 6f8fae9a7b | ||
|   | 62b50d1475 | ||
|   | 2fb0c86f1e | ||
|   | aedd997604 | ||
|   | aa3da942cb | ||
|   | 87e1a14a4b | ||
|   | 00f6bb7c82 | ||
|   | cca93c2be2 | ||
|   | ad9d0608d4 | ||
|   | 3c5688c6f6 | ||
|   | ece92a886a | ||
|   | 85777ea491 | ||
|   | b8a84dbd83 | ||
|   | 35c31906b7 | ||
|   | 1fa940876f | ||
|   | c652123145 | ||
|   | 1c52fff1cc | ||
|   | 261f08b90e | ||
|   | 2d48581570 | ||
|   | b8a7ecfe69 | ||
|   | cbc2de6b85 | ||
|   | 9d2bb67834 | ||
|   | 3d7ff9765a | ||
|   | 28f2def21f | ||
|   | 0ee303789a | ||
|   | 6ccc92020c | ||
|   | e3fe66d3ec | ||
|   | ab5605d54b | ||
|   | a7a90613c2 | ||
|   | 19d95ebd10 | ||
|   | 0e1849346b | ||
|   | 0f34e3bed9 | ||
|   | c8b66b25e8 | ||
|   | e6f07a6fe4 | ||
|   | 51469f8fa2 | ||
|   | d78b2a569f | ||
|   | ec6c970775 | ||
|   | 67c45efff7 | ||
|   | a54772bf35 | ||
|   | 166be2a94d | ||
|   | 7150d05399 | ||
|   | 36a6e22f27 | ||
|   | dc13eaed1f | ||
|   | 001bd60d36 | ||
|   | b063042988 | ||
|   | fa1d49add5 | ||
|   | b45248bf99 | ||
|   | dfe862dcd5 | ||
|   | d4ddeaa917 | ||
|   | 13a49866a7 | ||
|   | 7e2aea92b0 | ||
|   | 7db51b2f8d | ||
|   | ae1b963e0f | ||
|   | b29b7e0185 | ||
|   | 71270260bf | ||
|   | 22abbc1d41 | ||
|   | 32698fe0be | ||
|   | 16f8d6a936 | ||
|   | 046d6f3bc1 | ||
|   | e33c4086b9 | ||
|   | 51d754a53e | ||
|   | 49976bcd83 | ||
|   | f991d2bdb4 | ||
|   | e6ff23885e | ||
|   | 7aa859a442 | ||
|   | 180deb867a | ||
|   | a5c531f0a4 | ||
|   | 5dd70b88d3 | ||
|   | 40f2718265 | ||
|   | ddd106655d | ||
|   | cc61ad01b6 | ||
|   | 8a44c1f6d5 | ||
|   | e370cbb06b | ||
|   | cb0c2e3b9c | ||
|   | 80360cc79a | ||
|   | 559a979536 | ||
|   | 5e88537809 | ||
|   | 8b60baea99 | ||
|   | ac61c33d1c | ||
|   | 3088f04e6f | ||
|   | 864dca1b67 | ||
|   | 15320018f0 | ||
|   | 6226dd5b80 | ||
|   | aafc1064d9 | ||
|   | fb2fbc875d | ||
|   | 8085db6ba9 | ||
|   | 4f20769a6c | ||
|   | 090199f9de | ||
|   | cd3635985e | ||
|   | 8a7179195f | ||
|   | e45e29b431 | ||
|   | ca28fc27dc | ||
|   | 08b2cde8e8 | ||
|   | 489d88e02a | ||
|   | dff39ffd20 | ||
|   | 3c948ef063 | ||
|   | 7087565d92 | ||
|   | 3467358663 | ||
|   | 45a1c25a29 | ||
|   | 70a11a12b3 | ||
|   | 5d5b0d572e | ||
|   | 7c8eadfddf | ||
|   | 89ca0c537d | ||
|   | a92a6404cb | ||
|   | 78459fcb31 | ||
|   | 41fc0fd084 | ||
|   | 5c9655abc3 | ||
|   | 3301797491 | ||
|   | eb5e1d34df | ||
|   | 9e92e5995f | ||
|   | e96f2d7be0 | ||
|   | 03cb51844b | ||
|   | 6b06cc9216 | ||
|   | 6b49323f05 | ||
|   | 4a11fab2b1 | ||
|   | c382191e75 | ||
|   | 4d480b8761 | ||
|   | cd25562fd2 | ||
|   | 9a3d560d9e | ||
|   | 4924fb95f8 | ||
|   | 6de67fe81f | ||
|   | bc71827c01 | ||
|   | a8ade3a04b | ||
|   | eca04e2e92 | ||
|   | 763b9fc1da | ||
|   | add75fbc77 | ||
|   | 86b1ac5d7c | ||
|   | b51197936b | ||
|   | 64609ce5cf | ||
|   | b81cbf9062 | ||
|   | e7e881e5d7 | ||
|   | e236a76d5a | ||
|   | ad8a827c1f | ||
|   | 08ac33bc5c | ||
|   | 5cf39a2970 | ||
|   | 1c9321d5a1 | ||
|   | 97a8d865dc | ||
|   | 982133d9b6 | ||
|   | d23935a269 | ||
|   | 1c343a444b | ||
|   | 1c9696b68e | ||
|   | ecd23d0abd | ||
|   | 010d1b5ff8 | ||
|   | 46394a7c0f | ||
|   | fc86034fab | ||
|   | 03012cc175 | ||
|   | 8518333406 | ||
|   | b2e0e25f1c | ||
|   | 9673be17cb | ||
|   | fa8786e230 | ||
|   | 21f72baae2 | ||
|   | 4b78af268f | ||
|   | a734199383 | ||
|   | 046b741700 | ||
|   | ce0b6f0d56 | ||
|   | 6de0622c1a | ||
|   | 6229b81730 | ||
|   | c701379a2e | ||
|   | 0783968121 | ||
|   | 307f5e6e56 | ||
|   | cb29685a24 | ||
|   | dabba89682 | ||
|   | 2efd4f2a77 | ||
|   | 90296b3ef0 | ||
|   | 8f02fe0cc6 | ||
|   | 7a6edcdddb | ||
|   | 81139c0098 | ||
|   | 6a6268c068 | ||
|   | 68133ec8e3 | ||
|   | 314f92f2d8 | ||
|   | 8b5db328ec | ||
|   | 615b76f78c | ||
|   | f2912c14ea | ||
|   | 08f33d7e9e | ||
|   | c034cb5985 | ||
|   | e3cd15dced | ||
|   | 8439d4e827 | 
| @@ -3,7 +3,7 @@ version: '{branch}-{build}' | |||||||
| # Do not build on tags (GitHub only) | # Do not build on tags (GitHub only) | ||||||
| skip_tags: true | skip_tags: true | ||||||
|  |  | ||||||
| image: Visual Studio 2019 | image: Visual Studio 2022 | ||||||
|  |  | ||||||
| branches: | branches: | ||||||
|   except:  # blacklist |   except:  # blacklist | ||||||
| @@ -42,7 +42,7 @@ install: | |||||||
|  |  | ||||||
| before_build: | before_build: | ||||||
|   # setup env |   # setup env | ||||||
|   - CALL "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" |   - CALL "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 | ||||||
|   - SET PATH=%PATH%;C:\Qt\5.15.2\msvc2019_64\bin;%CACHE_DIR%\jom |   - SET PATH=%PATH%;C:\Qt\5.15.2\msvc2019_64\bin;%CACHE_DIR%\jom | ||||||
|   # setup project |   # setup project | ||||||
|   - COPY /Y "%CACHE_DIR%\conf.pri" "%REPO_DIR%" |   - COPY /Y "%CACHE_DIR%\conf.pri" "%REPO_DIR%" | ||||||
| @@ -56,4 +56,38 @@ build_script: | |||||||
|   - qmake qbittorrent.pro && cd src && qmake src.pro |   - qmake qbittorrent.pro && cd src && qmake src.pro | ||||||
|   - jom -j2 -f Makefile.Release |   - jom -j2 -f Makefile.Release | ||||||
|  |  | ||||||
|  | after_build: | ||||||
|  |   - cd "%REPO_DIR%" | ||||||
|  |   - MKDIR upload | ||||||
|  |   - COPY dist\windows\qt.conf upload | ||||||
|  |   - COPY src\release\qbittorrent.exe upload | ||||||
|  |   - COPY src\release\qbittorrent.pdb upload | ||||||
|  |   - COPY "%CACHE_DIR%\base\bin\libcrypto-1_1-x64.dll" upload | ||||||
|  |   - COPY "%CACHE_DIR%\base\bin\libssl-1_1-x64.dll" upload | ||||||
|  |   - COPY "%CACHE_DIR%\base\lib\torrent-rasterbar.dll" upload | ||||||
|  |   - COPY "%CACHE_DIR%\base\lib\zlib1.dll" upload | ||||||
|  |   - COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Core.dll upload | ||||||
|  |   - COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Gui.dll upload | ||||||
|  |   - COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Network.dll upload | ||||||
|  |   - COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Sql.dll upload | ||||||
|  |   - COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Svg.dll upload | ||||||
|  |   - COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Widgets.dll upload | ||||||
|  |   - COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5WinExtras.dll upload | ||||||
|  |   - COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Xml.dll upload | ||||||
|  |   - MKDIR upload\plugins\iconengines | ||||||
|  |   - COPY C:\Qt\5.15.2\msvc2019_64\plugins\iconengines\qsvgicon.dll upload\plugins\iconengines | ||||||
|  |   - MKDIR upload\plugins\imageformats | ||||||
|  |   - COPY C:\Qt\5.15.2\msvc2019_64\plugins\imageformats\qico.dll upload\plugins\imageformats | ||||||
|  |   - COPY C:\Qt\5.15.2\msvc2019_64\plugins\imageformats\qsvg.dll upload\plugins\imageformats | ||||||
|  |   - MKDIR upload\plugins\platforms | ||||||
|  |   - COPY C:\Qt\5.15.2\msvc2019_64\plugins\platforms\qwindows.dll upload\plugins\platforms | ||||||
|  |   - MKDIR upload\plugins\sqldrivers | ||||||
|  |   - COPY C:\Qt\5.15.2\msvc2019_64\plugins\sqldrivers\qsqlite.dll upload\plugins\sqldrivers | ||||||
|  |   - MKDIR upload\plugins\styles | ||||||
|  |   - COPY C:\Qt\5.15.2\msvc2019_64\plugins\styles\qwindowsvistastyle.dll upload\plugins\styles | ||||||
|  |  | ||||||
| test: off | test: off | ||||||
|  |  | ||||||
|  | artifacts: | ||||||
|  |   - path: upload | ||||||
|  |     name: qBittorrent-Appveyor_Windows-x64 | ||||||
|   | |||||||
							
								
								
									
										89
									
								
								.github/ISSUE_TEMPLATE/bug_report.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										89
									
								
								.github/ISSUE_TEMPLATE/bug_report.md
									
									
									
									
										vendored
									
									
								
							| @@ -1,89 +0,0 @@ | |||||||
| --- |  | ||||||
| name: Bug Report |  | ||||||
| about: Report a problem with qBittorrent to help us resolve it. |  | ||||||
| title: '' |  | ||||||
| labels: '' |  | ||||||
| assignees: '' |  | ||||||
| --- |  | ||||||
|  |  | ||||||
| # Bug report |  | ||||||
|  |  | ||||||
| <!-- |  | ||||||
| ############################################################################### |  | ||||||
|   WARNING! |  | ||||||
|   IGNORING THE INSTRUCTIONS IN THIS TEMPLATE WILL RESULT IN THE ISSUE BEING |  | ||||||
|   CLOSED AS INCOMPLETE/INVALID |  | ||||||
| ############################################################################### |  | ||||||
| --> |  | ||||||
|  |  | ||||||
| ## Checklist |  | ||||||
|  |  | ||||||
| <!-- |  | ||||||
| ################################## IMPORTANT ################################## |  | ||||||
|  |  | ||||||
| As you read and fulfill each of the following requirements below, |  | ||||||
| put an "x" between the square brackets to mark each task as done, like so: [x] |  | ||||||
| --> |  | ||||||
|  |  | ||||||
| - [ ] I have read the **issue reporting section** in the [contributing guidelines](https://github.com/qbittorrent/qBittorrent/blob/master/CONTRIBUTING.md), so I know how to submit a good bug report with the required information |  | ||||||
| - [ ] I have verified that the **issue is not fixed and is reproducible** in the **[latest version](https://www.qbittorrent.org/download.php)** |  | ||||||
| - [ ] (optional but recommended) I have verified that the **issue is not fixed and is reproducible** in the **[latest CI build](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci.yaml?query=branch%3Amaster+event%3Apush)** |  | ||||||
| - [ ] I have **checked the [frequent/common issues list](https://github.com/qbittorrent/qBittorrent/projects/2)** and **searched** the issue tracker for similar bug reports (including closed ones) **to avoid posting a duplicate** |  | ||||||
| - [ ] This report 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/). The [wiki](https://github.com/qbittorrent/qBittorrent/wiki) did not contain a suitable solution either |  | ||||||
| - [ ] I have **pasted/attached the settings file and relevant log(s)** in the **Attachments** section at the bottom of the report. Mandatory: the settings file and at least the most recent log. See [this wiki page](https://github.com/qbittorrent/qBittorrent/wiki/Frequently-Asked-Questions#Where_does_qBittorrent_save_its_settings) if you're not sure where to find them. |  | ||||||
|  |  | ||||||
| ## Description |  | ||||||
|  |  | ||||||
| <!-- |  | ||||||
| ################################## IMPORTANT ################################## |  | ||||||
|  |  | ||||||
| Delete each "(type here)" indicator and type your text in their place in the subsections below. |  | ||||||
| You MUST fill in ALL subsections marked with "(type here)" with the appropriate information. |  | ||||||
|  |  | ||||||
| Please make sure the description is worded well enough to be understood. |  | ||||||
| Provide steps to reproduce the issue, any additional relevant information, suggested solution (if applicable) and as much context and examples as possible. |  | ||||||
| For more information consult the Contributing Guidelines at https://github.com/qbittorrent/qBittorrent/blob/master/CONTRIBUTING.md. |  | ||||||
|  |  | ||||||
| Do not forget about the mandatory attachments! |  | ||||||
|  |  | ||||||
| Use the Preview tab before posting to make sure your report looks like it is formatted properly. |  | ||||||
| You don't need to delete these comments, they won't show up in the final post. |  | ||||||
| --> |  | ||||||
|  |  | ||||||
| ### qBittorrent info and operating system(s) |  | ||||||
|  |  | ||||||
| <!-- |  | ||||||
| IMPORTANT: |  | ||||||
| if you did not get the qBittorrent installer from the links in the official website |  | ||||||
| or if you did not install it from the PPA, please mention that after the version |  | ||||||
| --> |  | ||||||
|  |  | ||||||
| - qBittorrent version: (type here) |  | ||||||
| - Operating system(s) where the issue occurs: (type here) |  | ||||||
|  |  | ||||||
| ### If on Linux, `libtorrent-rasterbar` and `Qt` versions |  | ||||||
|  |  | ||||||
| - Qt: (type here) |  | ||||||
| - libtorrent-rasterbar: (type here) |  | ||||||
|  |  | ||||||
| ### What is the problem |  | ||||||
|  |  | ||||||
| (type here) |  | ||||||
|  |  | ||||||
| ### Detailed steps to reproduce the problem |  | ||||||
|  |  | ||||||
| 1. (type here) |  | ||||||
| 2. (type here) |  | ||||||
| 3. (etc.) |  | ||||||
|  |  | ||||||
| ### What is the expected behavior |  | ||||||
|  |  | ||||||
| (type here) |  | ||||||
|  |  | ||||||
| ### Extra info (if any) |  | ||||||
|  |  | ||||||
| (type here) |  | ||||||
|  |  | ||||||
| ## Attachments |  | ||||||
|  |  | ||||||
| <!-- paste file contents here (or attach the files if they are big), do NOT link to external sites --> |  | ||||||
							
								
								
									
										76
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,76 @@ | |||||||
|  | name: Bug Report | ||||||
|  | description: File a bug report to help improve qBittorrent user experience. | ||||||
|  | body: | ||||||
|  |   - type: markdown | ||||||
|  |     attributes: | ||||||
|  |       value: | | ||||||
|  |         #### ADVISORY | ||||||
|  |         "We do not support any versions older than the current release series" | ||||||
|  |  | ||||||
|  |         "We do not support any 3rd party/forked versions e.g. `portableapps`/`Enhanced Edition`etc." | ||||||
|  |  | ||||||
|  |         "Please post all details in **English**." | ||||||
|  |  | ||||||
|  |         #### Prerequisites before submitting an issue! | ||||||
|  |         - Read the issue reporting section in the **[contributing guidelines](https://github.com/qbittorrent/qBittorrent/blob/master/CONTRIBUTING.md)**, to know how to submit a good bug report with the required information. | ||||||
|  |         - Verify that the issue is not fixed and is reproducible in the **[latest official qBittorrent version](https://www.qbittorrent.org/download.php).** | ||||||
|  |         - (Optional, but recommended) Verify that the issue is not fixed and is reproducible in the latest CI (**[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. | ||||||
|  |         - Check the **[frequent/common issues list](https://github.com/qbittorrent/qBittorrent/projects/2)** and perform a **[search of the issue tracker (including closed ones)](https://github.com/qbittorrent/qBittorrent/issues)** to avoid posting a duplicate. | ||||||
|  |         - Make sure this is not a support request or question, both of which are better suited for either the **[discussions section](https://github.com/qbittorrent/qBittorrent/discussions)**, **[forum](https://qbforums.shiki.hu/)**, or **[subreddit](https://www.reddit.com/r/qBittorrent/)**. | ||||||
|  |         - Verify that the **[wiki](https://github.com/qbittorrent/qBittorrent/wiki)** did not contain a suitable solution either. | ||||||
|  |         - If relevant to issue/when asked, the qBittorrent preferences file, qBittorrent.log & watched_folders.json (if using "Watched Folders" feature) must be provided. | ||||||
|  |           See **[Where does qBittorrent save its settings?](https://github.com/qbittorrent/qBittorrent/wiki/Frequently-Asked-Questions#Where_does_qBittorrent_save_its_settings)** | ||||||
|  |  | ||||||
|  |   - type: textarea | ||||||
|  |     attributes: | ||||||
|  |       label: qBittorrent & operating system versions | ||||||
|  |       description: | | ||||||
|  |         Qt and libtorrent-rasterbar versions are required when: 1. You are using linux. 2. You are not using an official build downloaded from our website. | ||||||
|  |  | ||||||
|  |         Example of preferred formatting: | ||||||
|  |         qBittorrent: 4.3.7 x64 | ||||||
|  |         Operating system: Windows 10 Pro 21H1/2009 x64 | ||||||
|  |         Qt: 5.15.2 | ||||||
|  |         libtorrent-rasterbar: 1.2.14 | ||||||
|  |       placeholder: | | ||||||
|  |         qBittorrent: | ||||||
|  |         Operating system: | ||||||
|  |         Qt: | ||||||
|  |         libtorrent-rasterbar: | ||||||
|  |     validations: | ||||||
|  |       required: true | ||||||
|  |  | ||||||
|  |   - type: textarea | ||||||
|  |     attributes: | ||||||
|  |       label: What is the problem? | ||||||
|  |       description: Please add the "crash report" (if encountered) or give a clear and concise description of problem. | ||||||
|  |     validations: | ||||||
|  |       required: true | ||||||
|  |  | ||||||
|  |   - type: textarea | ||||||
|  |     attributes: | ||||||
|  |       label: Steps to reproduce | ||||||
|  |       description: Please provide reliable steps to reproduce the problem. | ||||||
|  |       placeholder: | | ||||||
|  |         1. First step | ||||||
|  |         2. Second step | ||||||
|  |         3. and so on... | ||||||
|  |     validations: | ||||||
|  |       required: false | ||||||
|  |  | ||||||
|  |   - type: textarea | ||||||
|  |     attributes: | ||||||
|  |       label: Additional context | ||||||
|  |       description: Add screenshots etc. (Anything that will provide more context about the problem) | ||||||
|  |     validations: | ||||||
|  |       required: false | ||||||
|  |  | ||||||
|  |   - type: textarea | ||||||
|  |     attributes: | ||||||
|  |       label: Log(s) & preferences file(s) | ||||||
|  |       description: | | ||||||
|  |         Add these files: qBittorrent preferences file, qBittorrent.log & watched_folders.json (if using "Watched Folders" feature). | ||||||
|  |         See **[Where does qBittorrent save its settings?](https://github.com/qbittorrent/qBittorrent/wiki/Frequently-Asked-Questions#Where_does_qBittorrent_save_its_settings)** | ||||||
|  |         #### Note: It's the user's responsibility to redact any sensitive information | ||||||
|  |     validations: | ||||||
|  |       required: false | ||||||
							
								
								
									
										21
									
								
								.github/ISSUE_TEMPLATE/config.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										21
									
								
								.github/ISSUE_TEMPLATE/config.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,20 +1,17 @@ | |||||||
| blank_issues_enabled: false | blank_issues_enabled: false | ||||||
| contact_links: | contact_links: | ||||||
|   - |   - name: Wiki | ||||||
|     about: "Consult the wiki first (especially the FAQ), it might already contain the information you are looking for" |  | ||||||
|     name: Wiki |  | ||||||
|     url: "https://github.com/qbittorrent/qBittorrent/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 | ||||||
|     about: "Please ask questions related to usage/setup/support/non-issue development discussion in the Discussions section" |  | ||||||
|     name: Question |  | ||||||
|     url: "https://github.com/qbittorrent/qBittorrent/discussions" |     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 | ||||||
|     about: "Alternatively, ask on the official forum" |  | ||||||
|     name: Question |  | ||||||
|     url: "http://forum.qbittorrent.org/" |     url: "http://forum.qbittorrent.org/" | ||||||
|   - |     about: "Alternatively, ask on the official forum" | ||||||
|     about: "Alternatively, use the subreddit" |  | ||||||
|     name: Question |   - name: Question | ||||||
|     url: "https://www.reddit.com/r/qBittorrent/" |     url: "https://www.reddit.com/r/qBittorrent/" | ||||||
|  |     about: "Alternatively, use the subreddit" | ||||||
|   | |||||||
							
								
								
									
										61
									
								
								.github/ISSUE_TEMPLATE/feature_request.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										61
									
								
								.github/ISSUE_TEMPLATE/feature_request.md
									
									
									
									
										vendored
									
									
								
							| @@ -1,61 +0,0 @@ | |||||||
| --- |  | ||||||
| name: Feature Request |  | ||||||
| about: Suggest a new feature or enhancement for qBittorrent. |  | ||||||
| title: '' |  | ||||||
| labels: 'Feature request' |  | ||||||
| assignees: '' |  | ||||||
| --- |  | ||||||
|  |  | ||||||
| # Feature request |  | ||||||
|  |  | ||||||
| <!-- |  | ||||||
| ############################################################################### |  | ||||||
|   WARNING! |  | ||||||
|   IGNORING THE INSTRUCTIONS IN THIS TEMPLATE WILL RESULT IN THE ISSUE BEING |  | ||||||
|   CLOSED AS INCOMPLETE/INVALID |  | ||||||
| ############################################################################### |  | ||||||
| --> |  | ||||||
|  |  | ||||||
| ## Checklist |  | ||||||
|  |  | ||||||
| <!-- |  | ||||||
| ################################## IMPORTANT ################################## |  | ||||||
|  |  | ||||||
| As you read and fulfill each of the following requirements below, |  | ||||||
| put an "x" between the square brackets to mark each task as done, like so: [x] |  | ||||||
| --> |  | ||||||
|  |  | ||||||
| - [ ] I have read the **feature request section** in the [contributing guidelines](https://github.com/qbittorrent/qBittorrent/blob/master/CONTRIBUTING.md), so I know how to submit a good feature request with the required information |  | ||||||
| - [ ] I have verified that the **feature** I am requesting is **not available** in the **[latest version](https://www.qbittorrent.org/download.php)** |  | ||||||
| - [ ] (optional but recommended) I have verified that the **feature** I am requesting is **not available** in the **[latest CI build](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci.yaml?query=branch%3Amaster+event%3Apush)** |  | ||||||
| - [ ] I have **checked the [frequent/common issues list](https://github.com/qbittorrent/qBittorrent/projects/2)** and **searched** the issue tracker for similar feature requests (including closed ones) **to avoid posting a duplicate** |  | ||||||
| - [ ] This request 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/). The [wiki](https://github.com/qbittorrent/qBittorrent/wiki) did not contain a suitable solution either |  | ||||||
|  |  | ||||||
| ## Description |  | ||||||
|  |  | ||||||
| <!-- |  | ||||||
| ################################## IMPORTANT ################################## |  | ||||||
|  |  | ||||||
| Delete each "(type here)" indicator and type your text in their place in the subsections below. |  | ||||||
| You MUST fill in ALL subsections marked with "(type here)" with the appropriate information. |  | ||||||
|  |  | ||||||
| Please make sure the description is worded well enough to be understood. |  | ||||||
| Provide a detailed description of the feature and as much context and examples as necessary. |  | ||||||
| If the feature request has to do with visual elements and the GUI, images/screenshots are always helpful. |  | ||||||
| For more information consult the Contributing Guidelines at https://github.com/qbittorrent/qBittorrent/blob/master/CONTRIBUTING.md. |  | ||||||
|  |  | ||||||
| Use the Preview tab before posting to make sure your report looks like it is formatted properly. |  | ||||||
| You don't need to delete these comments, they won't show up in the final post. |  | ||||||
| --> |  | ||||||
|  |  | ||||||
| ### Suggestion |  | ||||||
|  |  | ||||||
| (type here) |  | ||||||
|  |  | ||||||
| ### Use case |  | ||||||
|  |  | ||||||
| (type here) |  | ||||||
|  |  | ||||||
| ### Extra info/examples/attachments |  | ||||||
|  |  | ||||||
| <!-- optional --> |  | ||||||
							
								
								
									
										37
									
								
								.github/ISSUE_TEMPLATE/feature_request.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								.github/ISSUE_TEMPLATE/feature_request.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | |||||||
|  | name: Feature Request | ||||||
|  | description: Suggest a new feature or enhancement for qBittorrent. | ||||||
|  | labels: ["Feature request"] | ||||||
|  | body: | ||||||
|  |   - type: markdown | ||||||
|  |     attributes: | ||||||
|  |       value: | | ||||||
|  |         #### ADVISORY | ||||||
|  |  | ||||||
|  |         "Please post all details in **English**." | ||||||
|  |  | ||||||
|  |         #### Prerequisites before submitting a feature request! | ||||||
|  |         - Read the feature request section in the **[contributing guidelines](https://github.com/qbittorrent/qBittorrent/blob/master/CONTRIBUTING.md)**, to know how to submit a good feature request with the required information. | ||||||
|  |         - Verify that the feature being requested is not available in the **[latest official qBittorrent version](https://www.qbittorrent.org/download.php).** | ||||||
|  |         - (Optional but recommended) Verify that the feature being requested is not available in the latest CI (**[macOS](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_macos.yaml?query=branch%3Amaster+event%3Apush)** / **[Ubuntu](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_ubuntu.yaml?query=branch%3Amaster+event%3Apush)** / **[Windows](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_windows.yaml?query=branch%3Amaster+event%3Apush)**) builds. | ||||||
|  |         - Search the issue tracker with the **[feature request filter](https://github.com/qbittorrent/qBittorrent/issues?q=is%3Aopen+is%3Aissue+label%3A%22Feature+request%22)** for similar feature requests (including closed ones) to avoid posting a duplicate. | ||||||
|  |         - Make sure this is not a support request or question, both of which are better suited for either the **[discussions section](https://github.com/qbittorrent/qBittorrent/discussions)**, **[forum](https://qbforums.shiki.hu/)**, or **[subreddit](https://www.reddit.com/r/qBittorrent/)**. | ||||||
|  |         - Verify that the **[wiki](https://github.com/qbittorrent/qBittorrent/wiki)** did not contain a suitable solution either. | ||||||
|  |  | ||||||
|  |   - type: textarea | ||||||
|  |     attributes: | ||||||
|  |       label: Suggestion | ||||||
|  |     validations: | ||||||
|  |       required: false | ||||||
|  |  | ||||||
|  |   - type: textarea | ||||||
|  |     attributes: | ||||||
|  |       label: Use case | ||||||
|  |     validations: | ||||||
|  |       required: false | ||||||
|  |  | ||||||
|  |   - type: textarea | ||||||
|  |     attributes: | ||||||
|  |       label: Extra info/examples/attachments | ||||||
|  |       description: Add screenshots etc. (Anything that will give us more context about what is being requested!) | ||||||
|  |     validations: | ||||||
|  |       required: false | ||||||
							
								
								
									
										5
									
								
								.github/PULL_REQUEST_TEMPLATE.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								.github/PULL_REQUEST_TEMPLATE.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | <!-- | ||||||
|  | MANDATORY Before submitting your work, make sure you have: | ||||||
|  | 1. Read https://github.com/qbittorrent/qBittorrent/blob/master/CONTRIBUTING.md#opening-a-pull-request | ||||||
|  | 2. Delete this comment block | ||||||
|  | --> | ||||||
							
								
								
									
										16
									
								
								.github/PULL_REQUEST_TEMPLATE/pull_request.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								.github/PULL_REQUEST_TEMPLATE/pull_request.md
									
									
									
									
										vendored
									
									
								
							| @@ -1,16 +0,0 @@ | |||||||
| # Changes proposed in this pull request |  | ||||||
|  |  | ||||||
| <!-- |  | ||||||
| IMPORTANT: an image is worth a thousand words. |  | ||||||
| It is often a good idea to post screenshots showing the "before" and "after" your PR's changes, |  | ||||||
| especially with changes related to the GUI, along with the textual description. |  | ||||||
| Images makes it immediately clearer for others what your proposed changes are all about. |  | ||||||
| --> |  | ||||||
|  |  | ||||||
| (type here) |  | ||||||
|  |  | ||||||
| <!-- |  | ||||||
| OPTIONAL: if this PR directly addresses an issue, make sure to include a "Closes #XXXXX" statement at the end. |  | ||||||
| --> |  | ||||||
|  |  | ||||||
| <!-- You don't need to delete these comments before posting, they won't show up in the post :) --> |  | ||||||
							
								
								
									
										68
									
								
								.github/workflows/check_translation_tag.py
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										68
									
								
								.github/workflows/check_translation_tag.py
									
									
									
									
										vendored
									
									
										Executable file
									
								
							| @@ -0,0 +1,68 @@ | |||||||
|  | #!/usr/bin/env python3 | ||||||
|  |  | ||||||
|  | # A pre-commit hook for detecting problematic <translation> tags | ||||||
|  | # Copyright (C) 2021  Mike Tzou (Chocobo1) | ||||||
|  | # | ||||||
|  | # This program is free software; you can redistribute it and/or | ||||||
|  | # modify it under the terms of the GNU General Public License | ||||||
|  | # as published by the Free Software Foundation; either version 2 | ||||||
|  | # of the License, or (at your option) any later version. | ||||||
|  | # | ||||||
|  | # This program is distributed in the hope that it will be useful, | ||||||
|  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | # GNU General Public License for more details. | ||||||
|  | # | ||||||
|  | # You should have received a copy of the GNU General Public License | ||||||
|  | # along with this program; if not, write to the Free Software | ||||||
|  | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. | ||||||
|  | # | ||||||
|  | # In addition, as a special exception, the copyright holders give permission to | ||||||
|  | # link this program with the OpenSSL project's "OpenSSL" library (or with | ||||||
|  | # modified versions of it that use the same license as the "OpenSSL" library), | ||||||
|  | # and distribute the linked executables. You must obey the GNU General Public | ||||||
|  | # License in all respects for all of the code used other than "OpenSSL".  If you | ||||||
|  | # modify file(s), you may extend this exception to your version of the file(s), | ||||||
|  | # but you are not obligated to do so. If you do not wish to do so, delete this | ||||||
|  | # exception statement from your version. | ||||||
|  |  | ||||||
|  | from typing import Optional, Sequence | ||||||
|  | import argparse | ||||||
|  | import re | ||||||
|  |  | ||||||
|  | def main(argv: Optional[Sequence[str]] = None) -> int: | ||||||
|  |     parser = argparse.ArgumentParser() | ||||||
|  |     parser.add_argument('filenames', nargs='*', help='Filenames to check') | ||||||
|  |     args = parser.parse_args(argv) | ||||||
|  |  | ||||||
|  |     error_msg = "" | ||||||
|  |     regex = re.compile(r"\s*</translation>") | ||||||
|  |  | ||||||
|  |     for filename in args.filenames: | ||||||
|  |         line_counter = 1 | ||||||
|  |         error_buffer = "" | ||||||
|  |  | ||||||
|  |         with open(filename) as file: | ||||||
|  |             try: | ||||||
|  |                 for line in file: | ||||||
|  |                     if (match := regex.match(line)) is not None: | ||||||
|  |                         error_buffer += str(f"Defect file: \"{filename}\"\n" | ||||||
|  |                               f"Line: {line_counter}\n" | ||||||
|  |                               f"Column span: {match.span()}\n" | ||||||
|  |                               f"Part: \"{match.group()}\"\n\n") | ||||||
|  |                     line_counter += 1 | ||||||
|  |  | ||||||
|  |             except UnicodeDecodeError as error: | ||||||
|  |                 # not a text file, skip | ||||||
|  |                 continue | ||||||
|  |  | ||||||
|  |         error_msg += error_buffer | ||||||
|  |  | ||||||
|  |     if len(error_msg) > 0: | ||||||
|  |         print(error_msg) | ||||||
|  |         return 1 | ||||||
|  |  | ||||||
|  |     return 0 | ||||||
|  |  | ||||||
|  | if __name__ == '__main__': | ||||||
|  |     exit(main()) | ||||||
							
								
								
									
										7
									
								
								.github/workflows/ci_file_health.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								.github/workflows/ci_file_health.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -11,10 +11,7 @@ jobs: | |||||||
|         uses: actions/checkout@v2 |         uses: actions/checkout@v2 | ||||||
|  |  | ||||||
|       - name: Install tools |       - name: Install tools | ||||||
|         run: | |         uses: actions/setup-python@v2 | ||||||
|           sudo apt update |  | ||||||
|           sudo apt install zsh |  | ||||||
|  |  | ||||||
|       - name: Check files |       - name: Check files | ||||||
|         run: | |         uses: pre-commit/action@v2.0.3 | ||||||
|           ./.github/workflows/file_health.sh |  | ||||||
|   | |||||||
							
								
								
									
										96
									
								
								.github/workflows/ci_macos.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										96
									
								
								.github/workflows/ci_macos.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -4,70 +4,114 @@ on: [pull_request, push] | |||||||
| jobs: | jobs: | ||||||
|   ci: |   ci: | ||||||
|     name: Build |     name: Build | ||||||
|     runs-on: macos-10.15 |     runs-on: macos-latest | ||||||
|  |  | ||||||
|     strategy: |     strategy: | ||||||
|       matrix: |  | ||||||
|         libt_version: ["v2.0.4", "v1.2.14"] |  | ||||||
|         qbt_gui: ["GUI=ON", "GUI=OFF"] |  | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|  |       matrix: | ||||||
|  |         libt_version: ["2.0.5", "1.2.15"] | ||||||
|  |         qbt_gui: ["GUI=ON", "GUI=OFF"] | ||||||
|  |         qt_version: ["5.15.2", "6.2.0"] | ||||||
|  |         exclude: | ||||||
|  |           - libt_version: "1.2.15" | ||||||
|  |             qt_version: "6.2.0" | ||||||
|  |  | ||||||
|     env: |     env: | ||||||
|  |       boost_path: "${{ github.workspace }}/../boost" | ||||||
|       openssl_root: /usr/local/opt/openssl@1.1 |       openssl_root: /usr/local/opt/openssl@1.1 | ||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout repository |       - name: Checkout repository | ||||||
|         uses: actions/checkout@v2 |         uses: actions/checkout@v2 | ||||||
|  |  | ||||||
|       - name: Setup ccache |  | ||||||
|         uses: hendrikmuhs/ccache-action@v1 |  | ||||||
|         with: |  | ||||||
|           key: ${{ runner.os }} |  | ||||||
|  |  | ||||||
|       - name: Install dependencies |       - name: Install dependencies | ||||||
|         run: | |         run: | | ||||||
|           brew update > /dev/null |           brew update > /dev/null | ||||||
|           brew install \ |           brew install \ | ||||||
|             cmake ninja \ |             cmake ninja \ | ||||||
|             boost openssl@1.1 qt@5 zlib |             openssl@1.1 zlib | ||||||
|           brew link --force \ |  | ||||||
|             qt@5 |       - name: Setup ccache | ||||||
|           # workaround for cmake + Qt |         uses: Chocobo1/setup-ccache-action@v1 | ||||||
|           sudo ln -s /usr/local/opt/qt@5/mkspecs /usr/local/mkspecs |         with: | ||||||
|           sudo ln -s /usr/local/opt/qt@5/plugins /usr/local/plugins |           update_packager_index: false | ||||||
|  |  | ||||||
|  |       - name: Install boost | ||||||
|  |         run: | | ||||||
|  |           curl \ | ||||||
|  |             -L \ | ||||||
|  |             -o "${{ runner.temp }}/boost.tar.bz2" \ | ||||||
|  |             "https://boostorg.jfrog.io/artifactory/main/release/1.77.0/source/boost_1_77_0.tar.bz2" | ||||||
|  |           tar -xf "${{ runner.temp }}/boost.tar.bz2" -C "${{ github.workspace }}/.." | ||||||
|  |           mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}" | ||||||
|  |  | ||||||
|  |       - name: Install Qt | ||||||
|  |         uses: jurplel/install-qt-action@v2 | ||||||
|  |         with: | ||||||
|  |           setup-python: false | ||||||
|  |           version: ${{ matrix.qt_version }} | ||||||
|  |  | ||||||
|       - name: Install libtorrent |       - name: Install libtorrent | ||||||
|         run: | |         run: | | ||||||
|           git clone --branch ${{ matrix.libt_version }} --depth 1 https://github.com/arvidn/libtorrent.git |           git clone \ | ||||||
|  |             --branch v${{ matrix.libt_version }} \ | ||||||
|  |             --depth 1 \ | ||||||
|  |             --recurse-submodules \ | ||||||
|  |             https://github.com/arvidn/libtorrent.git | ||||||
|           cd libtorrent |           cd libtorrent | ||||||
|           git submodule update --init --recursive |  | ||||||
|           export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" |  | ||||||
|           cmake \ |           cmake \ | ||||||
|             -B build \ |             -B build \ | ||||||
|             -G "Ninja" \ |             -G "Ninja" \ | ||||||
|             -DCMAKE_BUILD_TYPE=RelWithDebInfo \ |             -DCMAKE_BUILD_TYPE=RelWithDebInfo \ | ||||||
|             -DCMAKE_CXX_STANDARD=17 \ |             -DCMAKE_CXX_STANDARD=17 \ | ||||||
|  |             -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ | ||||||
|  |             -DBOOST_ROOT="${{ env.boost_path }}" \ | ||||||
|             -Ddeprecated-functions=OFF \ |             -Ddeprecated-functions=OFF \ | ||||||
|             -DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" |             -DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" | ||||||
|           cmake --build build |           cmake --build build | ||||||
|           sudo cmake --install build |           sudo cmake --install build | ||||||
|  |  | ||||||
|       - name: Build qBittorrent |       - name: Build qBittorrent (Qt5) | ||||||
|  |         if: ${{ startsWith(matrix.qt_version, 5) }} | ||||||
|         run: | |         run: | | ||||||
|           export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" |           lupdate -extensions c,cpp,h,hpp,ui ./ | ||||||
|           cmake \ |           cmake \ | ||||||
|             -B build \ |             -B build \ | ||||||
|             -G "Ninja" \ |             -G "Ninja" \ | ||||||
|             -DCMAKE_BUILD_TYPE=RelWithDebInfo \ |             -DCMAKE_BUILD_TYPE=RelWithDebInfo \ | ||||||
|             -D${{ matrix.qbt_gui }} \ |             -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ | ||||||
|  |             -DBOOST_ROOT="${{ env.boost_path }}" \ | ||||||
|  |             -DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \ | ||||||
|             -DVERBOSE_CONFIGURE=ON \ |             -DVERBOSE_CONFIGURE=ON \ | ||||||
|             -DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" |             -D${{ matrix.qbt_gui }} | ||||||
|           cmake --build build |           cmake --build build | ||||||
|  |  | ||||||
|  |       - name: Build qBittorrent (Qt6) | ||||||
|  |         if: ${{ startsWith(matrix.qt_version, 6) }} | ||||||
|  |         run: | | ||||||
|  |           lupdate -extensions c,cpp,h,hpp,ui ./ | ||||||
|  |           cmake \ | ||||||
|  |             -B build \ | ||||||
|  |             -G "Ninja" \ | ||||||
|  |             -DCMAKE_BUILD_TYPE=RelWithDebInfo \ | ||||||
|  |             -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ | ||||||
|  |             -DBOOST_ROOT="${{ env.boost_path }}" \ | ||||||
|  |             -DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \ | ||||||
|  |             -DQT6=ON \ | ||||||
|  |             -DVERBOSE_CONFIGURE=ON \ | ||||||
|  |             -D${{ matrix.qbt_gui }} | ||||||
|  |           cmake --build build | ||||||
|  |  | ||||||
|  |       - name: Prepare build artifacts | ||||||
|  |         run: | | ||||||
|  |           mkdir upload | ||||||
|  |           mkdir upload/cmake | ||||||
|  |           cp build/compile_commands.json upload/cmake | ||||||
|  |           mkdir upload/cmake/libtorrent | ||||||
|  |           cp libtorrent/build/compile_commands.json upload/cmake/libtorrent | ||||||
|  |  | ||||||
|       - name: Upload build artifacts |       - name: Upload build artifacts | ||||||
|         uses: actions/upload-artifact@v2 |         uses: actions/upload-artifact@v2 | ||||||
|         with: |         with: | ||||||
|           name: qBittorrent-CI_macOS_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }} |           name: build-info_macOS_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }} | ||||||
|           path: | |           path: upload | ||||||
|             build/qbittorrent.app |  | ||||||
|             build/qbittorrent-nox.app |  | ||||||
|   | |||||||
							
								
								
									
										94
									
								
								.github/workflows/ci_ubuntu.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										94
									
								
								.github/workflows/ci_ubuntu.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -7,78 +7,96 @@ jobs: | |||||||
|     runs-on: ubuntu-20.04 |     runs-on: ubuntu-20.04 | ||||||
|  |  | ||||||
|     strategy: |     strategy: | ||||||
|       matrix: |  | ||||||
|         libt_version: ["v2.0.4", "v1.2.14"] |  | ||||||
|         qbt_gui: ["GUI=ON", "GUI=OFF"] |  | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|  |       matrix: | ||||||
|  |         libt_version: ["2.0.5", "1.2.15"] | ||||||
|  |         qbt_gui: ["GUI=ON", "GUI=OFF"] | ||||||
|  |         qt_version: ["5.15.2", "6.2.0"] | ||||||
|  |         exclude: | ||||||
|  |           - libt_version: "1.2.15" | ||||||
|  |             qt_version: "6.2.0" | ||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout repository |       - name: Checkout repository | ||||||
|         uses: actions/checkout@v2 |         uses: actions/checkout@v2 | ||||||
|  |  | ||||||
|       - name: Setup ccache |  | ||||||
|         uses: hendrikmuhs/ccache-action@v1 |  | ||||||
|         with: |  | ||||||
|           key: ${{ runner.os }} |  | ||||||
|  |  | ||||||
|       - name: Install dependencies |       - name: Install dependencies | ||||||
|         run: | |         run: | | ||||||
|           sudo apt update |           sudo apt update | ||||||
|           sudo apt install \ |           sudo apt install \ | ||||||
|             build-essential cmake git ninja-build pkg-config \ |             build-essential cmake ninja-build pkg-config \ | ||||||
|             libssl-dev libgeoip-dev zlib1g-dev \ |             libboost-dev libssl-dev zlib1g-dev | ||||||
|             libboost-dev libboost-chrono-dev libboost-random-dev libboost-system-dev |  | ||||||
|         # sudo apt install libqt5svg5-dev qtbase5-dev qttools5-dev # the Qt version in the standard repositories is too old... |       - name: Setup ccache | ||||||
|  |         uses: Chocobo1/setup-ccache-action@v1 | ||||||
|  |         with: | ||||||
|  |           update_packager_index: false | ||||||
|  |           ccache_options: | | ||||||
|  |             max_size=2G | ||||||
|  |  | ||||||
|       # this will be installed under /opt/qt515. CMake will still find it automatically without additional hints |  | ||||||
|       # to speed up the process, only the required components are installed rather than the full qt515-meta-full metapackage |  | ||||||
|       - name: Install Qt |       - name: Install Qt | ||||||
|         run: | |         uses: jurplel/install-qt-action@v2 | ||||||
|           sudo add-apt-repository ppa:beineri/opt-qt-5.15.2-focal |         with: | ||||||
|           sudo apt install \ |           version: ${{ matrix.qt_version }} | ||||||
|             qt515base qt515svg qt515tools |  | ||||||
|  |  | ||||||
|       - name: Install libtorrent |       - name: Install libtorrent | ||||||
|         run: | |         run: | | ||||||
|           git clone --branch ${{ matrix.libt_version }} --depth 1 https://github.com/arvidn/libtorrent.git |           git clone \ | ||||||
|  |             --branch v${{ matrix.libt_version }} \ | ||||||
|  |             --depth 1 \ | ||||||
|  |             --recurse-submodules \ | ||||||
|  |             https://github.com/arvidn/libtorrent.git | ||||||
|           cd libtorrent |           cd libtorrent | ||||||
|           git submodule update --init --recursive |  | ||||||
|           export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" |  | ||||||
|           cmake \ |           cmake \ | ||||||
|             -B build \ |             -B build \ | ||||||
|             -G "Ninja" \ |             -G "Ninja" \ | ||||||
|             -DCMAKE_BUILD_TYPE=RelWithDebInfo \ |             -DCMAKE_BUILD_TYPE=RelWithDebInfo \ | ||||||
|             -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ |             -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ | ||||||
|             -Ddeprecated-functions=OFF \ |             -Ddeprecated-functions=OFF | ||||||
|             --graphviz=cmake-build-dir/target_graph.dot |  | ||||||
|           cmake --build build |           cmake --build build | ||||||
|           sudo cmake --install build |           sudo cmake --install build | ||||||
|  |  | ||||||
|       - name: Build qBittorrent |       - name: Build qBittorrent (Qt5) | ||||||
|  |         if: ${{ startsWith(matrix.qt_version, 5) }} | ||||||
|         run: | |         run: | | ||||||
|           export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" |           lupdate -extensions c,cpp,h,hpp,ui ./ | ||||||
|           cmake \ |           cmake \ | ||||||
|             -B build \ |             -B build \ | ||||||
|             -G "Ninja" \ |             -G "Ninja" \ | ||||||
|             -DCMAKE_BUILD_TYPE=RelWithDebInfo \ |             -DCMAKE_BUILD_TYPE=RelWithDebInfo \ | ||||||
|             -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ |             -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ | ||||||
|             -D${{ matrix.qbt_gui }} \ |             -DCMAKE_INSTALL_PREFIX="/usr" \ | ||||||
|             -DVERBOSE_CONFIGURE=ON \ |             -DVERBOSE_CONFIGURE=ON \ | ||||||
|             --graphviz=build/target_graph.dot |             -D${{ matrix.qbt_gui }} | ||||||
|           cmake --build build |           cmake --build build | ||||||
|  |           DESTDIR="qbittorrent" cmake --install build | ||||||
|  |  | ||||||
|       - name: Install qBittorrent |       - name: Build qBittorrent (Qt6) | ||||||
|         run: sudo cmake --install build |         if: ${{ startsWith(matrix.qt_version, 6) }} | ||||||
|  |         run: | | ||||||
|  |           lupdate -extensions c,cpp,h,hpp,ui ./ | ||||||
|  |           cmake \ | ||||||
|  |             -B build \ | ||||||
|  |             -G "Ninja" \ | ||||||
|  |             -DCMAKE_BUILD_TYPE=RelWithDebInfo \ | ||||||
|  |             -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ | ||||||
|  |             -DCMAKE_INSTALL_PREFIX="/usr" \ | ||||||
|  |             -DQT6=ON \ | ||||||
|  |             -DVERBOSE_CONFIGURE=ON \ | ||||||
|  |             -D${{ matrix.qbt_gui }} | ||||||
|  |           cmake --build build | ||||||
|  |           DESTDIR="qbittorrent" cmake --install build | ||||||
|  |  | ||||||
|  |       - name: Prepare build artifacts | ||||||
|  |         run: | | ||||||
|  |           mkdir upload | ||||||
|  |           mkdir upload/cmake | ||||||
|  |           cp build/compile_commands.json upload/cmake | ||||||
|  |           mkdir upload/cmake/libtorrent | ||||||
|  |           cp libtorrent/build/compile_commands.json upload/cmake/libtorrent | ||||||
|  |  | ||||||
|       - name: Upload build artifacts |       - name: Upload build artifacts | ||||||
|         uses: actions/upload-artifact@v2 |         uses: actions/upload-artifact@v2 | ||||||
|         with: |         with: | ||||||
|           name: qBittorrent-CI_ubuntu-20.04-x64_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }} |           name: build-info_ubuntu-20.04-x64_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }} | ||||||
|           path: | |           path: upload | ||||||
|             build/compile_commands.json |  | ||||||
|             build/install_manifest.txt |  | ||||||
|             build/target_graph.dot |  | ||||||
|             build/qbittorrent |  | ||||||
|             build/qbittorrent-nox |  | ||||||
|             libtorrent/cmake-build-dir/compile_commands.json |  | ||||||
|             libtorrent/cmake-build-dir/target_graph.dot |  | ||||||
|   | |||||||
							
								
								
									
										115
									
								
								.github/workflows/ci_windows.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										115
									
								
								.github/workflows/ci_windows.yaml
									
									
									
									
										vendored
									
									
								
							| @@ -4,12 +4,24 @@ on: [pull_request, push] | |||||||
| jobs: | jobs: | ||||||
|   ci: |   ci: | ||||||
|     name: Build |     name: Build | ||||||
|     runs-on: windows-2019 |     runs-on: windows-latest | ||||||
|  |  | ||||||
|  |     strategy: | ||||||
|  |       fail-fast: false | ||||||
|  |       matrix: | ||||||
|  |         libt_version: ["2.0.5", "1.2.15"] | ||||||
|  |  | ||||||
|  |     env: | ||||||
|  |       boost_path: "${{ github.workspace }}/../boost" | ||||||
|  |       libtorrent_path: "${{ github.workspace }}/libtorrent" | ||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout repository |       - name: Checkout repository | ||||||
|         uses: actions/checkout@v2 |         uses: actions/checkout@v2 | ||||||
|  |  | ||||||
|  |       - name: Setup devcmd | ||||||
|  |         uses: ilammy/msvc-dev-cmd@v1 | ||||||
|  |  | ||||||
|       - name: Install build tools |       - name: Install build tools | ||||||
|         run: | |         run: | | ||||||
|           choco install ninja |           choco install ninja | ||||||
| @@ -23,9 +35,9 @@ jobs: | |||||||
|           doNotUpdateVcpkg: true  # the preinstalled vcpkg is updated regularly |           doNotUpdateVcpkg: true  # the preinstalled vcpkg is updated regularly | ||||||
|           setupOnly: true |           setupOnly: true | ||||||
|  |  | ||||||
|       # tell vcpkg to only build Release variants of the dependencies |       - name: Install dependencies from vcpkg | ||||||
|       - name: Configure vcpkg triplet overlay |  | ||||||
|         run: | |         run: | | ||||||
|  |           # tell vcpkg to only build Release variants of the dependencies | ||||||
|           New-Item ` |           New-Item ` | ||||||
|             -Path "${{ github.workspace }}" ` |             -Path "${{ github.workspace }}" ` | ||||||
|             -Name "triplets_overlay" ` |             -Name "triplets_overlay" ` | ||||||
| @@ -36,17 +48,10 @@ jobs: | |||||||
|           Add-Content ` |           Add-Content ` | ||||||
|             "${{ github.workspace }}/triplets_overlay/x64-windows-static-release.cmake" ` |             "${{ github.workspace }}/triplets_overlay/x64-windows-static-release.cmake" ` | ||||||
|             -Value "set(VCPKG_BUILD_TYPE release)" |             -Value "set(VCPKG_BUILD_TYPE release)" | ||||||
|  |           # clear buildtrees after each package installation to reduce disk space requirements | ||||||
|       # clear buildtrees after each package installation to reduce disk space requirements |  | ||||||
|       - name: Install dependencies |  | ||||||
|         run: | |  | ||||||
|           $packages = ` |           $packages = ` | ||||||
|             "boost-circular-buffer:x64-windows-static-release", |             "openssl:x64-windows-static-release", | ||||||
|             "libtorrent:x64-windows-static-release", |             "zlib:x64-windows-static-release" | ||||||
|             "qt5-base:x64-windows-static-release", |  | ||||||
|             "qt5-svg:x64-windows-static-release", |  | ||||||
|             "qt5-tools:x64-windows-static-release", |  | ||||||
|             "qt5-winextras:x64-windows-static-release" |  | ||||||
|           ${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe upgrade ` |           ${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe upgrade ` | ||||||
|             --overlay-triplets="${{ github.workspace }}/triplets_overlay" ` |             --overlay-triplets="${{ github.workspace }}/triplets_overlay" ` | ||||||
|             --no-dry-run |             --no-dry-run | ||||||
| @@ -55,31 +60,95 @@ jobs: | |||||||
|             --clean-after-build ` |             --clean-after-build ` | ||||||
|             $packages |             $packages | ||||||
|  |  | ||||||
|       # this is necessary to correctly find and use cl.exe with the Ninja generator for now |       - name: Install boost | ||||||
|       - name: Setup devcmd |         run: | | ||||||
|         uses: ilammy/msvc-dev-cmd@v1 |           aria2c ` | ||||||
|  |             "https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.7z" ` | ||||||
|  |             -d "${{ runner.temp }}" ` | ||||||
|  |             -o "boost.7z" | ||||||
|  |           7z x "${{ runner.temp }}/boost.7z" -o"${{ github.workspace }}/.." | ||||||
|  |           move "${{ github.workspace }}/../boost_*" "${{ env.boost_path }}" | ||||||
|  |  | ||||||
|  |       - name: Install Qt | ||||||
|  |         uses: jurplel/install-qt-action@v2 | ||||||
|  |         with: | ||||||
|  |           version: "5.15.2" | ||||||
|  |  | ||||||
|  |       - name: Install libtorrent | ||||||
|  |         run: | | ||||||
|  |           git clone ` | ||||||
|  |             --branch v${{ matrix.libt_version }} ` | ||||||
|  |             --depth 1 ` | ||||||
|  |             --recurse-submodules ` | ||||||
|  |             https://github.com/arvidn/libtorrent.git | ||||||
|  |           cd libtorrent | ||||||
|  |           cmake ` | ||||||
|  |             -B build ` | ||||||
|  |             -G "Ninja" ` | ||||||
|  |             -DCMAKE_BUILD_TYPE=RelWithDebInfo ` | ||||||
|  |             -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ` | ||||||
|  |             -DCMAKE_INSTALL_PREFIX="${{ env.libtorrent_path }}" ` | ||||||
|  |             -DCMAKE_TOOLCHAIN_FILE="${{ env.RUNVCPKG_VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake" ` | ||||||
|  |             -DBOOST_ROOT="${{ env.boost_path }}" ` | ||||||
|  |             -DBUILD_SHARED_LIBS=OFF ` | ||||||
|  |             -Ddeprecated-functions=OFF ` | ||||||
|  |             -Dstatic_runtime=ON ` | ||||||
|  |             -DVCPKG_TARGET_TRIPLET=x64-windows-static-release | ||||||
|  |           cmake --build build | ||||||
|  |           cmake --install build | ||||||
|  |  | ||||||
|       - name: Build qBittorrent |       - name: Build qBittorrent | ||||||
|         run: | |         run: | | ||||||
|  |           lupdate -extensions c,cpp,h,hpp,ui . | ||||||
|           cmake ` |           cmake ` | ||||||
|             -B build ` |             -B build ` | ||||||
|             -G "Ninja" ` |             -G "Ninja" ` | ||||||
|             -DCMAKE_BUILD_TYPE=RelWithDebInfo ` |             -DCMAKE_BUILD_TYPE=RelWithDebInfo ` | ||||||
|             -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ` |             -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ` | ||||||
|             -DCMAKE_TOOLCHAIN_FILE="${{ env.RUNVCPKG_VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake" ` |             -DCMAKE_TOOLCHAIN_FILE="${{ env.RUNVCPKG_VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake" ` | ||||||
|  |             -DBOOST_ROOT="${{ env.boost_path }}" ` | ||||||
|  |             -DLibtorrentRasterbar_DIR="${{ env.libtorrent_path }}/lib/cmake/LibtorrentRasterbar" ` | ||||||
|             -DMSVC_RUNTIME_DYNAMIC=OFF ` |             -DMSVC_RUNTIME_DYNAMIC=OFF ` | ||||||
|             -DVCPKG_TARGET_TRIPLET=x64-windows-static-release ` |             -DVCPKG_TARGET_TRIPLET=x64-windows-static-release ` | ||||||
|             -DVERBOSE_CONFIGURE=ON ` |             -DVERBOSE_CONFIGURE=ON ` | ||||||
|             --graphviz=build/target_graph.dot |             --graphviz=build/target_graph.dot | ||||||
|           cmake --build build |           cmake --build build | ||||||
|  |  | ||||||
|  |       - name: Prepare build artifacts | ||||||
|  |         run: | | ||||||
|  |           mkdir upload | ||||||
|  |           copy build/qbittorrent.exe upload | ||||||
|  |           copy build/qbittorrent.pdb upload | ||||||
|  |           copy dist/windows/qt.conf upload | ||||||
|  |           # runtimes | ||||||
|  |           copy "${{ env.Qt5_DIR }}/bin/Qt5Core.dll" upload | ||||||
|  |           copy "${{ env.Qt5_DIR }}/bin/Qt5Gui.dll" upload | ||||||
|  |           copy "${{ env.Qt5_DIR }}/bin/Qt5Network.dll" upload | ||||||
|  |           copy "${{ env.Qt5_DIR }}/bin/Qt5Sql.dll" upload | ||||||
|  |           copy "${{ env.Qt5_DIR }}/bin/Qt5Svg.dll" upload | ||||||
|  |           copy "${{ env.Qt5_DIR }}/bin/Qt5Widgets.dll" upload | ||||||
|  |           copy "${{ env.Qt5_DIR }}/bin/Qt5WinExtras.dll" upload | ||||||
|  |           copy "${{ env.Qt5_DIR }}/bin/Qt5Xml.dll" upload | ||||||
|  |           mkdir upload/plugins/iconengines | ||||||
|  |           copy "${{ env.Qt5_DIR }}/plugins/iconengines/qsvgicon.dll" upload/plugins/iconengines | ||||||
|  |           mkdir upload/plugins/imageformats | ||||||
|  |           copy "${{ env.Qt5_DIR }}/plugins/imageformats/qico.dll" upload/plugins/imageformats | ||||||
|  |           copy "${{ env.Qt5_DIR }}/plugins/imageformats/qsvg.dll" upload/plugins/imageformats | ||||||
|  |           mkdir upload/plugins/platforms | ||||||
|  |           copy "${{ env.Qt5_DIR }}/plugins/platforms/qwindows.dll" upload/plugins/platforms | ||||||
|  |           mkdir upload/plugins/sqldrivers | ||||||
|  |           copy "${{ env.Qt5_DIR }}/plugins/sqldrivers/qsqlite.dll" upload/plugins/sqldrivers | ||||||
|  |           mkdir upload/plugins/styles | ||||||
|  |           copy "${{ env.Qt5_DIR }}/plugins/styles/qwindowsvistastyle.dll" upload/plugins/styles | ||||||
|  |           # cmake additionals | ||||||
|  |           mkdir upload/cmake | ||||||
|  |           copy build/compile_commands.json upload/cmake | ||||||
|  |           copy build/target_graph.dot upload/cmake | ||||||
|  |           mkdir upload/cmake/libtorrent | ||||||
|  |           copy libtorrent/build/compile_commands.json upload/cmake/libtorrent | ||||||
|  |  | ||||||
|       - name: Upload build artifacts |       - name: Upload build artifacts | ||||||
|         uses: actions/upload-artifact@v2 |         uses: actions/upload-artifact@v2 | ||||||
|         with: |         with: | ||||||
|           name: qBittorrent-CI_Windows-x64 |           name: qBittorrent-CI_Windows-x64_libtorrent-${{ matrix.libt_version }} | ||||||
|           path: | |           path: upload | ||||||
|             build/compile_commands.json |  | ||||||
|             build/qbittorrent.exe |  | ||||||
|             build/qbittorrent.pdb |  | ||||||
|             build/target_graph.dot |  | ||||||
|             dist/windows/qt.conf |  | ||||||
|   | |||||||
							
								
								
									
										45
									
								
								.github/workflows/coverity-scan.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										45
									
								
								.github/workflows/coverity-scan.yml
									
									
									
									
										vendored
									
									
								
							| @@ -5,9 +5,6 @@ on: | |||||||
|     - cron: '0 0 1 * *' # Monthly (1st day of month at midnight) |     - cron: '0 0 1 * *' # Monthly (1st day of month at midnight) | ||||||
|   workflow_dispatch: # Mainly for testing. Don't forget the Coverity usage limits. |   workflow_dispatch: # Mainly for testing. Don't forget the Coverity usage limits. | ||||||
|  |  | ||||||
| env: |  | ||||||
|   LIBTORRENT_VERSION_TAG: v1.2.14 |  | ||||||
|  |  | ||||||
| jobs: | jobs: | ||||||
|   coverity_scan: |   coverity_scan: | ||||||
|     name: Scan |     name: Scan | ||||||
| @@ -20,54 +17,48 @@ jobs: | |||||||
|         run: | |         run: | | ||||||
|           sudo apt update |           sudo apt update | ||||||
|           sudo apt install \ |           sudo apt install \ | ||||||
|             build-essential cmake git ninja-build pkg-config \ |             build-essential cmake ninja-build pkg-config \ | ||||||
|             libssl-dev zlib1g-dev libboost-dev libboost-system-dev |             libboost-dev libssl-dev zlib1g-dev | ||||||
|         # sudo apt install libqt5svg5-dev qtbase5-dev qttools5-dev # the Qt version in the standard repositories is too old... |  | ||||||
|  |  | ||||||
|       # this will be installed under /opt/qt515. CMake will still find it automatically without additional hints |  | ||||||
|       # to speed up the process, only the required components are installed rather than the full qt515-meta-full metapackage |  | ||||||
|       - name: Install Qt |       - name: Install Qt | ||||||
|         run: | |         uses: jurplel/install-qt-action@v2 | ||||||
|           sudo add-apt-repository ppa:beineri/opt-qt-5.15.2-focal |         with: | ||||||
|           sudo apt install \ |           version: "5.15.2" | ||||||
|             qt515base qt515svg qt515tools |  | ||||||
|  |  | ||||||
|       - name: Install libtorrent |       - name: Install libtorrent | ||||||
|         run: | |         run: | | ||||||
|           git clone https://github.com/arvidn/libtorrent |           git clone \ | ||||||
|  |             --branch "v2.0.5" \ | ||||||
|  |             --depth 1 \ | ||||||
|  |             --recurse-submodules \ | ||||||
|  |             https://github.com/arvidn/libtorrent.git | ||||||
|           cd libtorrent |           cd libtorrent | ||||||
|           git checkout ${{ env.LIBTORRENT_VERSION_TAG }} |  | ||||||
|           cmake \ |           cmake \ | ||||||
|             -B build \ |             -B build \ | ||||||
|             -G "Ninja" \ |             -G "Ninja" \ | ||||||
|             -DCMAKE_BUILD_TYPE=Release \ |             -DCMAKE_BUILD_TYPE=RelWithDebInfo \ | ||||||
|             -Ddeprecated-functions=OFF |             -Ddeprecated-functions=OFF | ||||||
|           cmake --build build |           cmake --build build | ||||||
|           sudo cmake --install build --prefix /usr/local |           sudo cmake --install build | ||||||
|  |  | ||||||
|       - name: Download Coverity Build Tool |       - name: Download Coverity Build Tool | ||||||
|         run: | |         run: | | ||||||
|           wget \ |           wget \ | ||||||
|             -q \ |             -q \ | ||||||
|             https://scan.coverity.com/download/linux64 \ |             https://scan.coverity.com/download/linux64 \ | ||||||
|             --post-data "token=$TOKEN&project=qbittorrent%2FqBittorrent" \ |             --post-data "token=${{ secrets.COVERITY_SCAN_TOKEN }}&project=qbittorrent%2FqBittorrent" \ | ||||||
|             -O coverity_tool.tgz |             -O coverity_tool.tgz | ||||||
|           mkdir coverity_tool |           mkdir coverity_tool | ||||||
|           tar xzf coverity_tool.tgz --strip 1 -C coverity_tool |           tar xzf coverity_tool.tgz --strip 1 -C coverity_tool | ||||||
|         env: |  | ||||||
|           TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }} |  | ||||||
|  |  | ||||||
|       - name: Configure qBittorrent |       - name: Build qBittorrent | ||||||
|         run: | |         run: | | ||||||
|           cmake \ |           cmake \ | ||||||
|             -B build \ |             -B build \ | ||||||
|             -G "Ninja" \ |             -G "Ninja" \ | ||||||
|             -DCMAKE_BUILD_TYPE=Release \ |             -DCMAKE_BUILD_TYPE=RelWithDebInfo \ | ||||||
|             -DGUI=ON \ |             -DGUI=ON \ | ||||||
|             -DVERBOSE_CONFIGURE=ON |             -DVERBOSE_CONFIGURE=ON | ||||||
|  |  | ||||||
|       - name: Build qBittorrent |  | ||||||
|         run: | |  | ||||||
|           export PATH="$(pwd)/coverity_tool/bin:$PATH" |           export PATH="$(pwd)/coverity_tool/bin:$PATH" | ||||||
|           cov-build --dir cov-int cmake --build build |           cov-build --dir cov-int cmake --build build | ||||||
|  |  | ||||||
| @@ -75,11 +66,9 @@ jobs: | |||||||
|         run: | |         run: | | ||||||
|           tar caf qbittorrent.xz cov-int |           tar caf qbittorrent.xz cov-int | ||||||
|           curl \ |           curl \ | ||||||
|             --form token=$TOKEN \ |             --form token="${{ secrets.COVERITY_SCAN_TOKEN }}" \ | ||||||
|             --form email=sledgehammer999@qbittorrent.org \ |             --form email=sledgehammer999@qbittorrent.org \ | ||||||
|             --form file=@qbittorrent.tgz \ |             --form file=@qbittorrent.xz \ | ||||||
|             --form version="$(git rev-parse --short HEAD)" \ |             --form version="$(git rev-parse --short HEAD)" \ | ||||||
|             --form description="master" \ |             --form description="master" \ | ||||||
|             https://scan.coverity.com/builds?project=qbittorrent%2FqBittorrent |             https://scan.coverity.com/builds?project=qbittorrent%2FqBittorrent | ||||||
|         env: |  | ||||||
|           TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }} |  | ||||||
|   | |||||||
							
								
								
									
										85
									
								
								.github/workflows/file_health.sh
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										85
									
								
								.github/workflows/file_health.sh
									
									
									
									
										vendored
									
									
								
							| @@ -1,85 +0,0 @@ | |||||||
| #!/usr/bin/env zsh |  | ||||||
|  |  | ||||||
| set -o nounset |  | ||||||
|  |  | ||||||
| # Assumption: file names don't contain `:` (for the `cut` invocation). |  | ||||||
| # Safe to assume, as such a character in a filename would cause trouble on Windows, a platform we support |  | ||||||
|  |  | ||||||
| # any regression turn this non-zero |  | ||||||
| regressions=0 |  | ||||||
|  |  | ||||||
| # exclusions (these are just grep extended regular expressions to match against paths relative to the root of the repository) |  | ||||||
| exclusions_nonutf8='(.*(7z|gif|ic(ns|o)|png|qm|zip))' |  | ||||||
| exclusions_bom='src/base/unicodestrings.h' |  | ||||||
| exclusions_tw='(*.ts)|src/webui/www/private/scripts/lib/*' |  | ||||||
| exclusions_trailing_newline='configure' |  | ||||||
| exclusions_no_lf='(*.ts)|(.*svg)|compile_commands.json|src/webui/www/private/scripts/lib/*' |  | ||||||
|  |  | ||||||
| echo -e "\n*** Detect files not encoded in UTF-8 ***\n" |  | ||||||
|  |  | ||||||
| find . -path ./build -prune -false -o -path ./.git -prune -false -o -type f -exec file --mime {} \; | sort \ |  | ||||||
|     | grep -v -e "charset=us-ascii" -e "charset=utf-8" | cut -d ":" -f 1 \ |  | ||||||
|     | grep -E -v -e "${exclusions_nonutf8}" \ |  | ||||||
|     | tee >(echo -e "--> Files not encoded in UTF-8: found" "$(wc -l < /dev/stdin)" "regression(s)\n") \ |  | ||||||
|     | xargs -I my_input -0 bash -c 'echo "my_input"; test "$(echo -n "my_input" | wc -l)" -eq 0' |  | ||||||
| regressions=$((regressions+$?)) |  | ||||||
|  |  | ||||||
| echo -e "\n*** Detect files encoded in UTF-8 with BOM ***\n" |  | ||||||
|  |  | ||||||
| grep --exclude-dir={.git,build} -rIl $'\xEF\xBB\xBF' | sort \ |  | ||||||
|     | grep -E -v -e "${exclusions_bom}" \ |  | ||||||
|     | tee >(echo -e "--> Files encoded in UTF-8 with BOM: found" "$(wc -l < /dev/stdin)" "regression(s)\n") \ |  | ||||||
|     | xargs -I my_input -0 bash -c 'echo "my_input"; test "$(echo -n "my_input" | wc -l)" -eq 0' |  | ||||||
| regressions=$((regressions+$?)) |  | ||||||
|  |  | ||||||
| echo -e "\n*** Detect usage of CR byte ***\n" |  | ||||||
|  |  | ||||||
| grep --exclude-dir={.git,build} -rIlU $'\x0D' | sort \ |  | ||||||
|     | tee >(echo -e "--> Usage of CR byte: found" "$(wc -l < /dev/stdin)" "regression(s)\n") \ |  | ||||||
|     | xargs -I my_input -0 bash -c 'echo "my_input"; test "$(echo -n "my_input" | wc -l)" -eq 0' |  | ||||||
| regressions=$((regressions+$?)) |  | ||||||
|  |  | ||||||
| echo -e "\n*** Detect trailing whitespace in lines ***\n" |  | ||||||
|  |  | ||||||
| grep --exclude-dir={.git,build} -rIl "[[:blank:]]$" | sort \ |  | ||||||
|     | grep -E -v -e "${exclusions_tw}" \ |  | ||||||
|     | tee >(echo -e "--> Trailing whitespace in lines: found" "$(wc -l < /dev/stdin)" "regression(s)\n") \ |  | ||||||
|     | xargs -I my_input -0 bash -c 'echo "my_input"; test "$(echo -n "my_input" | wc -l)" -eq 0'; |  | ||||||
| regressions=$((regressions+$?)) |  | ||||||
|  |  | ||||||
| echo -e "\n*** Detect too many trailing newlines ***\n" |  | ||||||
|  |  | ||||||
| find . -path ./build -prune -false -o -path ./.git -prune -false -o -type f -exec file --mime {} \; | sort \ |  | ||||||
|     | grep -e "charset=us-ascii" -e "charset=utf-8" | cut -d ":" -f 1 \ |  | ||||||
|     | grep -E -v -e "${exclusions_trailing_newline}" \ |  | ||||||
|     | xargs -L1 -I my_input bash -c 'test "$(tail -q -c2 "my_input" | hexdump -C | grep "0a 0a")" && echo "my_input"' \ |  | ||||||
|     | tee >(echo -e "--> Too many trailing newlines: found" "$(wc -l < /dev/stdin)" "regression(s)\n") \ |  | ||||||
|     | xargs -I my_input -0 bash -c 'echo "my_input"; test "$(echo -n "my_input" | wc -l)" -eq 0' |  | ||||||
| regressions=$((regressions+$?)) |  | ||||||
|  |  | ||||||
| echo -e "\n*** Detect no trailing newline ***\n" |  | ||||||
|  |  | ||||||
| find . -path ./build -prune -false -o -path ./.git -prune -false -o -type f -exec file --mime {} \; | sort \ |  | ||||||
|     | grep -e "charset=us-ascii" -e "charset=utf-8" |  cut -d ":" -f 1 \ |  | ||||||
|     | grep -E -v -e "${exclusions_no_lf}" \ |  | ||||||
|     | xargs -L1 -I my_input bash -c 'test "$(tail -q -c1 "my_input" | hexdump -C | grep "0a")" || echo "my_input"' \ |  | ||||||
|     | tee >(echo -e "--> No trailing newline: found" "$(wc -l < /dev/stdin)" "regression(s)\n") \ |  | ||||||
|     | xargs -I my_input -0 bash -c 'echo "my_input"; test "$(echo -n "my_input" | wc -l)" -eq 0' |  | ||||||
| regressions=$((regressions+$?)) |  | ||||||
|  |  | ||||||
| echo -e "\n*** Detect translation closing tag in new line ***\n" |  | ||||||
|  |  | ||||||
| grep --exclude-dir={.git,build} -nri "^</translation>" | sort \ |  | ||||||
|     | cut -d ":" -f 1,2 \ |  | ||||||
|     | tee >(echo -e "--> Translation closing tag in new line: found" "$(wc -l < /dev/stdin)" "regression(s)\n") \ |  | ||||||
|     | xargs -I my_input -0 bash -c 'echo "my_input"; test "$(echo -n "my_input" | wc -l)" -eq 0' |  | ||||||
| regressions=$((regressions+$?)) |  | ||||||
|  |  | ||||||
| if [ "$regressions" -ne 0 ]; then |  | ||||||
|     regressions=1 |  | ||||||
|     echo "\nFile health regressions found. Please fix them (or add them as exclusions)." |  | ||||||
| else |  | ||||||
|     echo "All OK, no file health regressions found." |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| exit $regressions; |  | ||||||
							
								
								
									
										55
									
								
								.pre-commit-config.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								.pre-commit-config.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | |||||||
|  | repos: | ||||||
|  |   - repo: local | ||||||
|  |     hooks: | ||||||
|  |       - id: check-translation-tag | ||||||
|  |         name: Check newline characters in <translation> tag | ||||||
|  |         entry: .github/workflows/check_translation_tag.py | ||||||
|  |         language: script | ||||||
|  |         types_or: | ||||||
|  |           - ts | ||||||
|  |  | ||||||
|  |   - repo: https://github.com/pre-commit/pre-commit-hooks.git | ||||||
|  |     rev: v4.0.1 | ||||||
|  |     hooks: | ||||||
|  |     - id: check-json | ||||||
|  |       name: Check JSON files | ||||||
|  |  | ||||||
|  |     - id: check-yaml | ||||||
|  |       name: Check YAML files | ||||||
|  |  | ||||||
|  |     - id: fix-byte-order-marker | ||||||
|  |       name: Check file encoding (UTF-8 without BOM) | ||||||
|  |       exclude: | | ||||||
|  |         (?x)^( | ||||||
|  |           src/base/unicodestrings.h | ||||||
|  |         )$ | ||||||
|  |  | ||||||
|  |     - id: mixed-line-ending | ||||||
|  |       name: Check line ending character (LF) | ||||||
|  |       args: ["--fix=lf"] | ||||||
|  |       exclude: | | ||||||
|  |         (?x)^( | ||||||
|  |           compile_commands.json | | ||||||
|  |           src/webui/www/private/scripts/lib/.* | ||||||
|  |         )$ | ||||||
|  |  | ||||||
|  |     - id: end-of-file-fixer | ||||||
|  |       name: Check trailing newlines | ||||||
|  |       exclude: | | ||||||
|  |         (?x)^( | ||||||
|  |           compile_commands.json | | ||||||
|  |           configure | | ||||||
|  |           src/webui/www/private/scripts/lib/.* | ||||||
|  |         )$ | ||||||
|  |       exclude_types: | ||||||
|  |         - svg | ||||||
|  |         - ts | ||||||
|  |  | ||||||
|  |     - id: trailing-whitespace | ||||||
|  |       name: Check trailing whitespaces | ||||||
|  |       exclude: | | ||||||
|  |         (?x)^( | ||||||
|  |           src/webui/www/private/scripts/lib/.* | ||||||
|  |         )$ | ||||||
|  |       exclude_types: | ||||||
|  |         - ts | ||||||
| @@ -12,7 +12,8 @@ project(qBittorrent | |||||||
| set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON) | set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON) | ||||||
| # version requirements - older versions may work, but you are on your own | # version requirements - older versions may work, but you are on your own | ||||||
| set(minBoostVersion 1.65) | set(minBoostVersion 1.65) | ||||||
| set(minQtVersion 5.15.2) | set(minQt5Version 5.15.2) | ||||||
|  | set(minQt6Version 6.2) | ||||||
| set(minOpenSSLVersion 1.1.1) | set(minOpenSSLVersion 1.1.1) | ||||||
| set(minLibtorrent1Version 1.2.14) | set(minLibtorrent1Version 1.2.14) | ||||||
| set(minLibtorrentVersion 2.0.4) | set(minLibtorrentVersion 2.0.4) | ||||||
| @@ -22,6 +23,7 @@ set(minZlibVersion 1.2.11) | |||||||
| include(CheckCXXSourceCompiles) # TODO: migrate to CheckSourceCompiles in CMake >= 3.19 | include(CheckCXXSourceCompiles) # TODO: migrate to CheckSourceCompiles in CMake >= 3.19 | ||||||
| include(FeatureSummary) | include(FeatureSummary) | ||||||
| include(FeatureOptionsSetup) | include(FeatureOptionsSetup) | ||||||
|  | feature_option(QT6 "Use Qt6" OFF) | ||||||
| feature_option(STACKTRACE "Enable stacktraces" ON) | feature_option(STACKTRACE "Enable stacktraces" ON) | ||||||
| feature_option(GUI "Build GUI application" ON) | feature_option(GUI "Build GUI application" ON) | ||||||
| feature_option(WEBUI "Enables built-in HTTP server for headless use" ON) | feature_option(WEBUI "Enables built-in HTTP server for headless use" ON) | ||||||
|   | |||||||
| @@ -6,22 +6,14 @@ Read the respective section to find out more. | |||||||
| ### Table Of Contents | ### Table Of Contents | ||||||
|  |  | ||||||
| *   **[Bug reporting etiquette](#bug-reporting-etiquette)** | *   **[Bug reporting etiquette](#bug-reporting-etiquette)** | ||||||
|  |  | ||||||
|  |  | ||||||
| *   **[Submitting an issue/bug report](#submitting-an-issuebug-report)** | *   **[Submitting an issue/bug report](#submitting-an-issuebug-report)** | ||||||
|     *   [What is an actual bug report?](#what-is-an-actual-bug-report) |     *   [What is an actual bug report?](#what-is-an-actual-bug-report) | ||||||
|     *   [Before submitting a bug report](#before-submitting-a-bug-report) |     *   [Before submitting a bug report](#before-submitting-a-bug-report) | ||||||
|     *   [Steps to ensure a good bug report](#steps-to-ensure-a-good-bug-report) |     *   [Steps to ensure a good bug report](#steps-to-ensure-a-good-bug-report) | ||||||
|  |  | ||||||
|  |  | ||||||
| *   **[Suggesting enhancements/feature requests](#suggesting-enhancementsfeature-requests)** | *   **[Suggesting enhancements/feature requests](#suggesting-enhancementsfeature-requests)** | ||||||
|     *   [Before submitting an enhancement/feature request](#before-submitting-an-enhancementfeature-request) |     *   [Before submitting an enhancement/feature request](#before-submitting-an-enhancementfeature-request) | ||||||
|     *   [Steps to ensure a good enhancement/feature suggestion](#steps-to-ensure-a-good-enhancementfeature-suggestion) |     *   [Steps to ensure a good enhancement/feature suggestion](#steps-to-ensure-a-good-enhancementfeature-suggestion) | ||||||
|  |  | ||||||
|  |  | ||||||
| *   **[Opening a pull request](#opening-a-pull-request)** | *   **[Opening a pull request](#opening-a-pull-request)** | ||||||
|     *   [Must read](#must-read) |  | ||||||
|     *   [Good to know](#good-to-know) |  | ||||||
|  |  | ||||||
| # Bug reporting etiquette | # Bug reporting etiquette | ||||||
|  |  | ||||||
| @@ -194,28 +186,26 @@ Following these guidelines helps maintainers and the community understand your s | |||||||
|  |  | ||||||
| # Opening a pull request | # Opening a pull request | ||||||
|  |  | ||||||
| ### Must read | *   Consult [coding guidelines][coding-guidelines-url] first. If you are working on translation/i18n, read ["How to translate qBittorrent"][how-to-translate-url]. | ||||||
| *   Read our [**coding guidelines**][coding-guidelines-url]. There are some scripts to help you: [uncrustify script][uncrustify-script-url], [astyle script][astyle-script-url], [(related thread)][coding-guidelines-thread-url]. | *   Keep your git commit history clean. | ||||||
| *   Keep the title **short** and provide a **clear** description about what your pull request does. |     * Refer to the section about ["Git commit messages"][coding-guidelines-git-commit-message-url] in the coding guidelines. | ||||||
| *   Provide **screenshots** for UI related changes. |     * When merge conflicts arise, do `git rebase <target_branch_name>` and fix the conflicts, don't do `git pull`. Here is a good explanation: [merging-vs-rebasing][merging-vs-rebasing-url]. | ||||||
| *   Keep your git commit history **clean** and **precise.** Refer to the section about "Git commit messages" in the [**coding guidelines**][coding-guidelines-url]. | *   Keep pull request title concise and provide motivation and "what it does" in the pull request description area. Make it easy to read and understand. | ||||||
| *   If your commit fixes a reported issue (for example #4134), add the following message to the commit `Closes #4134.`. Example [here][commit-message-fix-issue-example-url]. | *   Provide screenshots for UI related changes. | ||||||
|  | *   If your commit addresses a reported issue (for example issue #8454), append the following text to the commit body `Closes #8454.`. Example [commit][commit-message-fix-issue-example-url]. | ||||||
|  | *   Search [pull request list][pull-request-list-url] first. Others might have already implemented your idea (or got rejected already). | ||||||
|  |  | ||||||
| ### Good to know |  | ||||||
| *   **Search** pull request history! Others might have already implemented your idea and it is waiting to be merged (or got rejected already). Save your precious time by doing a search first. |  | ||||||
| *   When resolving merge conflicts, do `git rebase <target_branch_name>`, don't do `git pull`. Then you can start fixing the conflicts. Here is a good explanation: [link][merging-vs-rebasing-url]. |  | ||||||
|  |  | ||||||
| [astyle-script-url]: https://gist.github.com/Chocobo1/539cee860d1eef0acfa6 |  | ||||||
| [attachments-howto-url]: https://help.github.com/articles/file-attachments-on-issues-and-pull-requests | [attachments-howto-url]: https://help.github.com/articles/file-attachments-on-issues-and-pull-requests | ||||||
|  | [builds-url]: https://sourceforge.net/projects/qbittorrent/files/ | ||||||
| [coding-guidelines-url]: https://github.com/qbittorrent/qBittorrent/blob/master/CODING_GUIDELINES.md | [coding-guidelines-url]: https://github.com/qbittorrent/qBittorrent/blob/master/CODING_GUIDELINES.md | ||||||
| [coding-guidelines-thread-url]: https://github.com/qbittorrent/qBittorrent/issues/2192 | [coding-guidelines-git-commit-message-url]: https://github.com/qbittorrent/qBittorrent/blob/master/CODING_GUIDELINES.md#10-git-commit-message | ||||||
| [commit-message-fix-issue-example-url]: https://github.com/qbittorrent/qBittorrent/commit/c07cd440cd46345297debb47cb260f8688975f50 | [commit-message-fix-issue-example-url]: https://github.com/qbittorrent/qBittorrent/commit/c07cd440cd46345297debb47cb260f8688975f50 | ||||||
| [forum-url]: http://forum.qbittorrent.org/ | [forum-url]: http://forum.qbittorrent.org/ | ||||||
| [howto-report-bugs-url]: https://www.chiark.greenend.org.uk/~sgtatham/bugs.html | [howto-report-bugs-url]: https://www.chiark.greenend.org.uk/~sgtatham/bugs.html | ||||||
|  | [how-to-translate-url]: https://github.com/qbittorrent/qBittorrent/wiki/How-to-translate-qBittorrent | ||||||
| [merging-vs-rebasing-url]: https://www.atlassian.com/git/tutorials/merging-vs-rebasing | [merging-vs-rebasing-url]: https://www.atlassian.com/git/tutorials/merging-vs-rebasing | ||||||
|  | [pull-request-list-url]: https://github.com/qbittorrent/qBittorrent/pulls | ||||||
| [python-url]: https://www.python.org/ | [python-url]: https://www.python.org/ | ||||||
| [releases-url]: https://github.com/qbittorrent/qBittorrent/releases | [releases-url]: https://github.com/qbittorrent/qBittorrent/releases | ||||||
| [search-plugins-url]: https://github.com/qbittorrent/search-plugins | [search-plugins-url]: https://github.com/qbittorrent/search-plugins | ||||||
| [uncrustify-script-url]: https://raw.githubusercontent.com/qbittorrent/qBittorrent/master/uncrustify.cfg |  | ||||||
| [wiki-url]: https://github.com/qbittorrent/qBittorrent/wiki | [wiki-url]: https://github.com/qbittorrent/qBittorrent/wiki | ||||||
| [builds-url]: https://sourceforge.net/projects/qbittorrent/files/ |  | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								INSTALL
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								INSTALL
									
									
									
									
									
								
							| @@ -11,7 +11,7 @@ qBittorrent - A BitTorrent client in C++ / Qt | |||||||
|  |  | ||||||
|   - OpenSSL >= 1.1.1 |   - OpenSSL >= 1.1.1 | ||||||
|  |  | ||||||
|   - Qt 5.15.2 - 5.x |   - Qt 5.15.2 - 5.x || 6.2.0 - 6.x | ||||||
|  |  | ||||||
|   - zlib >= 1.2.11 |   - zlib >= 1.2.11 | ||||||
|  |  | ||||||
|   | |||||||
| @@ -46,7 +46,7 @@ Please report any bug (or feature request) to: | |||||||
| http://bugs.qbittorrent.org | http://bugs.qbittorrent.org | ||||||
|  |  | ||||||
| Official IRC channel: | Official IRC channel: | ||||||
| `#qbittorrent on irc.libera.chat` | [#qbittorrent on irc.libera.chat](ircs://irc.libera.chat:6697/qbittorrent) | ||||||
|  |  | ||||||
| ------------------------------------------ | ------------------------------------------ | ||||||
| sledgehammer999 <sledgehammer999@qbittorrent.org> | sledgehammer999 \<sledgehammer999@qbittorrent.org\> | ||||||
|   | |||||||
							
								
								
									
										25
									
								
								cmake/Modules/FindQtTranslations.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								cmake/Modules/FindQtTranslations.cmake
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | |||||||
|  | # Return Qt translations files as list of paths | ||||||
|  | # It will return .qm files of qt/qtbase that aren't stub files. | ||||||
|  | # Requires that Qt has been found first because it depends on qmake being available | ||||||
|  |  | ||||||
|  | function(qbt_get_qt_translations qt_translations) | ||||||
|  |     get_target_property(QT_QMAKE_EXECUTABLE Qt::qmake IMPORTED_LOCATION) | ||||||
|  |     execute_process(COMMAND "${QT_QMAKE_EXECUTABLE}" -query QT_INSTALL_TRANSLATIONS | ||||||
|  |                     OUTPUT_VARIABLE QT_TRANSLATIONS_DIR OUTPUT_STRIP_TRAILING_WHITESPACE) | ||||||
|  |  | ||||||
|  |     FILE(GLOB QT_TEMP_TRANSLATIONS CONFIGURE_DEPENDS | ||||||
|  |         "${QT_TRANSLATIONS_DIR}/qt_??.qm" | ||||||
|  |         "${QT_TRANSLATIONS_DIR}/qt_??_??.qm" | ||||||
|  |         "${QT_TRANSLATIONS_DIR}/qtbase_??.qm" | ||||||
|  |         "${QT_TRANSLATIONS_DIR}/qtbase_??_??.qm") | ||||||
|  |  | ||||||
|  |     foreach(TRANSLATION ${QT_TEMP_TRANSLATIONS}) | ||||||
|  |         FILE(SIZE "${TRANSLATION}" translation_size) | ||||||
|  |         # Consider files less than 10KB as stub translations | ||||||
|  |         if (translation_size GREATER_EQUAL 10240) | ||||||
|  |             list(APPEND QT_FINAL_TRANSLATIONS "${TRANSLATION}") | ||||||
|  |         endif() | ||||||
|  |     endforeach() | ||||||
|  |  | ||||||
|  |     SET(${qt_translations} ${QT_FINAL_TRANSLATIONS} PARENT_SCOPE) | ||||||
|  | endfunction() | ||||||
| @@ -25,6 +25,12 @@ macro(qbt_common_config) | |||||||
|         $<$<NOT:$<CONFIG:Debug>>:QT_NO_DEBUG_OUTPUT> |         $<$<NOT:$<CONFIG:Debug>>:QT_NO_DEBUG_OUTPUT> | ||||||
|     ) |     ) | ||||||
|  |  | ||||||
|  |     if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") | ||||||
|  |         target_compile_definitions(qbt_common_cfg INTERFACE | ||||||
|  |             _DARWIN_FEATURE_64_BIT_INODE | ||||||
|  |         ) | ||||||
|  |     endif() | ||||||
|  |  | ||||||
|     if (CMAKE_SYSTEM_NAME STREQUAL "Windows") |     if (CMAKE_SYSTEM_NAME STREQUAL "Windows") | ||||||
|         target_compile_definitions(qbt_common_cfg INTERFACE |         target_compile_definitions(qbt_common_cfg INTERFACE | ||||||
|             NTDDI_VERSION=0x06010000 |             NTDDI_VERSION=0x06010000 | ||||||
|   | |||||||
							
								
								
									
										67
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										67
									
								
								configure
									
									
									
									
										vendored
									
									
								
							| @@ -1,6 +1,6 @@ | |||||||
| #! /bin/sh | #! /bin/sh | ||||||
| # Guess values for system-dependent variables and create Makefiles. | # Guess values for system-dependent variables and create Makefiles. | ||||||
| # Generated by GNU Autoconf 2.71 for qbittorrent v4.4.0alpha. | # Generated by GNU Autoconf 2.71 for qbittorrent v4.4.5. | ||||||
| # | # | ||||||
| # Report bugs to <bugs.qbittorrent.org>. | # Report bugs to <bugs.qbittorrent.org>. | ||||||
| # | # | ||||||
| @@ -611,8 +611,8 @@ MAKEFLAGS= | |||||||
| # Identity of this package. | # Identity of this package. | ||||||
| PACKAGE_NAME='qbittorrent' | PACKAGE_NAME='qbittorrent' | ||||||
| PACKAGE_TARNAME='qbittorrent' | PACKAGE_TARNAME='qbittorrent' | ||||||
| PACKAGE_VERSION='v4.4.0alpha' | PACKAGE_VERSION='v4.4.5' | ||||||
| PACKAGE_STRING='qbittorrent v4.4.0alpha' | PACKAGE_STRING='qbittorrent v4.4.5' | ||||||
| PACKAGE_BUGREPORT='bugs.qbittorrent.org' | PACKAGE_BUGREPORT='bugs.qbittorrent.org' | ||||||
| PACKAGE_URL='https://www.qbittorrent.org/' | PACKAGE_URL='https://www.qbittorrent.org/' | ||||||
|  |  | ||||||
| @@ -1329,7 +1329,7 @@ if test "$ac_init_help" = "long"; then | |||||||
|   # Omit some internal or obsolete options to make the list less imposing. |   # Omit some internal or obsolete options to make the list less imposing. | ||||||
|   # This message is too long to be a string in the A/UX 3.1 sh. |   # This message is too long to be a string in the A/UX 3.1 sh. | ||||||
|   cat <<_ACEOF |   cat <<_ACEOF | ||||||
| \`configure' configures qbittorrent v4.4.0alpha to adapt to many kinds of systems. | \`configure' configures qbittorrent v4.4.5 to adapt to many kinds of systems. | ||||||
|  |  | ||||||
| Usage: $0 [OPTION]... [VAR=VALUE]... | Usage: $0 [OPTION]... [VAR=VALUE]... | ||||||
|  |  | ||||||
| @@ -1400,7 +1400,7 @@ fi | |||||||
|  |  | ||||||
| if test -n "$ac_init_help"; then | if test -n "$ac_init_help"; then | ||||||
|   case $ac_init_help in |   case $ac_init_help in | ||||||
|      short | recursive ) echo "Configuration of qbittorrent v4.4.0alpha:";; |      short | recursive ) echo "Configuration of qbittorrent v4.4.5:";; | ||||||
|    esac |    esac | ||||||
|   cat <<\_ACEOF |   cat <<\_ACEOF | ||||||
|  |  | ||||||
| @@ -1533,7 +1533,7 @@ fi | |||||||
| test -n "$ac_init_help" && exit $ac_status | test -n "$ac_init_help" && exit $ac_status | ||||||
| if $ac_init_version; then | if $ac_init_version; then | ||||||
|   cat <<\_ACEOF |   cat <<\_ACEOF | ||||||
| qbittorrent configure v4.4.0alpha | qbittorrent configure v4.4.5 | ||||||
| generated by GNU Autoconf 2.71 | generated by GNU Autoconf 2.71 | ||||||
|  |  | ||||||
| Copyright (C) 2021 Free Software Foundation, Inc. | Copyright (C) 2021 Free Software Foundation, Inc. | ||||||
| @@ -1648,7 +1648,7 @@ cat >config.log <<_ACEOF | |||||||
| This file contains any messages produced by compilers while | This file contains any messages produced by compilers while | ||||||
| running configure, to aid debugging if configure makes a mistake. | running configure, to aid debugging if configure makes a mistake. | ||||||
|  |  | ||||||
| It was created by qbittorrent $as_me v4.4.0alpha, which was | It was created by qbittorrent $as_me v4.4.5, which was | ||||||
| generated by GNU Autoconf 2.71.  Invocation command line was | generated by GNU Autoconf 2.71.  Invocation command line was | ||||||
|  |  | ||||||
|   $ $0$ac_configure_args_raw |   $ $0$ac_configure_args_raw | ||||||
| @@ -4779,7 +4779,7 @@ fi | |||||||
|  |  | ||||||
| # Define the identity of the package. | # Define the identity of the package. | ||||||
|  PACKAGE='qbittorrent' |  PACKAGE='qbittorrent' | ||||||
|  VERSION='v4.4.0alpha' |  VERSION='v4.4.5' | ||||||
|  |  | ||||||
|  |  | ||||||
| printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h | printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h | ||||||
| @@ -5188,29 +5188,38 @@ fi | |||||||
|  |  | ||||||
|  |  | ||||||
| # Detect OS | # Detect OS | ||||||
| { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether OS is FreeBSD" >&5 | { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable specific tweaks for current host \"$host_os\"" >&5 | ||||||
| printf %s "checking whether OS is FreeBSD... " >&6; } | printf %s "checking whether to enable specific tweaks for current host \"$host_os\"... " >&6; } | ||||||
| if expr "$host_os" : ".*freebsd.*" > /dev/null | case "$host_os" in | ||||||
| then : |     *darwin*) | ||||||
|   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 |         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 | ||||||
| printf "%s\n" "yes" >&6; } | printf "%s\n" "yes" >&6; } | ||||||
|       LIBS="-lexecinfo $LIBS" |         enable_qt_dbus=no | ||||||
| else $as_nop |         ;; | ||||||
|   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 |  | ||||||
| printf "%s\n" "no" >&6; } |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether OS is macOS" >&5 |     *freebsd*) | ||||||
| printf %s "checking whether OS is macOS... " >&6; } |         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 | ||||||
| if expr "$host_os" : ".*darwin.*" > /dev/null |  | ||||||
| then : |  | ||||||
|   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 |  | ||||||
| printf "%s\n" "yes" >&6; } | printf "%s\n" "yes" >&6; } | ||||||
|       enable_qt_dbus=no |         LIBS="-lexecinfo $LIBS" | ||||||
| else $as_nop |         ;; | ||||||
|   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 |  | ||||||
|  |     *haiku*) | ||||||
|  |         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 | ||||||
|  | printf "%s\n" "yes" >&6; } | ||||||
|  |         LIBS="-lnetwork $LIBS" | ||||||
|  |         ;; | ||||||
|  |  | ||||||
|  |     *openbsd*) | ||||||
|  |         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 | ||||||
|  | printf "%s\n" "yes" >&6; } | ||||||
|  |         LIBS="-lexecinfo $LIBS" | ||||||
|  |         ;; | ||||||
|  |  | ||||||
|  |     *) | ||||||
|  |         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 | ||||||
| printf "%s\n" "no" >&6; } | printf "%s\n" "no" >&6; } | ||||||
| fi |         ;; | ||||||
|  | esac | ||||||
|  |  | ||||||
| # Require 0.23 pkg-config | # Require 0.23 pkg-config | ||||||
|  |  | ||||||
| @@ -7245,7 +7254,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 | |||||||
| # report actual input values of CONFIG_FILES etc. instead of their | # report actual input values of CONFIG_FILES etc. instead of their | ||||||
| # values after options handling. | # values after options handling. | ||||||
| ac_log=" | ac_log=" | ||||||
| This file was extended by qbittorrent $as_me v4.4.0alpha, which was | This file was extended by qbittorrent $as_me v4.4.5, which was | ||||||
| generated by GNU Autoconf 2.71.  Invocation command line was | generated by GNU Autoconf 2.71.  Invocation command line was | ||||||
|  |  | ||||||
|   CONFIG_FILES    = $CONFIG_FILES |   CONFIG_FILES    = $CONFIG_FILES | ||||||
| @@ -7305,7 +7314,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ | |||||||
| cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 | cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 | ||||||
| ac_cs_config='$ac_cs_config_escaped' | ac_cs_config='$ac_cs_config_escaped' | ||||||
| ac_cs_version="\\ | ac_cs_version="\\ | ||||||
| qbittorrent config.status v4.4.0alpha | qbittorrent config.status v4.4.5 | ||||||
| configured by $0, generated by GNU Autoconf 2.71, | configured by $0, generated by GNU Autoconf 2.71, | ||||||
|   with options \\"\$ac_cs_config\\" |   with options \\"\$ac_cs_config\\" | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										38
									
								
								configure.ac
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								configure.ac
									
									
									
									
									
								
							| @@ -1,5 +1,4 @@ | |||||||
|  | AC_INIT([qbittorrent], [v4.4.5], [bugs.qbittorrent.org], [], [https://www.qbittorrent.org/]) | ||||||
| AC_INIT([qbittorrent], [v4.4.0alpha], [bugs.qbittorrent.org], [], [https://www.qbittorrent.org/]) |  | ||||||
| AC_CONFIG_AUX_DIR([build-aux]) | AC_CONFIG_AUX_DIR([build-aux]) | ||||||
| AC_CONFIG_MACRO_DIR([m4]) | AC_CONFIG_MACRO_DIR([m4]) | ||||||
| : ${CFLAGS=""} | : ${CFLAGS=""} | ||||||
| @@ -54,17 +53,32 @@ AC_ARG_ENABLE(qt-dbus, | |||||||
|               [enable_qt_dbus=yes]) |               [enable_qt_dbus=yes]) | ||||||
|  |  | ||||||
| # Detect OS | # Detect OS | ||||||
| AC_MSG_CHECKING([whether OS is FreeBSD]) | AC_MSG_CHECKING([whether to enable specific tweaks for current host "$host_os"]) | ||||||
| AS_IF([expr "$host_os" : ".*freebsd.*" > /dev/null], | case "$host_os" in | ||||||
|       [AC_MSG_RESULT([yes]) |     *darwin*) | ||||||
|       LIBS="-lexecinfo $LIBS"], |         AC_MSG_RESULT([yes]) | ||||||
|       [AC_MSG_RESULT([no])]) |         enable_qt_dbus=no | ||||||
|  |         ;; | ||||||
|  |  | ||||||
| AC_MSG_CHECKING([whether OS is macOS]) |     *freebsd*) | ||||||
| AS_IF([expr "$host_os" : ".*darwin.*" > /dev/null], |         AC_MSG_RESULT([yes]) | ||||||
|       [AC_MSG_RESULT([yes]) |         LIBS="-lexecinfo $LIBS" | ||||||
|       enable_qt_dbus=no], |         ;; | ||||||
|       [AC_MSG_RESULT([no])]) |  | ||||||
|  |     *haiku*) | ||||||
|  |         AC_MSG_RESULT([yes]) | ||||||
|  |         LIBS="-lnetwork $LIBS" | ||||||
|  |         ;; | ||||||
|  |  | ||||||
|  |     *openbsd*) | ||||||
|  |         AC_MSG_RESULT([yes]) | ||||||
|  |         LIBS="-lexecinfo $LIBS" | ||||||
|  |         ;; | ||||||
|  |  | ||||||
|  |     *) | ||||||
|  |         AC_MSG_RESULT([no]) | ||||||
|  |         ;; | ||||||
|  | esac | ||||||
|  |  | ||||||
| # Require 0.23 pkg-config | # Require 0.23 pkg-config | ||||||
| PKG_PROG_PKG_CONFIG([0.23]) | PKG_PROG_PKG_CONFIG([0.23]) | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								dist/mac/Info.plist
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								dist/mac/Info.plist
									
									
									
									
										vendored
									
									
								
							| @@ -55,7 +55,7 @@ | |||||||
| 	<key>CFBundlePackageType</key> | 	<key>CFBundlePackageType</key> | ||||||
| 	<string>APPL</string> | 	<string>APPL</string> | ||||||
| 	<key>CFBundleShortVersionString</key> | 	<key>CFBundleShortVersionString</key> | ||||||
| 	<string>4.4.0</string> | 	<string>4.4.5</string> | ||||||
| 	<key>CFBundleExecutable</key> | 	<key>CFBundleExecutable</key> | ||||||
| 	<string>${EXECUTABLE_NAME}</string> | 	<string>${EXECUTABLE_NAME}</string> | ||||||
| 	<key>CFBundleIdentifier</key> | 	<key>CFBundleIdentifier</key> | ||||||
| @@ -67,7 +67,7 @@ | |||||||
| 	<key>NSAppleScriptEnabled</key> | 	<key>NSAppleScriptEnabled</key> | ||||||
| 	<string>YES</string> | 	<string>YES</string> | ||||||
| 	<key>NSHumanReadableCopyright</key> | 	<key>NSHumanReadableCopyright</key> | ||||||
| 	<string>Copyright © 2006-2021 The qBittorrent project</string> | 	<string>Copyright © 2006-2022 The qBittorrent project</string> | ||||||
| 	<key>UTExportedTypeDeclarations</key> | 	<key>UTExportedTypeDeclarations</key> | ||||||
| 	<array> | 	<array> | ||||||
| 		<dict> | 		<dict> | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								dist/qt-translations/qt_fa.qm
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								dist/qt-translations/qt_fa.qm
									
									
									
									
										vendored
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								dist/qt-translations/qt_gl.qm
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								dist/qt-translations/qt_gl.qm
									
									
									
									
										vendored
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								dist/qt-translations/qt_lt.qm
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								dist/qt-translations/qt_lt.qm
									
									
									
									
										vendored
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								dist/qt-translations/qt_pt.qm
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								dist/qt-translations/qt_pt.qm
									
									
									
									
										vendored
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								dist/qt-translations/qt_sl.qm
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								dist/qt-translations/qt_sl.qm
									
									
									
									
										vendored
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								dist/qt-translations/qt_sv.qm
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								dist/qt-translations/qt_sv.qm
									
									
									
									
										vendored
									
									
								
							
										
											Binary file not shown.
										
									
								
							Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user