# Enabling the ABI checker for your next ROS2 F releases

**URL:** <https://discourse.openrobotics.org/t/enabling-the-abi-checker-for-your-next-ros2-f-releases/12811>\
**Category:** ROS General\
**Tags:** release, ros2, abi\
**Created:** [February 17, 2020, 5:01pm UTC](https://discourse.openrobotics.org/t/enabling-the-abi-checker-for-your-next-ros2-f-releases/12811 "2020-02-17T17:01:12Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Thomas\_Moulard](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/thomas_moulard/32/3770_2.png) [@Thomas\_Moulard](https://discourse.openrobotics.org/u/Thomas_Moulard)\
**Post date:** [February 17, 2020, 5:01pm UTC](https://discourse.openrobotics.org/t/enabling-the-abi-checker-for-your-next-ros2-f-releases/12811/1 "2020-02-17T17:01:12Z")

</div>

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](http://build.ros2.org/job/Epr __rcl__ ubuntu_bionic_amd64/API_5fABI_20report/) 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: [REP 153 -- ROS distribution files (ROS.org)](https://www.ros.org/reps/rep-0153.html#api-abi-analysis)

Some examples of packages already having the ABI checker enabled: [Enable test\_abi in: rclcpp, rcl, rclpy, turtlesim, ament\_cmake by j-rivero · Pull Request #23281 · ros/rosdistro · GitHub](https://github.com/ros/rosdistro/pull/23281)

Thank you!

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

---

<div class="post-metadata">

**Author:** ![kyrofa](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/kyrofa/32/9577_2.png) [@kyrofa](https://discourse.openrobotics.org/u/kyrofa)\
**Post date:** [June 18, 2020, 7:45pm UTC](https://discourse.openrobotics.org/t/enabling-the-abi-checker-for-your-next-ros2-f-releases/12811/2 "2020-06-18T19:45:06Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![clalancette](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/clalancette/32/4797_2.png) [@clalancette](https://discourse.openrobotics.org/u/clalancette)\
**Post date:** [June 18, 2020, 8:01pm UTC](https://discourse.openrobotics.org/t/enabling-the-abi-checker-for-your-next-ros2-f-releases/12811/3 "2020-06-18T20:01:57Z")

</div>

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:

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

```

And I get a file installed:

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

```

That seems to have all of the symbols.

---

<div class="post-metadata">

**Author:** ![kyrofa](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/kyrofa/32/9577_2.png) [@kyrofa](https://discourse.openrobotics.org/u/kyrofa)\
**Post date:** [June 18, 2020, 8:31pm UTC](https://discourse.openrobotics.org/t/enabling-the-abi-checker-for-your-next-ros2-f-releases/12811/4 "2020-06-18T20:31:53Z")

</div>

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](https://github.com/osrf/auto-abi-checker/blob/a2cb9bde4bd8c97817bc9a637fe1ddb9d6425e12/src/auto_abi_checker/srcs_ros.py). 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.
