Skip to content

build a wheel with scikit-build-core and drop setuptools - #12

Merged
zeerekahmad merged 1 commit into
zeerekahmad/kinematics-python-bindingsfrom
zeerekahmad/kinematics-wheel-packaging
Aug 18, 2026
Merged

build a wheel with scikit-build-core and drop setuptools#12
zeerekahmad merged 1 commit into
zeerekahmad/kinematics-python-bindingsfrom
zeerekahmad/kinematics-wheel-packaging

Conversation

@zeerekahmad

Copy link
Copy Markdown
Contributor

PR: build a wheel with scikit-build-core and drop setuptools

  • branch: zeerekahmad/kinematics-wheel-packaging
  • base: zeerekahmad/kinematics-python-bindings
  • commit: a15a578

Description

setuptools cannot build the pybind11 extension, so the wheel is built by scikit-build-core driving the same
CMakeLists.txt the ROS2 build uses.

  • cmake.args pins BUILD_TESTING=OFF (the C++ tests are built out-of-band) and forces the non-ament branch,
    which matters on a machine that happens to have /opt/ros installed: the ROS2 branch would otherwise be
    selected and then fail on build-env deps like catkin_pkg.
  • Deletes setup.cfg, whose only job was relocating setuptools' script_dir for the ament install layout,
    and the setuptools build backend along with it.
  • Declares the runtime numpy dependency, an [explorer] extra and a [dev] extra, the kinematic-explorer
    console script, and a dependency-group that defers to the extras so the pins live in one place.
  • Adds uv.lock, and with it the pyproject version bump the lock records.
  • CI gains a wheel job, since until now the pytest suite only ran under colcon.

Migration Guide

For anyone installing the Python package outside ROS 2:

  1. Build/install with a PEP 517 frontend (uv pip install -e . or pip install .) — the removed
    setup.cfg/setuptools backend means python setup.py invocations no longer work.
  2. A C++ toolchain and CMake ≥ 3.15 are now required at install time, since the extension is compiled.

Related issues

Completeness checklist

  • Is there test coverage? If it was a bugfix, is there a regression test?
  • Is user-facing API/behavior documented?
  • Is core documentation updated?
  • Are all checks green?
  • Assign reviewers to the PR and post in #code_reviews

Stack created with GitHub Stacks CLIGive Feedback 💬

setuptools cannot build the pybind11 extension, so the wheel is built by
scikit-build-core driving the same CMakeLists the ROS2 build uses. cmake.args pins
BUILD_TESTING=OFF (the C++ tests are built out-of-band) and forces the non-ament branch,
which matters on a machine that happens to have /opt/ros installed: the ROS2 branch
would otherwise be selected and then fail on build-env deps like catkin_pkg.

Deletes setup.cfg, whose only job was relocating setuptools' script_dir for the ament
install layout, and the setuptools build backend along with it.

Declares the runtime numpy dependency, an [explorer] extra and a [dev] extra, the
kinematic-explorer console script, and a dependency-group that defers to the extras so
the pins live in one place. Adds uv.lock, and with it the pyproject version bump the
lock records.

CI gains a wheel job, since until now the pytest suite only ran under colcon.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@zeerekahmad
zeerekahmad merged commit a427dd0 into main Aug 18, 2026
5 of 6 checks passed
@zeerekahmad
zeerekahmad deleted the zeerekahmad/kinematics-wheel-packaging branch August 18, 2026 21:09
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.

1 participant