Skip to content

ci: add PyInstaller binary build workflow for foryc#3385

Draft
Zakir032002 wants to merge 13 commits into
apache:mainfrom
Zakir032002:feat/foryc-binary-ci
Draft

ci: add PyInstaller binary build workflow for foryc#3385
Zakir032002 wants to merge 13 commits into
apache:mainfrom
Zakir032002:feat/foryc-binary-ci

Conversation

@Zakir032002

Copy link
Copy Markdown

Why?
Rust users currently must manually install Python and fory-compiler to use foryc, making builds non-reproducible and CI setup painful across macOS/Linux/Windows and x86_64/aarch64. This PR delivers Phase 1 of #3292: a CI workflow that builds, validates, and uploads self-contained foryc binaries for all supported platforms — the foundation required before the foryc-bin and foryc-build Rust crates can be built in Phase 2.

What does this PR do?
Adds three files:

compiler/foryc.spec — Reproducible PyInstaller build spec. Enumerates all fory_compiler modules as hiddenimports to prevent future refactoring from silently dropping modules. Excludes ~15 unused stdlib modules to keep binary size below the 10 MB crates.io limit enforced in CI.

compiler/requirements-dev.txt — Pins pyinstaller>=6.0,<7.0 as a dev-only dependency, explicitly separated from pyproject.toml so it is never included in the published PyPI package.

.github/workflows/build-foryc-binaries.yml — Matrix CI workflow that builds, UPX-compresses, validates, and uploads 5 standalone foryc binaries:

linux-x86_64 (ubuntu-22.04)

linux-aarch64 (ubuntu-24.04-arm, native runner)

macos-x86_64 (macos-15-intel)

macos-aarch64 (macos-15, ad-hoc codesigned after UPX)

windows-x86_64 (windows-latest)

Each binary is validated on its native runner with --help and an end-to-end demo.fdl → Rust compile. A hard 10 MB size assertion gates Phase 2 crates.io embedding.

windows-aarch64 is not included — GitHub Actions has no hosted native Windows ARM runner and PyInstaller cannot cross-compile.

Related issues
Closes #3292 (Phase 1 only — Phase 2: foryc-bin/foryc-build crates; Phase 3: docs)

Benchmark
Not applicable — this PR adds CI infrastructure only, no runtime code changes.

@Zakir032002 Zakir032002 changed the title [CI][Compiler] Add PyInstaller binary build workflow for foryc (Phase… Feb 22, 2026
@Zakir032002 Zakir032002 changed the title [CI][Compiler] Add PyInstaller binary build workflow for foryc (Phase 1 of #3292) Feb 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant