Skip to content

ci: add armv6 (Raspberry Pi B/Zero) build support#1400

Open
b0bbywan wants to merge 4 commits intoSpotifyd:masterfrom
b0bbywan:ci/armv6
Open

ci: add armv6 (Raspberry Pi B/Zero) build support#1400
b0bbywan wants to merge 4 commits intoSpotifyd:masterfrom
b0bbywan:ci/armv6

Conversation

@b0bbywan
Copy link

Spotifyd dropped support for armhf after v0.3.5. This intends to bring it back

Cross-compilation via cross doesn't work for armv6 due to C dependencies (alsa, dbus, pulseaudio) and bindgen (aws-lc-rs). Instead, build natively under QEMU using a RaspiOS container, forcing the correct rustup host triple (arm-unknown-linux-gnueabihf) since QEMU reports armv7 by default.

  • Add .github/Dockerfile.armv6 for QEMU-native builds
  • Add armv6 to the CD matrix (linux only, slim/default/full)
  • Use docker buildx with GHA layer cache in the CD workflow
  • Add dist/ to .gitignore for local build

I've successfully tested the slim and full builds on Raspberry B and B+. The first build time is quite long (more than one hour) due to QEMU virtualization. It uses a rust cache to speedup a bit. We could also push the build image on ghcr to gain a little time.

Let me know if that's ok with you or if I need to make some change.

Thanks for spotifyd !

Cross-compilation via `cross` doesn't work for armv6 due to C
dependencies (alsa, dbus, pulseaudio) and bindgen (aws-lc-rs).
Instead, build natively under QEMU using a RaspiOS container,
forcing the correct rustup host triple (arm-unknown-linux-gnueabihf)
since QEMU reports armv7 by default.

- Add .github/Dockerfile.armv6 for QEMU-native builds
- Add armv6 to the CD matrix (linux only, slim/default/full)
- Use docker buildx with GHA layer cache in the CD workflow
@b0bbywan
Copy link
Author

#1389 this issue could be fixed in that PR, let me know !

b0bbywan and others added 3 commits March 21, 2026 20:31
…ildx

aarch64 no longer uses ubuntu-22.04-arm; armv7 no longer uses `cross`.
Both now build via docker buildx + QEMU like armv6, using docker_platform
matrix entries. Artifact upload path also cleaned up (no more matrix.target).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Generates a .deb per arch (amd64, arm64, armhf, armel) after each Linux
build, with the user systemd service installed in /usr/lib/systemd/user/.
Version is derived from the git tag; falls back to 0.0.0+<sha> on master.
.deb artifacts are published directly in GitHub releases alongside tar.gz.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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.

1 participant