ros2 / ros2/rclcpp

rclcpp needs specific version of rcl [humble]

Open
#2,249 4 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
805
Forks
564
Avg merge
1d 17h
Merged PRs (30d)
27

Description

Bug report

Required Info:

  • Operating System:
    • Ubuntu 22.04
  • Installation type:
    • binaries
  • Version or commit hash:
    • ROS 2 Humble Hawksbill - Patch Release 4
  • DDS implementation:
    • N/A
  • Client library (if applicable):
    • rclcpp, rcl
Steps to reproduce issue
rocker --home --network host -- ros:humble-ros-base
apt update; apt install ros-humble-rclcpp # do not update ros-humble-rcl
# build any simple colcon package
Expected behavior

No errors

Actual behavior

Getting error:

/usr/bin/ld: /opt/ros/humble/lib/librclcpp.so: undefined reference to `rcl_clock_time_started'
Additional information

Ever since PR #2210 has been merged, rclcpp now requires rcl_clock_time_started to be available in the rcl library, which was added here. Currently there's no version check for rcl and now that the Patch 4 with this change is out it's possible to update rclcpp without updating rcl:

Package: ros-humble-rclcpp
Version: 16.0.5-2jammy.20230721.204813
Priority: optional
Section: misc
Maintainer: Ivan Paunovic <ivanpauno@ekumenlabs.com>
Installed-Size: 3342 kB
Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 12), ros-humble-ament-index-cpp, ros-humble-builtin-interfaces, ros-humble-libstatistics-collector, ros-humble-rcl, ros-humble-rcl-interfaces, ros-humble-rcl-yaml-param-parser, ros-humble-rcpputils, ros-humble-rcutils, ros-humble-rmw, ros-humble-rosgraph-msgs, ros-humble-rosidl-runtime-cpp, ros-humble-rosidl-typesupport-c, ros-humble-rosidl-typesupport-cpp, ros-humble-statistics-msgs, ros-humble-tracetools, ros-humble-ros-workspace

I scoured the ros2 infrastructure stuff and can't find where dependency versions are defined or how they're even built (using cpack or bloom), so I hope it's the correct place for this issue.

If someone tells me where this is defined, I can even open a PR for this fairly minor issue.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with ros_buildfarm/scripts/release/build_binarydeb.py and the generated package metadata, then compare rclcpp PR #2210 with rcl PR #1021. Trace how the rclcpp dependency on rcl is declared and verify the reported binary-install reproduction. Done means incompatible rclcpp and rcl versions are not installable together and the linker error no longer occurs.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
build-system, release
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.