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

Bloom: Releasing from multiple upstream repos which depend on each other

asked 2013-01-02 21:46:13 -0500

danielm0hr gravatar image

updated 2014-01-28 17:14:43 -0500

ngrennan gravatar image


I'm trying to use bloom to build some debian packages for my project. This project consists of multiple git repos which all contain one metapackage, each with multiple packages. Packages have build dependencies to packages in other metapackages/repositories.

I'm able to build the project and single packages locally with catkin in every possible order when pulling all the repos into the src directory of one single catkin workspace. All dependencies are considered correctly.

What would be the correct workflow when using bloom to release such a project? In the end I would like to have a debian package for every metapackage/repository.

I'm able to build these debians with bloom when considering the correct build order manually and installing successfully built packages to satisfy dependencies before trying to build new ones. But I'm sure that this is not the way it's meant to be used. Is there a way to release in the correct order automatically and without first having to install built packages manually to satisfy dependencies?

edit retag flag offensive close merge delete


Any progress on this or suggestions how this setup can be handled for binary (private) releases?

mwe gravatar image mwe  ( 2016-01-22 04:15:47 -0500 )edit

This should be a comment and not an answer. Also if you have more than one package use a build farm, either the Ros build farm or the Ros buildbot setup.

William gravatar image William  ( 2016-01-22 09:06:27 -0500 )edit

2 Answers

Sort by ยป oldest newest most voted

answered 2013-02-02 06:16:50 -0500

joq gravatar image

From the lack of other answers, I suspect that your manual method is the only option currently available, pending future tool development.

Perhaps you should open an enhancement issue asking for a solution.

edit flag offensive delete link more

answered 2016-01-22 10:55:45 -0500

Dirk Thomas gravatar image

As far as I understand you layout you have packages in two repos A and B. And some from A depend on some in B as well as some in B depend on some in A. That is a circular dependency and is not a supported layout with the ROS tools. For releasing with bloom it is a chicken-egg-problem since neither can be released first since its dependencies are unavailable and therefore no Debian control files can be generated.

So you shouldn't expect this to become supported anytime in the future but consider to refactor the separation of the packages into repos in way which is not circular.

To work around the issue you can do the following process (which will take significant extra effort): * release the packages from repo A while blacklisting all packages which have dependencies from B * release the packages from repo B (hopefully the released packages from A cover all dependencies, otherwise you need to to the first two steps repeatedly adding more packages every release) * then release repo A again but without blacklisting any packages.

edit flag offensive delete link more

Question Tools



Asked: 2013-01-02 21:46:13 -0500

Seen: 413 times

Last updated: Jan 22 '16