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

"rosdep install" ignores a package that's actually missing

asked 2013-11-10 22:42:19 -0500

130s gravatar image

updated 2013-11-11 16:49:42 -0500

I'm seeing that rosdep doesn't resolve a particular package dependency as follows.

I have packages A, B, C. Dependency graph: A <-- B <-- C

However, rosdep install behaves differently:

$ rosdep install C  --> successfully tries to install B, and A
$ rosdep install B  --> "All required rosdeps installed successfully" when A is actually missing.

package.xml of B and C look similar; they have build and run _depend to depending packages.

As of today, rosdistro/groovy/release.yaml shows no difference in how each package is listed.

Since apt seems to show the dependency as intended, I suspect something is wrong on ROS' end.

$ apt-cache rdepends ros-groovy-hrpsys-ros-bridge
 Reverse Depends:
    ros-groovy-hrpsys-ros-bridge:i386
    ros-groovy-rtmros-common
    ros-groovy-hironx-ros-bridge

Thanks!

python-rosdep 0.10.24-1 on Groovy, Precise


Update) Responding to @tfoote's comment, I now add the concrete output as follows. To reiterate the issue, hrpsys_ros_bridge is the one that gets installed only with certain combination:

rospasta@flour:$ ls 
hironx_ros_bridge nextage_ros_bridge    (hrpsys_ros_bridge is out of ROS_PACKAGE_PATH)
rospasta@flour:$ sudo apt-get remove ros-groovy-hrpsys-ros-bridge 
The following packages will be REMOVED:
  ros-groovy-hironx-ros-bridge ros-groovy-hrpsys-ros-bridge ros-groovy-nextage-ros-bridge ros-groovy-rtmros-common
rospasta@flour:$ rosdep install hironx_ros_bridge 
:
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
hironx_ros_bridge: Missing resource hrpsys_ros_bridge
ROS path [0]=/opt/ros/groovy/share/ros
ROS path [1]=/home/n130s/link/ROS/groovy_precise/dryws
ROS path [2]=/opt/ros/groovy/share
ROS path [3]=/opt/ros/groovy/stacks
rospasta@flour:$ rosdep install nextage_ros_bridge 
executing command [sudo apt-get install ros-groovy-hironx-ros-bridge]
:
edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted
1

answered 2013-11-11 06:41:11 -0500

tfoote gravatar image

updated 2013-11-11 18:05:58 -0500

rosdep is designed to install system dependencies not ros packages. (It can install ros packages which act like system dependencies in some cases helpfully)

Edit:

This does not work for dry packages in all cases as it can't traverse them cleanly. This is an extended useage which is not in the design specification, and being for a deprecated system we're not going to spend a lot of time debugging it.

You can make it work for wet dependencies using the --from-path argument by renaming the manifest.xml to something else. Related question here

It worked for me using your packages by renaming the manifest.xml

edit flag offensive delete link more

Comments

+1 for BigFoote

130s gravatar image 130s  ( 2013-11-11 16:50:21 -0500 )edit

I confirmed too that rosdep worked by renaming manifest.xml. Thing is that we're making these packages compatible to both catking and rosbuild (I know it's not standard), and looks like rosdep looks at manifest.xml first when both 2 xml files exist in a package? I'll look into rosdep's code anyway.

130s gravatar image 130s  ( 2013-11-11 20:11:44 -0500 )edit

Question Tools

1 follower

Stats

Asked: 2013-11-10 22:42:19 -0500

Seen: 660 times

Last updated: Nov 11 '13