flavorpack
2026-03-25
Windows wheel collection overhaul: pre-warm cache, Winsock env fix, ARM64 native install
19 files · 2,371+ · 1,057-
Pass Windows system env vars to pip subprocesses (Winsock DLL fix)
1 file changed
uv_manager.pyAdded _windows_system_env() helper that returns SYSTEMROOT, WINDIR, and related vars; passed as env= to all pip/uv subprocesses on Windows so Winsock DLL paths resolve
- provide.foundation scrubs subprocess environments to a safe allowlist that excludes SYSTEMROOT/WINDIR. Without these, Windows cannot find Winsock service-provider DLL paths (stored as %SystemRoot%\system32...) causing every socket call including getaddrinfo to fail with errno 11001. _windows_system_env() returns the required system vars as a trusted caller override merged into the scrubbed env. No-op on non-Windows.
remediate
behavioral
1 file
uv_manager.py
Pre-warm wheel cache CI step and FLAVOR_WHEEL_CACHE strategy
6 files changed
prewarm-wheel-cache.sh133-line script: uses uv pip install (Rust HTTP) to download packages into a local .whl cache, sets FLAVOR_WHEEL_CACHE env in GITHUB_ENV for downstream flavor build stepsinstall-flavor-wheel.sh42-line script: installs flavorpack wheel from artifact or falls back to pip installuv_manager.pydownload_wheels_offline() now checks FLAVOR_WHEEL_CACHE env var for a pre-warmed cache dir; uses pip --no-index --find-links against that dir instead of uv's internal cache02-pretaster-pipeline.ymlAdded pre-warm step before flavor build; force x64 Python for uv tool install on windows_arm6403-flavor-pipeline.ymlAdded pre-warm step; updated for FLAVOR_WHEEL_CACHE strategy04-taster-pipeline.ymlUpdated for pre-warm strategy
- On Windows GHA runners, Python subprocess urllib3 cannot reach PyPI but uv’s Rust HTTP client can. prewarm-wheel-cache.sh uses uv pip install to pre-download packages via uv’s Rust HTTP client, then collects .whl files into a local cache dir. The flavor build subprocess then uses pip –no-index –find-links (no network required) from that cache.
instantiate
behavioral
2 files
prewarm-wheel-cache.shuv_manager.py
Re-zip UV archive-v0 entries into .whl files for offline pip
1 file changed
uv_manager.pyAdded logic to convert UV archive-v0 cache entries (normalized wheel archives) back into standard .whl zip files that pip can consume via --find-links
- UV stores cached wheels in an archive-v0 format (content-addressed, normalized). When building the pre-warm cache, these must be re-zipped into standard .whl files for pip’s –no-index –find-links mode to recognize them. Added conversion step in the cache collection logic.
remediate
behavioral
1 file
uv_manager.py
ARM64 native flavorpack install and cryptography pin
4 files changed
03-flavor-pipeline.ymlInstall flavorpack natively on ARM64 (not via Rosetta x64 Python)pyproject.tomlPinned cryptography<=46.0.3 for windows_arm64 binary wheel compatibilitypypapip_manager.pyUpdated for ARM64 pip compatibilityworkenv.pyClose file handle before PE resource embedding to prevent locks
- Flavorpack now installs natively on ARM64 Windows rather than using the x64 Rosetta Python path. cryptography pinned to <=46.0.3 to ensure a binary wheel is available for windows_arm64. File handle closed before PE resource embedding step to prevent Windows file locks.
remediate
behavioral
3 files
03-flavor-pipeline.ymlpyproject.tomlworkenv.py
CI script cleanup and pretaster updates
7 files changed
build-pretaster.sh37-line refactoring of pretaster build scriptcreate-pretaster-matrix.shMatrix script updaterun-pretaster-tests.sh32-line update01-helper-prep.ymlMinor updateKNOWN_ISSUES.mdUpdated known issuescombination-tests.shUpdated combination test logictest_workenv_commands.py84-line workenv command tests