Skip to content

ci(release): fix embedded wheel builds for Windows, macOS, and Linux aarch64#40

Merged
polaz merged 2 commits intomainfrom
fix/#39-windows-protoc-unc-path
Apr 16, 2026
Merged

ci(release): fix embedded wheel builds for Windows, macOS, and Linux aarch64#40
polaz merged 2 commits intomainfrom
fix/#39-windows-protoc-unc-path

Conversation

@polaz
Copy link
Copy Markdown
Member

@polaz polaz commented Apr 16, 2026

Summary

Three independent failures in the build-embedded matrix discovered in the cancelled v0.8.0 release run.

Root Causes & Fixes

1. Windows x86_64 — UNC path rejected by protoc

std::path::Path::canonicalize() on Windows returns \\?\D:\... (extended-length UNC prefix) that protoc rejects with "Invalid file name pattern".

Fix: canonicalize_for_protoc() helper strips the \\?\ prefix in all four build.rs files inside coordinode-rs. Applied in the submodule on branch fix/windows-protoc-unc-pathstructured-world/coordinode; this PR bumps the submodule pointer to that commit.

2. macOS aarch64 / x86_64 — Python 3.14 not yet supported by PyO3

macos-latest now ships Python 3.14. PyO3 0.23.5 supports up to Python 3.13 and fails with:

error: the configured Python interpreter version (3.14) is newer than PyO3's maximum supported version (3.13)

Fix: Add actions/setup-python step pinned to 3.13 for all non-Linux matrix entries. Remove pin when PyO3 ≥ 0.24 is adopted.

3. Ubuntu aarch64 — Docker not found for cross-compilation

maturin-action uses a manylinux Docker container to cross-compile aarch64 wheels on the x86_64 runner. Docker wasn't available in the runner context (/usr/bin/docker: exit code 127).

Fix: Add docker/setup-qemu-action before the maturin step for Linux aarch64 targets.

Test Plan

  • Merge submodule PR in structured-world/coordinode first
  • Trigger a pre-release tag to verify all 5 matrix jobs pass

Closes #39

…aarch64

Three separate failures in the build-embedded matrix job:

1. Windows x86_64 — build.rs UNC path (\\?\) rejected by protoc.
   Fix is in the coordinode-rs submodule (fix/windows-protoc-unc-path).
   Bump submodule pointer to the fixed commit.

2. macOS aarch64 / x86_64 — macos-latest now ships Python 3.14 which
   PyO3 0.23.x does not yet support (max 3.13). Pin all non-Linux
   matrix entries to Python 3.13 via actions/setup-python.

3. Ubuntu aarch64 — maturin-action requires QEMU to cross-compile
   aarch64 wheels on the x86_64 runner. Add docker/setup-qemu-action
   before the maturin step for Linux aarch64 targets.

Refs #39
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 16, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 041d2eae-d969-4b1e-adbd-7dce40a8b775

📥 Commits

Reviewing files that changed from the base of the PR and between 442dcc5 and b332b20.

📒 Files selected for processing (1)
  • .github/workflows/release.yml

📝 Walkthrough

Summary by CodeRabbit

  • Chores
    • Added support for Python 3.13 on macOS and Windows build runners.
    • Improved cross-compilation support for Linux ARM (aarch64) builds.
    • Updated a bundled dependency to a newer commit/version.

Walkthrough

CI workflow updated to include Python 3.13 on macOS and Windows runners, add conditional Python and QEMU setup steps for non-Linux and Linux/aarch64 matrix entries respectively, and the coordinode-rs Git submodule reference was bumped to a newer commit.

Changes

Cohort / File(s) Summary
Workflow CI/CD Updates
.github/workflows/release.yml
Added python-version: "3.13" entries to the build-embedded matrix for macOS (aarch64, macos-15-intel) and Windows; replaced macos-13 label with macos-15-intel; added conditional actions/setup-python@v5 step for non-Linux runners using matrix.python-version; added conditional docker/setup-qemu-action@v3 step for Linux aarch64 targets; added inline comments about PyO3 Python pinning and Linux aarch64 QEMU requirement.
Submodule Update
coordinode-rs
Updated Git submodule commit reference from 6df09c87a94eebd4c63dde08df420396df480487 to 21ae71c381a0f1cb2bd625410fc5585a9d6d080c.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'ci(release): fix embedded wheel builds for Windows, macOS, and Linux aarch64' accurately summarizes the main CI workflow fixes addressing three specific build failures.
Description check ✅ Passed The description comprehensively explains three independent failures, their root causes, and the fixes applied, all directly related to the changeset.
Linked Issues check ✅ Passed The PR addresses issue #39 by bumping the coordinode-rs submodule to a commit with the Windows UNC path fix; the workflow changes also fix macOS Python 3.14 and Linux aarch64 Docker issues.
Out of Scope Changes check ✅ Passed All changes are in-scope: submodule bump fixes Windows protoc issue; workflow updates address Python 3.14 incompatibility and Docker setup for Linux aarch64 cross-compilation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/#39-windows-protoc-unc-path

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/release.yml:
- Around line 89-92: Update the unsupported runner label by replacing the old
`os: macos-13` entry with a currently supported macOS runner (e.g., `os:
macos-14`) in the release workflow; keep the existing `target: x86_64` and
`python-version: "3.13"` settings intact and search for any other occurrences of
`macos-13` in the workflow to update them as well so the macOS Intel wheel job
can run.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 5af469de-4ebd-4036-9af5-0fe4b8a5824d

📥 Commits

Reviewing files that changed from the base of the PR and between 05a3b0f and 442dcc5.

📒 Files selected for processing (2)
  • .github/workflows/release.yml
  • coordinode-rs

Comment thread .github/workflows/release.yml Outdated
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Updates the release workflow to address recent platform-specific failures when building coordinode-embedded wheels across the release matrix.

Changes:

  • Pins Python to 3.13 on macOS and Windows runners to avoid PyO3 incompatibility with Python 3.14.
  • Adds QEMU setup for Linux aarch64 cross-compilation before running maturin-action.
  • Adds clarifying comments in the workflow matrix around these platform constraints.

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

Comment thread .github/workflows/release.yml Outdated
- Replace macos-13 (retired Dec 2025) with macos-15-intel for the
  macOS Intel x86_64 wheel job
- Change setup-python condition from matrix.python-version check to
  runner.os != 'Linux' — Linux manylinux containers manage Python
  themselves; Linux matrix entries intentionally omit python-version
@polaz polaz requested a review from Copilot April 16, 2026 09:48
@sonarqubecloud
Copy link
Copy Markdown

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Updates the release CI workflow to address recently observed build-embedded matrix failures across Windows, macOS, and Linux aarch64 so embedded wheels can be built reliably during tagged releases.

Changes:

  • Pin Python to 3.13 on macOS and Windows runners to avoid PyO3 incompatibility with Python 3.14 on macos-latest.
  • Add QEMU setup for Linux aarch64 to support cross-compiling wheels via manylinux containers.
  • Update the macOS Intel runner label from macos-13 to macos-15-intel and clarify platform-specific build notes in comments.

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

@polaz polaz merged commit 75a3c0a into main Apr 16, 2026
12 checks passed
@polaz polaz deleted the fix/#39-windows-protoc-unc-path branch April 16, 2026 09:52
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.

fix(embedded): Windows protoc fails with extended-length path from canonicalize()

2 participants