src/python: modernize Python packaging with pyproject.toml#2412
Draft
src/python: modernize Python packaging with pyproject.toml#2412
Conversation
Convert from deprecated distutils-based setup.py to modern pyproject.toml packaging (PEP 518, PEP 621) while maintaining C extension support. Changes: - Add pyproject.toml with project metadata and setuptools backend - Rename setup-pyproject.py to setup.py for pip wheel building (pip requires setup.py to properly build platform wheels with C extensions) - Update GNUmakefile to use 'pip install' instead of 'setup.py install' - Fix .so file tracking pattern to capture extension modules in python3-pcp.list This hybrid approach (pyproject.toml + setup.py) is the recommended method for packaging Python projects with C extensions until setuptools fully supports declaring extensions in pyproject.toml's standard format. Fixes: All 5 C extension modules (.so files) now properly tracked in python3-pcp.list, which is essential for RPM/Debian packaging on other platforms. Tested: macOS build successful, .dmg created with all extension modules present and tracked. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
The modernized Python packaging using pyproject.toml and pip-based installation requires python3-pip to be available during the build process. Changes: - Add python3-pip to build/rpm/pcp.spec.in BuildRequires - Add python3-pip to build/rpm/redhat.spec BuildRequires - Add python3-pip to all distribution package lists (qa/admin/package-lists/*) Placement: after python3-pil/python3-pillow, before python3-prometheus_client (alphabetically correct position in package lists) This ensures CI builds can successfully use 'pip install' for building the Python extension modules across all supported platforms. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <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.
Convert from deprecated distutils-based setup.py to modern pyproject.toml
packaging (PEP 518, PEP 621) while maintaining C extension support.
Changes
(pip requires setup.py to properly build platform wheels with C extensions)
This hybrid approach (pyproject.toml + setup.py) is the recommended method
for packaging Python projects with C extensions until setuptools fully
supports declaring extensions in pyproject.toml's standard format.
Fixes
All 5 C extension modules (.so files) now properly tracked in
python3-pcp.list, which is essential for RPM/Debian packaging on other
platforms.
Testing
🤖 Generated with Claude Code