The basic design of rosstack
Summary:
A tool to help manage working out of multiple repositories with different versions of stacks. And a first step toward being able to have out of the box apps.
Protype usage
Clean Install
Download/unpack rostack rosstack update rosstack install 2dnav_stage rosstack setup 2dnav_stage --name=2dnav_stage_demo source ~/ros/.bashrc.2dnav_stage_demo rosdep 2dnav_stage rosmake 2dnav_stage roscd 2dnav_stage roslaunch 2dnav_stage_wavefront.launch
Problem: Need to bootstarp compile ROS not met
Switch to branch of ROS
rosstack update rosstack install ros-0.5 rosstack setup ros-0.5 source ~/ros/.bashrc.ros-0.5 rosmake roscpp_tutorials rosrun roscpp_tutorials 001talker
Environment Variables Read
ROS_STACK_PATH_READ_ONLY --- colon seperated search path (non recursive) ROS_STACK_PATH (Default: ~/ros) --- colon seperated search path (non recursive) write to first one
ROS_SOURCES (Default ~/ros/sources.list)
Files
configuration files
~/ros/sources.list
- A list of repo urls to put stack listing from
~/.rosstack_cache A local cache of above stack listings
stack.xml
Same as manifest except add version (maybe remove sysdeps, for that's tracked at a package level)
Server Files
On some server(s) there will be definitions of each stack including the following fields:
- name
- version
- download url (one or more of the below)
- targz url
- svn co url
- (maybe extend to git, perforce etc)
- (maybe add binary install opetions/args deb, dmgs etc)
Modes
list
Options:
- installed - Search all stack paths and list all installed stacks
- available - list all available packages from servers
- active stacks in PKG_PATH
find
Stack-Name return the full path to the stack
contents
- stackname
List packages in stack
update
Read ROS_SOURCES and update local cache of available packages (~.rosstack_cache)
upgrade
Iterate through stacks installed from svn and update each
install
Install stack NAME(S) and all their dependencies. Options:
- policy for what style of download to prefer
publish
A helper function which will upload the stack definition to some server where it will be pulled down when others update
setup
options:
- stacks/apps = list of stacks to include(plus all their dependencies)
- name = NAME (default = ros)
Create ~/.bashrc.NAME with:
ROS_ROOT ROS_PACKAGE_PATH