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

Declaring a dependency on a system package that is not available on Windows

asked 2020-03-06 11:40:34 -0500

updated 2020-03-06 11:47:12 -0500

I've searched for this (seemingly simple) question and went looking through the Windows CI logs, but haven't found a clear answer.

What happens if you have a package that declares a dependency (e.g. <depend> or <exec_depend>) on a system package that is (by design) not available on Windows?

Of course, I'm assuming that the CMakeLists.txt is properly set up to detect Windows and "fail" (or reduce features). I'm just wondering what happens with rosdep for CI/packaging jobs, especially for core ROS 2 packages. Does it fail? Does it just ignore the package?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2020-03-06 11:50:01 -0500

Dirk Thomas gravatar image

rosdep isn't available on Windows. Instead you need to manually install dependencies. So if you don't have a certain dependency available but the CMake logic works around this gracefully then the package will build just fine. There is no logic during colcon build which will test if dependencies declared in the manifest are present or not.

On the other hand if you would want to declare a dependency which would be possible to provide on Windows the current CI builds on would at first fail until we update the Dockerfile used on Windows to actually install that dependency.

edit flag offensive delete link more


Great, that makes sense. Thank you!

christophebedard gravatar image christophebedard  ( 2020-03-06 12:00:27 -0500 )edit

Question Tools



Asked: 2020-03-06 11:40:34 -0500

Seen: 85 times

Last updated: Mar 06 '20