OpenRAVE Documentation

Release Organization

This page describes the OpenRAVE release organization and platform requirements. The OpenRAVE Testing Framework is responsible for auto-generating the releases and making them available to the general public.

All releases are compiled, signed, and uploaded using:


Official releases have all even MINOR/PATCH version numbers like 0.6.0, 0.6.2, 0.8.0, 1.2.0. Development releases have odd version numbers like 0.5.0, 0.5.1, 0.6.1, 0.8.3. Any API changes require the MINOR version to increase. OpenRAVE patch releases should always be binary compatible so that newer versions can read old plugins. In otherwords all 0.3.x releases should be binary compatible with each other. See ABI Compatibility for an excellent discussion.

Allow multiple openrave versions to be installed simultaneously. This requires using suffixing several files and executables with $MAJOR.$MINOR similar to how python and boost work.

For Linux systems, SOVERSION is always “0” since the important version numbers are part of the library name itself.

There is an ABI compliance checker that can report compatibility errors. The API Sanity Autotest is also an interesting tool that runs functions with reasonable inputs based on a static analysis of the code.

Windows Installer

Official releases are uploaded on Sourceforge.

Use Nullsoft Scriptable Install System for generating an executable. Once the regular NSIS setup is run, install the Large String Build. The NSI file is generated by running release/ on the installation directory produced by cmake.

The installer:

  • automatically installs python, boost, numpy, and sympy,
  • unpacks the openrave files in a user-specified location,
  • modifies openrave/config.h to point to the user-installed location,
  • adds options to install Octave/Python bindings,
  • registers the necessary DLLs and adds registry keys for OpenRAVE
  • Under HKEY_LOCAL_MACHINE\SOFTWARE\OpenRAVE will be every OpenRAVE version that is installed. For example “0.8.0”. Under that will be InstallRoot.
  • and modifies the PYTHONPATH and Path environment variables.

Note that the provides DLLs are all compiled in Multithreaded DLL runtime.

Debian Source Packages

ppa:openrave/release - official release archive

ppa:openrave/testing - testing archive holding the newest builds

Each package is separated into:

  • openrave$V: all openrave related packages
  • openrave$V-base: core libraries and tools
  • openrave$V-data: basic scenes required for examples
  • openrave$V-dev: development files and examples
  • openrave$V-ikfast: Robot Kinematics Compiler
  • openrave$V-octave: octave bindings
  • openrave$V-plugin-X: individual plugins and their versions
  • openrave$V-plugins-all: all plugins
  • openrave$V-python: openravepy python bindings
  • openrave-robots-extra: extra robot CAD model files


Debian source packages for Ubuntu/Debian can be prepared by calling cmake with


To upload the packges on the server do

make dput

Many times, a special 4th distribution version number w is attached to the OpenRAVE version x.y.z


It is possible to customize the PGP signer, the host to upload them, and what distributions to compile them for using

cmake -DOPT_BUILD_PACKAGES=ON -DCPACK_DEBIAN_DISTRIBUTION_RELEASES="lucid;maverick;natty" -DCPACK_PACKAGE_CONTACT="new signer" -DDPUT_HOST="ppa:new_signer/name"

To compile and upload single precision side-by-side a double precision build do


Ubuntu Debian Packaging Guide

Sourceforge Releases

Releases source code and windows installers.

Once a build is stable and all the release packages have been generated, they are uploaded to sourceforge using the release/ script:

# Puts the newest files into latest_stable, and deletes any files that are more than 7 days old.
# only update latest_stable if the revisions changed
revision=`python -c "import pysvn; print pysvn.Client().info('$trunk').commit_revision.number"`
prevrevision=`python -c "import pysvn; revision=pysvn.Client().info2('$latest_stable',recurse=False)[0][1].rev; print pysvn.Client().log('$latest_stable',revision,revision)[0].message.split()[-1]"`

if [ "$revision" != "$prevrevision" ]; then
    svn export $trunk "$basename-linux-src"
    rm -rf "$basename-linux-src"/msvc_* # too big to include into openrave
    tar cjf "$basename-linux-src.tar.bz2" "$basename-linux-src"
    mkdir -p latest_stable
    mv "$basename-linux-src.tar.bz2" latest_stable/
    cp *.exe latest_stable/ # windows setup files
    cp $trunk/release/README.rst .
    tar cf latest_stable.tgz latest_stable README.rst
    rm -rf "$basename-linux-src" latest_stable README.rst

    ssh openravetesting, create # always create
    scp latest_stable.tgz openravetesting,
    # remove files 7 or more days old
    ssh openravetesting, "cd /home/frs/project/o/op/openrave; tar xf latest_stable.tgz; chmod -R g+w latest_stable; rm -f latest_stable.tgz; find latest_stable -mtime +30 -type f -exec rm -rf {} \;"
    rm -f latest_stable.tgz

    svn rm --non-interactive --username openravetesting -m "Delete Latest Stable Tab (Tagged by Jenkins)." $latest_stable
    svn cp --non-interactive --username openravetesting -m "Latest Stable Tab (Tagged by Jenkins). Revision: $revision" $trunk $latest_stable

#ssh-keygen -t dsa -f ~/.ssh/id_dsa.openravetesting.sf -P "" -C ""

Release Process

  1. Run Jenkins and create the latest_stable tag, windows installers, and documentation
  2. Update and upload the documentation. Make sure to set the correct revision in changelog.rst, and change Latest Official Version in index.rst. To generate the zip files do:
LANG=en_US.UTF-8 make json_en html_en
LANG=ja_JP.UTF-8 make json_ja html_ja
make openravejsonzip openravehtmlzip
  1. Create svn tag:
svn cp tags/latest_stable tags/X.Y.Z
  1. sourceforge: Create a X.Y.Z folder inside the files and copy the latest uploaded files from Jenkins into it, remove the revision numbers from the filenames.
  2. Create the Debian packages in openrave/testing
make dput
make dput
  1. Copy the debian packages from openrave/testing to openrave/release


Having problems with OpenRAVE?