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
orgtest
.OS_NAME
is the name of an OS. Examples:ubuntu
,osx
,fedora
,debian
,openembedded
, orwindows
.OS_VERSION
(optional) is the name of specific versions in the OS. Examples:lucid
orsqueeze
. If noOS_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 specifiedPACKAGE_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.