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.py Added _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.sh 133-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 steps
  • install-flavor-wheel.sh 42-line script: installs flavorpack wheel from artifact or falls back to pip install
  • uv_manager.py download_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 cache
  • 02-pretaster-pipeline.yml Added pre-warm step before flavor build; force x64 Python for uv tool install on windows_arm64
  • 03-flavor-pipeline.yml Added pre-warm step; updated for FLAVOR_WHEEL_CACHE strategy
  • 04-taster-pipeline.yml Updated 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.sh
    • uv_manager.py

Re-zip UV archive-v0 entries into .whl files for offline pip

1 file changed
  • uv_manager.py Added 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.yml Install flavorpack natively on ARM64 (not via Rosetta x64 Python)
  • pyproject.toml Pinned cryptography<=46.0.3 for windows_arm64 binary wheel compatibility
  • pypapip_manager.py Updated for ARM64 pip compatibility
  • workenv.py Close 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.yml
    • pyproject.toml
    • workenv.py

CI script cleanup and pretaster updates

7 files changed
  • build-pretaster.sh 37-line refactoring of pretaster build script
  • create-pretaster-matrix.sh Matrix script update
  • run-pretaster-tests.sh 32-line update
  • 01-helper-prep.yml Minor update
  • KNOWN_ISSUES.md Updated known issues
  • combination-tests.sh Updated combination test logic
  • test_workenv_commands.py 84-line workenv command tests
  • Extracted install-flavor-wheel.sh and prewarm-wheel-cache.sh from inline YAML in workflows. Pretaster matrix and test scripts updated for new ARM64 and wheel cache strategy. decouple internal
    3 files
    • install-flavor-wheel.sh
    • prewarm-wheel-cache.sh
    • build-pretaster.sh