Skip to content

Feat!: Major changes to support multi-architecture builds#117

Merged
ModeSevenIndustrialSolutions merged 1 commit intolfreleng-actions:mainfrom
modeseven-lfreleng-actions:refactor-build-action
Dec 9, 2025
Merged

Feat!: Major changes to support multi-architecture builds#117
ModeSevenIndustrialSolutions merged 1 commit intolfreleng-actions:mainfrom
modeseven-lfreleng-actions:refactor-build-action

Conversation

@ModeSevenIndustrialSolutions
Copy link
Contributor

  • Added auditwheel repair step to support multiplatform wheel files
  • Added auditwheel and manylinux_version inputs
  • Add build_formats input: wheel, sdist, or both (default: both)
  • build_formats input allows sdist builds to be broken off separately
  • Replace python-project-metadata-action with build-metadata-action

The build_formats input allows sdist builds to be separated from wheel files, as otherwise they end up in multi-architecture matrix jobs, creating overlapping build artefacts that then fail to upload/attach to the workflow run due to naming conflicts. The new input allows more fine-grained control in the calling workflow, by not baking an assumption into the build action itself.

Added PYTHON_TEST_PROJECTS JSON variable to the repo, and modified the testing.yaml workflow to use it, so we now build a wider selection of RelEng Python projects in parallel as a matrix job. This should pickup problems earlier when making changes to the action that cause breakage.

Copilot AI review requested due to automatic review settings December 9, 2025 14:52
@github-actions github-actions bot added the breaking-change Change potentially breaks upgrades label Dec 9, 2025
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces comprehensive multi-architecture build support for Python projects by adding auditwheel wheel repair capabilities, flexible build format control, and improved metadata handling. The changes enable building platform-specific wheels (x86_64, aarch64) with proper manylinux tags for PyPI distribution while preventing artifact naming conflicts in matrix builds.

Key Changes

  • Multi-architecture wheel support: Added auditwheel and manylinux_version inputs to repair wheels with proper manylinux platform tags (manylinux_2_34 default) for PyPI compatibility
  • Build format control: New build_formats input (wheel/sdist/both) allows separating wheel and sdist builds across different matrix jobs to avoid artifact conflicts
  • Enhanced metadata handling: Replaced python-project-metadata-action with build-metadata-action, added artefact_name input for custom artifact naming, and python_version input for build version override
  • Improved robustness: Migrated from environment variables to direct input interpolation, added set -euo pipefail to all bash scripts, and enhanced cache clearing with better error handling
  • Expanded testing: Added matrix-based testing across multiple Python projects using repository variables, including dedicated multi-architecture test jobs

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 7 comments.

File Description
docs/MANYLINUX_CONFIG.md New comprehensive documentation for manylinux configuration, auditwheel usage, platform tags, and multi-architecture build examples
action.yaml Core changes: added 5 new inputs (artefact_name, python_version, build_formats, auditwheel, manylinux_version), replaced metadata action, implemented auditwheel wheel repair step, updated SigStore signing to respect build_formats, migrated to direct input interpolation
README.md Updated with multi-architecture examples, new input parameters documentation, clearer versioning strategy explanations, and expanded permissions documentation
.github/workflows/testing.yaml Enhanced testing with two new matrix jobs: test-python-projects (using TEST_PROJECTS variable) and test-multi-arch-projects (testing x86_64 and aarch64 builds)

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

- Added auditwheel repair step to support multiplatform wheel files
- Added auditwheel and manylinux_version inputs
- Add build_formats input: wheel, sdist, or both (default: both)
- build_formats input allows sdist builds to be broken off separately
- Replace python-project-metadata-action with build-metadata-action

The build_formats input allows sdist builds to be separated from wheel
files, as otherwise they end up in multi-architecture matrix jobs,
creating overlapping build artefacts that then fail to upload/attach to
the workflow run due to naming conflicts. The new input allows more
fine-grained control in the calling workflow, by not baking an assumption
into the build action itself.

Added PYTHON_TEST_PROJECTS JSON variable to the repo, and modified the
testing.yaml workflow to use it, so we now build a wider selection of RelEng
Python projects in parallel as a matrix job. This should pickup problems
earlier when making changes to the action that cause breakage.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Matthew Watkins <mwatkins@linuxfoundation.org>
vvalderrv
vvalderrv previously approved these changes Dec 9, 2025
@ModeSevenIndustrialSolutions ModeSevenIndustrialSolutions merged commit e74a56d into lfreleng-actions:main Dec 9, 2025
5 checks passed
@ModeSevenIndustrialSolutions ModeSevenIndustrialSolutions deleted the refactor-build-action branch December 9, 2025 15:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking-change Change potentially breaks upgrades

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants