Skip to content

Add arm64 builds to all Linux release packages and PPA#2430

Open
kenvandine wants to merge 5 commits into
mainfrom
kenvandine/arm64-linux-packages
Open

Add arm64 builds to all Linux release packages and PPA#2430
kenvandine wants to merge 5 commits into
mainfrom
kenvandine/arm64-linux-packages

Conversation

@kenvandine

Copy link
Copy Markdown
Member
  • Fix CMakeLists.txt to detect arm64 Linux and name embeddable archive ubuntu-arm64
  • Fix CPackRPM.cmake to auto-detect aarch64 architecture for RPM packaging
  • Add build-lemonade-debian13-arm64 + smoke test job (Debian 13 .deb on ARM64)
  • Add build-lemonade-rpm-arm64 + test job (Fedora 43/44 .rpm on aarch64)
  • Add build-lemonade-embeddable-linux-arm64 job (portable archive for Linux ARM64)
  • Include all arm64 packages in the GitHub release job
  • Add ubuntu-arm64 entry to test-embeddable-posix matrix
  • Add package-arm64 job to launchpad-ppa.yml for PR binary verification on ARM64
  • Update build-container.yml to build multi-arch (amd64+arm64) Docker images

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01EQ7ke6n2tMDgNfxg125ieZ

claude added 3 commits June 25, 2026 23:58
- Fix CMakeLists.txt to detect arm64 Linux and name embeddable archive ubuntu-arm64
- Fix CPackRPM.cmake to auto-detect aarch64 architecture for RPM packaging
- Add build-lemonade-debian13-arm64 + smoke test job (Debian 13 .deb on ARM64)
- Add build-lemonade-rpm-arm64 + test job (Fedora 43/44 .rpm on aarch64)
- Add build-lemonade-embeddable-linux-arm64 job (portable archive for Linux ARM64)
- Include all arm64 packages in the GitHub release job
- Add ubuntu-arm64 entry to test-embeddable-posix matrix
- Add package-arm64 job to launchpad-ppa.yml for PR binary verification on ARM64
- Update build-container.yml to build multi-arch (amd64+arm64) Docker images

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EQ7ke6n2tMDgNfxg125ieZ
Matches the (ARM64) suffix added to new arm64 build jobs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EQ7ke6n2tMDgNfxg125ieZ
All paired Linux artifacts now use -x86_64 / -arm64 suffixes:
- lemonade-debian13 → lemonade-debian13-x86_64
- lemonade-rpm-fedora-$N → lemonade-rpm-fedora-$N-x86_64
- lemonade-rpm-arm64-fedora-$N → lemonade-rpm-fedora-$N-arm64
- lemonade-embeddable-linux → lemonade-embeddable-linux-x86_64

Download patterns in the release job updated accordingly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EQ7ke6n2tMDgNfxg125ieZ
@kenvandine kenvandine requested a review from superm1 June 26, 2026 02:00
@github-actions github-actions Bot added area::installer Windows MSI / macOS DMG / Debian / RPM packaging enhancement New feature or request labels Jun 26, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

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 expands Lemonade’s Linux release pipeline to produce and validate ARM64 artifacts across packaging formats (.deb, .rpm, and embeddable archives), and updates supporting infrastructure (PPA PR verification and container builds) to be multi-arch.

Changes:

  • Add ARM64-aware architecture/platform detection for RPM packaging and embeddable archive naming.
  • Add new ARM64 GitHub Actions jobs to build + smoke test Debian 13 ARM64 .debs, Fedora aarch64 .rpms, and Linux ARM64 embeddable archives; include ARM64 artifacts in the release job and embeddable test matrix.
  • Enable multi-arch (amd64+arm64) Docker image publishing for the build environment and add an ARM64 PR verification job to the Launchpad PPA workflow.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.

Show a summary per file
File Description
src/cpp/CPackRPM.cmake Detect ARM64 and set RPM architecture to aarch64 for correct RPM naming/output.
CMakeLists.txt Detect ARM64 on Linux and name embeddable archives ubuntu-arm64 accordingly.
.github/workflows/launchpad-ppa.yml Add ARM64 PR-only binary package build job using the build-environment container.
.github/workflows/cpp_server_build_test_release.yml Add ARM64 build/test jobs for Debian/RPM/embeddable artifacts and include them in release + test matrices.
.github/workflows/build-container.yml Build/push multi-arch build-environment images by enabling QEMU and setting platforms.

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

Comment thread .github/workflows/launchpad-ppa.yml Outdated
strategy:
matrix: ${{ fromJSON(needs.prepare-matrix.outputs.package_matrix) }}
container:
image: ghcr.io/lemonade-sdk/lemonade/build-environment:${{ matrix.distro }}${{ matrix.release }}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

blocking: The new ARM64 PPA verification job currently cannot start because it consumes the image noted above on an ARM64 runner, but the referenced images do not yet have linux/arm64/v8 manifests. The current CI failure is already at container initialization (no matching manifest for linux/arm64/v8), before any package build runs.

Since build-container.yml only runs on schedule / workflow_dispatch, this PR does not publish the new multi-arch build-environment images before launchpad-ppa.yml tries to consume them. Please either publish/split the multi-arch build-environment image change first, gate package-arm64 until the ARM64 manifests exist, or add a PR-safe fallback path.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Fixed in 8960f51. Rather than dropping the container entirely (which would limit us to noble), I switched to the official ubuntu:${{ matrix.release }} images from Docker Hub — those are natively multi-arch (arm64 supported for 24.04, 25.10, and 26.04) so the full matrix is preserved. Added an inline dep-install step since the stock Ubuntu images lack the pre-installed build tools that the custom build-environment provides.

Once build-container.yml runs post-merge to publish the multi-arch images, we can revert the container reference back to the custom build-environment.

The custom build-environment images don't yet have linux/arm64 manifests.
build-container.yml was updated in this PR to build multi-arch images,
but it only runs on schedule/dispatch, so GHCR images still lack ARM64
support — causing container initialization to fail.

Fix by switching to the official ubuntu:${{ matrix.release }} images
from Docker Hub, which are natively multi-arch (arm64 supported for
24.04, 25.10, and 26.04). Add an inline dep-install step since the
stock Ubuntu images lack the pre-installed build tools that the custom
build-environment provides. The full matrix (noble, questing, resolute)
is preserved.

Once build-container.yml runs post-merge to publish multi-arch images,
the container reference can be reverted to the custom build-environment.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area::installer Windows MSI / macOS DMG / Debian / RPM packaging enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants