rosdep YAML format

The current rosdep YAML format specification was introduced in REP 111.

Specification

rosdep supports both a simple and versioned syntax.

  • Simple
    ROSDEP_NAME:
      OS_NAME1:
        PACKAGE_MANAGER1:
          PACKAGE_ARGUMENTS_A
      OS_NAME2:
        PACKAGE_MANAGER2:
          PACKAGE_ARGUMENTS_A
    
  • Versioned
    ROSDEP_NAME:
      OS_NAME1:
        OS_VERSION1:
          PACKAGE_MANAGER1:
            PACKAGE_ARGUMENTS_A
        OS_VERSION2:
          PACKAGE_MANAGER2:
            PACKAGE_ARGUMENTS_A2
    

The names above resolve as follows:

  • ROSDEP_NAME is the name referred to by manifest files. Examples: log4cxx or gtest.
  • OS_NAME is the name of an OS. Examples: ubuntu, osx, fedora, debian, openembedded, or windows.
  • OS_VERSION (optional) is the name of specific versions in the OS. Examples: lucid or squeeze. If no OS_VERSION is specified, the rule is assumed to apply to all versions.
  • PACKAGE_MANAGER (optional in ROS Electric, required in ROS Fuerte) is a key to select which package manager to use for this rosdep. Examples: apt, pip, macports.
  • PACKAGE_ARGUMENT is free-form YAML that is be passed to the handler for the specified PACKAGE_MANAGER.

Example

For Ubuntu the default package manager is apt. An example for the simple syntax is:

rosdep_name:
  ubuntu:
    apt:
      packages: [ debian-package-name, other-debian-package-name]

or versioned as follows:

rosdep_name:
  ubuntu:
    lucid:
      apt:
        packages: [debian-package-name, other-debian-package-name]

OS name identifiers and supported package managers

  • arch: Arch Linux
    • pacman (default)
    • source
  • cygwin: Cygwin
    • apt-cyg
    • source
  • debian: Debian GNU/Linux
    • apt (default)
    • source
  • fedora: Fedora Project
    • dnf (default)
    • yum
    • source
  • freebsd: FreeBSD
    • pkg_add (default)
    • source
  • gentoo: Gentoo Linux
    • portage (default)
    • source
  • openembedded : OpenEmbedded
    • TODO: define a remote installation method for cross compiled packages
  • osx : Apple OS X
    • TODO: special notes on macports vs. homebrew
  • opensuse: OpenSUSE
    • zypper (default)
    • source
  • rhel : Red Hat Enterprise Linux
    • yum (default)
    • source
  • ubuntu: Ubuntu
    • apt (default)
    • pip
    • source

For backwards compatibility, macports is supported as an alias of osx.

OS version identifiers

OS version identifiers use one-word codenames that refer to particular releases.

Examples:

  • debian: squeeze
  • ubuntu: lucid, maverick, natty, oneiric, precise
  • osx: snow, lion

Disambiguation of OS_VERSION and PACKAGE_MANAGER

For backwards compatibility, the PACKAGE_MANAGER is allowed to be optional in the ROS Electric case. As both PACKAGE_MANAGER and OS_VERSION are optional, this creates an ambiguious case where either OS_VERSION or PACKAGE_MANAGER is specified, but not both.

In this ambiguous case, rosdep first interprets the key as a PACKAGE_MANAGER. If this test fails, it will be interpreted as an OS_VERSION. Developers should exercise caution in keeping OS_VERSION and PACKAGE_MANAGER keys globally distinct.