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.