Skip to content

Conversation

@kmarchais
Copy link
Member

@kmarchais kmarchais commented Jan 27, 2026

Summary

  • Add GitHub workflow to build wheels on Linux (x86_64, aarch64), macOS (arm64), and Windows (x64)
  • Add cibuildwheel configuration in pyproject.toml
  • Configure OIDC trusted publishing for PyPI/TestPyPI

CMakeLists.txt change

Changed find_package(Python3 COMPONENTS Interpreter Development NumPy REQUIRED) to use Development.Module instead of Development.

Why? The Development component requires Python3_LIBRARIES (the full libpython), which is used for embedding Python in C++ applications. Manylinux containers don't include this library since it's not needed for building extension modules.

Since simcoon builds a Python extension module (simmit.so), not an application that embeds Python, Development.Module is the correct component. It only requires the Python headers, which are available in manylinux. This is also the recommended practice for pybind11 projects.

Platforms

Platform Runner Architecture
Linux ubuntu-latest x86_64
Linux ubuntu-24.04-arm aarch64
macOS macos-latest arm64
Windows windows-latest AMD64

Python versions

  • 3.10, 3.11, 3.12, 3.13, 3.14

Test plan

  • Tested locally with uvx cibuildwheel --only cp312-manylinux_x86_64
  • CI builds pass on all platforms
  • Test wheel installation from artifacts

- Add GitHub workflow to build wheels on Linux (x86_64, aarch64),
  macOS (arm64), and Windows (x64)
- Add cibuildwheel configuration in pyproject.toml
- Use Development.Module instead of Development for manylinux compatibility
- Configure OIDC trusted publishing for PyPI/TestPyPI
- macOS: Update MACOSX_DEPLOYMENT_TARGET to 15.0 (Homebrew libs require it)
- Windows: Use forward slashes in vcpkg toolchain path for TOML compatibility
- sdist: Use uvx with pyproject-build for proper build isolation
@kmarchais kmarchais marked this pull request as ready for review January 28, 2026 08:38
Copy link
Member

@chemiskyy chemiskyy left a comment

Choose a reason for hiding this comment

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

LGTM however I am far from being an expert in PyPI deployment

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.

3 participants