Skip to content

Name every patch after a package of its distribution - #74

Merged
Tobias-Fischer merged 2 commits into
mainfrom
patch-names-match-packages
Oct 11, 2026
Merged

Tobias-Fischer merged 2 commits into
mainfrom
patch-names-match-packages

Conversation

@Tobias-Fischer

Copy link
Copy Markdown
Collaborator

vinca applies distros/<d>/patch/ros2-<pkg>[.<platform>].patch only when <pkg> is a package of the distribution, so 23 patch files were never applied. This renames the ones that are still needed, deletes the others, and makes rs check catch this from now on.

File Decision Why
humble, jazzy, lyrical, rolling ros2-rosidl.patch renamed to ros2-rosidl-cli.patch, rewritten Patches rosidl_cli. Now installs completions the same way ros2cli does since #70: share/bash-completion/completions/rosidl and share/zsh/site-functions/_rosidl, plus share/fish/vendor_completions.d/rosidl.fish on lyrical/rolling (the same distros where ros2cli installs fish). The upstream scripts are left alone.
jazzy ros2-rwm-implementation-cmake.osx.patch renamed to ros2-rmw-implementation-cmake.osx.patch Typo. Identical to humble's applied patch (CycloneDDS as the default RMW on macOS). It was ported in 2025 but has never been applied (it was misnamed in ros-jazzy too). This changes jazzy's default RMW on macOS. Please confirm you want that.
jazzy ros2-cmake-vendor-package.patch deleted Duplicate of ros2-ament-cmake-vendor-package.patch, which is applied (differs only in whitespace).
jazzy ros2-joint-limits-skip.win.patch deleted Upstream already has it: joint_limits 4.49.0 joint_soft_limiter.cpp defines _USE_MATH_DEFINES.
jazzy ros2-iceoryx-dds.win.patch deleted iceoryx_dds isn't in jazzy.
humble ros2-embree-vendor.patch deleted embree_vendor isn't in humble.
humble ros2-mrpt2.patch deleted mrpt2 isn't in humble. It's now split into mrpt_lib* (mrpt_ros), which has a different source layout.
humble ros2-nav2-recoveries.win.patch deleted nav2_recoveries isn't in humble (it became nav2_behaviors).
lyrical ros2-grid-map-pcl.osx.patch, ros2-parameter-traits.patch, ros2-turtlebot3-node.win.patch deleted Those packages aren't in lyrical.
rolling ros2-grid-map-core.osx.patch, ros2-grid-map-core.patch, ros2-grid-map-pcl.osx.patch, ros2-parameter-traits.patch, ros2-rplidar-ros.patch, ros2-sbg-driver.patch, ros2-sbg-driver.win.patch, ros2-slam-toolbox.win.patch, ros2-turtlebot3-node.win.patch deleted Those packages aren't in rolling. Git history keeps the patches if they come back.

Other changes:

  • shared/tests/ros2-rosidl.yaml was misnamed as well, so it never ran, and it checked the old file names. It is now ros2-rosidl-cli.yaml and tests the new names and that bash registers the completion, like the ros2cli test.
  • Build numbers are bumped one above the highest published build (from the channel repodata), only for packages whose output changes: rosidl_cli (humble 21, jazzy 26, lyrical 28, rolling 30) and rmw_implementation_cmake (jazzy 26).
  • rs check now fails for a patch in distros/<d>/patch whose package isn't in that distro's snapshot or additional recipes. For shared/patch it fails when the package is in none of the distros. A unit test is in tools/tests/test_patch_names.py.

Verified:

  • On origin/main, the new check flags exactly the 23 files above.
  • pixi run rs check and pixi run test pass (15 tests).
  • With recipes generated without skip_existing, rs <d> check-patches --recipe ros2-rosidl-cli passes on all 4 distros, and so does rs jazzy check-patches --recipe ros2-rmw-implementation-cmake.
  • rs <d> build-one ros2-rosidl-cli builds on osx-arm64 for all 4 distros and the new recipe tests pass. rs jazzy build-one ros2-rmw-implementation-cmake builds too, and its get_default_rmw_implementation.cmake now prefers rmw_cyclonedds_cpp.

🤖 Generated with Claude Code

vinca applies distros/<d>/patch/ros2-<pkg>[.<platform>].patch only when <pkg>
is a package of the distribution, so 23 patch files were silently never
applied. Rename the misnamed ones that are still needed (rosidl_cli in all
distributions, rmw_implementation_cmake in jazzy) and delete the rest: their
package isn't in the distribution, or (jazzy joint_limits, ament_cmake_vendor_package)
upstream or an existing patch already has the change.

The rosidl_cli patch now installs the completions like ros2cli's (#70):
completions/rosidl, site-functions/_rosidl and, on lyrical and rolling,
vendor_completions.d/rosidl.fish. Its test (shared/tests/ros2-rosidl.yaml) was
misnamed too and moves to ros2-rosidl-cli.yaml. Bump the build numbers of the
packages whose output changes.

`rs check` now fails for a patch that names no package of its distribution (or,
for shared/patch, of any distribution).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

ABI check (linux-64)

Each package this pull request built, compared with its newest released build (tools/abi_check.py, libabigail):

  • compatible / additions: the package can be bumped on its own;
  • soname / incompatible: the packages that depend on it need a rebuild (build number bump) in the same pull request.

humble linux-64

Nothing that needs a rebuild of other packages.

1 packages can be bumped on their own (no libraries: 1)
package released → PR verdict details
rosidl-cli 3.1.8 (build 20) → 3.1.8 no libraries: nothing to compare

Compared with the newest builds on https://repo.prefix.dev/tobias-fischer/robostack-distro-test/linux-64 and https://conda.anaconda.org/robostack-staging/linux-64.

jazzy linux-64

Nothing that needs a rebuild of other packages.

2 packages can be bumped on their own (no libraries: 2)
package released → PR verdict details
rmw-implementation-cmake 7.3.4 (build 25) → 7.3.4 no libraries: nothing to compare
rosidl-cli 4.6.9 (build 25) → 4.6.9 no libraries: nothing to compare

Compared with the newest builds on https://repo.prefix.dev/tobias-fischer/robostack-distro-test/linux-64 and https://conda.anaconda.org/robostack-jazzy/linux-64.

lyrical linux-64

Nothing that needs a rebuild of other packages.

1 packages can be bumped on their own (no libraries: 1)
package released → PR verdict details
rosidl-cli 5.2.1 (build 27) → 5.2.1 no libraries: nothing to compare

Compared with the newest builds on https://repo.prefix.dev/tobias-fischer/robostack-distro-test/linux-64 and https://repo.prefix.dev/robostack-lyrical/linux-64.

rolling linux-64

Nothing that needs a rebuild of other packages.

1 packages can be bumped on their own (no libraries: 1)
package released → PR verdict details
rosidl-cli 5.3.1 (build 29) → 5.3.1 no libraries: nothing to compare

Compared with the newest builds on https://repo.prefix.dev/tobias-fischer/robostack-distro-test/linux-64 and https://repo.prefix.dev/robostack-rolling/linux-64.

Exported symbols are compared (the released packages are stripped, so struct layouts aren't); unchanged installed headers rule out layout and inline changes, changed ones are listed for review. Dependents to rebuild are the released ones linking to a changed library. A changed pin is part of the comparison.

@Tobias-Fischer
Tobias-Fischer merged commit df759e3 into main Oct 11, 2026
24 checks passed
@Tobias-Fischer
Tobias-Fischer deleted the patch-names-match-packages branch October 11, 2026 00:03
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