Skip to content

Conversation

@natoscott
Copy link
Member

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.

Testing

  • macOS build successful
  • .dmg created with all extension modules present and tracked
  • All 5 .so files appear in python3-pcp.list

🤖 Generated with Claude Code

natoscott and others added 2 commits November 21, 2025 17:19
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>
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