rosinstall: source-based install tool¶
Usage¶
Usage: rosinstall <path> <paths...> [options]
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-c, --catkin Declare this is a catkin build.
--cmake-prefix-path=CATKINPP
Where to set the CMAKE_PREFIX_PATH, implies --catkin
--version display version information
--verbose display more information
-n, --nobuild skip the build step for the ROS stack
--rosdep-yes Pass through --rosdep-yes to rosmake
--delete-changed-uris
Delete the local copy of a directory before changing
uri.
--abort-changed-uris Abort if changed uri detected
--backup-changed-uris=BACKUP_CHANGED
backup the local copy of a directory before changing
uri to this directory.
--diff shows a combined diff over all SCM entries
--status shows a combined status command over all SCM entries
--status-untracked shows a combined status command over all SCM entries,
also showing untracked files
-j JOBS, --parallel=JOBS
How many parallel threads to use for installing
--generate-versioned-rosinstall=GENERATE_VERSIONED
generate a versioned rosintall file
The first <path> is the filesystem path where the source code will be downloaded. Any additional <paths…> are treated as locations from which to fetch additional rosinstall file configuration. These can be filesystem paths or URLs. The behavior of rosinstall depends on what <paths…> points to:
If an additional path is a filesystem directory, rosinstall will look for a .rosinstall file in the directory, and then overlay the new environment on top of that directory’s configuration.
If an additional path points to a .rosinstall file, rosinstall will include the contents of that file.
For example:
rosinstall ~/ros "http://packages.ros.org/cgi-bin/gen_rosinstall.py?rosdistro=electric&variant=desktop-full&overlay=no"
After installation, rosinstall writes a bash setup file, called
setup.bash, into <path>. Source this file to configure your
environment variables.
rosinstall will also store the checkout information used in <path>/.rosinstall.
Updating a rosinstall checkout¶
After using rosinstall to download and setup a certain directory tree. You can update the the contents of that tree using rosinstall as well.
rosinstall ~/workspace
will read the .rosinstall file in ~/ros and then call svn up or other VCS “update” equivalent. This will also regenerate the setup.bash environment file.
If you are already in ~/workspace you can update by typing:
rosinstall .
Examples usages¶
Developing on top of boxturtle shared install:
rosinstall ~/workspace /opt/ros/boxturtle http://www.ros.org/rosinstalls/wg_boxturtle_devel.rosinstall
Full source checkout:
rosinstall ~/workspace http://www.ros.org/rosinstalls/boxturtle_pr2all.rosinstall
Developing a stack against a full tree:
rosinstall ~/workspace http://www.ros.org/rosinstalls/boxturtle_pr2all.rosinstall my_stack.rosinstall
Adding a rosinstall layout to an existing workspace
Create a new workspace directory and include /opt/ros/diamondback in the ROS_PACKAGE_PATH:
rosinstall ~/workspace /opt/ros/diamondback
Add wg_boxturtle_devel packages to the workspace:
rosinstall ~/workspace http://www.ros.org/rosinstalls/wg_boxturtle_devel.rosinstall
Rosinstall Under the Hood¶
This is a summary of how rosinstall works under the hood.
Process Flow¶
Whenever rosinstall is executed the following code path is followed:
Gather command line arguments
Merge source rosinstall files
Install source
Generate a setup file.
Merging source rosinstall files¶
Rosinstall will start with the .rosinstall file in the install path.
If one doesn’t exist it will create an empty one.
To this it will append the contents of all arguments in order left to right.
if the argument is a directory it will look for a DIRECTORY/.rosinstall and add all elements as other elements with local-name set to the full path.
if the argument is a url or a path to a file it will directly take the contents
Duplicates will be removed based on the key ‘local-name’. The later definition will be preserved.
This .rosinstall file will be saved to disk.
Installing Source¶
rosinstall will iterate through the .rosinstall file for each definition of source.
If the source directory does not exist it will be created and checked out
if the source directory exists and is of the same uri it will be updated
If the source directory exists and the uri doesn’t match the user will be prompted to abort, delete, or backup
Generating setup.bash¶
After a successful installation rosinstall will iterate through each of the elements in .rosinstall and add their local-name to the ROS_PACKAGE_PATH, unless the path is detected to be ros, in which case it will be set to ROS_ROOT.
This will error if a ROS directory is not detected. (The ros directory must be explicitly called out in the local-name)
The setup file will be written to disk.