Help understanding system and package dependencies with rosbuild and catkin
I have installed ros-hydro-desktop-full and a few other packages on Ubuntu 12.04. The package ros-hydro-urdf is installed, but the package ros-hydro-cmake-modules is not. The urdf package has a <build_depend>cmake_modules</build_depend> entry in its package.xml file.
I am trying to understand how "rosdep check" and "rospack depends" behave with the various types of dependencies available in rosbuild and catkin packages, and how these dependencies are related to the dependencies between debian packages in Ubuntu. I have performed the following tests, which have given rise to several questions.
Test 1: catkin package with <build_depend>cmake_modules</build_depend>
# rosdep check: detects dependency $ rosdep check example_package System dependencies have not been satisified: apt ros-hydro-cmake-modules # rospack depends: misses dependency $ rospack depends example_package (nothing)
- Question 1a: Why doesn't rospack detect this dependency?
- Question 1b: Does rospack only care about <run_depend> entries for catkin packages?
- Question 1c: Is rospack supposed to work properly with catkin packages?
Test 2: catkin package with <run_depend>cmake_modules</run_depend>
# rosdep check: detects dependency $ rosdep check example_package System dependencies have not been satisified: apt ros-hydro-cmake-modules # rospack depends: generates error $ rospack depends example_package [rospack] Error: package/stack 'example_package' depends on non-existent package 'cmake_modules' and rosdep claims that it is not a system dependency. Check the ROS_PACKAGE_PATH or try calling 'rosdep update'
- Question 2a: Why does rospack not detect this dependency?
- Question 2b: Why does rospack generate an error?
- Question 2c: Why does rospack say that rosdep does not recognise cmake_modules as a system dependency? It is included in the rosdep definitions.
Test 3: catkin package with <build_depend>urdf</build_depend>
# rosdep check: fails (misses dependency) $ rosdep check example_package All system dependencies have been satisified # rospack depends: misses dependency $ rospack depends example_package (nothing)
- Question 3: Shouldn't both rosdep and rospack handle such recursive dependencies? The urdf package depends on the cmake_modules package.
Test 4: catkin package with <run_depend>urdf</run_depend>
# rosdep check: misses dependency $ rosdep check example_package All system dependencies have been satisified # rospack depends: misses dependency $ rospack depends example_package | grep cmake_modules (nothing)
Test 5: rosbuild package with <rosdep name="cmake_modules" />
# rosdep check: detects dependency $ rosdep check example_package System dependencies have not been satisified: apt ros-hydro-cmake-modules # rospack depends: misses dependency $ rospack depends example_package (nothing)
Test 6: rosbuild package with <depend package="cmake_modules" />
# rosdep check: misses dependency and generates error $ rosdep check example_package All system dependencies have been satisified ERROR[example_package]: resource not found [cmake_modules] # rospack depends: generates error $ rospack depends example_package [rospack] Error: package/stack 'example_package' depends on non-existent package 'cmake_modules' and rosdep claims that it is not a system dependency. Check the ROS_PACKAGE_PATH or try calling 'rosdep update'
- Question 6a: Why do rosdep and rospack fail? Isn't cmake_modules a ROS package, which one should be able to specify as a package dependency?
- Question 6b: What does rosdep's "resource not found" error mean?
Test 7: rosbuild package with <rosdep name="urdf" />
# rosdep check: misses dependency $ rosdep check example_package All system dependencies have been satisified # rospack depends: misses dependency $ rospack depends example_package (nothing)
Test 8: rosbuild package with <depend package="urdf ...