orocos-toolchain / orogen

Code generator for components and type handling in Rock - the Robot Construction Kit - and the Orocos Toolchain
http://rock-robotics.org
Other
4 stars 35 forks source link

Fix manifest.xml rosdep compatibility #116

Closed meyerj closed 6 years ago

meyerj commented 6 years ago

Follow-up on #111 (@NikolausDemmel).

Unfortunately the old format 1 of the ROS package manifest (manifest.xml) differentiates between ROS packages and third-party software provided by the operating system and managed by rosdep: http://docs.ros.org/independent/api/rospkg/html/manifest_xml.html

Because rake and ruby are system dependencies and do not provide a ROS-compatible package manifest, the "correct" way to list them in manifest.xml would be

<rosdep name="ruby" />
<rosdep name="rake" />

The patch in #111 fixes the InvalidManifest exception, but rosdep is still not able to resolve and install the dependencies:

johannes@im-laptop-007:/opt/orocos/kinetic/src/orocos_toolchain$ rosdep install --from-path . -i --rosdistro kinetic
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
orogen: Missing resource rake
ROS path [0]=/opt/orocos/src/orocos_toolchain
ROS path [1]=/opt/ros/kinetic/share

Compatibility between AutoProj and ROS tools regarding interpretation of manifest.xml is a long-lasting issue (https://github.com/orocos-toolchain/utilrb/issues/5). Ideally ROS tools would simply ignore manifest.xml if package.xml is present, but this request has been denied for reasons of backwards compatibility (https://github.com/ros-infrastructure/rosdep/issues/353). As long as this is not the case, the manifest.xml files need to be compatible to the ROS conventions if we want to allow users to use tools like rosdep, which implies distinguishing ROS and system dependencies using different tags. Luckily unknown tags like <depend_optional> or <test_depend> are simply ignored by rosdep instead of returning with an error, but still it fails to verify or install those deps.

Remaining commits are to synchronize dependencies, maintainer and version number in package.xml with the toolchain-2.9 branch.

NikolausDemmel commented 6 years ago

@meyerj, you are right, my initial fix was just aiming to fix the InvalidManifest, but did so incorrectly. Thanks!