Rename package to behaviortree_cpp_picknik with versioned soname - #26
Merged
Merged
Conversation
📝 WalkthroughSummary by CodeRabbit
WalkthroughSummaryThe project and package are renamed for the PickNik fork, installed headers use package-scoped paths, library versioning is configured, fork detection is exposed through a macro, and test targets use the library name. ChangesPickNik packaging and build integration
Caution Pre-merge checks failedPlease resolve all errors before merging. Addressing warnings is optional.
❌ Failed checks (1 error)
✅ Passed checks (3 passed)
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
Comment |
Renames the fork so it can coexist with upstream behaviortree_cpp on the same system (PickNikRobotics/moveit_pro#20928): package/library become behaviortree_cpp_picknik, headers install under a package-scoped root while source keeps including behaviortree_cpp/..., and the library gets VERSION/SOVERSION so ABI mismatches fail loudly at load time. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
griswaldbrooks
force-pushed
the
rename/behaviortree-cpp-picknik-20928
branch
from
July 31, 2026 00:32
06940cc to
8972919
Compare
griswaldbrooks
marked this pull request as ready for review
July 31, 2026 01:42
dv-picknik
approved these changes
Jul 31, 2026
dv-picknik
added a commit
that referenced
this pull request
Aug 4, 2026
The fork rename in #26 changed PROJECT_NAME to behaviortree_cpp_picknik, so tests/CMakeLists.txt now builds ${BTCPP_LIBRARY}_test as behaviortree_cpp_picknik_test. Three call sites still hardcoded the old behaviortree_cpp_test name and failed at the "run tests" step: pixi.toml (both win-64 and linux-64 tasks) and cmake_windows.yml. This was masked on the pixi workflow: fail-fast cancelled the ubuntu job partway through whenever the windows job died first, so its failure never surfaced. Set fail-fast: false so the two report independently. cmake_ubuntu.yml is unaffected — it runs ctest, not the binary by name. Refs PickNikRobotics/moveit_pro#21028 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SFjW9VieunSxySXNKSFEmX
dv-picknik
added a commit
that referenced
this pull request
Aug 5, 2026
…st binary) Three jobs were red. Two are external drift; the third had been masked by fail-fast and is our own fork-rename fallout. cmake Windows and Pixi (conda) both broke on the same runner-image change -- windows-latest is now windows-2025-vs2026, with Visual Studio 2026 (MSVC 19.51, tools 14.51) as the only Visual Studio installed -- but they broke on different things, so they get different fixes. Both stay on windows-latest. cmake Windows is not a generator problem. Conan already selects the "Visual Studio 18 2026" generator and gtest configures and builds clean under it. The break is libsodium, the one package in the graph built by msbuild rather than cmake: its hand-written .vcxproj gets PlatformToolset v145 from compiler.version=195 while conanvcvars lands on VCToolsVersion 14.44.35207, and msbuild rejects the pair (MSB8052). Passing -o "zeromq/*:encryption=tweetnacl" uses the copy of tweetnacl bundled in libzmq and drops the libsodium dependency entirely. CURVE support is unchanged, and nothing here touches it -- the ZMQ_CURVE_* references in src/loggers/zmq.hpp are cppzmq's own ifdef'd option wrappers. Pixi is a generator problem. cmake picks its default generator from a hardcoded list, and the conda-forge cmake 3.31.5 in the lock predates VS 2026 entirely, so it asked for "Visual Studio 17 2022" and found nothing. That generator exists only in cmake >= 4.2, hence the dependency floor and the win-64 build task that names it explicitly. Relocking to cmake 4.4.2 moves pixi.lock to format v7, which the pinned pixi v0.40.3 cannot read, so setup-pixi and pixi move up with it. ros2-rolling is unrelated: ROS 2 Rolling migrated to Ubuntu 26.04 (resolute), and packages.ros.org publishes no ros-rolling-* debs for resolute yet, so ros-rolling-ros-environment isn't there to install. Pin OS_CODE_NAME to noble until it is. Pixi (conda) on ubuntu was never actually passing -- fail-fast cancelled it mid-build once windows died, hiding its own failure. The rename in #26 changed PROJECT_NAME to behaviortree_cpp_picknik, so tests build behaviortree_cpp_picknik_test while pixi.toml and cmake_windows.yml still ran behaviortree_cpp_test. Fixed, and fail-fast disabled so one job's failure stops hiding its sibling's. cmake_ubuntu.yml needed nothing -- it runs ctest, not the binary by name. Verified locally where possible: industrial_ci in Docker with ROS_DISTRO= rolling ROS_REPO=main OS_CODE_NAME=noble builds and passes 207 tests, and pixi run build && pixi run test under cmake 4.4.2 builds clean and passes 207 tests, so the CMake 4 policy bump costs nothing (the one pre-4 declaration left is lexy's cmake_minimum_required(VERSION 3.8), which warns rather than errors). The windows halves are CI-testable only; all six jobs are green.
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.
[written by AI]
Implements the rename decided for moveit_pro#20928 (decision record there; targets MoveIt Pro 10.0.0): this fork becomes
behaviortree_cpp_picknikso stock upstreambehaviortree_cppcan serve nav2 on the same system, ending the shared-name ABI collision that crashesbt_navigatoron Jazzy.What changes
project()/package.xml→behaviortree_cpp_picknik; library, ament package, CMake config, and exported targets all follow.VERSION 4.7.2,SOVERSION 4.7→libbehaviortree_cpp_picknik.so.4.7. Consumers stamp the versioned name intoDT_NEEDED, so a future ABI-breaking rebase (e.g. the 4.9 merge, #17640 in moveit_pro) bumps the soname and stale binaries fail loudly at load instead of silently corrupting — the exact failure mode of moveit_pro#20928. Minor version bumps of this fork are treated as ABI breaks.include/behaviortree_cpp_picknik/behaviortree_cpp/...), with the scoped root exported viaament_export_include_directoriesandINSTALL_INTERFACE. Consumers keep#include "behaviortree_cpp/..."unchanged, and the install no longer collides with stock'sinclude/behaviortree_cpp/.tests/CMakeLists.txt: the shared tail hardcodedbehaviortree_cpp_testwhile the ament branch derives${BTCPP_LIBRARY}_test— the names only coincided before the rename; unified on the variable.BTCPP_INCLUDE_DESTINATION(plaininclude), which theINSTALL_INTERFACEnow references.Validation (ROS Jazzy container, colcon)
libbehaviortree_cpp_picknik.so → .so.4.7 → .so.4.7.2,SONAME libbehaviortree_cpp_picknik.so.4.7(readelf), scoped headers,behaviortree_cpp_picknikConfig.cmake.find_package(behaviortree_cpp_picknik)+ament_target_dependencies, source includesbehaviortree_cpp/bt_factory.hunchanged — compiles, links, ticks a tree successfully, andreadelf -dshowsNEEDED: libbehaviortree_cpp_picknik.so.4.7.Notes / follow-ups
include/lexy— no conflict with stock 4.9 (upstream removed lexy in 4.9), so left untouched to keep the diff minimal.packages/behaviortree_cpp/package.jsonto the merged SHA with the renamed package (tracked under moveit_pro#20928), then the moveit_pro consumption switch (find_packagein ~6 packages, Dockerfile unpin of stock, mixed-loading CI guard).