ROS Resources: Documentation | Support | Discussion Forum | Service Status | Q&A answers.ros.org

Enabling the ABI checker for your next ROS2 F releases

Hi all,
as we’re approaching the ROS 2 F release date, I wanted to highlight a feature in Bloom that we didn’t advertise and you should probably be using!

It is now possible to enable automatic ABI checks on Bloom release branches.

Every time you open a PR on a release branch, the ROS buildfarm can generate a report indicating whether or not this PR would break ABI.

As a reminder, stable packages should keep a stable ABI throughout any ROS distribution (can break ABI between E and F, but not between F patch releases).

Getting the report for your Bloom release packages is as simple as switching a flag to true in rosdistro!

The documentation is in the REP 153: https://www.ros.org/reps/rep-0153.html#api-abi-analysis

Some examples of packages already having the ABI checker enabled: https://github.com/ros/rosdistro/pull/23281

Thank you!

edit: this work was done by @jrivero - thanks Jose!

15 Likes

I’ve been looking into this, and I must admit I’m a bit confused by something. abi-compliance-checker states that it requires debug info. However, to the length of my knowledge, the ROS distro is not built with debug info and no -dbg debs exist (I assume this would be a whole bloom feature). Am I missing something, or does auto-abi-checker not use abi-compliance-checker the way it’s supposed to?

As far as I know, debuild has generated -dbgsym packages by default since Ubuntu 18.04 (no changes to bloom needed). At least, I can do:

sudo apt-get install ros-foxy-rclcpp-dbgsym

And I get a file installed:

/usr/lib/debug/.build-id/db/6916ff4097b6bab4ab993dcc6886eb526770bf.debug

That seems to have all of the symbols.

1 Like

Huh, how interesting, I missed that-- thanks for the pointer! I’ve since learned that pkg-create-dbgsym went away in Bionic and debhelper starting doing that by default.

That said, I’m not seeing those used. For example, here. Note the compiler flags being used there as well (no debug). I obviously have no clue how this utility works yet, I’m still poking around, but I still feel like I should be seeing more debug stuff in there.