Skip to content

fix(build): replace retired Linaro armhf toolchain with Debian's#3070

Merged
vpetersson merged 2 commits into
masterfrom
fix-armhf-toolchain-linaro-eol
Jun 11, 2026
Merged

fix(build): replace retired Linaro armhf toolchain with Debian's#3070
vpetersson merged 2 commits into
masterfrom
fix-armhf-toolchain-linaro-eol

Conversation

@vpetersson

Copy link
Copy Markdown
Contributor

Issues Fixed

The pi2/pi3 (armhf) image build has been failing on every push to master since 2026-06-10. The qt5-webview-builder stage downloads the Linaro gcc-7.4.1 cross-compiler from releases.linaro.org, which Linaro has retired — the download now fails to connect (curl: (7) Failed to connect ... releases.linaro.org).

Because publish-latest only advances the floating latest-<board> tags once the entire build matrix is green, two dead 32-bit builds froze latest-* for every board. Users tracking latest (e.g. via run_upgrade.sh) stopped receiving any merged fixes — including the WAL playlist-reload fix (#3062), which is why that bug appeared to persist on latest even after it was merged.

Description

  • Drop the dead Linaro tarball download; install Debian's supported crossbuild-essential-armhf (gcc 14, same arm-linux-gnueabihf- prefix).
  • Symlink it under the legacy gcc-linaro-7.4.1-… path that the frozen Qt 5 qmake.conf bakes into CROSS_COMPILE, so the pinned WebView-v2026.04.1 artifact needs no rebuild. The app still links against the Raspbian /sysroot (-sysroot), so the target glibc is unchanged.
  • Apply the same swap to the offline toolchain-rebuild path (build_qt5.sh + its Dockerfile) so the retired URL is gone everywhere.

Validated locally by building the pi2 viewer image end-to-end: qmake/make compile the webview sources and link AnthiasViewer against the pinned Qt 5 .so libs using the Debian cross-gcc, producing a valid ELF 32-bit ARM EABI5 hardfloat executable (ld-linux-armhf.so.3).

Checklist

  • I have performed a self-review of my own code.
  • New and existing unit tests pass locally and on CI with my changes.
  • I have done an end-to-end test for Raspberry Pi devices.
  • I have tested my changes for x86 devices.
  • I added a documentation for the changes I have made (when necessary).

Build-only change (armhf cross-toolchain). No Python/JS code paths affected. Validated by building the pi2 viewer image; not yet run on a physical pi2/pi3 device.

releases.linaro.org has been retired, so the pi2/pi3 webview-builder's
download of gcc-linaro-7.4.1 fails to connect (curl exit 7). Every
master Docker build has gone red since, and because publish-latest only
advances the floating latest-<board> tags on a fully green matrix, the
latest-* images froze — users tracking latest stopped getting any
merged fixes.

- Install Debian's supported crossbuild-essential-armhf (gcc 14, same
  arm-linux-gnueabihf- prefix) instead of fetching the dead tarball
- Symlink it under the legacy gcc-linaro path the frozen Qt 5
  qmake.conf bakes into CROSS_COMPILE, so the pinned WebView-v2026.04.1
  artifact needs no rebuild; the app still links against the Raspbian
  /sysroot, so the target glibc is unchanged
- Apply the same swap to the offline toolchain-rebuild path
  (build_qt5.sh + its Dockerfile) so the dead URL is gone everywhere

Validated by building the pi2 viewer image: qmake/make link the
AnthiasViewer binary against the pinned Qt 5 libs with the Debian
cross-gcc, producing a valid ARM EABI5 hardfloat executable.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vpetersson vpetersson requested a review from a team as a code owner June 11, 2026 15:44
@vpetersson vpetersson self-assigned this Jun 11, 2026
@vpetersson vpetersson requested a review from Copilot June 11, 2026 15:44

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR unblocks the failing pi2/pi3 (armhf) webview build by removing the retired Linaro gcc-7.4.1 download and switching to Debian’s supported crossbuild-essential-armhf, while preserving the legacy gcc-linaro-7.4.1-… path expected by the pinned Qt 5 toolchain.

Changes:

  • Install Debian’s crossbuild-essential-armhf in the relevant builder images.
  • Replace the Linaro tarball fetch with a symlink shim that exposes /usr/bin/arm-linux-gnueabihf-* under the legacy Linaro directory.
  • Apply the same approach to the offline Qt 5 toolchain rebuild path (build_qt5.sh + its builder Dockerfile).

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
src/anthias_webview/Dockerfile Adds crossbuild-essential-armhf to the Qt 5 toolchain builder image dependencies.
src/anthias_webview/build_qt5.sh Replaces Linaro download/extract with a legacy-path symlink shim to Debian’s cross toolchain.
docker/Dockerfile.qt5-webview-builder.j2 Installs Debian’s cross toolchain and swaps the Linaro download step for legacy-path symlinks in the viewer’s Qt 5 webview builder stage.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/anthias_webview/build_qt5.sh Outdated
Comment thread docker/Dockerfile.qt5-webview-builder.j2
Addresses Copilot review on #3070:

- build_qt5.sh: fail fast with a clear message if the armhf cross
  toolchain is absent (else the glob expands to a literal and errors
  confusingly), and use `ln -sf` so reruns are idempotent.
- Dockerfile.qt5-webview-builder.j2: the amd64-pin comment referenced
  the removed Linaro download; the real reason is the pinned Qt 5
  bundle's x86_64 host qmake (and the x86_64-hosted Debian cross-gcc).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@vpetersson vpetersson merged commit 9107539 into master Jun 11, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants