0
$\begingroup$

Rosanswers logo

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]
:

Originally posted by 130s on ROS Answers with karma: 10937 on 2013-11-10

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

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


Originally posted by tfoote with karma: 58457 on 2013-11-11

This answer was ACCEPTED on the original site

Post score: 1


Original comments

Comment by 130s on 2013-11-11:
+1 for BigFoote

Comment by 130s on 2013-11-11:
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.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.