Skip to content

feat: enable building as py3-none wheel - #1

Merged
akashlevy merged 5 commits into
Silimate:masterfrom
donn:donn/py3_none_wheel
Sep 5, 2026
Merged

feat: enable building as py3-none wheel#1
akashlevy merged 5 commits into
Silimate:masterfrom
donn:donn/py3_none_wheel

Conversation

@donn

@donn donn commented Sep 4, 2026

Copy link
Copy Markdown
  • update release CI to build wheels instead of tarballs
  • adapt wheel_build from silisizer
  • add brewfile for dependencies
  • update codebase to better handle relocation and allow all tests to pass with wheel installation
  • fix missing header include in driver/main.c

TODO

  • Ensure Linux works

@donn
donn force-pushed the donn/py3_none_wheel branch 6 times, most recently from 1968ad9 to d61bcb6 Compare September 4, 2026 12:06
@donn
donn marked this pull request as ready for review September 4, 2026 12:10
- update release CI to build wheels instead of tarballs
- adapt wheel_build from silisizer
- add brewfile for dependencies
- update codebase to better handle relocation and allow all tests to pass with wheel installation
- fix missing header include in driver/main.c
@donn
donn force-pushed the donn/py3_none_wheel branch from d61bcb6 to e6fda45 Compare September 4, 2026 12:13
@greptile-apps

greptile-apps Bot commented Sep 4, 2026

Copy link
Copy Markdown

Greptile Summary

This PR introduces relocatable, Python-version-independent binary wheels for Icarus Verilog and updates release and test automation accordingly.

  • Adds a custom PEP 517 wheel backend, package entry points, platform tagging, and smoke tests.
  • Builds and tests Linux x86-64 and macOS arm64 wheels before publishing them to GitHub and the Silimate download server.
  • Adds relocatable runtime include/library discovery for the driver and VPI helper.
  • Updates macOS dependencies and installation tooling.

Confidence Score: 4/5

The implementation appears functionally safe, but the repository’s explicit documentation requirement for build_sdist must be satisfied before merging.

The only remaining issue is that the complex sdist construction and filtering function lacks the purpose documentation required by the repository. All six previous findings were manually resolved without explanatory replies and therefore are not outstanding.

Files Needing Attention: wheel_build/init.py

Important Files Changed

Filename Overview
wheel_build/init.py Implements the custom wheel backend, metadata generation, build bootstrap, native compilation, and wheel assembly; build_sdist lacks the purpose documentation required by repository rules.
.github/workflows/release.yml Replaces tarball releases with a tested cibuildwheel matrix and gated release/upload jobs.
driver/driver_portable.cc Resolves runtime include and library paths relative to the relocated executable prefix.
driver/Makefile.in Adds the portable C++ driver object and links the driver with the configured C++ compiler.
.github/workflows/test.yml Centralizes macOS dependencies in the Brewfile and regenerates Autoconf inputs before building.
install-sh Updates the fallback installation helper to a current GNU Automake implementation compatible with existing installation rules.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
    A[Push or pull request] --> B[Determine unused wheel version]
    B --> C{Build matrix}
    C --> D[Linux manylinux build]
    C --> E[macOS arm64 build]
    D --> F[Repair and smoke-test wheel]
    E --> F
    F --> G[Install wheel and run full tests]
    G --> H[Upload wheel artifacts]
    H --> I{Pull request?}
    I -->|Yes| J[Finish validation]
    I -->|No| K[Create GitHub prerelease]
    K --> L[Upload to download server]
Loading

Reviews (4): Last reviewed commit: "ci: update macos upstream test" | Re-trigger Greptile

Comment thread driver/Makefile.in Outdated
Comment thread iverilog-vpi.sh Outdated
Comment thread wheel_build/__init__.py Outdated
Comment thread driver/Makefile.in Outdated
Comment thread .github/workflows/release.yml Outdated
Comment thread wheel_build/__init__.py
also remove configure script, it's broken and all CI builds use autoconf first anyway
@donn
donn force-pushed the donn/py3_none_wheel branch from ab692c7 to 66e197b Compare September 4, 2026 12:40
@donn

donn commented Sep 4, 2026

Copy link
Copy Markdown
Author

@greptile-apps re-review

@donn
donn force-pushed the donn/py3_none_wheel branch from 1ce6c4d to 9c3ede1 Compare September 4, 2026 12:52
@donn
donn marked this pull request as draft September 4, 2026 13:14
@donn
donn force-pushed the donn/py3_none_wheel branch from 9c3ede1 to 9fadfc2 Compare September 4, 2026 14:49
@donn
donn force-pushed the donn/py3_none_wheel branch from 9fadfc2 to de893e5 Compare September 4, 2026 14:56
@donn
donn marked this pull request as ready for review September 4, 2026 15:10
Comment thread wheel_build/__init__.py
@donn
donn force-pushed the donn/py3_none_wheel branch from 746407f to 5b8b75f Compare September 4, 2026 16:17
@akashlevy
akashlevy merged commit facb9a9 into Silimate:master Sep 5, 2026
10 checks passed
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.

2 participants