diff --git a/.github/workflows/matrix_multi_build_and_release.yml b/.github/workflows/matrix_multi_build_and_release.yml index 50df46ef..250681f6 100644 --- a/.github/workflows/matrix_multi_build_and_release.yml +++ b/.github/workflows/matrix_multi_build_and_release.yml @@ -182,31 +182,37 @@ jobs: pandoc_git_tag="$(git ls-remote -q -t --refs https://github.com/jgm/pandoc.git | awk '/tags\/[0-9]/{sub("refs/tags/", ""); print $2 }' | awk '!/^$/' | sort -rV | head -n 1)" curl -sLo- "https://github.com/jgm/pandoc/releases/latest/download/pandoc-${pandoc_git_tag}-linux-amd64.tar.gz" | tar xzf - --strip-components 2 -C "$(pwd)" --exclude="share" - - name: Host - Download qbittorrent-nox artifacts ${{ github.event.inputs.distinct_id }} + - name: Host - Download 1.2 qbittorrent-nox artifacts ${{ github.event.inputs.distinct_id }} uses: actions/download-artifact@v4 + with: + path: "1.2" + pattern: libtorrent-v1.2-*-qbittorrent-nox + merge-multiple: true + + - name: Host - Download 2.0 qbittorrent-nox artifacts ${{ github.event.inputs.distinct_id }} + uses: actions/download-artifact@v4 + with: + path: "2.0" + pattern: libtorrent-v2.0-*-qbittorrent-nox + merge-multiple: true - - name: Host - 1.2 artifacts organise for release ${{ github.event.inputs.distinct_id }} + - name: Host - merge release-info ${{ github.event.inputs.distinct_id }} run: | - mkdir -p "1.2" - for files in libtorrent-v1.2-*-qbittorrent-nox; do - cp -rf ${files}/* "1.2/" + for release in 1\.2/*-release.md 2\.0/*-release.md; do + [[ -f "${release}" ]] && release+=("${release}") done - - name: Host - 2.0 artifacts organise for release ${{ github.event.inputs.distinct_id }} - run: | - mkdir -p "2.0" - for files in libtorrent-v2.0-*-qbittorrent-nox; do - cp -rf ${files}/* "2.0/" + for dependency_version in 1\.2/*-dependency-version.json 2\.0/*-dependency-version.json; do + [[ -f "${dependency_version}" ]] && dependency_version+=("${dependency_version}") done - - name: Host - merge release-info ${{ github.event.inputs.distinct_id }} - run: | - paste -d '\n' 1.2/qt5-*-release.md | uniq > 1.2/tmp-release.md - paste -d '\n' 2.0/qt6-*-release.md | uniq > 2.0/tmp-release.md - paste -d '\n' 1.2/tmp-release.md 2.0/tmp-release.md | uniq > tmp-release.md - ./pandoc --wrap=preserve -f gfm tmp-release.md -t gfm -o release.md + readarray -t release_sorted < <(printf '%s\n' "${release[@]}" | sort) + readarray -t dependency_version_sorted < <(printf '%s\n' "${dependency_version[@]}" | sort) - paste -d '\n' 1.2/qt5-dependency-version.json 2.0/qt6-dependency-version.json | uniq > dependency-version.json + paste -d '\n' "${release_sorted[@]}" | uniq | awk '!(NF && seen[$0]++)' > "tmp-release.md" + paste -d '\n' "${dependency_version_sorted[@]}" | uniq | awk '!(NF && seen[$0]++)' > "dependency-version.json" + + ./pandoc --wrap=preserve -f gfm tmp-release.md -t gfm -o release.md - name: Host - Bootstrap release tag ${{ github.event.inputs.distinct_id }} run: printf '%s\n' "release_tag=$(cat ${{ matrix.qbt_libtorrent_version }}/tag.md)" >> $GITHUB_ENV diff --git a/.github/workflows/matrix_multi_build_and_release_artifacts.yml b/.github/workflows/matrix_multi_build_and_release_artifacts.yml index 0e39f0cb..2249ccac 100644 --- a/.github/workflows/matrix_multi_build_and_release_artifacts.yml +++ b/.github/workflows/matrix_multi_build_and_release_artifacts.yml @@ -246,31 +246,37 @@ jobs: pandoc_git_tag="$(git ls-remote -q -t --refs https://github.com/jgm/pandoc.git | awk '/tags\/[0-9]/{sub("refs/tags/", ""); print $2 }' | awk '!/^$/' | sort -rV | head -n 1)" curl -sLo- "https://github.com/jgm/pandoc/releases/latest/download/pandoc-${pandoc_git_tag}-linux-amd64.tar.gz" | tar xzf - --strip-components 2 -C "$(pwd)" --exclude="share" - - name: Host - Download qbittorrent-nox artifacts ${{ github.event.inputs.distinct_id }} + - name: Host - Download 1.2 qbittorrent-nox artifacts ${{ github.event.inputs.distinct_id }} uses: actions/download-artifact@v4 + with: + path: "1.2" + pattern: libtorrent-v1.2-*-qbittorrent-nox + merge-multiple: true + + - name: Host - Download 2.0 qbittorrent-nox artifacts ${{ github.event.inputs.distinct_id }} + uses: actions/download-artifact@v4 + with: + path: "2.0" + pattern: libtorrent-v2.0-*-qbittorrent-nox + merge-multiple: true - - name: Host - 1.2 artifacts organise for release ${{ github.event.inputs.distinct_id }} + - name: Host - merge release-info ${{ github.event.inputs.distinct_id }} run: | - mkdir -p "1.2" - for files in libtorrent-v1.2-*-qbittorrent-nox; do - cp -rf ${files}/* "1.2/" + for release in 1\.2/*-release.md 2\.0/*-release.md; do + [[ -f "${release}" ]] && release+=("${release}") done - - name: Host - 2.0 artifacts organise for release ${{ github.event.inputs.distinct_id }} - run: | - mkdir -p "2.0" - for files in libtorrent-v2.0-*-qbittorrent-nox; do - cp -rf ${files}/* "2.0/" + for dependency_version in 1\.2/*-dependency-version.json 2\.0/*-dependency-version.json; do + [[ -f "${dependency_version}" ]] && dependency_version+=("${dependency_version}") done - - name: Host - merge release-info ${{ github.event.inputs.distinct_id }} - run: | - paste -d '\n' 1.2/qt5-*-release.md | uniq > 1.2/tmp-release.md - paste -d '\n' 2.0/qt6-*-release.md | uniq > 2.0/tmp-release.md - paste -d '\n' 1.2/tmp-release.md 2.0/tmp-release.md | uniq > tmp-release.md - ./pandoc --wrap=preserve -f gfm tmp-release.md -t gfm -o release.md + readarray -t release_sorted < <(printf '%s\n' "${release[@]}" | sort) + readarray -t dependency_version_sorted < <(printf '%s\n' "${dependency_version[@]}" | sort) - paste -d '\n' 1.2/qt5-dependency-version.json 2.0/qt6-dependency-version.json | uniq > dependency-version.json + paste -d '\n' "${release_sorted[@]}" | uniq | awk '!(NF && seen[$0]++)' > "tmp-release.md" + paste -d '\n' "${dependency_version_sorted[@]}" | uniq | awk '!(NF && seen[$0]++)' > "dependency-version.json" + + ./pandoc --wrap=preserve -f gfm tmp-release.md -t gfm -o release.md - name: Host - Bootstrap release tag ${{ github.event.inputs.distinct_id }} run: printf '%s\n' "release_tag=$(cat ${{ matrix.qbt_libtorrent_version }}/tag.md)" >> $GITHUB_ENV diff --git a/.github/workflows/matrix_multi_build_and_release_customs_tags.yml b/.github/workflows/matrix_multi_build_and_release_customs_tags.yml index 6c117715..b6532429 100644 --- a/.github/workflows/matrix_multi_build_and_release_customs_tags.yml +++ b/.github/workflows/matrix_multi_build_and_release_customs_tags.yml @@ -192,31 +192,37 @@ jobs: pandoc_git_tag="$(git ls-remote -q -t --refs https://github.com/jgm/pandoc.git | awk '/tags\/[0-9]/{sub("refs/tags/", ""); print $2 }' | awk '!/^$/' | sort -rV | head -n 1)" curl -sLo- "https://github.com/jgm/pandoc/releases/latest/download/pandoc-${pandoc_git_tag}-linux-amd64.tar.gz" | tar xzf - --strip-components 2 -C "$(pwd)" --exclude="share" - - name: Host - Download qbittorrent-nox artifacts ${{ github.event.inputs.distinct_id }} + - name: Host - Download 1.2 qbittorrent-nox artifacts ${{ github.event.inputs.distinct_id }} uses: actions/download-artifact@v4 + with: + path: "1.2" + pattern: libtorrent-v1.2-*-qbittorrent-nox + merge-multiple: true + + - name: Host - Download 2.0 qbittorrent-nox artifacts ${{ github.event.inputs.distinct_id }} + uses: actions/download-artifact@v4 + with: + path: "2.0" + pattern: libtorrent-v2.0-*-qbittorrent-nox + merge-multiple: true - - name: Host - 1.2 artifacts organise for release ${{ github.event.inputs.distinct_id }} + - name: Host - merge release-info ${{ github.event.inputs.distinct_id }} run: | - mkdir -p "1.2" - for files in libtorrent-v1.2-*-qbittorrent-nox; do - cp -rf ${files}/* "1.2/" + for release in 1\.2/*-release.md 2\.0/*-release.md; do + [[ -f "${release}" ]] && release+=("${release}") done - - name: Host - 2.0 artifacts organise for release ${{ github.event.inputs.distinct_id }} - run: | - mkdir -p "2.0" - for files in libtorrent-v2.0-*-qbittorrent-nox; do - cp -rf ${files}/* "2.0/" + for dependency_version in 1\.2/*-dependency-version.json 2\.0/*-dependency-version.json; do + [[ -f "${dependency_version}" ]] && dependency_version+=("${dependency_version}") done - - name: Host - merge release-info ${{ github.event.inputs.distinct_id }} - run: | - paste -d '\n' 1.2/qt5-*-release.md | uniq > 1.2/tmp-release.md - paste -d '\n' 2.0/qt6-*-release.md | uniq > 2.0/tmp-release.md - paste -d '\n' 1.2/tmp-release.md 2.0/tmp-release.md | uniq > tmp-release.md - ./pandoc --wrap=preserve -f gfm tmp-release.md -t gfm -o release.md + readarray -t release_sorted < <(printf '%s\n' "${release[@]}" | sort) + readarray -t dependency_version_sorted < <(printf '%s\n' "${dependency_version[@]}" | sort) - paste -d '\n' 1.2/qt5-dependency-version.json 2.0/qt6-dependency-version.json | uniq > dependency-version.json + paste -d '\n' "${release_sorted[@]}" | uniq | awk '!(NF && seen[$0]++)' > "tmp-release.md" + paste -d '\n' "${dependency_version_sorted[@]}" | uniq | awk '!(NF && seen[$0]++)' > "dependency-version.json" + + ./pandoc --wrap=preserve -f gfm tmp-release.md -t gfm -o release.md - name: Host - Bootstrap release tag ${{ github.event.inputs.distinct_id }} run: printf '%s\n' "release_tag=$(cat ${{ matrix.qbt_libtorrent_version }}/tag.md)" >> $GITHUB_ENV diff --git a/.github/workflows/matrix_multi_build_and_release_qbt_workflow_files_debug.yml b/.github/workflows/matrix_multi_build_and_release_qbt_workflow_files_debug.yml index 0384c5dc..cd60bcea 100644 --- a/.github/workflows/matrix_multi_build_and_release_qbt_workflow_files_debug.yml +++ b/.github/workflows/matrix_multi_build_and_release_qbt_workflow_files_debug.yml @@ -178,31 +178,37 @@ jobs: pandoc_git_tag="$(git ls-remote -q -t --refs https://github.com/jgm/pandoc.git | awk '/tags\/[0-9]/{sub("refs/tags/", ""); print $2 }' | awk '!/^$/' | sort -rV | head -n 1)" curl -sLo- "https://github.com/jgm/pandoc/releases/latest/download/pandoc-${pandoc_git_tag}-linux-amd64.tar.gz" | tar xzf - --strip-components 2 -C "$(pwd)" --exclude="share" - - name: Host - Download qbittorrent-nox artifacts ${{ github.event.inputs.distinct_id }} + - name: Host - Download 1.2 qbittorrent-nox artifacts ${{ github.event.inputs.distinct_id }} uses: actions/download-artifact@v4 + with: + path: "1.2" + pattern: libtorrent-v1.2-*-qbittorrent-nox + merge-multiple: true + + - name: Host - Download 2.0 qbittorrent-nox artifacts ${{ github.event.inputs.distinct_id }} + uses: actions/download-artifact@v4 + with: + path: "2.0" + pattern: libtorrent-v2.0-*-qbittorrent-nox + merge-multiple: true - - name: Host - 1.2 artifacts organise for release ${{ github.event.inputs.distinct_id }} + - name: Host - merge release-info ${{ github.event.inputs.distinct_id }} run: | - mkdir -p "1.2" - for files in libtorrent-v1.2-*-qbittorrent-nox; do - cp -rf ${files}/* "1.2/" + for release in 1\.2/*-release.md 2\.0/*-release.md; do + [[ -f "${release}" ]] && release+=("${release}") done - - name: Host - 2.0 artifacts organise for release ${{ github.event.inputs.distinct_id }} - run: | - mkdir -p "2.0" - for files in libtorrent-v2.0-*-qbittorrent-nox; do - cp -rf ${files}/* "2.0/" + for dependency_version in 1\.2/*-dependency-version.json 2\.0/*-dependency-version.json; do + [[ -f "${dependency_version}" ]] && dependency_version+=("${dependency_version}") done - - name: Host - merge release-info ${{ github.event.inputs.distinct_id }} - run: | - paste -d '\n' 1.2/qt5-*-release.md | uniq > 1.2/tmp-release.md - paste -d '\n' 2.0/qt6-*-release.md | uniq > 2.0/tmp-release.md - paste -d '\n' 1.2/tmp-release.md 2.0/tmp-release.md | uniq > tmp-release.md - ./pandoc --wrap=preserve -f gfm tmp-release.md -t gfm -o release.md + readarray -t release_sorted < <(printf '%s\n' "${release[@]}" | sort) + readarray -t dependency_version_sorted < <(printf '%s\n' "${dependency_version[@]}" | sort) - paste -d '\n' 1.2/qt5-dependency-version.json 2.0/qt6-dependency-version.json | uniq > dependency-version.json + paste -d '\n' "${release_sorted[@]}" | uniq | awk '!(NF && seen[$0]++)' > "tmp-release.md" + paste -d '\n' "${dependency_version_sorted[@]}" | uniq | awk '!(NF && seen[$0]++)' > "dependency-version.json" + + ./pandoc --wrap=preserve -f gfm tmp-release.md -t gfm -o release.md - name: Host - Bootstrap release tag ${{ github.event.inputs.distinct_id }} run: printf '%s\n' "release_tag=$(cat ${{ matrix.qbt_libtorrent_version }}/tag.md)" >> $GITHUB_ENV diff --git a/README.md b/README.md index 33c11b62..1f82d901 100644 --- a/README.md +++ b/README.md @@ -29,19 +29,22 @@ This build script uses and depends on some related repositories ## Summary -The `qbittorrent-nox-static` project is a `bash` build script that compiles a static `qbittorrent-nox` binary using the latest available dependencies from their source. These statically linked binaries can run on any matching CPU architecture and are not OS specific. This means you can run a `x86_64` Alpine edge build on any Linux based OS of like CentOS | Fedora | OpenSuse | Debian Stretch | Ubuntu Xenial and more. +The `qbittorrent-nox-static` project is a `bash` build script that compiles a static `qbittorrent-nox` binary using the latest available dependencies from their source. These statically linked binaries can run on any matching CPU architecture and are not OS specific. This means you can run a `x86_64` Alpine edge build on any Linux based OS of like CentOS | Fedora | OpenSuse | Debian | Ubuntu and more. ## Documentation -🔵 [Visit the documentation](https://userdocs.github.io/qbittorrent-nox-static/#/README) for in depth information on using this project and script usage. +> [!TIP] +> Visit the [documentation](https://userdocs.github.io/qbittorrent-nox-static/#/README) for in depth information on using this project and script usage. ## WSL2 -🟢 These static builds can be used on WSL2 and accessed via `localhost:8080` using the download instructions below +> [!TIP] +> These static builds can be used on WSL2 and accessed via `localhost:8080` using the download instructions below ## Install the latest release -🔵 [The latest release page](https://github.com/userdocs/qbittorrent-nox-static/releases/latest) for the most current build +> [!TIP] +> For the most current build visit the [latest release page](https://github.com/userdocs/qbittorrent-nox-static/releases/latest) Or uses these commands for your arch: @@ -87,13 +90,13 @@ chmod 700 ~/bin/qbittorrent-nox ## Libtorrent versions -🟠 Libtorrent `v1.2` is currently the main branch supported by qBittorrent since a change with the release of [4.4.5](https://www.qbittorrent.org/news.php) +> [!IMPORTANT] +> Libtorrent `v1.2` is currently the main branch supported by qBittorrent since a change with the release of [4.4.5](https://www.qbittorrent.org/news.php) Libtorrent `v2.0` builds are still released as latest releases as it it does not really matter to this project as it always builds and releases for both `v1.2` and `v2.0`. See the next section for how to get the version you need via the latest release URL. -You can view the current latest and pre releases and tags here. - -🔵 +> [!TIP] +> You can view the current latest and pre releases and tags here ## Getting the Version you want via the latest release URL @@ -147,33 +150,18 @@ Will output a result like this: ```json { - "qbittorrent": "4.4.5", - "qt5": "5.15.7", - "qt6": "6.4.0", - "libtorrent_1_2": "1.2.18", - "libtorrent_2_0": "2.0.8", - "boost": "1.80.0", - "openssl": "3.0.7", - "revision": "1" + "openssl": "3.2.0", + "boost": "1.84.0", + "libtorrent_1_2": "1.2.19", + "libtorrent_2_0": "2.0.9", + "qt5": "5.15.12", + "qt6": "6.6.1", + "qbittorrent": "4.6.2", + "revision": "3" } ``` As demonstrated above by using the latest release URL we can construct the tag of the twinned pre release and therefore the asset URL with no margin for error. -## Build table - Dependencies - arch - OS - build tools - -| Deps | x86 | x86_64 | aarch64 | armv7 | armhf (v6) | Debian based | Alpine | make | cmake | b2 | qmake | -| :---------------: | :---: | :----: | :-----: | :---: | :--------: | :----------: | :----: | :---: | :---: | :---: | :---: | -| glibc | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | -| zlib | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | -| iconv | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | -| icu | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | -| openssl | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | -| boost | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | -| libtorrent | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | -| qt5base | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | -| qt5tools | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | -| double conversion | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | -| qt6base | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | -| qt6tools | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | -| qbittorrent | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | +> [!IMPORTANT] +> From the release of qBittorrent v5 configure based builds will be unsupported and we will only be able to use cmake to build qBittorrent v5 onwards. All releases from that point on will drop Qt5 builds as at this point cmake,Qt6 and v5 should be the default and preferred build combination with Qt5 being a legacy dependency. diff --git a/qbittorrent-nox-static.sh b/qbittorrent-nox-static.sh index 61b0aaad..0f08469e 100644 --- a/qbittorrent-nox-static.sh +++ b/qbittorrent-nox-static.sh @@ -1626,17 +1626,7 @@ _release_info() { 🟡 Binary builds are stripped - See https://userdocs.github.io/qbittorrent-nox-static/#/debugging - 🟠 [To see the build combinations that the script automates please check the build table. for more info](https://github.com/userdocs/qbittorrent-nox-static#build-table---dependencies---arch---os---build-tools) - - + 🟠 Qbittorrent v5 won't support qmake (Qt5) builds so Qt6 (cmake) will become default and Qt5 builds will no longer be released. RELEASE_INFO return