ros-controls / ros2_control_ci

This repository holds reusable workflows for CI of the ros2_control framework.
https://control.ros.org
Apache License 2.0
4 stars 3 forks source link

gazebo compatibility on jammy #82

Closed christophfroehlich closed 6 months ago

christophfroehlich commented 6 months ago

see #77, I accidentally broke the old PR

christophfroehlich commented 6 months ago

@azeey thanks for the hint with the skip-keys for rosdep. It compiles now, but it seems that the plugin can't be loaded

https://github.com/ros-controls/ros2_control_ci/actions/runs/9079260048/job/24948084469?pr=82

 [ruby $(which ign) gazebo-1] Library [/home/runner/work/ros2_control_ci/ros2_control_ci/.work/target_ws/install/gz_ros2_control/lib/libgz_ros2_control-system.so] does not export any plugins. The symbol [IgnitionPluginHook] is missing, or it is not externally visible.
 [ruby $(which ign) gazebo-1] [NON-XML-CHAR-0x1B][1;31m[Err] [SystemLoader.cc:103] [NON-XML-CHAR-0x1B][0m[NON-XML-CHAR-0x1B][1;31mFailed to load system plugin [[NON-XML-CHAR-0x1B][0m[NON-XML-CHAR-0x1B][1;31mgz_ros2_control-system[NON-XML-CHAR-0x1B][0m[NON-XML-CHAR-0x1B][1;31m] : couldn't load library on path [[NON-XML-CHAR-0x1B][0m[NON-XML-CHAR-0x1B][1;31m/home/runner/work/ros2_control_ci/ros2_control_ci/.work/target_ws/install/gz_ros2_control/lib/libgz_ros2_control-system.so[NON-XML-CHAR-0x1B][0m[NON-XML-CHAR-0x1B][1;31m].[NON-XML-CHAR-0x1B][0m[NON-XML-CHAR-0x1B][1;31m[NON-XML-CHAR-0x1B][0m

What is this thing with IgnitionPluginHook?

christophfroehlich commented 6 months ago

The IgnitionPluginHook is coming from trying to use Fortress. In ros-controls/gz_ros2_control#277, I removed any mention of ignition, which cleaned up the codebase. Building ros_gz from source would help, but I'm not sure we can promise to keep ros_gz's rolling branch compatible with humble, so this might fail at some point.

Thanks for the explanation. ros_gz_bridge needs https://index.ros.org/p/rosidl_pycommon/#humble which is not released for humble. Trying to compile https://github.com/ros2/rosidl/tree/rolling/rosidl_pycommon from source as well? I have the feeling that this will not work (for a long time).

But then it still fails on iron with

   --- stderr: ros_gz_bridge
  CMake Error at CMakeLists.txt:83 (add_library):
    Target "ros_gz_bridge" links to target "yaml-cpp::yaml-cpp" but the target
    was not found.  Perhaps a find_package() call is missing for an IMPORTED
    target, or an ALIAS target is missing?

  CMake Generate step failed.  Build files cannot be regenerated correctly.

was there any change with CMake, exporting the targets?

I get the feeling that it is just not possible any more (with reasonable effort) to use the rolling-version of gz_ros2_control on older distros?

azeey commented 6 months ago

There were some major changes in yaml_cpp_vendor for Jazzy including switching to ament_vendor_package and updating to yaml-cpp 0.8 (from 0.7), so I suspect that has something to do with it. In previous versions, you didn't have to link against the yaml-cpp::yaml-cpp target (see commit that fixed the build in ros_gz).

christophfroehlich commented 6 months ago

Thanks for the hint. I see that this might not work well without lots of handcrafting in the future. We will try to support gazebo_ros2_control@rolling as long as possible for the older distros instead.

azeey commented 6 months ago

@christophfroehlich I will mention that Gazebo classic has been removed from Noble, so any package that depends on it will not be releasable into rolling.

christophfroehlich commented 6 months ago

@christophfroehlich I will mention that Gazebo classic has been removed from Noble, so any package that depends on it will not be releasable into rolling.

to specify my argument: we want to support it to be built from source. I know that binary releases won't happen for gazebo classic - related packages on rolling.