Table Of Contents

Previous topic

Sketch of directory structure

Next topic

Pre- and Post-installation Disk Layout reference

This Page

Stack manifest XML tags reference

NOTE: Stack manifests always have the filename stack.xml. This document describes catkin-ized stacks.


The <stack> tag is the unique top-level tag in a stack manifest.

Required Tags

The required set of tags in a stack.xml file provides basic metadata about your stack, including what it is, who wrote it, and who can use it.

Optional Tags

The most common optional tags are <build_depends>, <depends> and <url>. We strongly recommend the use of the <url> tag to point users to a website where they can find out more information about your stack. The website is most commonly a wiki page on so that users can easily edit and update information about your stack.


  <description brief="ROS communications-related libraries and tools">ROS communications-related packages, including core client libraries (roscpp, rospy, roslisp) and graph introspection tools (rostopic, rosnode, rosservice, rosparam).</description>
  <author>Troy Straszheim</author>
  <author>Morten Kjaergaard</author>
  <author email="">Ken Conley</author>
  <maintainer email="">Troy Straszheim</maintainer>

  <review status="Doc reviewed" notes="2009/6/10"/>





The name of the stack. Should correspond to the name of the directory that the code is checked out in, if this directory is being traversed by catkin.



The version number of the stack. Major.Minor.Patchlevel version. Numeric only. Used by deb packaging utilities.


abi="1.2.1" (optional)
An optional ABI version number if it is different from the version number.





Description of the stack. It may be multi-line and include XHTML.


brief="brief text" (optional)
One-line summary of your stack. Useful for UI displays where the stack name isn’t sufficiently descriptive.


<description brief="ROS for Python">
  Python implementation of the ROS master/node APIs and client library.

<author> (multiple)


The name of the person who authored the stack.


email="name@domain.tld" (optional)
Email address of author.


<author email="">Alyssa P. Hacker</author>

<maintainer> (multiple)


The name of the person maintaining the stack.


email="name@domain.tld" (optional)
Email address of maintainer.


<maintainer email="">Alyssa P. Hacker</maintainer>



Name of license for this package, e.g. BSD, GPL, LGPL. In order to assist machine readability, only include the license name in this tag. For any explanatory text about licensing caveats, please use the <description> tag.

Most common open-source licenses are described on the OSI website.

Commonly used license strings:

  • Apache 2.0
  • BSD
  • Boost Software License
  • GPLv2
  • GPLv3
  • LGPLv2.1
  • LGPLv3
  • MIT
  • Mozilla Public License Version 1.1
  • ZLib
  • wxWindows





Website for the stack. This is important for guiding users to online documentation.




Status of the stack in the review process (Design, API, and Code review). QAProcess. Stack that have not yet been reviewed should be marked as “experimental”.


See list of valid review statuses.
notes="notes on review status" (optional)
Notes on review status, such as date of last review.


<review status="experimental" notes="reviewed on 3/14/09" />

<depends> (multiple)

Declares a ROS dep key that this stack depends on at run-time. Used to determine dependency ordering of current workspace (when this exists) and used by package and release tools.



<build_depends> (multiple)


Declares a ROS dep key that this stack depends on at build-time. Used to determine dependency ordering of current workspace (when this exists) and used by package and release tools.





The build type determines the debian rules file to use. Options: cmake, autotools, or python_distutils. See bloom/bin/em for the definitions. Defaults to cmake.


file="local_path_to_rules.em_file" (optional)
If the value is custom then that file path has to be given. E.g. ./bloom/rules.em


<build_type file="./bloom/rules.em">custom</build_type>


Defines the ‘tag’ for the language bindings generated by this package, -e.g. in gencpp this is set to cpp.