From e5d3362369e6f0078a9a71df842aaf2a53e343f1 Mon Sep 17 00:00:00 2001 From: Benoit Pierre Date: Sun, 2 Aug 2026 00:52:14 +0200 Subject: [PATCH 1/9] ci: bump actions --- .github/workflows/toolchain.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/toolchain.yml b/.github/workflows/toolchain.yml index 2151617..2906a11 100644 --- a/.github/workflows/toolchain.yml +++ b/.github/workflows/toolchain.yml @@ -21,7 +21,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v7 with: fetch-depth: 1 @@ -37,8 +37,9 @@ jobs: run: tar -C ~ -czf ${{ matrix.tc }}.tar.gz x-tools - name: Upload artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: + archive: false name: ${{ matrix.tc }} path: ${{ matrix.tc }}.tar.gz @@ -54,15 +55,16 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v7 with: fetch-depth: 1 - name: Download artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: merge-multiple: true path: artifacts + skip-decompress: true - name: Create release env: From a90db7795fc2ee8950fb4ec38b145864ff63402e Mon Sep 17 00:00:00 2001 From: Benoit Pierre Date: Sun, 2 Aug 2026 00:52:15 +0200 Subject: [PATCH 2/9] ci: bump docker image --- .github/workflows/toolchain.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/toolchain.yml b/.github/workflows/toolchain.yml index 2906a11..3686beb 100644 --- a/.github/workflows/toolchain.yml +++ b/.github/workflows/toolchain.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest container: - image: koreader/kobase:0.4.0-22.04 + image: koreader/kobase:2.0.0-22.04 strategy: fail-fast: false From e9c23929b466bd6e87c8b07f0cce14712fd07df9 Mon Sep 17 00:00:00 2001 From: Benoit Pierre Date: Sun, 2 Aug 2026 00:52:16 +0200 Subject: [PATCH 3/9] ci: minor cleanup Make it easier to comment out some builds. --- .github/workflows/toolchain.yml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/.github/workflows/toolchain.yml b/.github/workflows/toolchain.yml index 3686beb..5a07b11 100644 --- a/.github/workflows/toolchain.yml +++ b/.github/workflows/toolchain.yml @@ -17,7 +17,21 @@ jobs: strategy: fail-fast: false matrix: - tc: [kindle, kindle5, kindlepw2, kindlehf, kobo, kobov4, kobov5, nickel, remarkable, remarkable-aarch64, cervantes, pocketbook, bookeen] + tc: [ + bookeen, + cervantes, + kindle, + kindle5, + kindlehf, + kindlepw2, + kobo, + kobov4, + kobov5, + nickel, + pocketbook, + remarkable, + remarkable-aarch64, + ] steps: - name: Checkout repository From 03efb068dbe278d433ea535a525601b3ef931a1c Mon Sep 17 00:00:00 2001 From: Benoit Pierre Date: Sun, 2 Aug 2026 00:52:17 +0200 Subject: [PATCH 4/9] ci: add caching Ccache only, has crosstools-ng does not handle stuff with invalid checksums in its source cache (`~/src`). --- .github/workflows/toolchain.yml | 49 +++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/.github/workflows/toolchain.yml b/.github/workflows/toolchain.yml index 5a07b11..67982a8 100644 --- a/.github/workflows/toolchain.yml +++ b/.github/workflows/toolchain.yml @@ -4,6 +4,10 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true +defaults: + run: + shell: bash + on: [push, pull_request] jobs: @@ -33,6 +37,9 @@ jobs: remarkable-aarch64, ] + env: + CCACHE_DIR: "${{ format('{0}/ccache', github.workspace) }}" + steps: - name: Checkout repository uses: actions/checkout@v7 @@ -41,12 +48,54 @@ jobs: - name: Install deps run: | + set -x sudo apt-get update sudo apt-get install --no-install-recommends -y bison flex gawk gperf help2man libncurses-dev libtool-bin rsync texinfo + - name: Restore build cache + id: cache-restore + uses: actions/cache/restore@v6 + with: + path: &CACHE_PATHS | + ${{ env.CCACHE_DIR }} + key: ${{ matrix.tc }}-cache-${{ github.sha }}-${{ github.run_number }} + restore-keys: | + ${{ matrix.tc }}-cache-${{ github.sha }}- + ${{ matrix.tc }}-cache- + + - name: Setup build cache + if: steps.build-restore.outputs.cache-hit != 'true' + run: | + set -x + ccache --version + ccache --zero-stats + ccache --max-size=1G + ccache --show-config + ccache_bindir='/usr/local/ccache' + sudo mkdir "${ccache_bindir}" + for f in /usr/bin/{c++,cc,g++,gcc,x86_64-*-gcc,x86_64-*-g++}; do + [[ -x "$f" ]] || exit $? + sudo ln --symbolic --no-dereference --force --relative /usr/local/bin/ccache "$ccache_bindir/${f##*/}" + done + printf '%s\n' "${ccache_bindir}" >>"${GITHUB_PATH}" + - name: Generate toolchain run: ./gen-tc.sh ${{ matrix.tc }} + - name: Clean build cache + if: always() + run: | + set -x + ccache --cleanup >/dev/null + ccache --show-stats --verbose + + - name: Save build cache + uses: actions/cache/save@v6 + if: always() && steps.cache-restore.outputs.cache-hit != 'true' + with: + path: *CACHE_PATHS + key: ${{ steps.cache-restore.outputs.cache-primary-key }} + - name: Tar artifacts run: tar -C ~ -czf ${{ matrix.tc }}.tar.gz x-tools From abbb2f9b91493ff7dc156fb4d48bdbc76bca472d Mon Sep 17 00:00:00 2001 From: Benoit Pierre Date: Sun, 2 Aug 2026 00:52:18 +0200 Subject: [PATCH 5/9] ci: switch to ZSTD for artifacts --- .github/workflows/toolchain.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/toolchain.yml b/.github/workflows/toolchain.yml index 67982a8..1567bac 100644 --- a/.github/workflows/toolchain.yml +++ b/.github/workflows/toolchain.yml @@ -97,14 +97,14 @@ jobs: key: ${{ steps.cache-restore.outputs.cache-primary-key }} - name: Tar artifacts - run: tar -C ~ -czf ${{ matrix.tc }}.tar.gz x-tools + run: tar -C ~ -caf ${{ matrix.tc }}.tar.zst x-tools - name: Upload artifacts uses: actions/upload-artifact@v7 with: archive: false name: ${{ matrix.tc }} - path: ${{ matrix.tc }}.tar.gz + path: ${{ matrix.tc }}.tar.zst release: From 733794b46dc7ff33937f156afaae591a5f9b409b Mon Sep 17 00:00:00 2001 From: Benoit Pierre Date: Sun, 2 Aug 2026 00:52:19 +0200 Subject: [PATCH 6/9] pocketbook: drop inkview stuff from toolchain Not needed anymore, as KOReader as its own repository providing different versions (https://github.com/koreader/pocketbook-inkview). --- gen-tc.sh | 39 --------------------------------------- 1 file changed, 39 deletions(-) diff --git a/gen-tc.sh b/gen-tc.sh index 9d75fe7..5ccf208 100755 --- a/gen-tc.sh +++ b/gen-tc.sh @@ -190,49 +190,10 @@ case $1 in pocketbook) # NOTE: Prevent libstdc++ from pulling in utimensat@GLIBC_2.6 export glibcxx_cv_utimensat=no - Build_CT-NG \ https://github.com/NiLuJe/crosstool-ng.git \ 62fb5946719c24dd38c1f41a35a7f8bdf35462d6 \ "arm-${1}-linux-gnueabi" - # Then, pull InkView from the (old) official SDK... - # NOTE: See also https://github.com/pocketbook/SDK_6.3.0/tree/5.19/SDK-iMX6/usr/arm-obreey-linux-gnueabi/sysroot/usr/local for newer FWs... - chmod a+w "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/lib" - wget https://github.com/blchinezu/pocketbook-sdk/raw/5.17/SDK_481/arm-obreey-linux-gnueabi/sysroot/usr/local/lib/libinkview.481.5.17.so \ - -O "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/lib/libinkview.so" - chmod a-w "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/lib/libinkview.so" - wget https://github.com/blchinezu/pocketbook-sdk/raw/5.17/SDK_481/arm-obreey-linux-gnueabi/sysroot/usr/local/lib/libhwconfig.so \ - -O "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/lib/libhwconfig.so" - chmod a-w "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/lib/libhwconfig.so" - wget https://github.com/blchinezu/pocketbook-sdk/raw/5.17/FRSCSDK/arm-none-linux-gnueabi/sysroot/usr/lib/libbookstate.so \ - -O "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/lib/libbookstate.so" - chmod a-w "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/lib/libbookstate.so" - chmod a-w "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/lib" - chmod a+w "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/include" - wget https://github.com/blchinezu/pocketbook-sdk/raw/5.17/SDK_481/arm-obreey-linux-gnueabi/sysroot/usr/local/include/inkview.h \ - -O "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/include/inkview.h" - # Don't pull 3rd-party includes... - sed -e '/^#include /i \/*' -i "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/include/inkview.h" - sed -e '/^#include FT_OUTLINE_H/a *\/' -i "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/include/inkview.h" - # NOTE: This also comments , which the header itself doesn't need anyway... - chmod a-w "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/include/inkview.h" - wget https://github.com/blchinezu/pocketbook-sdk/raw/5.17/SDK_481/arm-obreey-linux-gnueabi/sysroot/usr/local/include/inkplatform.h \ - -O "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/include/inkplatform.h" - chmod a-w "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/include/inkplatform.h" - wget https://github.com/blchinezu/pocketbook-sdk/raw/5.17/SDK_481/arm-obreey-linux-gnueabi/sysroot/usr/local/include/inklog.h \ - -O "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/include/inklog.h" - chmod a-w "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/include/inklog.h" - wget https://github.com/blchinezu/pocketbook-sdk/raw/5.17/SDK_481/arm-obreey-linux-gnueabi/sysroot/usr/local/include/inkinternal.h \ - -O "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/include/inkinternal.h" - chmod a-w "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/include/inkinternal.h" - wget https://github.com/blchinezu/pocketbook-sdk/raw/5.17/SDK_481/arm-obreey-linux-gnueabi/sysroot/usr/local/include/hwconfig.h \ - -O "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/include/hwconfig.h" - chmod a-w "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/include/hwconfig.h" - wget https://github.com/blchinezu/pocketbook-sdk/raw/5.17/FRSCSDK/arm-none-linux-gnueabi/sysroot/usr/include/bookstate.h \ - -O "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/include/bookstate.h" - chmod a-w "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/include/bookstate.h" - chmod a-w "${HOME}/x-tools/arm-${1}-linux-gnueabi/arm-${1}-linux-gnueabi/sysroot/usr/include" - unset glibcxx_cv_utimensat ;; bookeen) From 23fced076678c917b9ce904b9c6dee37f5f0e8c1 Mon Sep 17 00:00:00 2001 From: Benoit Pierre Date: Sun, 2 Aug 2026 00:52:20 +0200 Subject: [PATCH 7/9] bump all toolchains to the latest revision - all toolchains: bump GCC to 14.4.0, fix GCC & GMP builds with newer host compilers, updated config.{guess,sub} scripts - `remarkable-aarch64` only: strip unnecessary debug information --- gen-tc.sh | 55 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/gen-tc.sh b/gen-tc.sh index 5ccf208..6d95bd7 100755 --- a/gen-tc.sh +++ b/gen-tc.sh @@ -17,7 +17,8 @@ CUR_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" BUILD_ROOT="${CUR_DIR}/build" -DEFAULT_GIT_REPO="https://github.com/crosstool-ng/crosstool-ng.git" +DEFAULT_GIT_REPO='https://github.com/benoit-pierre/crosstool-ng.git' +DEFAULT_GIT_REV='34844bc8e985ad1ba26b072a5b58264967072e19' Build_CT-NG() { echo "[*] Building CrossTool-NG . . ." @@ -119,44 +120,44 @@ case $1 in ;; kobov5) Build_CT-NG \ - https://github.com/NiLuJe/crosstool-ng.git \ - 62fb5946719c24dd38c1f41a35a7f8bdf35462d6 \ + "$DEFAULT_GIT_REPO" \ + "$DEFAULT_GIT_REV" \ "arm-${1}-linux-gnueabihf" ;; kobov4) Build_CT-NG \ - https://github.com/NiLuJe/crosstool-ng.git \ - 62fb5946719c24dd38c1f41a35a7f8bdf35462d6 \ + "$DEFAULT_GIT_REPO" \ + "$DEFAULT_GIT_REV" \ "arm-${1}-linux-gnueabihf" ;; kobo) Build_CT-NG \ - https://github.com/NiLuJe/crosstool-ng.git \ - 62fb5946719c24dd38c1f41a35a7f8bdf35462d6 \ + "$DEFAULT_GIT_REPO" \ + "$DEFAULT_GIT_REV" \ "arm-${1}-linux-gnueabihf" ;; nickel) Build_CT-NG \ - https://github.com/NiLuJe/crosstool-ng.git \ - 62fb5946719c24dd38c1f41a35a7f8bdf35462d6 \ + "$DEFAULT_GIT_REPO" \ + "$DEFAULT_GIT_REV" \ "arm-${1}-linux-gnueabihf" ;; kindlehf) Build_CT-NG \ - https://github.com/NiLuJe/crosstool-ng.git \ - 62fb5946719c24dd38c1f41a35a7f8bdf35462d6 \ + "$DEFAULT_GIT_REPO" \ + "$DEFAULT_GIT_REV" \ "arm-${1}-linux-gnueabihf" ;; kindlepw2) Build_CT-NG \ - https://github.com/NiLuJe/crosstool-ng.git \ - 62fb5946719c24dd38c1f41a35a7f8bdf35462d6 \ + "$DEFAULT_GIT_REPO" \ + "$DEFAULT_GIT_REV" \ "arm-${1}-linux-gnueabi" ;; kindle5) Build_CT-NG \ - https://github.com/NiLuJe/crosstool-ng.git \ - 62fb5946719c24dd38c1f41a35a7f8bdf35462d6 \ + "$DEFAULT_GIT_REPO" \ + "$DEFAULT_GIT_REV" \ "arm-${1}-linux-gnueabi" ;; kindle) @@ -164,42 +165,42 @@ case $1 in export glibcxx_cv_utimensat=no Build_CT-NG \ - https://github.com/NiLuJe/crosstool-ng.git \ - 62fb5946719c24dd38c1f41a35a7f8bdf35462d6 \ + "$DEFAULT_GIT_REPO" \ + "$DEFAULT_GIT_REV" \ "arm-${1}-linux-gnueabi" unset glibcxx_cv_utimensat ;; remarkable) Build_CT-NG \ - https://github.com/NiLuJe/crosstool-ng.git \ - 62fb5946719c24dd38c1f41a35a7f8bdf35462d6 \ + "$DEFAULT_GIT_REPO" \ + "$DEFAULT_GIT_REV" \ "arm-${1}-linux-gnueabihf" ;; remarkable-aarch64) Build_CT-NG \ - https://github.com/NiLuJe/crosstool-ng.git \ - 9d4156d109d22e9b0e8958e56bbbd947cd7ce065 \ + "$DEFAULT_GIT_REPO" \ + "$DEFAULT_GIT_REV" \ "aarch64-remarkable-linux-gnu" ;; cervantes) Build_CT-NG \ - https://github.com/NiLuJe/crosstool-ng.git \ - 62fb5946719c24dd38c1f41a35a7f8bdf35462d6 \ + "$DEFAULT_GIT_REPO" \ + "$DEFAULT_GIT_REV" \ "arm-${1}-linux-gnueabi" ;; pocketbook) # NOTE: Prevent libstdc++ from pulling in utimensat@GLIBC_2.6 export glibcxx_cv_utimensat=no Build_CT-NG \ - https://github.com/NiLuJe/crosstool-ng.git \ - 62fb5946719c24dd38c1f41a35a7f8bdf35462d6 \ + "$DEFAULT_GIT_REPO" \ + "$DEFAULT_GIT_REV" \ "arm-${1}-linux-gnueabi" unset glibcxx_cv_utimensat ;; bookeen) Build_CT-NG \ - https://github.com/NiLuJe/crosstool-ng.git \ - 62fb5946719c24dd38c1f41a35a7f8bdf35462d6 \ + "$DEFAULT_GIT_REPO" \ + "$DEFAULT_GIT_REV" \ "arm-${1}-linux-gnueabi" ;; *) From 686553ffd69bffaa69583d50f0b33a63f12cc912 Mon Sep 17 00:00:00 2001 From: Benoit Pierre Date: Sun, 2 Aug 2026 00:52:21 +0200 Subject: [PATCH 8/9] add `pocketbookhf` target --- gen-tc.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gen-tc.sh b/gen-tc.sh index 6d95bd7..3a43ecd 100755 --- a/gen-tc.sh +++ b/gen-tc.sh @@ -104,6 +104,7 @@ Supported platforms: remarkable-aarch64 cervantes pocketbook + pocketbookhf bookeen " @@ -197,6 +198,12 @@ case $1 in "arm-${1}-linux-gnueabi" unset glibcxx_cv_utimensat ;; + pocketbookhf) + Build_CT-NG \ + "$DEFAULT_GIT_REPO" \ + "$DEFAULT_GIT_REV" \ + "arm-${1}-linux-gnueabihf" + ;; bookeen) Build_CT-NG \ "$DEFAULT_GIT_REPO" \ From 3e6d1483c55b0adde55102f34ed224960187c924 Mon Sep 17 00:00:00 2001 From: Benoit Pierre Date: Sun, 2 Aug 2026 00:52:22 +0200 Subject: [PATCH 9/9] ci: add `pocketbookhf` build --- .github/workflows/toolchain.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/toolchain.yml b/.github/workflows/toolchain.yml index 1567bac..7c2075a 100644 --- a/.github/workflows/toolchain.yml +++ b/.github/workflows/toolchain.yml @@ -33,6 +33,7 @@ jobs: kobov5, nickel, pocketbook, + pocketbookhf, remarkable, remarkable-aarch64, ]