Ask Your Question
1

Does rosdep respect catkin ignore files?

asked 2020-08-17 18:25:59 -0500

swiz23 gravatar image

I'm currently developing on ROS Kinetic and Melodic on Ubuntu 16.04 and 18.04 respectively. In order to make it easy for people to install my ROS packages, I have been taking advantage of the rosdep tool to automatically install dependencies. My question is - if I stick a CATKIN_IGNORE file into a specific ROS package in my src/ directory, will rosdep respect that file and not install dependencies needed by the ignored package? I already know catkin won't build that package, but I was just curious if rosdep will also not install dependencies needed by the ignored package as well.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2020-08-18 01:17:56 -0500

gvdhoorn gravatar image

if I stick a CATKIN_IGNORE file into a specific ROS package in my src/ directory, will rosdep respect that file and not install dependencies needed by the ignored package?

Yes, rosdep will not "see" the directory (or any sub directories) in which the CATKIN_IGNORE file is located and thus will not consider it when looking for and parsing package manifests.

I'm currently developing on ROS Kinetic and Melodic on Ubuntu 16.04 and 18.04 respectively. In order to make it easy for people to install my ROS packages, I have been taking advantage of the rosdep tool to automatically install dependencies.

I'm not exactly sure how you intend to use CATKIN_IGNORE with rosdep in the context of developing for multiple ROS versions. Are you maintaining two versions of the same package as siblings (ie: in the same workspace and/or repository)?

Common practice is to use branches in a VCS for this, and checking out the correct branch with the version compatible with the ROS version (and/or operating system) you target.

edit flag offensive delete link more

Comments

Hi @gvdhoorn,

Thanks for the answer. No, I am not maintaining two versions of the same package as siblings. I just wanted an answer that can be used both in ROS Kinetic and Melodic. To give context, it's more like I have some core ROS packages that I developed to control an arm. I also created some demo ROS packages that use the arm to do manipulation tasks, some of which involve a RealSense camera. So these 'demo' ROS packages currently exist in the same repo as the core ROS packages. Depending on whether an end user plans to use the arm by itself or with the camera, I'd like to either install the RealSense dependencies or not install them.

swiz23 gravatar image swiz23  ( 2020-08-18 11:52:05 -0500 )edit

Thanks for the context.

If possible, I'd suggest hosting the base packages and the ones depending on the realsense in separate repositories. With tools like wstool, vcs and rosdep, setting up a workspace with packages from multiple repositories is almost trivial, and it would avoid your users having to muck about with CATKIN_IGNORE files.

gvdhoorn gravatar image gvdhoorn  ( 2020-08-18 11:55:12 -0500 )edit

Definitely hear that approach. However, I'm just one guy maintaining 7 repos for my company controlling a multitude of robot platforms that we sell - so I'd to like to avoid creating too many repos. To get around users having to 'muck' around, I am in the process of refining some bash installation scripts I wrote that takes care of placing the CATKIN_IGNORE files in the right directories (along with installing ROS if needed, my ROS packages if needed, setting up Environment variables if needed, etc...).

swiz23 gravatar image swiz23  ( 2020-08-18 12:00:36 -0500 )edit

If you're happy with the approach you've chosen, I'm happy.

gvdhoorn gravatar image gvdhoorn  ( 2020-08-18 14:02:49 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2020-08-17 18:25:59 -0500

Seen: 87 times

Last updated: Aug 18 '20