Merged
Conversation
Match the format used in the ecc main repo pyproject.toml — source-exclude and wheel-exclude are arrays, not sub-tables with a patterns key.
Signed-off-by: Emin <me@emin.chat>
CMakeLists.txt sets CMAKE_RUNTIME_OUTPUT_DIRECTORY to ${PROJECT_SOURCE_DIR}/bin,
so the linked ecc_py .so ends up in bin/ rather than build/.
Signed-off-by: Emin <me@emin.chat>
Extract die/require_cmd helpers, remove decorative banners, use idiomatic bash patterns for error handling.
Signed-off-by: Emin <me@emin.chat>
scripts/ is gitignored (upstream iEDA runtime data), so CI scripts don't belong there. Also narrow .gitignore rule from `scripts` to `/scripts` to avoid ignoring .github/scripts/. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
.github/scripts/ is two levels below repo root, not one. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR introduces Python wheel packaging and GitHub Actions workflows to build and publish a self-contained manylinux wheel for ecc-tools, bundling the ecc_py pybind11 extension and its shared-library dependencies via auditwheel.
Changes:
- Add
pyproject.tomlusinguv_buildto produce a wheel containingecc_tools_binartifacts. - Add CI workflow to build (and artifact-upload) a repaired manylinux wheel.
- Add Release workflow + composite action + build script to build/repair/smoke-test and publish wheel artifacts to GitHub Releases.
Reviewed changes
Copilot reviewed 6 out of 7 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
pyproject.toml |
Defines uv-based wheel build configuration and dev dependency group. |
ecc_tools_bin/__init__.py |
Adds minimal package init for importing ecc_py. |
.gitignore |
Adjusts ignore rule to avoid ignoring .github/scripts. |
.github/workflows/release.yml |
Builds wheel on tag/dispatch and publishes GitHub Release with artifacts. |
.github/workflows/ci.yml |
Builds wheel on PR/main and uploads artifacts. |
.github/scripts/build-wheel.sh |
Implements build → uv wheel → auditwheel repair → smoke test → checksums. |
.github/actions/build-wheel/action.yml |
Composite action to provision deps and execute the build script. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
uv sync installs auditwheel into .venv/bin/ which is not on the default PATH. Append it via $GITHUB_PATH after uv sync. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
workflow_dispatch provides a tag_name but checkout defaulted to the repo's default branch, risking a mismatch between built wheel and published tag. Use inputs.tag_name when available, fall back to github.ref for tag-push triggers. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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
Motivation
Previously, the ecc CI had to clone the full ecc-tools repo, install system-level build dependencies (CMake, Ninja, GCC 10+, Rust toolchain, etc.), and compile from source on every run. This was slow (~15 min+), fragile, and tightly coupled the two repos.
With this change, ecc CI simply does uv pip install --no-deps — matching the pattern established by ecc-dreamplace. Both native EDA tool dependencies are now pre-built wheels, reducing ecc CI setup to seconds and decoupling the build lifecycle.