Contributing rosdep rules

In order to contribute rosdep rules, you should first make sure that you are familiar with the rosdep.yaml format.


There are several steps to contributing rosdep rules. You will create a copy of the database on GitHub, point your own rosdep to use it, make some changes, and then ask that they be included back in the main database.

In short:

  1. Fork
  2. Update your /etc/ros/rosdep/sources.list.d to use this fork
  3. Modify your fork to have new rules
  4. Test your changes
  5. Send a pull request to have your changes included in the main database

Fork the rosdistro GitHub repository

The main rosdep database is stored in files in the “rosdistro” repository in the “ros” project on GitHub:

Start by forking this repository so you have your own copy of the database to work with. Next, you’ll point your local rosdep to use this database instead.

Point your sources.list.d at your forked repository

The default sources list for rosdep uses the following files:

yaml osx

Create a new file in /etc/ros/rosdep/sources.list.d/ that points at your forked repository instead. The filename should use a lower number so it is processed first.

Now that your rosdep is using the new database, you’re ready to make and test your changes.

Make your changes to your forked repository

The repository contains the following files:

  • rosdep/osx-homebrew.yaml: Rules for OS X Homebrew
  • rosdep/python.yaml: Python-specific dependencies
  • rosdep/base.yaml: Everything else

Edit the appropriate file(s) for your change, i.e., if you are contributing a Homebrew rule, only edit osx-homebrew.yaml, if you are contributing a rule for a Python library, only edit python.yaml, and, otherwise, put your rule in base.yaml. To edit, change the https:// url to a local path using the format file:///abs/path.

Make sure that your rules work

Update your local index:

rosdep update

Test your new rules:

rosdep resolve <key-name>

Test with different OS rules:

rosdep resolve <key-name> --os=OS_NAME:OS_VERSION

Submit a pull request with your updated rules

Use GitHub’s pull request mechanism to request that your updates get included in the main databases.

There are guidelines for submitting pull requests at: And include instructions how to prevalidate your changes using the unit tests.

After your request has been accepted, you can undo your changes to /etc/ros/rosdep/sources.list.d.