Build anvl-cpu as multi-arch (amd64 + arm64)#20
Merged
sebffischer merged 1 commit intomainfrom Apr 25, 2026
Merged
Conversation
Splits the cpu workflow across native runners (ubuntu-latest for amd64, ubuntu-24.04-arm for arm64), pushes each platform by digest, and assembles the manifest list in a separate merge job. Avoids QEMU. CUDA workflow is untouched; the existing docker-build composite action keeps its current single-arch behavior. Two new composite actions: - docker-build-by-digest: per-platform build, pushes by digest to both Docker Hub and GHCR. - docker-merge: combines uploaded digests into a tagged manifest list in both registries. Also drops the hardcoded x86_64-pc-linux-gnu in .Rprofile's libPath in favor of R.version$platform so the path is correct on arm64. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
anvl-cpufor bothlinux/amd64andlinux/arm64, producing a real multi-arch manifest list at:latestand:release.ubuntu-latestfor amd64,ubuntu-24.04-armfor arm64) — no QEMU.mergejob assembles the manifest list under each tag.docker-buildcomposite action keeps its single-arch behavior socuda.yamlis unaffected.x86_64-pc-linux-gnulibPath in.Rprofile; useR.version$platformso it's correct on arm64.Why
The current image is published as a manifest list with only an amd64 entry. On Apple Silicon,
docker pull ghcr.io/r-xla/anvl-cpu:latestfails withno matching manifest for linux/arm64/v8, which breaksdevcontainer upsince the CLI's pre-pull step does not honor--platform=linux/amd64frombuild.options. Publishing a real arm64 entry fixes that and lets the dev container run natively on M-series Macs.Notes for reviewers
buildcache-linux-arm64cache..github/actions/docker-build-by-digest/.github/actions/docker-merge/Test plan
pull_request(push disabled). Bothbuild-latestlegs should complete on their respective runners;merge-latestis skipped on PR.docker buildx imagetools inspect ghcr.io/r-xla/anvl-cpu:latestlists bothlinux/amd64andlinux/arm64.docker pull ghcr.io/r-xla/anvl-cpu:latest(no--platform) succeeds.🤖 Generated with Claude Code