ros2 / rmw_implementation

CMake infrastructure and dependencies for rmw implementations
Apache License 2.0
21 stars 48 forks source link

missing depends cyclonedds #207

Open realtime-neil opened 1 year ago

realtime-neil commented 1 year ago

Bug report

Required Info:

Steps to reproduce issue

apt-cache show ros-foxy-rmw-implementation | grep-dctrl --no-field-names --show-field=Depends --field=Depends 'ros-foxy-rmw-cyclonedds-cpp'

Expected behavior

ros-foxy-rmw-implementation has ros-foxy-rmw-cyclonedds-cpp in its Depends.

Actual behavior

ros-foxy-rmw-implementation does not have ros-foxy-rmw-cyclonedds-cpp in its Depends.

Additional information

https://github.com/ros2-gbp/rmw_implementation-release/blob/debian/foxy/focal/rmw_implementation/debian/control

moriarty commented 1 year ago

I just came across something similar to this.

I installed ros-iron-rmw-cyclonedds-cpp to get around it. I believe there is a dependency missing but not specifically to cyclonedds. I think it depends on one of the (vendor)dds-cpp implementations... Or maybe just some documentation missing.

Here is my line 11

    find_package(controller_interface REQUIRED)
CMake Error at /opt/ros/iron/share/rmw_implementation_cmake/cmake/get_default_rmw_implementation.cmake:60 (message):
  Could not find ROS middleware implementation 'rmw_cyclonedds_cpp'.  Choose
  one of the following: rmw_fastrtps_cpp
Call Stack (most recent call first):
  /opt/ros/iron/share/rmw_implementation/cmake/rmw_implementation-extras.cmake:19 (get_default_rmw_implementation)
  /opt/ros/iron/share/rmw_implementation/cmake/rmw_implementationConfig.cmake:41 (include)
  /opt/ros/iron/share/rcl/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
  /opt/ros/iron/share/rcl/cmake/rclConfig.cmake:41 (include)
  /opt/ros/iron/share/rclcpp_lifecycle/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
  /opt/ros/iron/share/rclcpp_lifecycle/cmake/rclcpp_lifecycleConfig.cmake:41 (include)
  /opt/ros/iron/share/hardware_interface/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
  /opt/ros/iron/share/hardware_interface/cmake/hardware_interfaceConfig.cmake:41 (include)
  /opt/ros/iron/share/controller_interface/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
  /opt/ros/iron/share/controller_interface/cmake/controller_interfaceConfig.cmake:41 (include)
  CMakeLists.txt:11 (find_package)

https://github.com/ros2/rmw_implementation/blob/29640b9f2b480a3e6c13126203714d4bb6d5e7d2/rmw_implementation/package.xml#L24-L32

moriarty commented 1 year ago

My issue was due to exporting RMW_IMPLEMENTATION in my bashrc.

export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp

When I unset the RMW_IMPLEMENTATION it worked fine. I had set it for another project.

Unless there a nice way to depend on a rmw_implementation in a package.xml so that when a user runs:

rosdep install --ignore-src --from-paths src -y -r