fix(release): build and publish Windows x86_64 wheels#1735
Closed
ashishpatel26 wants to merge 1 commit into
Closed
fix(release): build and publish Windows x86_64 wheels#1735ashishpatel26 wants to merge 1 commit into
ashishpatel26 wants to merge 1 commit into
Conversation
The release.yml wheel matrix never had a Windows target — only linux x86_64/arm64 and macOS arm64 wheels were built. Since no prebuilt Windows wheel exists, `pip install headroom-ai` on Windows falls back to a source build (or fails outright on 0.21.0-0.26.0, which shipped no Windows-compatible sdist path either), leaving headroom._core missing and every compressor silently no-op'ing. Rust side was already Windows-ready (dynamic ORT loading via ort-load-dynamic on cfg(windows), added for the AVX2 SIGILL fix in headroomlabs-ai#1715) and ort-sys ships prebuilt ONNX Runtime binaries for x86_64-pc-windows-msvc, so no CMake/source build is needed the way it is for x86_64-apple-darwin. Adds a windows-2022 / x86_64-pc-windows-msvc row to build-wheels and a matching smoke-import-wheels entry that installs the built wheel into a clean venv and imports headroom._core, gating publish the same way the Linux/macOS rows do. Fixes headroomlabs-ai#1144 (Bug 1). Bug 2 in that issue (headroom --help crashing on missing fastapi) was already fixed previously — headroom.proxy.server is lazily imported inside the proxy command, not at CLI module load.
Contributor
PR governanceThis PR does not yet satisfy the required template fields:
Please update the PR body, or move the PR back to draft while it is still in progress. |
Contributor
Author
|
Closing — duplicate. Upstream already fixed this in #1335 (merged 2026-06-24), which added a more thorough windows-latest wheel row (explicit actions/setup-python, better abi3 fallback matching) than what I proposed here. Issue #1144 (Bug 1) is resolved by that merge; just needs the issue closed/labeled stale. |
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
release.yml's wheel matrix never had a Windows target — onlylinux x86_64/arm64andmacOS arm64wheels are built. No Windows wheel has ever shipped, sopip install headroom-aion Windows falls back to source (or fails outright), leavingheadroom._coremissing and every compressor silently no-op'ing (compress()catchesModuleNotFoundErrorand returns input unchanged).ort-load-dynamiconcfg(windows)landed for the AVX2 SIGILL fix (fix(core): load ONNX Runtime dynamically so headroom._core imports on non-AVX2 x86-64 #1715), andort-sysships prebuilt ONNX Runtime binaries forx86_64-pc-windows-msvc— no CMake/source build needed the wayx86_64-apple-darwinrequires.windows-2022/x86_64-pc-windows-msvcrow tobuild-wheels, plus a matchingsmoke-import-wheelsentry (PowerShell) that installs the built wheel into a clean venv and importsheadroom._core, gating publish the same way the Linux/macOS rows do.Fixes #1144 (Bug 1 — missing Windows wheel).
Bug 2 in that issue (
headroom --helpcrashing withModuleNotFoundError: fastapion a core-only install) is already fixed onmain:headroom.proxy.serveris lazily imported inside theproxycommand, not at CLI module load time. Verified locally by invokingheadroom --helpwithfastapiimport blocked via a meta-path finder — exits 0.Test plan
tests/test_release_workflows.py— 28 passed, 1 pre-existing unrelated failure (test_no_native_tls_in_wheel_build_tree, reproduces on cleanmaintoo — localcargo treeenvironment issue).github/workflows/release.ymlparses as valid YAMLheadroom --helpdoesn't requirefastapion currentmain(Bug 2 already fixed)build-wheels/smoke-import-wheelsWindows matrix rows on this PR (release.yml triggers a dry-run on PRs touchingcrates/headroom-py/**... this PR only touchesrelease.ymlitself, which is also in the path filter, so the dry-run should fire)