Skip to content

Add RoboPlan packages - #47

Draft
sea-bass wants to merge 2 commits into
RoboStack:mainfrom
sea-bass:add-roboplan
Draft

sea-bass wants to merge 2 commits into
RoboStack:mainfrom
sea-bass:add-roboplan

Conversation

@sea-bass

Copy link
Copy Markdown
Contributor

NOTE: We can't do dummy packages for the roboplan core repo like in other landed PRs because of open-planning/roboplan-ros#68 -- actually I'll need to go back and fix Jazzy and Rolling because of this.

Closes #16

@sea-bass

Copy link
Copy Markdown
Contributor Author

linux-64 failure here is due to the failure in https://github.com/RoboStack/ros-lyrical/actions/runs/34697655822

@traversaro

Copy link
Copy Markdown
Member

Can I kill the jobs? They are starving the actual rebuilds jobs, and actually building all the packages and not the roboplan one.

@traversaro traversaro closed this Sep 12, 2026
@traversaro traversaro reopened this Sep 12, 2026
@sea-bass

Copy link
Copy Markdown
Contributor Author

Yes, please kill as needed!

@sea-bass

sea-bass commented Sep 13, 2026

Copy link
Copy Markdown
Contributor Author

gah I need to make sure the Windows versions get the dlfcn-win32 dependency since the conda-forge version was taking care of that for us, one moment please

@traversaro

Copy link
Copy Markdown
Member

I am not really sold on not using the conda-forge packages here, it seems to me that we are just increasing the chances of ABI conflicts. I will comment more on this tomorrow.

@sea-bass

sea-bass commented Sep 13, 2026

Copy link
Copy Markdown
Contributor Author

The problem is that there are also ROS wrapper packages on top that are not on conda-forge and need to be ABI compatible.

open-planning/roboplan-ros#68

And older distros of ROS depend on nanobind versions that don't have the stable ABI feature.

I guess we could use patches on the roboplan-ros packages?

@traversaro

Copy link
Copy Markdown
Member

Ok, I opened conda-forge/nanobind-feedstock#50 upstream for a long term solution.

For the short term, one thing we need for sure is to add a nanobind-abi host dependency in roboplan's recipe.yaml in roboplan-feedstock , and also add it as a dependency in roboplan-ros , either in patches/dependencies.yaml, and/or in the nanobind rosdep key (I could not find any) at the moment. This solves the problem of mixing different nanobind versions.

To solve stable vs non-stable, to have a simple solution can't we just have a CMake option that we can set in pkg_additional_info.yaml's additional_cmake_args to select whatever we are using in roboplan's conda-forge package?

@traversaro

Copy link
Copy Markdown
Member

I am just suggesting this to avoid even more confusing ABI errors when people (or agent) inevitably will mix roboplan from conda-forge and ros2-roboplan from robostack.

@sea-bass

Copy link
Copy Markdown
Contributor Author

the nanobind rosdep key (I could not find any) at the moment.

It's nanobind-dev: https://github.com/ros/rosdistro/blob/fdd040e91503dfdcac6138e6b01449df72249df0/rosdep/base.yaml#L8612

@traversaro

Copy link
Copy Markdown
Member

the nanobind rosdep key (I could not find any) at the moment.

It's nanobind-dev: https://github.com/ros/rosdistro/blob/fdd040e91503dfdcac6138e6b01449df72249df0/rosdep/base.yaml#L8612

Ack, then we should add nanobind-dev: [nanobind, nanobind-abi] in https://github.com/RoboStack/ros-lyrical/blob/main/robostack.yaml .

@sea-bass

Copy link
Copy Markdown
Contributor Author

All clear on the first parts.

On the last part about the CMake arg, you mean some option in roboplan-ros that removes this inconsistency by adding OPTIONAL_COMPONENTS Development.SABIModule?

open-planning/roboplan-ros#68 (comment)

@traversaro

Copy link
Copy Markdown
Member

All clear on the first parts.

On the last part about the CMake arg, you mean some option in roboplan-ros that removes this inconsistency by adding OPTIONAL_COMPONENTS Development.SABIModule?

open-planning/roboplan-ros#68 (comment)

I guess what changes the type of module is STABLE_ABI passed to nanobind_add_module in https://github.com/open-planning/roboplan/blob/main/roboplan_core/bindings/CMakeLists.txt#L93, right? Or is STABLE_ABI silently ignored somehow here?

@sea-bass

sea-bass commented Sep 14, 2026

Copy link
Copy Markdown
Contributor Author

It's likely that it's silently ignored (or with a warning that we're not seeing).

I think that we're observing is that if you take roboplan from its conda-forge package, you're seeing the else() case in here:

https://github.com/open-planning/roboplan/blob/eac8ca779dce417d0b280930530ba905d29c7b23/roboplan_core/bindings/CMakeLists.txt#L28-L31

which probably makes the STABLE_ABI kick in correctly here.


however, in the roboplan-ros repo we don't have such an if-else structure:

https://github.com/open-planning/roboplan-ros/blob/2f45e58533c6d3a25f4f664b0fb29ae09b6e98d5/roboplan_ros_cpp/bindings/CMakeLists.txt#L4

so even though we are using STABLE_ABI in e.g. here (https://github.com/open-planning/roboplan-ros/blob/2f45e58533c6d3a25f4f664b0fb29ae09b6e98d5/roboplan_ros_cpp/bindings/CMakeLists.txt#L23), maybe that part is being ignored?

@sea-bass

Copy link
Copy Markdown
Contributor Author

@traversaro As an update here, we took the CMake route and added CI jobs for testing mix/match conda-forge roboplan + ament built roboplan-ros: open-planning/roboplan-ros#69

I'll revisit this PR when we cut the 0.7.0 releases.

@traversaro

Copy link
Copy Markdown
Member

@traversaro As an update here, we took the CMake route and added CI jobs for testing mix/match conda-forge roboplan + ament built roboplan-ros: open-planning/roboplan-ros#69

I'll revisit this PR when we cut the 0.7.0 releases.

Great, thanks!

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.

Package request: roboplan

2 participants