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

Revision history [back]

click to hide/show revision 1
initial version

Not if they have the same package name. Currently you cannot build multiple debs with different configurations for a single package.

What is the use case specifically, it might be easier for me to suggest an alternative solution using bloom or something else.

Not if they have the same package name. Currently you cannot build multiple debs with different configurations for a single package.

What is the use case specifically, it might be easier for me to suggest an alternative solution using bloom or something else.

EDIT

Our pipeline works best when packages do not required configuration, this may not be optimal, but it keeps our infrastructure simple. For better or worse that is the way it is. If you want multiple options to be available side by side, then you'll need to do what I have come to call configuration by packages. This is where you change the behavior of a package based on the other packages available around it.

This is done with message generation, if genlisp is available all message packages will build for lisp, otherwise it will not. This is where a package is affected by others in the workspace.

The other method, and the one I recommend, is where you have a 'source' package which exports the source code and/or a CMake project, and then you have 'configuration' packages which depend on this 'source' package and any other, normally optional, dependencies. The 'configuration' package can then build (and install and distribute) the contents of the 'source' package with what ever configurations and dependencies it wants.

Once you get to the distribution step, you would need to modify your controls file template to add a conflicts rule, or properly namespace the libraries and headers installed by each 'configuration' package.

This isn't ideal, but its the best solution I can come up with in the current infrastructure. It might be worth investigating how to do this at the packaging stage (with bloom), but I don't have the cycles for that right now, though I would work with you to design and integrate a solution if you're so motivated.