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.
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/generate_installer_windows.py on the installation directory produced by cmake.
The installer:
- Under HKEY_LOCAL_MACHINE\SOFTWARE\OpenRAVE will be every OpenRAVE version that is installed. For example “0.9.0”. Under that will be InstallRoot.
Note that the provides DLLs are all compiled in Multithreaded DLL runtime.
ppa:openrave/release - official release archive
ppa:openrave/testing - testing archive holding the newest builds
Each package is separated into:
Debian source packages for Ubuntu/Debian can be prepared by calling cmake with
cmake -DOPT_BUILD_PACKAGES=ON
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
cmake -DOPT_BUILD_PACKAGES=ON -DPACKAGE_VERSION=w
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
cmake -DOPT_BUILD_PACKAGES=ON -DPACKAGE_VERSION=w -DOPT_BUILD_PACKAGE_DEFAULT=OFF -DOPT_DOUBLE_PRECISION=OFF
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/sendtosourceforge.sh script:
#!/bin/bash
# Puts the newest files into latest_stable, and deletes any files that are more than 7 days old.
trunk=$1
VERSION=`python $trunk/release/extractversion.py $trunk/CMakeLists.txt`
mkdir -p latest_stable
cd $trunk
git archive --format=tar --prefix=openrave-$VERSION-src/ master | bzip2 -9 > openrave-$VERSION-src.tar.bz2
mv "openrave-$VERSION-src.tar.bz2" ../latest_stable/
cd ..
cp *.exe latest_stable/ # windows setup files
cp $trunk/release/README.rst .
tar cf latest_stable.tgz latest_stable README.rst
rm -rf latest_stable README.rst
ssh openravetesting,openrave@shell.sourceforge.net create # always create
scp latest_stable.tgz openravetesting,openrave@frs.sourceforge.net:/home/frs/project/o/op/openrave/
# remove files 7 or more days old
ssh openravetesting,openrave@shell.sourceforge.net "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
# update the latest_stable branch
cd $trunk
git checkout latest_stable
git pull origin latest_stable # just in case
git merge master
git push origin latest_stable
git checkout master
#fi
#ssh-keygen -t dsa -f ~/.ssh/id_dsa.openravetesting.sf -P "" -C "openravetesting@shell.sourceforge.net"
LANG=en_US.UTF-8 make json_en html_en
LANG=ja_JP.UTF-8 make json_ja html_ja
make openravejsonzip openravehtmlzip
svn cp tags/latest_stable tags/X.Y.Z
cmake -DOPT_BUILD_PACKAGES=ON -DPACKAGE_VERSION=W
make dput
cmake -DOPT_BUILD_PACKAGES=ON -DPACKAGE_VERSION=W -DOPT_BUILD_PACKAGE_DEFAULT=OFF -DOPT_DOUBLE_PRECISION=OFF
make dput
git tag -a vX.Y.Z -m “OpenRAVE Release X.Y.Z” git push –tags