You've already forked qBittorrent
mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-10-28 14:50:53 +01:00
Compare commits
81 Commits
release-4.
...
release-4.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 |
@@ -37,6 +37,8 @@ install:
|
|||||||
RMDIR /S /Q "%CACHE_DIR%" & MKDIR "%CACHE_DIR%" &&
|
RMDIR /S /Q "%CACHE_DIR%" & MKDIR "%CACHE_DIR%" &&
|
||||||
appveyor DownloadFile "%QBT_LIB_URL%" -FileName "c:\qbt_lib.7z" && 7z x "c:\qbt_lib.7z" -o"%CACHE_DIR%" > nul &&
|
appveyor DownloadFile "%QBT_LIB_URL%" -FileName "c:\qbt_lib.7z" && 7z x "c:\qbt_lib.7z" -o"%CACHE_DIR%" > nul &&
|
||||||
COPY "c:\version_new" "%CACHE_DIR%\version")
|
COPY "c:\version_new" "%CACHE_DIR%\version")
|
||||||
|
# Qt stay compressed in cache
|
||||||
|
- 7z x "%CACHE_DIR%\qt5_64.7z" -o"c:\qbt" > nul
|
||||||
|
|
||||||
before_build:
|
before_build:
|
||||||
# setup env
|
# setup env
|
||||||
@@ -45,19 +47,12 @@ before_build:
|
|||||||
# setup project
|
# setup project
|
||||||
- COPY /Y "%CACHE_DIR%\conf.pri" "%REPO_DIR%"
|
- COPY /Y "%CACHE_DIR%\conf.pri" "%REPO_DIR%"
|
||||||
# workarounds
|
# workarounds
|
||||||
- MKDIR "c:\qbt"
|
|
||||||
- MKLINK /J "c:\qbt\base" "%CACHE_DIR%\base"
|
- MKLINK /J "c:\qbt\base" "%CACHE_DIR%\base"
|
||||||
|
|
||||||
build_script:
|
build_script:
|
||||||
- cd "%REPO_DIR%"
|
- cd "%REPO_DIR%"
|
||||||
# lupdate chokes when it parses headers from system includes, especially Boost
|
# scan only as lupdate is prone to hang
|
||||||
# it also chokes with the sources from src/app/qtlocalpeer (formerly qtsingleapplication)
|
- lupdate -extensions c,cpp,h,hpp,ui .
|
||||||
# Workaround: temporarily rename them to run lupdate with the .pro file
|
|
||||||
- RENAME conf.pri conf.pri.temp
|
|
||||||
- RENAME src\app\qtlocalpeer qtlocalpeer.temp
|
|
||||||
- lupdate qbittorrent.pro
|
|
||||||
- RENAME conf.pri.temp conf.pri
|
|
||||||
- RENAME src\app\qtlocalpeer.temp qtlocalpeer
|
|
||||||
- qmake qbittorrent.pro && cd src && qmake src.pro
|
- qmake qbittorrent.pro && cd src && qmake src.pro
|
||||||
- jom -j2 -f Makefile.Release
|
- jom -j2 -f Makefile.Release
|
||||||
|
|
||||||
@@ -68,11 +63,8 @@ after_build:
|
|||||||
- COPY src\release\qbittorrent.exe upload
|
- COPY src\release\qbittorrent.exe upload
|
||||||
- COPY src\release\qbittorrent.pdb upload
|
- COPY src\release\qbittorrent.pdb upload
|
||||||
- COPY "%CACHE_DIR%\base\bin\libcrypto-1_1-x64.dll" upload
|
- COPY "%CACHE_DIR%\base\bin\libcrypto-1_1-x64.dll" upload
|
||||||
- COPY "%CACHE_DIR%\base\bin\libcrypto-1_1-x64.pdb" upload
|
|
||||||
- COPY "%CACHE_DIR%\base\bin\libssl-1_1-x64.dll" upload
|
- COPY "%CACHE_DIR%\base\bin\libssl-1_1-x64.dll" upload
|
||||||
- COPY "%CACHE_DIR%\base\bin\libssl-1_1-x64.pdb" upload
|
- COPY "%CACHE_DIR%\base\lib\torrent-rasterbar.dll" upload
|
||||||
- COPY "%CACHE_DIR%\base\bin\torrent-rasterbar.dll" upload
|
|
||||||
- COPY "%CACHE_DIR%\base\bin\torrent-rasterbar.pdb" upload
|
|
||||||
- COPY "%CACHE_DIR%\base\lib\zlib1.dll" upload
|
- COPY "%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\Qt5Core.dll upload
|
||||||
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Gui.dll upload
|
- COPY C:\Qt\5.15.2\msvc2019_64\bin\Qt5Gui.dll upload
|
||||||
|
|||||||
82
.clang-tidy
82
.clang-tidy
@@ -1,82 +0,0 @@
|
|||||||
Checks: >
|
|
||||||
bugprone-*,
|
|
||||||
cert-*,
|
|
||||||
concurrency-*,
|
|
||||||
cppcoreguidelines-*,
|
|
||||||
misc-*,
|
|
||||||
modernize-*,
|
|
||||||
performance-*,
|
|
||||||
portability-*,
|
|
||||||
readability-*,
|
|
||||||
-# not applicable at all,
|
|
||||||
-bugprone-easily-swappable-parameters,
|
|
||||||
-bugprone-implicit-widening-of-multiplication-result,
|
|
||||||
-bugprone-macro-parentheses,
|
|
||||||
-cppcoreguidelines-avoid-c-arrays,
|
|
||||||
-cppcoreguidelines-avoid-magic-numbers,
|
|
||||||
-cppcoreguidelines-avoid-non-const-global-variables,
|
|
||||||
-cppcoreguidelines-macro-usage,
|
|
||||||
-cppcoreguidelines-non-private-member-variables-in-classes,
|
|
||||||
-cppcoreguidelines-owning-memory,
|
|
||||||
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
|
|
||||||
-cppcoreguidelines-pro-bounds-constant-array-index,
|
|
||||||
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
|
|
||||||
-cppcoreguidelines-pro-type-const-cast,
|
|
||||||
-cppcoreguidelines-pro-type-reinterpret-cast,
|
|
||||||
-cppcoreguidelines-pro-type-union-access,
|
|
||||||
-cppcoreguidelines-pro-type-vararg,
|
|
||||||
-cppcoreguidelines-special-member-functions,
|
|
||||||
-cppcoreguidelines-virtual-class-destructor,
|
|
||||||
-misc-no-recursion,
|
|
||||||
-misc-non-private-member-variables-in-classes,
|
|
||||||
-misc-unused-parameters,
|
|
||||||
-modernize-avoid-c-arrays,
|
|
||||||
-modernize-pass-by-value,
|
|
||||||
-modernize-use-auto,
|
|
||||||
-modernize-use-nodiscard,
|
|
||||||
-modernize-use-trailing-return-type,
|
|
||||||
-modernize-use-using,
|
|
||||||
-readability-function-cognitive-complexity,
|
|
||||||
-readability-function-size,
|
|
||||||
-readability-identifier-length,
|
|
||||||
-readability-implicit-bool-conversion,
|
|
||||||
-readability-isolate-declaration,
|
|
||||||
-readability-magic-numbers,
|
|
||||||
-readability-named-parameter,
|
|
||||||
-readability-redundant-access-specifiers,
|
|
||||||
-readability-simplify-boolean-expr,
|
|
||||||
-readability-uppercase-literal-suffix,
|
|
||||||
-# only sometimes useful,
|
|
||||||
-bugprone-narrowing-conversions,
|
|
||||||
-cert-dcl58-cpp,
|
|
||||||
-cert-err33-c,
|
|
||||||
-cert-err58-cpp,
|
|
||||||
-clang-analyzer-core.CallAndMessage,
|
|
||||||
-clang-analyzer-cplusplus.NewDelete,
|
|
||||||
-clang-analyzer-cplusplus.NewDeleteLeaks,
|
|
||||||
-concurrency-mt-unsafe,
|
|
||||||
-cppcoreguidelines-init-variables,
|
|
||||||
-cppcoreguidelines-narrowing-conversions,
|
|
||||||
-cppcoreguidelines-prefer-member-initializer,
|
|
||||||
-cppcoreguidelines-pro-type-static-cast-downcast,
|
|
||||||
-misc-definitions-in-headers,
|
|
||||||
-modernize-concat-nested-namespaces,
|
|
||||||
-modernize-loop-convert,
|
|
||||||
-modernize-raw-string-literal,
|
|
||||||
-modernize-unary-static-assert,
|
|
||||||
-performance-no-automatic-move,
|
|
||||||
-readability-convert-member-functions-to-static,
|
|
||||||
-readability-else-after-return,
|
|
||||||
-readability-redundant-declaration,
|
|
||||||
-# obsoleted,
|
|
||||||
-cert-dcl21-cpp
|
|
||||||
|
|
||||||
CheckOptions:
|
|
||||||
- { key: cppcoreguidelines-explicit-virtual-functions.IgnoreDestructors, value: true }
|
|
||||||
- { key: modernize-use-override.IgnoreDestructors, value: true }
|
|
||||||
- { key: performance-for-range-copy.AllowedTypes, value: "QJsonValue" }
|
|
||||||
- { key: performance-for-range-copy.WarnOnAllAutoCopies, value: true }
|
|
||||||
- { key: readability-braces-around-statements.ShortStatementLines, value: 3 }
|
|
||||||
|
|
||||||
HeaderFilterRegex: ".+/src/.*\\.h"
|
|
||||||
WarningsAsErrors: "*"
|
|
||||||
10
.gitattributes
vendored
10
.gitattributes
vendored
@@ -1,9 +1,7 @@
|
|||||||
core.eol=lf
|
core.eol=lf
|
||||||
* text eol=lf
|
* text eol=lf
|
||||||
*.icns binary
|
|
||||||
*.ico binary
|
|
||||||
*.png binary
|
|
||||||
*.qm binary
|
|
||||||
*.zip binary
|
*.zip binary
|
||||||
|
*.png binary
|
||||||
test/testdata/crlf.txt text eol=crlf
|
*.ico binary
|
||||||
|
*.qm binary
|
||||||
|
*.icns binary
|
||||||
|
|||||||
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -14,7 +14,7 @@ body:
|
|||||||
#### Prerequisites before submitting an issue!
|
#### 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.
|
- 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).**
|
- Verify that the issue is not fixed and is reproducible in the **[latest official qBittorrent version](https://www.qbittorrent.org/download.php).**
|
||||||
- (Optional, but recommended) Verify that the issue is not fixed and is reproducible in the latest CI (currently only on **[Windows](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_windows.yaml?query=branch%3Amaster+event%3Apush)**) builds.
|
- (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.
|
- 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/)**.
|
- 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.
|
- Verify that the **[wiki](https://github.com/qbittorrent/qBittorrent/wiki)** did not contain a suitable solution either.
|
||||||
|
|||||||
14
.github/workflows/ci_file_health.yaml
vendored
14
.github/workflows/ci_file_health.yaml
vendored
@@ -2,24 +2,16 @@ name: CI - File health
|
|||||||
|
|
||||||
on: [pull_request, push]
|
on: [pull_request, push]
|
||||||
|
|
||||||
permissions: {}
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
ci:
|
ci:
|
||||||
name: Check
|
name: Check
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Install tools
|
- name: Install tools
|
||||||
uses: actions/setup-python@v4
|
uses: actions/setup-python@v2
|
||||||
with:
|
|
||||||
python-version: "*"
|
|
||||||
|
|
||||||
- name: Check files
|
- name: Check files
|
||||||
uses: pre-commit/action@v3.0.0
|
uses: pre-commit/action@v2.0.3
|
||||||
|
|||||||
87
.github/workflows/ci_macos.yaml
vendored
87
.github/workflows/ci_macos.yaml
vendored
@@ -1,14 +1,6 @@
|
|||||||
name: CI - macOS
|
name: CI - macOS
|
||||||
|
|
||||||
on: [pull_request, push]
|
on: [pull_request, push]
|
||||||
|
|
||||||
permissions:
|
|
||||||
actions: write
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
ci:
|
ci:
|
||||||
name: Build
|
name: Build
|
||||||
@@ -17,12 +9,12 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
libt_version: ["2.0.9", "1.2.19"]
|
libt_version: ["2.0.5", "1.2.15"]
|
||||||
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
||||||
qt_version: ["5.15.2", "6.5.0"]
|
qt_version: ["5.15.2", "6.2.0"]
|
||||||
exclude:
|
exclude:
|
||||||
- libt_version: "1.2.19"
|
- libt_version: "1.2.15"
|
||||||
qt_version: "6.5.0"
|
qt_version: "6.2.0"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
boost_path: "${{ github.workspace }}/../boost"
|
boost_path: "${{ github.workspace }}/../boost"
|
||||||
@@ -30,46 +22,34 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
uses: Wandalen/wretry.action@v1
|
run: |
|
||||||
env:
|
brew update > /dev/null
|
||||||
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
|
brew install \
|
||||||
HOMEBREW_NO_INSTALL_CLEANUP: 1
|
cmake ninja \
|
||||||
with:
|
openssl@1.1 zlib
|
||||||
attempt_delay: 20000
|
|
||||||
attempt_limit: 6
|
|
||||||
command: |
|
|
||||||
brew update > /dev/null
|
|
||||||
brew install \
|
|
||||||
cmake ninja \
|
|
||||||
openssl@1.1 zlib
|
|
||||||
|
|
||||||
- name: Setup ccache
|
- name: Setup ccache
|
||||||
uses: Chocobo1/setup-ccache-action@v1
|
uses: Chocobo1/setup-ccache-action@v1
|
||||||
with:
|
with:
|
||||||
store_cache: ${{ github.ref == 'refs/heads/master' }}
|
|
||||||
update_packager_index: false
|
update_packager_index: false
|
||||||
ccache_options: |
|
|
||||||
max_size=2G
|
|
||||||
|
|
||||||
- name: Install boost
|
- name: Install boost
|
||||||
run: |
|
run: |
|
||||||
curl \
|
curl \
|
||||||
-L \
|
-L \
|
||||||
-o "${{ runner.temp }}/boost.tar.bz2" \
|
-o "${{ runner.temp }}/boost.tar.bz2" \
|
||||||
"https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/boost_1_82_0.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 }}/.."
|
tar -xf "${{ runner.temp }}/boost.tar.bz2" -C "${{ github.workspace }}/.."
|
||||||
mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}"
|
mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}"
|
||||||
|
|
||||||
- name: Install Qt
|
- name: Install Qt
|
||||||
uses: jurplel/install-qt-action@v3
|
uses: jurplel/install-qt-action@v2
|
||||||
with:
|
with:
|
||||||
|
setup-python: false
|
||||||
version: ${{ matrix.qt_version }}
|
version: ${{ matrix.qt_version }}
|
||||||
archives: qtbase qtdeclarative qtsvg qttools
|
|
||||||
# Not sure why Qt made a hard dependency on qtdeclarative, try removing it when Qt > 6.4.0
|
|
||||||
cache: true
|
|
||||||
|
|
||||||
- name: Install libtorrent
|
- name: Install libtorrent
|
||||||
run: |
|
run: |
|
||||||
@@ -82,7 +62,6 @@ jobs:
|
|||||||
cmake \
|
cmake \
|
||||||
-B build \
|
-B build \
|
||||||
-G "Ninja" \
|
-G "Ninja" \
|
||||||
-DBUILD_SHARED_LIBS=OFF \
|
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||||
-DCMAKE_CXX_STANDARD=17 \
|
-DCMAKE_CXX_STANDARD=17 \
|
||||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||||
@@ -93,10 +72,9 @@ jobs:
|
|||||||
sudo cmake --install build
|
sudo cmake --install build
|
||||||
|
|
||||||
- name: Build qBittorrent (Qt5)
|
- name: Build qBittorrent (Qt5)
|
||||||
if: startsWith(matrix.qt_version, 5)
|
if: ${{ startsWith(matrix.qt_version, 5) }}
|
||||||
run: |
|
run: |
|
||||||
CXXFLAGS="$CXXFLAGS -Werror -Wno-error=deprecated-declarations" \
|
lupdate -extensions c,cpp,h,hpp,ui ./
|
||||||
LDFLAGS="$LDFLAGS -gz" \
|
|
||||||
cmake \
|
cmake \
|
||||||
-B build \
|
-B build \
|
||||||
-G "Ninja" \
|
-G "Ninja" \
|
||||||
@@ -104,18 +82,14 @@ jobs:
|
|||||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||||
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \
|
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \
|
||||||
-DTESTING=ON \
|
|
||||||
-DVERBOSE_CONFIGURE=ON \
|
-DVERBOSE_CONFIGURE=ON \
|
||||||
-D${{ matrix.qbt_gui }}
|
-D${{ matrix.qbt_gui }}
|
||||||
cmake --build build --target qbt_update_translations
|
|
||||||
cmake --build build
|
cmake --build build
|
||||||
cmake --build build --target check
|
|
||||||
|
|
||||||
- name: Build qBittorrent (Qt6)
|
- name: Build qBittorrent (Qt6)
|
||||||
if: startsWith(matrix.qt_version, 6)
|
if: ${{ startsWith(matrix.qt_version, 6) }}
|
||||||
run: |
|
run: |
|
||||||
CXXFLAGS="$CXXFLAGS -Wno-gnu-zero-variadic-macro-arguments -Werror -Wno-error=deprecated-declarations" \
|
lupdate -extensions c,cpp,h,hpp,ui ./
|
||||||
LDFLAGS="$LDFLAGS -gz" \
|
|
||||||
cmake \
|
cmake \
|
||||||
-B build \
|
-B build \
|
||||||
-G "Ninja" \
|
-G "Ninja" \
|
||||||
@@ -124,43 +98,20 @@ jobs:
|
|||||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||||
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \
|
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \
|
||||||
-DQT6=ON \
|
-DQT6=ON \
|
||||||
-DTESTING=ON \
|
|
||||||
-DVERBOSE_CONFIGURE=ON \
|
-DVERBOSE_CONFIGURE=ON \
|
||||||
-D${{ matrix.qbt_gui }}
|
-D${{ matrix.qbt_gui }}
|
||||||
cmake --build build --target qbt_update_translations
|
|
||||||
cmake --build build
|
cmake --build build
|
||||||
cmake --build build --target check
|
|
||||||
|
|
||||||
- name: Prepare build artifacts
|
- name: Prepare build artifacts
|
||||||
run: |
|
run: |
|
||||||
# create .dmg
|
|
||||||
appName="qbittorrent"
|
|
||||||
if [ "${{ matrix.qbt_gui }}" = "GUI=OFF" ]; then
|
|
||||||
appName="qbittorrent-nox"
|
|
||||||
fi
|
|
||||||
# package
|
|
||||||
pushd build
|
|
||||||
PACKAGE_RETRY=0
|
|
||||||
while [ "$PACKAGE_RETRY" -lt "3" ]; do
|
|
||||||
macdeployqt "$appName.app" -dmg -no-strip
|
|
||||||
if [ -f "$appName.dmg" ]; then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
sleep 5
|
|
||||||
PACKAGE_RETRY=$((PACKAGE_RETRY + 1))
|
|
||||||
echo "Retry $PACKAGE_RETRY..."
|
|
||||||
done
|
|
||||||
popd
|
|
||||||
# prepare upload folder
|
|
||||||
mkdir upload
|
mkdir upload
|
||||||
cp "build/$appName.dmg" upload
|
|
||||||
mkdir upload/cmake
|
mkdir upload/cmake
|
||||||
cp build/compile_commands.json upload/cmake
|
cp build/compile_commands.json upload/cmake
|
||||||
mkdir upload/cmake/libtorrent
|
mkdir upload/cmake/libtorrent
|
||||||
cp libtorrent/build/compile_commands.json upload/cmake/libtorrent
|
cp libtorrent/build/compile_commands.json upload/cmake/libtorrent
|
||||||
|
|
||||||
- name: Upload build artifacts
|
- name: Upload build artifacts
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: qBittorrent-CI_macOS_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
|
name: build-info_macOS_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
|
||||||
path: upload
|
path: upload
|
||||||
|
|||||||
86
.github/workflows/ci_ubuntu.yaml
vendored
86
.github/workflows/ci_ubuntu.yaml
vendored
@@ -1,55 +1,43 @@
|
|||||||
name: CI - Ubuntu
|
name: CI - Ubuntu
|
||||||
|
|
||||||
on: [pull_request, push]
|
on: [pull_request, push]
|
||||||
|
|
||||||
permissions:
|
|
||||||
actions: write
|
|
||||||
security-events: write
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
ci:
|
ci:
|
||||||
name: Build
|
name: Build
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-20.04
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
libt_version: ["2.0.9", "1.2.19"]
|
libt_version: ["2.0.5", "1.2.15"]
|
||||||
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
qbt_gui: ["GUI=ON", "GUI=OFF"]
|
||||||
qt_version: ["5.15.2", "6.2.0"]
|
qt_version: ["5.15.2", "6.2.0"]
|
||||||
exclude:
|
exclude:
|
||||||
- libt_version: "1.2.19"
|
- libt_version: "1.2.15"
|
||||||
qt_version: "6.2.0"
|
qt_version: "6.2.0"
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
sudo apt update
|
sudo apt update
|
||||||
sudo apt install \
|
sudo apt install \
|
||||||
build-essential cmake ninja-build pkg-config \
|
build-essential cmake ninja-build pkg-config \
|
||||||
libboost-dev libssl-dev libxkbcommon-x11-dev zlib1g-dev
|
libboost-dev libssl-dev zlib1g-dev
|
||||||
|
|
||||||
- name: Setup ccache
|
- name: Setup ccache
|
||||||
uses: Chocobo1/setup-ccache-action@v1
|
uses: Chocobo1/setup-ccache-action@v1
|
||||||
with:
|
with:
|
||||||
store_cache: ${{ github.ref == 'refs/heads/master' }}
|
|
||||||
update_packager_index: false
|
update_packager_index: false
|
||||||
ccache_options: |
|
ccache_options: |
|
||||||
max_size=2G
|
max_size=2G
|
||||||
|
|
||||||
- name: Install Qt
|
- name: Install Qt
|
||||||
uses: jurplel/install-qt-action@v3
|
uses: jurplel/install-qt-action@v2
|
||||||
with:
|
with:
|
||||||
version: ${{ matrix.qt_version }}
|
version: ${{ matrix.qt_version }}
|
||||||
archives: icu qtbase qtsvg qttools
|
|
||||||
cache: true
|
|
||||||
|
|
||||||
- name: Install libtorrent
|
- name: Install libtorrent
|
||||||
run: |
|
run: |
|
||||||
@@ -62,45 +50,31 @@ jobs:
|
|||||||
cmake \
|
cmake \
|
||||||
-B build \
|
-B build \
|
||||||
-G "Ninja" \
|
-G "Ninja" \
|
||||||
-DBUILD_SHARED_LIBS=OFF \
|
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||||
-Ddeprecated-functions=OFF
|
-Ddeprecated-functions=OFF
|
||||||
cmake --build build
|
cmake --build build
|
||||||
sudo cmake --install build
|
sudo cmake --install build
|
||||||
|
|
||||||
# to avoid scanning 3rdparty codebases, initialize it just before building qbt
|
|
||||||
- name: Initialize CodeQL
|
|
||||||
uses: github/codeql-action/init@v2
|
|
||||||
if: startsWith(matrix.libt_version, 2) && (matrix.qbt_gui == 'GUI=ON') && startsWith(matrix.qt_version, 6)
|
|
||||||
with:
|
|
||||||
config-file: ./.github/workflows/helper/codeql/cpp.yaml
|
|
||||||
languages: cpp
|
|
||||||
|
|
||||||
- name: Build qBittorrent (Qt5)
|
- name: Build qBittorrent (Qt5)
|
||||||
if: startsWith(matrix.qt_version, 5)
|
if: ${{ startsWith(matrix.qt_version, 5) }}
|
||||||
run: |
|
run: |
|
||||||
CXXFLAGS="$CXXFLAGS -Werror -Wno-error=deprecated-declarations" \
|
lupdate -extensions c,cpp,h,hpp,ui ./
|
||||||
LDFLAGS="$LDFLAGS -gz" \
|
|
||||||
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_INSTALL_PREFIX="/usr" \
|
-DCMAKE_INSTALL_PREFIX="/usr" \
|
||||||
-DTESTING=ON \
|
|
||||||
-DVERBOSE_CONFIGURE=ON \
|
-DVERBOSE_CONFIGURE=ON \
|
||||||
-D${{ matrix.qbt_gui }}
|
-D${{ matrix.qbt_gui }}
|
||||||
cmake --build build --target qbt_update_translations
|
|
||||||
cmake --build build
|
cmake --build build
|
||||||
cmake --build build --target check
|
|
||||||
DESTDIR="qbittorrent" cmake --install build
|
DESTDIR="qbittorrent" cmake --install build
|
||||||
|
|
||||||
- name: Build qBittorrent (Qt6)
|
- name: Build qBittorrent (Qt6)
|
||||||
if: startsWith(matrix.qt_version, 6)
|
if: ${{ startsWith(matrix.qt_version, 6) }}
|
||||||
run: |
|
run: |
|
||||||
CXXFLAGS="$CXXFLAGS -Werror" \
|
lupdate -extensions c,cpp,h,hpp,ui ./
|
||||||
LDFLAGS="$LDFLAGS -gz" \
|
|
||||||
cmake \
|
cmake \
|
||||||
-B build \
|
-B build \
|
||||||
-G "Ninja" \
|
-G "Ninja" \
|
||||||
@@ -108,20 +82,11 @@ jobs:
|
|||||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||||
-DCMAKE_INSTALL_PREFIX="/usr" \
|
-DCMAKE_INSTALL_PREFIX="/usr" \
|
||||||
-DQT6=ON \
|
-DQT6=ON \
|
||||||
-DTESTING=ON \
|
|
||||||
-DVERBOSE_CONFIGURE=ON \
|
-DVERBOSE_CONFIGURE=ON \
|
||||||
-D${{ matrix.qbt_gui }}
|
-D${{ matrix.qbt_gui }}
|
||||||
cmake --build build --target qbt_update_translations
|
|
||||||
cmake --build build
|
cmake --build build
|
||||||
cmake --build build --target check
|
|
||||||
DESTDIR="qbittorrent" cmake --install build
|
DESTDIR="qbittorrent" cmake --install build
|
||||||
|
|
||||||
- name: Run CodeQL analysis
|
|
||||||
uses: github/codeql-action/analyze@v2
|
|
||||||
if: startsWith(matrix.libt_version, 2) && (matrix.qbt_gui == 'GUI=ON') && startsWith(matrix.qt_version, 6)
|
|
||||||
with:
|
|
||||||
category: ${{ github.base_ref || github.ref_name }}
|
|
||||||
|
|
||||||
- name: Prepare build artifacts
|
- name: Prepare build artifacts
|
||||||
run: |
|
run: |
|
||||||
mkdir upload
|
mkdir upload
|
||||||
@@ -130,35 +95,8 @@ jobs:
|
|||||||
mkdir upload/cmake/libtorrent
|
mkdir upload/cmake/libtorrent
|
||||||
cp libtorrent/build/compile_commands.json upload/cmake/libtorrent
|
cp libtorrent/build/compile_commands.json upload/cmake/libtorrent
|
||||||
|
|
||||||
- name: 'AppImage: Prepare env'
|
|
||||||
run: |
|
|
||||||
sudo apt install libfuse2
|
|
||||||
wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
|
|
||||||
wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
|
|
||||||
wget https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous/linuxdeploy-plugin-appimage-x86_64.AppImage
|
|
||||||
chmod +x linuxdeploy-x86_64.AppImage
|
|
||||||
chmod +x linuxdeploy-plugin-qt-x86_64.AppImage
|
|
||||||
chmod +x linuxdeploy-plugin-appimage-x86_64.AppImage
|
|
||||||
|
|
||||||
- name: 'AppImage: Prepare nox'
|
|
||||||
if: matrix.qbt_gui == 'GUI=OFF'
|
|
||||||
run: |
|
|
||||||
mkdir -p qbittorrent/usr/share/icons/hicolor/scalable/apps/
|
|
||||||
mkdir -p qbittorrent/usr/share/applications/
|
|
||||||
cp dist/unix/menuicons/scalable/apps/qbittorrent.svg qbittorrent/usr/share/icons/hicolor/scalable/apps/qbittorrent.svg
|
|
||||||
cp .github/workflows/helper/appimage/org.qbittorrent.qBittorrent.desktop qbittorrent/usr/share/applications/org.qbittorrent.qBittorrent.desktop
|
|
||||||
|
|
||||||
- name: 'AppImage: Package'
|
|
||||||
run: |
|
|
||||||
./linuxdeploy-x86_64.AppImage --appdir=qbittorrent --plugin qt
|
|
||||||
rm qbittorrent/apprun-hooks/*
|
|
||||||
cp .github/workflows/helper/appimage/export_vars.sh qbittorrent/apprun-hooks/export_vars.sh
|
|
||||||
NO_APPSTREAM=1 \
|
|
||||||
OUTPUT=upload/qbittorrent-CI_Ubuntu_x86_64.AppImage \
|
|
||||||
./linuxdeploy-x86_64.AppImage --appdir=qbittorrent --output appimage
|
|
||||||
|
|
||||||
- name: Upload build artifacts
|
- name: Upload build artifacts
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: qBittorrent-CI_Ubuntu-x64_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
|
name: build-info_ubuntu-20.04-x64_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }}
|
||||||
path: upload
|
path: upload
|
||||||
|
|||||||
20
.github/workflows/ci_webui.yaml
vendored
20
.github/workflows/ci_webui.yaml
vendored
@@ -2,13 +2,6 @@ name: CI - WebUI
|
|||||||
|
|
||||||
on: [pull_request, push]
|
on: [pull_request, push]
|
||||||
|
|
||||||
permissions:
|
|
||||||
security-events: write
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
ci:
|
ci:
|
||||||
name: Check
|
name: Check
|
||||||
@@ -20,10 +13,10 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Setup nodejs
|
- name: Setup nodejs
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v2
|
||||||
with:
|
with:
|
||||||
node-version: 'lts/*'
|
node-version: 'lts/*'
|
||||||
|
|
||||||
@@ -37,12 +30,3 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
npm run format
|
npm run format
|
||||||
git diff --exit-code
|
git diff --exit-code
|
||||||
|
|
||||||
- name: Initialize CodeQL
|
|
||||||
uses: github/codeql-action/init@v2
|
|
||||||
with:
|
|
||||||
config-file: ./.github/workflows/helper/codeql/js.yaml
|
|
||||||
languages: javascript
|
|
||||||
|
|
||||||
- name: Run CodeQL analysis
|
|
||||||
uses: github/codeql-action/analyze@v2
|
|
||||||
|
|||||||
102
.github/workflows/ci_windows.yaml
vendored
102
.github/workflows/ci_windows.yaml
vendored
@@ -1,14 +1,6 @@
|
|||||||
name: CI - Windows
|
name: CI - Windows
|
||||||
|
|
||||||
on: [pull_request, push]
|
on: [pull_request, push]
|
||||||
|
|
||||||
permissions:
|
|
||||||
actions: write
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
ci:
|
ci:
|
||||||
name: Build
|
name: Build
|
||||||
@@ -17,16 +9,15 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
libt_version: ["2.0.9", "1.2.19"]
|
libt_version: ["2.0.5", "1.2.15"]
|
||||||
|
|
||||||
env:
|
env:
|
||||||
boost_path: "${{ github.workspace }}/../boost"
|
boost_path: "${{ github.workspace }}/../boost"
|
||||||
libtorrent_path: "${{ github.workspace }}/libtorrent"
|
libtorrent_path: "${{ github.workspace }}/libtorrent"
|
||||||
vpkg_triplet_path: "${{ github.workspace }}/../triplets_overlay"
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Setup devcmd
|
- name: Setup devcmd
|
||||||
uses: ilammy/msvc-dev-cmd@v1
|
uses: ilammy/msvc-dev-cmd@v1
|
||||||
@@ -38,52 +29,50 @@ jobs:
|
|||||||
# use the preinstalled vcpkg from image
|
# use the preinstalled vcpkg from image
|
||||||
# https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md#package-management
|
# https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md#package-management
|
||||||
- name: Setup vcpkg
|
- name: Setup vcpkg
|
||||||
uses: lukka/run-vcpkg@v10
|
uses: lukka/run-vcpkg@v7
|
||||||
with:
|
with:
|
||||||
vcpkgDirectory: C:/vcpkg
|
vcpkgDirectory: C:/vcpkg
|
||||||
doNotUpdateVcpkg: true # the preinstalled vcpkg is updated regularly
|
doNotUpdateVcpkg: true # the preinstalled vcpkg is updated regularly
|
||||||
|
setupOnly: true
|
||||||
|
|
||||||
- name: Install dependencies with vcpkg
|
- name: Install dependencies from vcpkg
|
||||||
run: |
|
run: |
|
||||||
# create our own triplet
|
# tell vcpkg to only build Release variants of the dependencies
|
||||||
New-Item `
|
New-Item `
|
||||||
-Force `
|
-Path "${{ github.workspace }}" `
|
||||||
-ItemType File `
|
-Name "triplets_overlay" `
|
||||||
-Path "${{ env.vpkg_triplet_path }}/x64-windows-static-md-release.cmake"
|
-ItemType Directory
|
||||||
# OpenSSL isn't compatible with `/guard:cf` flag so we omit it for now, see: https://github.com/openssl/openssl/issues/22554
|
Copy-Item `
|
||||||
|
"${{ env.RUNVCPKG_VCPKG_ROOT }}/triplets/x64-windows-static.cmake" `
|
||||||
|
"${{ github.workspace }}/triplets_overlay/x64-windows-static-release.cmake"
|
||||||
Add-Content `
|
Add-Content `
|
||||||
-Path "${{ env.vpkg_triplet_path }}/x64-windows-static-md-release.cmake" `
|
"${{ github.workspace }}/triplets_overlay/x64-windows-static-release.cmake" `
|
||||||
-Value @("set(VCPKG_TARGET_ARCHITECTURE x64)",
|
-Value "set(VCPKG_BUILD_TYPE release)"
|
||||||
"set(VCPKG_LIBRARY_LINKAGE static)",
|
|
||||||
"set(VCPKG_CRT_LINKAGE dynamic)",
|
|
||||||
"set(VCPKG_BUILD_TYPE release)")
|
|
||||||
# clear buildtrees after each package installation to reduce disk space requirements
|
# clear buildtrees after each package installation to reduce disk space requirements
|
||||||
$packages = `
|
$packages = `
|
||||||
"openssl:x64-windows-static-md-release",
|
"openssl:x64-windows-static-release",
|
||||||
"zlib:x64-windows-static-md-release"
|
"zlib:x64-windows-static-release"
|
||||||
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe upgrade `
|
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe upgrade `
|
||||||
--no-dry-run `
|
--overlay-triplets="${{ github.workspace }}/triplets_overlay" `
|
||||||
--overlay-triplets="${{ env.vpkg_triplet_path }}"
|
--no-dry-run
|
||||||
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe install `
|
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe install `
|
||||||
|
--overlay-triplets="${{ github.workspace }}/triplets_overlay" `
|
||||||
--clean-after-build `
|
--clean-after-build `
|
||||||
--overlay-triplets="${{ env.vpkg_triplet_path }}" `
|
|
||||||
$packages
|
$packages
|
||||||
|
|
||||||
- name: Install boost
|
- name: Install boost
|
||||||
run: |
|
run: |
|
||||||
aria2c `
|
aria2c `
|
||||||
"https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/boost_1_82_0.7z" `
|
"https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.7z" `
|
||||||
-d "${{ runner.temp }}" `
|
-d "${{ runner.temp }}" `
|
||||||
-o "boost.7z"
|
-o "boost.7z"
|
||||||
7z x "${{ runner.temp }}/boost.7z" -o"${{ github.workspace }}/.."
|
7z x "${{ runner.temp }}/boost.7z" -o"${{ github.workspace }}/.."
|
||||||
move "${{ github.workspace }}/../boost_*" "${{ env.boost_path }}"
|
move "${{ github.workspace }}/../boost_*" "${{ env.boost_path }}"
|
||||||
|
|
||||||
- name: Install Qt
|
- name: Install Qt
|
||||||
uses: jurplel/install-qt-action@v3
|
uses: jurplel/install-qt-action@v2
|
||||||
with:
|
with:
|
||||||
version: "6.5.0"
|
version: "5.15.2"
|
||||||
archives: qtbase qtsvg qttools
|
|
||||||
cache: true
|
|
||||||
|
|
||||||
- name: Install libtorrent
|
- name: Install libtorrent
|
||||||
run: |
|
run: |
|
||||||
@@ -93,8 +82,6 @@ jobs:
|
|||||||
--recurse-submodules `
|
--recurse-submodules `
|
||||||
https://github.com/arvidn/libtorrent.git
|
https://github.com/arvidn/libtorrent.git
|
||||||
cd libtorrent
|
cd libtorrent
|
||||||
$env:CXXFLAGS+=" /guard:cf"
|
|
||||||
$env:LDFLAGS+=" /guard:cf"
|
|
||||||
cmake `
|
cmake `
|
||||||
-B build `
|
-B build `
|
||||||
-G "Ninja" `
|
-G "Ninja" `
|
||||||
@@ -105,14 +92,14 @@ jobs:
|
|||||||
-DBOOST_ROOT="${{ env.boost_path }}" `
|
-DBOOST_ROOT="${{ env.boost_path }}" `
|
||||||
-DBUILD_SHARED_LIBS=OFF `
|
-DBUILD_SHARED_LIBS=OFF `
|
||||||
-Ddeprecated-functions=OFF `
|
-Ddeprecated-functions=OFF `
|
||||||
-Dstatic_runtime=OFF `
|
-Dstatic_runtime=ON `
|
||||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release
|
-DVCPKG_TARGET_TRIPLET=x64-windows-static-release
|
||||||
cmake --build build
|
cmake --build build
|
||||||
cmake --install build
|
cmake --install build
|
||||||
|
|
||||||
- name: Build qBittorrent
|
- name: Build qBittorrent
|
||||||
run: |
|
run: |
|
||||||
$env:CXXFLAGS+=" /WX"
|
lupdate -extensions c,cpp,h,hpp,ui .
|
||||||
cmake `
|
cmake `
|
||||||
-B build `
|
-B build `
|
||||||
-G "Ninja" `
|
-G "Ninja" `
|
||||||
@@ -121,15 +108,11 @@ jobs:
|
|||||||
-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 }}" `
|
-DBOOST_ROOT="${{ env.boost_path }}" `
|
||||||
-DLibtorrentRasterbar_DIR="${{ env.libtorrent_path }}/lib/cmake/LibtorrentRasterbar" `
|
-DLibtorrentRasterbar_DIR="${{ env.libtorrent_path }}/lib/cmake/LibtorrentRasterbar" `
|
||||||
-DMSVC_RUNTIME_DYNAMIC=ON `
|
-DMSVC_RUNTIME_DYNAMIC=OFF `
|
||||||
-DQT6=ON `
|
-DVCPKG_TARGET_TRIPLET=x64-windows-static-release `
|
||||||
-DTESTING=ON `
|
|
||||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release `
|
|
||||||
-DVERBOSE_CONFIGURE=ON `
|
-DVERBOSE_CONFIGURE=ON `
|
||||||
--graphviz=build/target_graph.dot
|
--graphviz=build/target_graph.dot
|
||||||
cmake --build build --target qbt_update_translations
|
|
||||||
cmake --build build
|
cmake --build build
|
||||||
cmake --build build --target check
|
|
||||||
|
|
||||||
- name: Prepare build artifacts
|
- name: Prepare build artifacts
|
||||||
run: |
|
run: |
|
||||||
@@ -138,26 +121,25 @@ jobs:
|
|||||||
copy build/qbittorrent.pdb upload
|
copy build/qbittorrent.pdb upload
|
||||||
copy dist/windows/qt.conf upload
|
copy dist/windows/qt.conf upload
|
||||||
# runtimes
|
# runtimes
|
||||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Core.dll" upload
|
copy "${{ env.Qt5_DIR }}/bin/Qt5Core.dll" upload
|
||||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Gui.dll" upload
|
copy "${{ env.Qt5_DIR }}/bin/Qt5Gui.dll" upload
|
||||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Network.dll" upload
|
copy "${{ env.Qt5_DIR }}/bin/Qt5Network.dll" upload
|
||||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Sql.dll" upload
|
copy "${{ env.Qt5_DIR }}/bin/Qt5Sql.dll" upload
|
||||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Svg.dll" upload
|
copy "${{ env.Qt5_DIR }}/bin/Qt5Svg.dll" upload
|
||||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Widgets.dll" upload
|
copy "${{ env.Qt5_DIR }}/bin/Qt5Widgets.dll" upload
|
||||||
copy "${{ env.Qt6_DIR }}/bin/Qt6Xml.dll" upload
|
copy "${{ env.Qt5_DIR }}/bin/Qt5WinExtras.dll" upload
|
||||||
|
copy "${{ env.Qt5_DIR }}/bin/Qt5Xml.dll" upload
|
||||||
mkdir upload/plugins/iconengines
|
mkdir upload/plugins/iconengines
|
||||||
copy "${{ env.Qt6_DIR }}/plugins/iconengines/qsvgicon.dll" upload/plugins/iconengines
|
copy "${{ env.Qt5_DIR }}/plugins/iconengines/qsvgicon.dll" upload/plugins/iconengines
|
||||||
mkdir upload/plugins/imageformats
|
mkdir upload/plugins/imageformats
|
||||||
copy "${{ env.Qt6_DIR }}/plugins/imageformats/qico.dll" upload/plugins/imageformats
|
copy "${{ env.Qt5_DIR }}/plugins/imageformats/qico.dll" upload/plugins/imageformats
|
||||||
copy "${{ env.Qt6_DIR }}/plugins/imageformats/qsvg.dll" upload/plugins/imageformats
|
copy "${{ env.Qt5_DIR }}/plugins/imageformats/qsvg.dll" upload/plugins/imageformats
|
||||||
mkdir upload/plugins/platforms
|
mkdir upload/plugins/platforms
|
||||||
copy "${{ env.Qt6_DIR }}/plugins/platforms/qwindows.dll" upload/plugins/platforms
|
copy "${{ env.Qt5_DIR }}/plugins/platforms/qwindows.dll" upload/plugins/platforms
|
||||||
mkdir upload/plugins/sqldrivers
|
mkdir upload/plugins/sqldrivers
|
||||||
copy "${{ env.Qt6_DIR }}/plugins/sqldrivers/qsqlite.dll" upload/plugins/sqldrivers
|
copy "${{ env.Qt5_DIR }}/plugins/sqldrivers/qsqlite.dll" upload/plugins/sqldrivers
|
||||||
mkdir upload/plugins/styles
|
mkdir upload/plugins/styles
|
||||||
copy "${{ env.Qt6_DIR }}/plugins/styles/qwindowsvistastyle.dll" upload/plugins/styles
|
copy "${{ env.Qt5_DIR }}/plugins/styles/qwindowsvistastyle.dll" upload/plugins/styles
|
||||||
mkdir upload/plugins/tls
|
|
||||||
copy "${{ env.Qt6_DIR }}/plugins/tls/qschannelbackend.dll" upload/plugins/tls
|
|
||||||
# cmake additionals
|
# cmake additionals
|
||||||
mkdir upload/cmake
|
mkdir upload/cmake
|
||||||
copy build/compile_commands.json upload/cmake
|
copy build/compile_commands.json upload/cmake
|
||||||
@@ -166,7 +148,7 @@ jobs:
|
|||||||
copy libtorrent/build/compile_commands.json upload/cmake/libtorrent
|
copy libtorrent/build/compile_commands.json upload/cmake/libtorrent
|
||||||
|
|
||||||
- name: Upload build artifacts
|
- name: Upload build artifacts
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: qBittorrent-CI_Windows-x64_libtorrent-${{ matrix.libt_version }}
|
name: qBittorrent-CI_Windows-x64_libtorrent-${{ matrix.libt_version }}
|
||||||
path: upload
|
path: upload
|
||||||
|
|||||||
@@ -5,16 +5,13 @@ 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.
|
||||||
|
|
||||||
permissions: {}
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
coverity_scan:
|
coverity_scan:
|
||||||
name: Scan
|
name: Scan
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-20.04
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
@@ -24,15 +21,14 @@ jobs:
|
|||||||
libboost-dev libssl-dev zlib1g-dev
|
libboost-dev libssl-dev zlib1g-dev
|
||||||
|
|
||||||
- name: Install Qt
|
- name: Install Qt
|
||||||
uses: jurplel/install-qt-action@v3
|
uses: jurplel/install-qt-action@v2
|
||||||
with:
|
with:
|
||||||
version: "6.5.0"
|
version: "5.15.2"
|
||||||
archives: icu qtbase qtsvg qttools
|
|
||||||
|
|
||||||
- name: Install libtorrent
|
- name: Install libtorrent
|
||||||
run: |
|
run: |
|
||||||
git clone \
|
git clone \
|
||||||
--branch "v2.0.9" \
|
--branch "v2.0.5" \
|
||||||
--depth 1 \
|
--depth 1 \
|
||||||
--recurse-submodules \
|
--recurse-submodules \
|
||||||
https://github.com/arvidn/libtorrent.git
|
https://github.com/arvidn/libtorrent.git
|
||||||
@@ -62,14 +58,13 @@ jobs:
|
|||||||
-G "Ninja" \
|
-G "Ninja" \
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||||
-DGUI=ON \
|
-DGUI=ON \
|
||||||
-DQT6=ON \
|
|
||||||
-DVERBOSE_CONFIGURE=ON
|
-DVERBOSE_CONFIGURE=ON
|
||||||
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
|
||||||
|
|
||||||
- name: Submit the result to Coverity Scan
|
- name: Submit the result to Coverity Scan
|
||||||
run: |
|
run: |
|
||||||
tar -caf qbittorrent.xz cov-int
|
tar caf qbittorrent.xz cov-int
|
||||||
curl \
|
curl \
|
||||||
--form token="${{ secrets.COVERITY_SCAN_TOKEN }}" \
|
--form token="${{ secrets.COVERITY_SCAN_TOKEN }}" \
|
||||||
--form email=sledgehammer999@qbittorrent.org \
|
--form email=sledgehammer999@qbittorrent.org \
|
||||||
13
.github/workflows/helper/appimage/export_vars.sh
vendored
13
.github/workflows/helper/appimage/export_vars.sh
vendored
@@ -1,13 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# this file is called from AppRun so 'root_dir' will point to where AppRun is
|
|
||||||
root_dir="$(readlink -f "$(dirname "$0")")"
|
|
||||||
|
|
||||||
# Insert the default values because after the test we prepend our path
|
|
||||||
# and it will create problems with DEs (eg KDE) that don't set the variable
|
|
||||||
# and rely on the default paths
|
|
||||||
if [ -z "${XDG_DATA_DIRS}" ]; then
|
|
||||||
XDG_DATA_DIRS="/usr/local/share/:/usr/share/"
|
|
||||||
fi
|
|
||||||
|
|
||||||
export XDG_DATA_DIRS="${root_dir}/usr/share:${XDG_DATA_DIRS}"
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
[Desktop Entry]
|
|
||||||
Name=qBittorrent
|
|
||||||
Exec=qbittorrent-nox %U
|
|
||||||
Icon=qbittorrent
|
|
||||||
Type=Application
|
|
||||||
Categories=Network
|
|
||||||
14
.github/workflows/helper/codeql/cpp.yaml
vendored
14
.github/workflows/helper/codeql/cpp.yaml
vendored
@@ -1,14 +0,0 @@
|
|||||||
name: "CodeQL config for C++"
|
|
||||||
|
|
||||||
queries:
|
|
||||||
- uses: security-and-quality
|
|
||||||
|
|
||||||
query-filters:
|
|
||||||
- exclude:
|
|
||||||
id: cpp/commented-out-code
|
|
||||||
- exclude:
|
|
||||||
id: cpp/include-non-header
|
|
||||||
- exclude:
|
|
||||||
id: cpp/loop-variable-changed
|
|
||||||
- exclude:
|
|
||||||
id: cpp/useless-expression
|
|
||||||
11
.github/workflows/helper/codeql/js.yaml
vendored
11
.github/workflows/helper/codeql/js.yaml
vendored
@@ -1,11 +0,0 @@
|
|||||||
name: "CodeQL config for Javascript"
|
|
||||||
|
|
||||||
paths-ignore:
|
|
||||||
- "**/lib/*"
|
|
||||||
|
|
||||||
queries:
|
|
||||||
- uses: security-and-quality
|
|
||||||
|
|
||||||
query-filters:
|
|
||||||
- exclude:
|
|
||||||
id: js/superfluous-trailing-arguments
|
|
||||||
18
.github/workflows/helper/pre-commit/.typos.toml
vendored
18
.github/workflows/helper/pre-commit/.typos.toml
vendored
@@ -1,18 +0,0 @@
|
|||||||
# https://github.com/crate-ci/typos/blob/master/docs/reference.md
|
|
||||||
# https://github.com/crate-ci/typos/blob/master/docs/design.md#identifiers-and-words
|
|
||||||
|
|
||||||
# try adding to `identifiers` list first, if doesn't work then `words` list
|
|
||||||
|
|
||||||
[default.extend-identifiers]
|
|
||||||
additionals = "additionals"
|
|
||||||
caf = "caf"
|
|
||||||
curren = "curren"
|
|
||||||
FO = "FO"
|
|
||||||
ket = "ket"
|
|
||||||
Q_INVOKABLE = "Q_INVOKABLE"
|
|
||||||
switchs = "switchs"
|
|
||||||
ths = "ths"
|
|
||||||
|
|
||||||
[default.extend-words]
|
|
||||||
BA = "BA"
|
|
||||||
helo = "helo"
|
|
||||||
5
.github/workflows/stale_bot.yaml
vendored
5
.github/workflows/stale_bot.yaml
vendored
@@ -4,15 +4,12 @@ on:
|
|||||||
schedule:
|
schedule:
|
||||||
- cron: '0 0 * * *'
|
- cron: '0 0 * * *'
|
||||||
|
|
||||||
permissions:
|
|
||||||
pull-requests: write
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
stale:
|
stale:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Mark and close stale PRs
|
- name: Mark and close stale PRs
|
||||||
uses: actions/stale@v8
|
uses: actions/stale@v4
|
||||||
with:
|
with:
|
||||||
stale-pr-message: "This PR is stale because it has been 60 days with no activity. This PR will be automatically closed within 7 days if there is no further activity."
|
stale-pr-message: "This PR is stale because it has been 60 days with no activity. This PR will be automatically closed within 7 days if there is no further activity."
|
||||||
close-pr-message: "This PR was closed because it has been stalled for some time with no activity."
|
close-pr-message: "This PR was closed because it has been stalled for some time with no activity."
|
||||||
|
|||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,4 +1,3 @@
|
|||||||
.vscode/
|
|
||||||
src/gui/geoip/GeoIP.dat
|
src/gui/geoip/GeoIP.dat
|
||||||
src/gui/geoip/GeoIP.dat.gz
|
src/gui/geoip/GeoIP.dat.gz
|
||||||
src/qbittorrent
|
src/qbittorrent
|
||||||
|
|||||||
@@ -3,17 +3,13 @@ repos:
|
|||||||
hooks:
|
hooks:
|
||||||
- id: check-translation-tag
|
- id: check-translation-tag
|
||||||
name: Check newline characters in <translation> tag
|
name: Check newline characters in <translation> tag
|
||||||
entry: .github/workflows/helper/pre-commit/check_translation_tag.py
|
entry: .github/workflows/check_translation_tag.py
|
||||||
language: script
|
language: script
|
||||||
exclude: |
|
|
||||||
(?x)^(
|
|
||||||
src/lang/.*
|
|
||||||
)$
|
|
||||||
types_or:
|
types_or:
|
||||||
- ts
|
- ts
|
||||||
|
|
||||||
- repo: https://github.com/pre-commit/pre-commit-hooks.git
|
- repo: https://github.com/pre-commit/pre-commit-hooks.git
|
||||||
rev: v4.4.0
|
rev: v4.0.1
|
||||||
hooks:
|
hooks:
|
||||||
- id: check-json
|
- id: check-json
|
||||||
name: Check JSON files
|
name: Check JSON files
|
||||||
@@ -33,19 +29,17 @@ repos:
|
|||||||
args: ["--fix=lf"]
|
args: ["--fix=lf"]
|
||||||
exclude: |
|
exclude: |
|
||||||
(?x)^(
|
(?x)^(
|
||||||
src/webui/www/private/css/lib/.* |
|
compile_commands.json |
|
||||||
src/webui/www/private/scripts/lib/.* |
|
src/webui/www/private/scripts/lib/.*
|
||||||
test/testdata/crlf.txt
|
|
||||||
)$
|
)$
|
||||||
|
|
||||||
- id: end-of-file-fixer
|
- id: end-of-file-fixer
|
||||||
name: Check trailing newlines
|
name: Check trailing newlines
|
||||||
exclude: |
|
exclude: |
|
||||||
(?x)^(
|
(?x)^(
|
||||||
|
compile_commands.json |
|
||||||
configure |
|
configure |
|
||||||
src/webui/www/private/css/lib/.* |
|
src/webui/www/private/scripts/lib/.*
|
||||||
src/webui/www/private/scripts/lib/.* |
|
|
||||||
test/testdata/crlf.txt
|
|
||||||
)$
|
)$
|
||||||
exclude_types:
|
exclude_types:
|
||||||
- svg
|
- svg
|
||||||
@@ -55,54 +49,7 @@ repos:
|
|||||||
name: Check trailing whitespaces
|
name: Check trailing whitespaces
|
||||||
exclude: |
|
exclude: |
|
||||||
(?x)^(
|
(?x)^(
|
||||||
src/webui/www/private/css/lib/.* |
|
|
||||||
src/webui/www/private/scripts/lib/.*
|
src/webui/www/private/scripts/lib/.*
|
||||||
)$
|
)$
|
||||||
exclude_types:
|
exclude_types:
|
||||||
- ts
|
- ts
|
||||||
|
|
||||||
- repo: https://github.com/codespell-project/codespell
|
|
||||||
rev: v2.2.5
|
|
||||||
hooks:
|
|
||||||
- id: codespell
|
|
||||||
name: Check spelling (codespell)
|
|
||||||
args: ["--ignore-words-list", "additionals,curren,fo,ket,superseeding,te,ths"]
|
|
||||||
exclude: |
|
|
||||||
(?x)^(
|
|
||||||
.*\.desktop |
|
|
||||||
.*\.qrc |
|
|
||||||
build-aux/.* |
|
|
||||||
Changelog |
|
|
||||||
dist/windows/installer-translations/.* |
|
|
||||||
m4/.* |
|
|
||||||
src/base/3rdparty/.* |
|
|
||||||
src/searchengine/nova3/socks.py |
|
|
||||||
src/webui/www/private/scripts/lib/.*
|
|
||||||
)$
|
|
||||||
exclude_types:
|
|
||||||
- ts
|
|
||||||
|
|
||||||
- repo: https://github.com/crate-ci/typos
|
|
||||||
rev: v1.15.5
|
|
||||||
hooks:
|
|
||||||
- id: typos
|
|
||||||
name: Check spelling (typos)
|
|
||||||
args: ["--config", ".github/workflows/helper/pre-commit/.typos.toml"]
|
|
||||||
exclude: |
|
|
||||||
(?x)^(
|
|
||||||
.*\.asc |
|
|
||||||
.*\.desktop |
|
|
||||||
.*\.qrc |
|
|
||||||
\.pre-commit-config\.yaml |
|
|
||||||
build-aux/.* |
|
|
||||||
Changelog |
|
|
||||||
configure.* |
|
|
||||||
dist/windows/installer-translations/.* |
|
|
||||||
m4/.* |
|
|
||||||
src/base/3rdparty/.* |
|
|
||||||
src/searchengine/nova3/socks.py |
|
|
||||||
src/webui/www/private/scripts/lib/.*
|
|
||||||
)$
|
|
||||||
exclude_types:
|
|
||||||
- svg
|
|
||||||
- ts
|
|
||||||
|
|||||||
35
.tx/config
35
.tx/config
@@ -1,24 +1,27 @@
|
|||||||
[main]
|
[main]
|
||||||
host = https://www.transifex.com
|
host = https://www.transifex.com
|
||||||
|
|
||||||
[o:sledgehammer999:p:qbittorrent:r:qbittorrent_v46x]
|
[qbittorrent.qbittorrent_master]
|
||||||
file_filter = src/lang/qbittorrent_<lang>.ts
|
file_filter = src/lang/qbittorrent_<lang>.ts
|
||||||
source_file = src/lang/qbittorrent_en.ts
|
lang_map = pt: pt_PT
|
||||||
source_lang = en
|
source_file = src/lang/qbittorrent_en.ts
|
||||||
type = QT
|
source_lang = en
|
||||||
|
type = QT
|
||||||
minimum_perc = 23
|
minimum_perc = 23
|
||||||
lang_map = pt: pt_PT, zh: zh_CN
|
mode = developer
|
||||||
|
|
||||||
[o:sledgehammer999:p:qbittorrent:r:qbittorrent_webui_v46x]
|
[qbittorrent.qbittorrentdesktop_master]
|
||||||
file_filter = src/webui/www/translations/webui_<lang>.ts
|
source_file = dist/unix/org.qbittorrent.qBittorrent.desktop
|
||||||
source_file = src/webui/www/translations/webui_en.ts
|
source_lang = en
|
||||||
source_lang = en
|
type = DESKTOP
|
||||||
type = QT
|
|
||||||
minimum_perc = 23
|
minimum_perc = 23
|
||||||
lang_map = pt: pt_PT, zh: zh_CN
|
mode = developer
|
||||||
|
|
||||||
[o:sledgehammer999:p:qbittorrent:r:qbittorrentdesktop_master]
|
[qbittorrent.qbittorrent_webui]
|
||||||
source_file = dist/unix/org.qbittorrent.qBittorrent.desktop
|
file_filter = src/webui/www/translations/webui_<lang>.ts
|
||||||
source_lang = en
|
lang_map = pt: pt_PT
|
||||||
type = DESKTOP
|
source_file = src/webui/www/translations/webui_en.ts
|
||||||
|
source_lang = en
|
||||||
|
type = QT
|
||||||
minimum_perc = 23
|
minimum_perc = 23
|
||||||
|
mode = developer
|
||||||
|
|||||||
91
AUTHORS
91
AUTHORS
@@ -29,66 +29,73 @@ Code from other projects:
|
|||||||
copyright: Dan Haim <negativeiq@users.sourceforge.net>
|
copyright: Dan Haim <negativeiq@users.sourceforge.net>
|
||||||
license: BSD
|
license: BSD
|
||||||
|
|
||||||
* files src/webui/www/private/css/lib/vanillaSelectBox.css src/webui/www/private/scripts/lib/vanillaSelectBox.js
|
* file src/app/stacktrace.h
|
||||||
copyright: Philippe Meyer <pmg.meyer@gmail.com>
|
copyright: Timo Bingmann from http://idlebox.net/
|
||||||
license: MIT
|
license: WTFPL v2.0
|
||||||
|
|
||||||
|
* file src/app/stacktrace_win.h
|
||||||
|
copyright: Quassel Project
|
||||||
|
license: GPLv2/3
|
||||||
|
|
||||||
Images Authors:
|
Images Authors:
|
||||||
* files: src/icons/qbittorrent-tray.svg
|
* files: src/icons/skin/qbittorrent-tray.svg (and related pngs)
|
||||||
copyright: Provided by HVS <hvs linuxmail org> (raster first proposal) and Atif Afzal(@atfzl github) <atif5801@gmail.com> (vectorized and modified)
|
copyright: Provided by HVS <hvs linuxmail org> (raster first proposal) and Atif Afzal(@atfzl github) <atif5801@gmail.com> (vectorized and modified)
|
||||||
license: GPLv2+
|
license: GPLv2+
|
||||||
|
|
||||||
* files: src/qbittorrent_file.ico src/icons/fileicon.svg
|
* files: src/qbittorrent_file.ico src/icons/fileicon.svg
|
||||||
copyright: 'unknown.svg' (LGPLv3+) from Oxygen Icon Theme was used as base which was slightly modified and 'qbittorrent-tray.svg' (GPLv2+) was overlaid above it.
|
copyright: 'uknown.svg' (LGPLv3+) from Oxygen Icon Theme was used as base which was slightly modified and 'qbittorrent-tray.svg' (GPLv2+) was overlayed above it.
|
||||||
license: GPLv3+
|
license: GPLv3+
|
||||||
|
|
||||||
* files: src/icons/flags/*.svg
|
* files: src/icons/*.png
|
||||||
copyright: lipis/flag-icons
|
copyright: Gnome Icon Theme
|
||||||
license: MIT
|
license: GPLv2
|
||||||
url: https://github.com/lipis/flag-icons/
|
url: http://ftp.acc.umu.se/pub/GNOME/sources/gnome-icon-theme
|
||||||
|
|
||||||
* file: src/webui/www/private/images/tabs.gif
|
* files: src/oxygen/*.png
|
||||||
|
copyright: Oxygen Icon Theme (KDE)
|
||||||
|
license: LGPL
|
||||||
|
url: http://www.oxygen-icons.org
|
||||||
|
|
||||||
|
* files: src/icons/flags/*.svg
|
||||||
|
copyright: lipis/flag-icon-css
|
||||||
|
license: MIT
|
||||||
|
url: https://github.com/lipis/flag-icon-css/
|
||||||
|
|
||||||
|
* files: src/icons/skin/*.png
|
||||||
|
files: src/menuicons/YYxYY/*.png
|
||||||
|
copyright: Mateusz Tobola <tobejodok@qbittorrent.org>
|
||||||
|
license: GPLv2
|
||||||
|
|
||||||
|
* file: src/icons/tabs.gif
|
||||||
copyright: Greg Houston <gregory.houston@gmail.com>
|
copyright: Greg Houston <gregory.houston@gmail.com>
|
||||||
license: MIT
|
license: MIT
|
||||||
|
|
||||||
* file: src/icons/qbittorrent-tray-dark.svg src/icons/qbittorrent-tray-light.svg
|
* file: src/icons/skin/qbittorrent_mono*
|
||||||
copyright: Daniel Eguren <deguren@gmail.com>
|
copyright: Daniel Eguren <deguren@gmail.com>
|
||||||
modified by: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im)
|
|
||||||
license: LGPL
|
license: LGPL
|
||||||
|
|
||||||
* folder: src/icons/
|
* file: src/search_engine/engines/btjunkie.png
|
||||||
files: application-rss+xml.svg, application-x-mswinurl.svg, connected.svg, disconnected.svg, checked-completed.svg, configure.svg,
|
copyright: Downloaded from btjunkie.org
|
||||||
edit-copy.svg, edit-rename.svg, folder-documents.svg, folder-new.svg, folder-remote.svg, go-bottom.svg, go-down.svg, go-top.svg,
|
|
||||||
go-up.svg, hash.svg, inode-directory.svg, insert-link.svg, kt-magnet.svg, media-playback-pause.svg, media-playback-start.svg,
|
|
||||||
media-seek-forward.svg, network-connect.svg, object-locked.svg, queued.svg, ratio.svg, reannounce.svg, slow_off.svg, slow.svg,
|
|
||||||
speedometer.svg, system-log-out.svg, tags.svg, task-complete.svg, task-reject.svg, tracker-error.svg, tracker-warning.svg,
|
|
||||||
trackerless.svg, trackers.svg, view-categories.svg
|
|
||||||
copyright: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im) modified from La-Capitaine icon theme (https://github.com/keeferrourke/la-capitaine-icon-theme)
|
|
||||||
license: GPLv3+
|
|
||||||
|
|
||||||
* folder: src/icons/
|
* file: src/search_engine/engines/isohunt.png
|
||||||
files: application-exit.svg, collapse.svg, dialog-warning.svg, edit-find-user.svg, edit-find.svg, filter-all.svg, firewalled.svg,
|
copyright: Downloaded from isohunt.com
|
||||||
help-about.svg, help-contents.svg, ip-blocked.svg, list-remove.svg, loading.svg, mail-folder-inbox.svg, name.svg, network-server.svg,
|
|
||||||
office-chart-line.svg, plugins.svg, preferences-desktop.svg, preferences-other.svg, preferences-system-network.svg, security-high.svg,
|
|
||||||
security-low.svg, set-location.svg, torrent-creator.svg, user-group-delete.svg, user-group-new.svg, view-preview.svg, view-refresh.svg,
|
|
||||||
view-statistics.svg, wallet-open.svg, webuiapplication-exit.svg, collapse.svg, dialog-warning.svg, edit-find-user.svg, edit-find.svg,
|
|
||||||
filter-all.svg, firewalled.svg, help-about.svg, help-contents.svg, ip-blocked.svg, list-remove.svg, loading.svg, mail-folder-inbox.svg,
|
|
||||||
name.svg, network-server.svg, office-chart-line.svg, plugins.svg, preferences-desktop.svg, preferences-other.svg,
|
|
||||||
preferences-system-network.svg, security-high.svg, security-low.svg, set-location.svg, torrent-creator.svg, user-group-delete.svg,
|
|
||||||
user-group-new.svg, view-preview.svg, view-refresh.svg, view-statistics.svg, wallet-open.svg, webui.svg
|
|
||||||
copyright: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im) modified from Ionicons icon theme (https://github.com/ionic-team/ionicons)
|
|
||||||
license: MIT
|
|
||||||
|
|
||||||
* folder: src/icons/
|
* file: src/search_engine/engines/mininova.png
|
||||||
files: force-recheck.svg
|
copyright: Downloaded from mininova.org
|
||||||
copyright: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im) modified from Font-Awesome icon theme (https://github.com/FortAwesome/Font-Awesome)
|
|
||||||
license: CC BY 4.0 License
|
|
||||||
|
|
||||||
* folder: src/icons/
|
* file: src/search_engine/engines/piratebay.png
|
||||||
files: downloading.svg, edit-clear.svg, error.svg, filter-active.svg, filter-inactive.svg, filter-stalled.svg, kt-set-max-download-speed.svg,
|
copyright: Downloaded from thepiratebay.org
|
||||||
kt-set-max-upload-speed.svg, list-add.svg, preferences-web-browser-cookies.svg, stalledDL.svg, stalledUP.svg
|
|
||||||
copyright: Nowshed H. Imran <nowshed.imran@gmail.com> (@now-im)
|
* file: src/search_engine/engines/torrentreactor.png
|
||||||
license: BSD 2-Clause License
|
copyright: Downloaded from torrentreactor.net
|
||||||
|
|
||||||
|
* file: src/icons/oxygen/checked.png
|
||||||
|
copyright: Victor Buinsky <allok.victor@gmail.com>
|
||||||
|
|
||||||
|
* file: src/icons/skin/ratio.png
|
||||||
|
copyright: Fatcow Web Hosting
|
||||||
|
license: Creative Commons Attribution 3.0 License
|
||||||
|
url: http://www.fatcow.com/free-icons
|
||||||
|
|
||||||
Translations authors:
|
Translations authors:
|
||||||
* files: src/lang/*.ts
|
* files: src/lang/*.ts
|
||||||
|
|||||||
@@ -1,70 +1,67 @@
|
|||||||
cmake_minimum_required(VERSION 3.16 FATAL_ERROR) # Policies <= CMP0097 default to NEW
|
cmake_minimum_required(VERSION 3.16 FATAL_ERROR) # Policies <= CMP0097 default to NEW
|
||||||
|
|
||||||
|
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules)
|
||||||
|
|
||||||
project(qBittorrent
|
project(qBittorrent
|
||||||
DESCRIPTION "The qBittorrent BitTorrent client"
|
DESCRIPTION "The qBittorrent BitTorrent client"
|
||||||
HOMEPAGE_URL "https://www.qbittorrent.org/"
|
HOMEPAGE_URL "https://www.qbittorrent.org/"
|
||||||
LANGUAGES CXX
|
LANGUAGES CXX
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# use CONFIG mode first in find_package
|
||||||
|
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON)
|
||||||
# version requirements - older versions may work, but you are on your own
|
# version requirements - older versions may work, but you are on your own
|
||||||
set(minBoostVersion 1.71)
|
set(minBoostVersion 1.65)
|
||||||
set(minQt5Version 5.15.2)
|
set(minQt5Version 5.15.2)
|
||||||
set(minQt6Version 6.2)
|
set(minQt6Version 6.2)
|
||||||
set(minOpenSSLVersion 1.1.1)
|
set(minOpenSSLVersion 1.1.1)
|
||||||
set(minLibtorrent1Version 1.2.19)
|
set(minLibtorrent1Version 1.2.14)
|
||||||
set(minLibtorrentVersion 2.0.9)
|
set(minLibtorrentVersion 2.0.4)
|
||||||
set(minZlibVersion 1.2.11)
|
set(minZlibVersion 1.2.11)
|
||||||
|
|
||||||
|
# features (some are platform-specific)
|
||||||
include(CheckCXXSourceCompiles) # TODO: migrate to CheckSourceCompiles in CMake >= 3.19
|
include(CheckCXXSourceCompiles) # TODO: migrate to CheckSourceCompiles in CMake >= 3.19
|
||||||
include(GNUInstallDirs)
|
|
||||||
|
|
||||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules)
|
|
||||||
include(FeatureSummary)
|
include(FeatureSummary)
|
||||||
include(FeatureOptionsSetup)
|
include(FeatureOptionsSetup)
|
||||||
|
feature_option(QT6 "Use Qt6" OFF)
|
||||||
# features, list is loosely sorted by user's interests
|
feature_option(STACKTRACE "Enable stacktraces" ON)
|
||||||
feature_option(GUI "Build GUI application" ON)
|
feature_option(GUI "Build GUI application" ON)
|
||||||
feature_option(WEBUI "Enable built-in HTTP server for remote control" ON)
|
feature_option(WEBUI "Enables built-in HTTP server for headless use" ON)
|
||||||
feature_option(QT6 "Build with Qt 6 instead of Qt 5" OFF)
|
|
||||||
feature_option(STACKTRACE "Enable stacktrace support" ON)
|
|
||||||
feature_option(TESTING "Build internal testing suite" OFF)
|
|
||||||
feature_option(VERBOSE_CONFIGURE "Show information about PACKAGES_FOUND and PACKAGES_NOT_FOUND in the configure output (only useful for debugging the CMake build scripts)" OFF)
|
feature_option(VERBOSE_CONFIGURE "Show information about PACKAGES_FOUND and PACKAGES_NOT_FOUND in the configure output (only useful for debugging the CMake build scripts)" OFF)
|
||||||
|
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
|
||||||
feature_option_dependent(DBUS
|
feature_option_dependent(DBUS
|
||||||
"Enable support for notifications and power-management features via D-Bus"
|
"Enables support for notifications and power-management features on Linux via D-Bus"
|
||||||
ON "GUI" OFF
|
ON "GUI" OFF
|
||||||
)
|
)
|
||||||
endif()
|
|
||||||
|
|
||||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
||||||
feature_option_dependent(SYSTEMD
|
feature_option_dependent(SYSTEMD
|
||||||
"Install systemd service file. Target directory is overridable with `SYSTEMD_SERVICES_INSTALL_DIR` variable"
|
"Install systemd service file to a directory manually overridable with Systemd_SERVICES_INSTALL_DIR"
|
||||||
OFF "NOT GUI" OFF
|
OFF "NOT GUI" OFF
|
||||||
)
|
)
|
||||||
endif()
|
if (STACKTRACE)
|
||||||
|
check_cxx_source_compiles(
|
||||||
if (MSVC)
|
"#include <execinfo.h>
|
||||||
|
int main(){return 0;}"
|
||||||
|
QBITTORRENT_HAS_EXECINFO_H
|
||||||
|
)
|
||||||
|
if (NOT QBITTORRENT_HAS_EXECINFO_H)
|
||||||
|
message(FATAL_ERROR "execinfo.h header file not found.\n"
|
||||||
|
"Please either disable the STACKTRACE feature or use a libc that has this header file, such as glibc (GNU libc)."
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
elseif (MSVC)
|
||||||
feature_option(MSVC_RUNTIME_DYNAMIC "Use MSVC dynamic runtime library (-MD) instead of static (-MT)" ON)
|
feature_option(MSVC_RUNTIME_DYNAMIC "Use MSVC dynamic runtime library (-MD) instead of static (-MT)" ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
add_subdirectory(src)
|
||||||
|
add_subdirectory(dist)
|
||||||
|
|
||||||
if (VERBOSE_CONFIGURE)
|
if (VERBOSE_CONFIGURE)
|
||||||
feature_summary(WHAT ALL)
|
feature_summary(WHAT ALL)
|
||||||
else()
|
else()
|
||||||
feature_summary(WHAT ENABLED_FEATURES DISABLED_FEATURES)
|
feature_summary(WHAT ENABLED_FEATURES DISABLED_FEATURES)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# go check the packages
|
|
||||||
include(CheckPackages)
|
|
||||||
# configure for specific platform
|
|
||||||
include(CommonConfig)
|
|
||||||
|
|
||||||
# Generate version header
|
# Generate version header
|
||||||
configure_file("src/base/version.h.in" "${CMAKE_CURRENT_SOURCE_DIR}/src/base/version.h" @ONLY)
|
configure_file("src/base/version.h.in" "${CMAKE_CURRENT_SOURCE_DIR}/src/base/version.h" @ONLY)
|
||||||
|
|
||||||
add_subdirectory(src)
|
|
||||||
add_subdirectory(dist)
|
|
||||||
|
|
||||||
if (TESTING)
|
|
||||||
add_subdirectory(test)
|
|
||||||
endif()
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
# Coding Guidelines
|
# Coding Guidelines
|
||||||
|
|
||||||
All new code **must** follow the following coding guidelines.
|
All new code **must** follow the following coding guidelines. \
|
||||||
|
|
||||||
If you make changes in a file that still uses another coding style, make sure that you follow these guidelines for your changes. \
|
If you make changes in a file that still uses another coding style, make sure that you follow these guidelines for your changes. \
|
||||||
For programming languages other than C++ (e.g. JavaScript) used in this repository and submodules, unless otherwise specified, coding guidelines listed here applies as much as possible.
|
For programming languages other than C++ (e.g. JavaScript) used in this repository and submodules, unless otherwise specified, coding guidelines listed here applies as much as possible.
|
||||||
|
|
||||||
@@ -457,8 +456,8 @@ class ExampleWidget : public QWidget
|
|||||||
* Prefer pre-increment, pre-decrement operators
|
* Prefer pre-increment, pre-decrement operators
|
||||||
|
|
||||||
```c++
|
```c++
|
||||||
++i, --j; // yes
|
++i, --j; // Yes
|
||||||
i++, j--; // no
|
i++, j--; // No
|
||||||
```
|
```
|
||||||
|
|
||||||
* private/public/protected must not be indented
|
* private/public/protected must not be indented
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ Read the respective section to find out more.
|
|||||||
|
|
||||||
* **Be patient.** The development team is small and resource limited. Developers and contributors take from their free time to analyze the problem and fix the issue. :clock3:
|
* **Be patient.** The development team is small and resource limited. Developers and contributors take from their free time to analyze the problem and fix the issue. :clock3:
|
||||||
|
|
||||||
* Harsh words or threats won't help your situation. Your complaint will (very likely) be **ignored.** :fearful:
|
* Harsh words or threats won't help your situation. What's worse, your complain will (very likely) be **ignored.** :fearful:
|
||||||
|
|
||||||
# Submitting an issue/bug report
|
# Submitting an issue/bug report
|
||||||
|
|
||||||
@@ -39,7 +39,7 @@ Developers and contributors are not supposed to deal with issues for which littl
|
|||||||
|
|
||||||
Positive contributions are those which are reported with efforts to find the actual cause of an issue, or at the very least efforts were made to narrow it as much as possible.
|
Positive contributions are those which are reported with efforts to find the actual cause of an issue, or at the very least efforts were made to narrow it as much as possible.
|
||||||
|
|
||||||
Requiring people to investigate as much as possible before opening an issue avoids burdening the project with invalid issues or issues unrelated to qBittorrent.
|
Requiring people to investigate as much as possible before opening an issue will more than likely avoid burdening the project with invalid issues or issues unrelated to qBittorrent.
|
||||||
|
|
||||||
The following are _not_ bug reports. **Check the [wiki][wiki-url], [forum][forum-url] or other places for help and support for issues like these**:
|
The following are _not_ bug reports. **Check the [wiki][wiki-url], [forum][forum-url] or other places for help and support for issues like these**:
|
||||||
|
|
||||||
@@ -200,7 +200,7 @@ Following these guidelines helps maintainers and the community understand your s
|
|||||||
[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-git-commit-message-url]: https://github.com/qbittorrent/qBittorrent/blob/master/CODING_GUIDELINES.md#10-git-commit-message
|
[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]: https://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
|
[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
|
||||||
|
|||||||
339
COPYING.GPLv2
339
COPYING.GPLv2
File diff suppressed because it is too large
Load Diff
674
COPYING.GPLv3
674
COPYING.GPLv3
File diff suppressed because it is too large
Load Diff
8
INSTALL
8
INSTALL
@@ -3,9 +3,9 @@ qBittorrent - A BitTorrent client in C++ / Qt
|
|||||||
|
|
||||||
1) Install these dependencies:
|
1) Install these dependencies:
|
||||||
|
|
||||||
- Boost >= 1.71
|
- Boost >= 1.65
|
||||||
|
|
||||||
- libtorrent-rasterbar 1.2.19 - 1.2.x || 2.0.9 - 2.0.x
|
- libtorrent-rasterbar 1.2.14 - 1.2.x || 2.0.4 - 2.0.x
|
||||||
* By Arvid Norberg, https://www.libtorrent.org/
|
* By Arvid Norberg, https://www.libtorrent.org/
|
||||||
* Be careful: another library (the one used by rTorrent) uses a similar name
|
* Be careful: another library (the one used by rTorrent) uses a similar name
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@ qBittorrent - A BitTorrent client in C++ / Qt
|
|||||||
- pkg-config *
|
- pkg-config *
|
||||||
* Compile-time only on *nix systems
|
* Compile-time only on *nix systems
|
||||||
|
|
||||||
- Python >= 3.7.0
|
- Python >= 3.5.0
|
||||||
* Optional, run-time only
|
* Optional, run-time only
|
||||||
* Used by the bundled search engine
|
* Used by the bundled search engine
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@ Please ensure you are building with an officially supported configuration when r
|
|||||||
will install and execute qBittorrent.
|
will install and execute qBittorrent.
|
||||||
|
|
||||||
DOCUMENTATION:
|
DOCUMENTATION:
|
||||||
Please note that there is a "Compilation" section at https://wiki.qbittorrent.org.
|
Please note that there is a "Compilation" section at http://wiki.qbittorrent.org.
|
||||||
|
|
||||||
------------------------------------------
|
------------------------------------------
|
||||||
sledgehammer999 <sledgehammer999@qbittorrent.org>
|
sledgehammer999 <sledgehammer999@qbittorrent.org>
|
||||||
|
|||||||
4
NEWS
Normal file
4
NEWS
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
See Changelog
|
||||||
|
|
||||||
|
*******************************************
|
||||||
|
Christophe dumez - chris@qbittorrent.org
|
||||||
@@ -37,13 +37,13 @@ For more information please visit:
|
|||||||
https://www.qbittorrent.org
|
https://www.qbittorrent.org
|
||||||
|
|
||||||
or our wiki here:
|
or our wiki here:
|
||||||
https://wiki.qbittorrent.org
|
http://wiki.qbittorrent.org
|
||||||
|
|
||||||
Use the forum for troubleshooting before reporting bugs:
|
Use the forum for troubleshooting before reporting bugs:
|
||||||
https://forum.qbittorrent.org
|
http://forum.qbittorrent.org
|
||||||
|
|
||||||
Please report any bug (or feature request) to:
|
Please report any bug (or feature request) to:
|
||||||
https://bugs.qbittorrent.org
|
http://bugs.qbittorrent.org
|
||||||
|
|
||||||
Official IRC channel:
|
Official IRC channel:
|
||||||
[#qbittorrent on irc.libera.chat](ircs://irc.libera.chat:6697/qbittorrent)
|
[#qbittorrent on irc.libera.chat](ircs://irc.libera.chat:6697/qbittorrent)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user