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

Bloom: Creating debs. Rosdep can't resolve key.

asked 2012-12-11 04:12:29 -0600

danielm0hr gravatar image

updated 2014-01-28 17:14:32 -0600

ngrennan gravatar image

Hi,

I'm trying to create debian packages from my catkin packages with bloom. After the bloom-import-upstream step has finished, the bloom-generate step fails when generating the first package (A) with Could not resolve rosdep key 'B', where B is the name of another package in the same metapackage on which A depends.

rosdep resolve B also returns ERROR: no rosdep rule for 'B'.

Any ideas? Thanks.

edit retag flag offensive close merge delete

3 Answers

Sort by ยป oldest newest most voted
0

answered 2012-12-18 18:13:17 -0600

Dirk Thomas gravatar image

updated 2012-12-18 18:14:48 -0600

Bloom resolves all package names (for all build and buildtool dependencies) using rosdep2 which uses the distro.yaml files (among other things) from https://github.com/ros/rosdistro. Until recently that was a problem for first-time releases (or private releases) since they are not in this list.

With the latest bloom version (0.2.13) this is not a problem anymore since all packages from the repository you are about to release will be considered "ok". So please update your "python-bloom" package and retry.

edit flag offensive delete link more

Comments

OK, thank you. This works now... At least for packages which do not depend on other "private" packages from other repositories. I posted another question regarding this: http://bit.ly/UfbaRz . Perhaps you can help there, too?

danielm0hr gravatar image danielm0hr  ( 2013-01-02 21:51:07 -0600 )edit

Another thing: Why do I have to enter my SSH password seven times when accessing the git repo with the new version of bloom? Before, this was two times (Also annoying, but acceptable..)

danielm0hr gravatar image danielm0hr  ( 2013-01-02 21:53:02 -0600 )edit

I seem to be having a similar issue - my catkin workspace contains two packages, one of which depends on the other. When I try to use bloom-generate rosdebian just to build a .deb for the pacakge, I receive the same Could not resolve rosdep key error as in the OP. Python-bloom version 0.6.4-1

harrisonmg gravatar image harrisonmg  ( 2018-05-22 16:18:33 -0600 )edit

@harrisonmg This is a 5 year old question. Please ask a new question with enough information to reproduce and reference this one.

tfoote gravatar image tfoote  ( 2018-05-22 19:19:34 -0600 )edit

@tfoote Will do, thanks.

harrisonmg gravatar image harrisonmg  ( 2018-05-23 16:46:43 -0600 )edit
1

answered 2012-12-12 23:57:29 -0600

danielm0hr gravatar image

Thanks for the answer. But I don't have a groovy.yaml anywhere. Where should it be? And what do you mean with "wait for your pull request to be applied"?

Also, there's nothing in the bloom documentation about having to mess with rosdep somewhere. Is it possible that I'm just missing some setting in one of my package.xml files? On the basis of what does rosdep register the inter-package dependencies?

Just tried with one simple package A which only depends on ros packages. This worked perfectly. But as soon as I transform it to a metapackage B which only contains this package A I get [git-bloom-generate rosdebian]: Could not resolve rosdep key 'A'. I saw that it first tries to generate a release for B. Could it be that just the order of generation is wrong? And if yes, can I change it?

edit flag offensive delete link more

Comments

Please read the support guidelines before posting. This is not a forum. Do not create answers for comments or discussion. Instead edit your original post or use the edit functionality.

Lorenz gravatar image Lorenz  ( 2012-12-13 01:58:59 -0600 )edit

groovy.yaml is in http://github.com/ros/rosdistro and it's the file used for generating releases. The bloom documentation only mentions that briefly. rosdep is used to resolve dependencies and to decide which dependencies are ros packages and which ones are system dependencies.

Lorenz gravatar image Lorenz  ( 2012-12-13 02:02:09 -0600 )edit

Sorry for breaking the posting rules. I was not aware of that.

Anyway: I think I now understand what you meant. But I don't want to contribute to ROS, I just want to build debian packages out of my catkin workspace locally. As I said, this works if no metapackage is present. Why?

danielm0hr gravatar image danielm0hr  ( 2012-12-13 02:09:17 -0600 )edit

Sorry for breaking the posting rules. I was not aware of that.

danielm0hr gravatar image danielm0hr  ( 2012-12-13 02:09:18 -0600 )edit

As I said, in that case you need to create fake-rosdep rules. Have a look at the rosdep documentation on how to contribute rules. You can basically use your own rosdep database. Add your packages in the meta package there and the debian build should work.

Lorenz gravatar image Lorenz  ( 2012-12-13 10:18:10 -0600 )edit

Ok, now I see what you meant. How would I do that? As far as I understand the only way is to upload some yaml file to a remote server and enter the adress in the sources list of rosdep. Specifying a local file doesn't work, already tried that. Isn't there another way?

danielm0hr gravatar image danielm0hr  ( 2012-12-13 23:13:43 -0600 )edit

Ok, now I see what you meant. How would I do that? As far as I understand the only way is to upload some yaml file to a remote server and enter the adress in the sources list of rosdep. Specifying a local file doesn't work, already tried that.

danielm0hr gravatar image danielm0hr  ( 2012-12-13 23:13:44 -0600 )edit
0

answered 2012-12-11 05:16:56 -0600

Lorenz gravatar image

updated 2012-12-11 05:17:10 -0600

As far as I understand it, bloom uses rosdep2 to find out the package names of the dependencies which uses the distro yaml file of the ros distro to check if a package is released with bloom. Otherwise it searches for the package in the rosdep database.

So to solve your problem, I guess you have to add your packages to the distro yaml file (groovy.yaml) and wait for your pull request to be applied. You maybe could also generate dummy entries in your local rosdep database. But don't forget that in that case, to get the debian dependencies specified in the debian subdir somewhere in the release repo, package foo needs to resolve to ros-groovy-foo.

edit flag offensive delete link more

Question Tools

Stats

Asked: 2012-12-11 04:12:29 -0600

Seen: 2,364 times

Last updated: Dec 18 '12