fix(container): pin UV binary to build platform in cross-compilation stages#819
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (4)
✅ Files skipped from review due to trivial changes (1)
🚧 Files skipped from review as they are similar to previous changes (2)
📝 WalkthroughWalkthroughBoth Changesuv Build and Test Infrastructure
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…stages COPY --from=<multi-platform-image> resolves the source image against the target platform, not the stage platform. In builder stages pinned to $BUILDPLATFORM, this copies an aarch64 UV binary into an amd64 container, causing QEMU failures when UV tries to run aarch64 Python. Use a named stage pinned to $BUILDPLATFORM for the UV image so the COPY always gets the native-architecture binary. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Parallel make test targets share a single UV cache directory, causing rename collisions on macOS (os error 66) when multiple uv processes write simultaneously. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
deed30c to
0bc05af
Compare
…stages (jumpstarter-dev#819) ## Summary - Fixes multi-platform Docker builds failing with `qemu-aarch64: Could not open '/lib/ld-linux-aarch64.so.1'` - `COPY --from=<multi-platform-image>` resolves the source image against the **target** platform, not the stage platform. In builder stages pinned to `$BUILDPLATFORM`, this copies an aarch64 UV binary into an amd64 container. The statically-linked UV binary runs via QEMU, but the dynamically-linked Python it downloads cannot find the aarch64 dynamic linker. - Uses a named stage pinned to `$BUILDPLATFORM` for the UV image so COPY always gets the native-architecture binary Failing CI run: https://github.com/jumpstarter-dev/jumpstarter/actions/runs/27947151753/job/82694686925 ## Test plan - [ ] CI multi-platform image build passes without QEMU dynamic linker errors - [ ] Add `build-pr-images` label to trigger the image builds 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Summary
qemu-aarch64: Could not open '/lib/ld-linux-aarch64.so.1'COPY --from=<multi-platform-image>resolves the source image against the target platform, not the stage platform. In builder stages pinned to$BUILDPLATFORM, this copies an aarch64 UV binary into an amd64 container. The statically-linked UV binary runs via QEMU, but the dynamically-linked Python it downloads cannot find the aarch64 dynamic linker.$BUILDPLATFORMfor the UV image so COPY always gets the native-architecture binaryFailing CI run: https://github.com/jumpstarter-dev/jumpstarter/actions/runs/27947151753/job/82694686925
Test plan
build-pr-imageslabel to trigger the image builds🤖 Generated with Claude Code