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

Custom rosdep.yaml in my package

asked 2015-04-24 05:04:35 -0500

peci1 gravatar image

Hey ROS geeks, I have a custom dependency (in my case acpi) which is not available in the public rosdep rules.

So I found this page: , which says every package can have its own rosdep.yaml file which will be used to satisfy dependencies in its package.xml.

So I added a rosdep.yaml file in catkin_ws/src/my_package/rosdep.yaml, ran rosdep update. However, rosdep resolve acpi tells me it can't find any satisfying rosdep rule for acpi (I run it in a ROS-enabled terminal).

Is there something more needed to do to have it working?

NB: Adding a link to /etc/ros/rosdep/sources.list.d is not an option for me, since I want the package to work "out of the box" when someone clones the repo and calls rosdep-update; rosdep install --from-paths src -i.

Thanks for advices.

edit retag flag offensive close merge delete



Not a real answer, but is there anything preventing you from contributing the rules for acpi to the main repository?

gvdhoorn gravatar image gvdhoorn  ( 2015-04-24 05:55:44 -0500 )edit

I can imagine some of our custom dependencies could go in the public list, but I'm not sure it'd be wise to add all of them (since we're not going to release our codes in the upcoming year or two, and a lot of things can change in the end and the dependecies can change or disappear).

peci1 gravatar image peci1  ( 2015-04-24 17:30:45 -0500 )edit

2 Answers

Sort by ยป oldest newest most voted

answered 2015-04-24 19:16:02 -0500

tfoote gravatar image

That page was out of date. Please see the documentation here:

It used to be that you could add rosdep.yaml files in your source space, but because rosdep is a system wide setting we don't support source space modifications any more. The above link tells you how to setup a custom source.

edit flag offensive delete link more


Don't tell me it's gone :( It still seems to me being able to specify the rosdep rules directly in you ROS package's source would be of some use. Anyway, rosdep makes use of catkin to resolve dependencies in your workspace, so why couldn't it also read rosdep.yaml files in the packages?

peci1 gravatar image peci1  ( 2015-04-25 09:45:45 -0500 )edit

It is convenient, however it leads to unresolvable conflicts. If two local packages define a rosdep which is either in conflict or incompatible you can get a workspace which cannot be built.

tfoote gravatar image tfoote  ( 2015-04-25 20:50:23 -0500 )edit

Well, it seems like I have to accept this new way rosdep works. Just out of curiosity - are the conflicting rosdeps a real use-case you've faced, or is it just theoretical?

peci1 gravatar image peci1  ( 2015-04-26 04:36:31 -0500 )edit

The conflicting rosdep rules were a very real problem, especially picking versions of packages or libraries. This was a while ago and even within the Willow Garage development teams we had trouble.

tfoote gravatar image tfoote  ( 2015-04-26 05:06:07 -0500 )edit

And what about the option to provide a bash script instead of package name? Has it also been removed? I tried it right now and it doesn't seem to be working

peci1 gravatar image peci1  ( 2015-04-27 05:50:10 -0500 )edit

Ahh, I see I can "misuse" the source installer by creating an rdmanifest file and pointing to it. Great.

peci1 gravatar image peci1  ( 2015-04-27 06:49:49 -0500 )edit

answered 2022-09-14 15:03:56 -0500

Rufus gravatar image

I would add that if you want to use a custom index.yaml or index-v4.yaml (e.g. if you modified any distributions.yaml), you need to set the ROSDISTRO_INDEX_URL environment variable

Other useful links

edit flag offensive delete link more

Question Tools



Asked: 2015-04-24 05:04:35 -0500

Seen: 1,911 times

Last updated: Sep 14 '22