Python Build System#302
Draft
CavRiley wants to merge 7 commits intoInsightSoftwareConsortium:mainfrom
Draft
Conversation
…Python scripts Replaces the primary build orchestration layer with a Python-based system. Adds core abstractions including BuildManager for step-wise build persistence/resumption, CMakeArgumentBuilder for managing CMake definitions, cross-platform venv utilities, subprocess helpers, and pixi environment integration. Establishes platform-specific base classes that Linux, macOS, and Windows implementations extend. Restructures CMake layout into modular BuildWheelsSupport and SuperbuildSupport components. Shell scripts remain where still required. Co-authored-by: Hans J. Johnson <hans-johnson@uiowa.edu>
…d Windows Implements platform build scripts using the new Python infrastructure. Linux/manylinux builds use dockcross with auditwheel for manylinux compliance. macOS builds integrate delocate and respect MACOSX_DEPLOYMENT_TARGET. Windows builds use delvewheel for wheel repair. Removes legacy shell scripts superseded by the new Python implementations. Co-authored-by: Hans J. Johnson <hans-johnson@uiowa.edu>
Adds make_tarballs.sh and integrates tarball generation logic into build_python_instance_base.py. Supports creating, downloading, and reusing ITK build caches across Linux, macOS, and Windows, including manylinux tarball support, arch-specific naming, and a --build-itk-tarball-cache CLI option. Adds make_windows_zip.ps1 for streamlined Windows wheel packaging and zip creation.
… 3.9 Removes unused and outdated shell scripts and legacy build utilities superseded by the new Python build system. Adds pre-commit hooks with linting applied across the codebase. Drops Python 3.9 support as it is EOL. Includes README and documentation updates for the new build workflow.
182e8a5 to
4aa0abb
Compare
Author
|
Also may close #127 |
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.
Python-based build system for generating Python wheels
Supersedes @hjmjohnson draft PR #299
This refactoring transitions build logic entirely to Python scripts while maintaining the shell script entry points for cached builds either locally or in the GitHub Action environment. A couple of the build improvements are outlined below:
Some developer improvements:
Migration Guide for GitHub Actions
To migrate the GitHub actions work flows to use this new build infrastructure, new caches builds need to be created with this build system (build paths and names changed to be consistent across environment).
Once the cache files are uploaded to the ITKPythonBuilds repository the actions can use the specific Git tag the caches are uploaded under. To use this infrastructure you would also need to specify the branch this addition would go under. For example:
Backwards compatibility
I'd appreciate any feedback you could provide regarding improvements or issues