The stack manifest (stack.xml) is a minimal specification that supports the distribution and installation of ROS Stacks. In addition to providing a metadata about your stack, an important role of a stack.xml is to declare dependencies on other stacks. The presence of a stack.xml file in a directory is significant: any directory within your ROS package path that contains a stack.xml file is considered to be a stack, and any packages within it are considered to be part of that stack .
The bare minimum stack.xml file is much like a readme file, stating who is responsible for the stack and what license it is under. The license is important as it indicates who can use your code. stack.xml files usually include <depend> tags, which declare stacks that must be installed as pre-requisites.
: stacks cannot contain stacks
Please see the stack.xml tags reference.
rosstack parses and retrieves information from stack.xml files.
<stack> <description brief="common code for personal robots"> A set of code and messages that are widely useful to all robots. Things like generic robot messages (i.e., kinematics, transforms), a generic transform library (tf), laser-scan utilities, etc. </description> <author>Maintained by Tully Foote</author> <license>BSD</license> <review status="unreviewed" notes=""/> <url>http://pr.willowgarage.com/wiki/common</url> <depend stack="ros"/> </stack>
Client Library Support
In Python, you can use the roslib.manifest module in the roslib package to retrieve information from manifests. For example:
import roslib.stack_manifest # get the path of the manifest s = roslib.stack_manifest.stack_file('navigation') # create a roslib.stack_manifest.StackManifest instance from the file m = roslib.stack_manifest.parse_file(s)