[ros-users] New Hydro Packages Released

Jonathan Bohren jonathan.bohren at gmail.com
Wed May 1 20:24:43 UTC 2013


On Wed, May 1, 2013 at 3:43 PM, Edwards, Shaun M. <sedwards at swri.org> wrote:

> From what I understand of catkin, what you describe should not be
> possible.  If I create a new rosbuild package that depends on catkined
> SMACH, it will fail to build.  Is there some magic that I am missing?
>
So there are a few scenarios where you can mix catkin and rosbuild
packages. If you have a library dependency and an application you're
building then these are:

1. catkin-lib + catkin-app
2. catkin-lib + rosbuild-app
3. rosbuild-lib + rosbuild-app

In addition, for each of these three scenarios, the lib can either be
installed to the system, or built in a workspace as an overlay.

In scenario #1, there are many users who may want to build applications
with catkin, but depend on SMACH. Until SMACH 1.3.0, this was not possible.
For them, it's important that SMACH can be treated like a catkin package.
Catkin and other ROS tools will prefer the "package.xml" files over the
"manifest.xml" files.

You're asking about scenario #2. Since the SMACH libraries are just python
modules, they are installed to /opt/ros/DISTRO/lib/python2.7/dist-packages
and will be accessible to any python scripts once that path has been added
to the python path (this is done by the ROS/Catkin setup.sh scripts). For
this scenario, the SMACH packages only need to be catkin packages, and both
catkin- and rosbuild-based applications can depend on them. Like above, the
"manifest.xml" files are ignored.

The only scenario that requires special treatment is scenario #3. If a user
is stuck with ROS Fuerte or is not yet comfortable using Catkin, then he or
she would like to put the latest version of SMACH into a rosbuild workspace
(or even install SMACH binaries to Fuerte). In this case, rosbuild will
ignore the "package.xml" file and use the "manifest.xml" file as well as
the GNU Makefile. The magic to make this work is in the Makefile [1] and
CMakeLists.txt [2]. This additional CMake argument switches the CMake
execution to use rosbuild macros instead of catkin macros.

[1]
https://github.com/ros/executive_smach/blob/groovy-devel/smach/Makefile#L1
[2]
https://github.com/ros/executive_smach/blob/groovy-devel/smach/CMakeLists.txt#L5

To summarize, the reason for all of this is that I know that there are many
SMACH users who either:
A) Want to use SMACH in Catkin-based projects
B) Want to use the latest version of SMACH with ROS Fuerte or in
rosbuild-based overlay workspaces

-jon

-- 
Jonathan Bohren
Laboratory for Computational Sensing and Robotics
http://dscl.lcsr.jhu.edu/People/JonathanBohren
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ros.org/pipermail/ros-users/attachments/20130501/f4423b80/attachment-0004.html>


More information about the ros-users mailing list