ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

How to release for multiple ROS versions when version dependent patches are needed?

asked 2011-12-04 19:45:31 -0500

Thomas gravatar image

updated 2011-12-06 19:03:31 -0500


due to the recent change in Bullet[1], I have to patch my stack when releasing for unstable but not when releasing for Electric. The SCM I use for this stack is Git.

Then problem is that even if maintains different branches for each ROS version (unstable and electric in my case), it always update them using the current state of the master branch.

What I would like to do in this case is comitting myself on unstable to handle [1]. Then I would like to use the current state of the unstable branch to create the release.

Is it possible to do so? Is there something I am missing?


[1] [ros-users Bullet change in unstable for Fuerte](

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2012-04-09 17:01:18 -0500

tfoote gravatar image

The updates the branch defined in the rosdistro file. If you change the definition in the rosdistro file for each release it will pull from a different branch for the specified release.

For example in electric.rosdistro define the dev-branch to be electric-devel and the unstable.rosdistro file define the dev-branch to be master, etc.

edit flag offensive delete link more


While releasing from a different branch for each distro is the "standard" ROS solution, that is not what external groups like ours want. We need our development trunk to work with two successive distros. Generally, tick-tock makes that possible, though it often means slower adoption of new features.

joq gravatar image joq  ( 2012-04-10 05:12:31 -0500 )edit

answered 2011-12-05 13:24:20 -0500

joq gravatar image

updated 2011-12-06 09:53:23 -0500

Partial answer:

I had a similar problem for geographic_info. While I strongly prefer to maintain support for both distributions in a single source tree, ROS does not make that easy.

In my case, the cleanest solution was to drop the direct dependency on bullet, and use the equivalent tf types instead. That may not work for everyone.

If the tf types do not meet your needs, it might help for your C++ code to query the ROS version using pre-processor tests. Unfortunately, I know of no way to hide the bullet dependency differences in manifest.xml. As a tick-tock measure, maybe we should keep an empty bullet package around for Fuerte with just a rosdep for the system library.

edit flag offensive delete link more


Thanks, this is an interesting workaround, I will try that :)
Thomas gravatar image Thomas  ( 2011-12-05 22:46:03 -0500 )edit
I just noticed that unfortunately this version number is currently broken in unstable, see
Thomas gravatar image Thomas  ( 2011-12-06 19:19:19 -0500 )edit
Well, I guess that's why we call it "unstable". :-)
joq gravatar image joq  ( 2011-12-07 01:32:04 -0500 )edit

Question Tools

1 follower


Asked: 2011-12-04 19:45:31 -0500

Seen: 448 times

Last updated: Apr 09 '12