<div dir="ltr"><div class="gmail_extra">On Wed, May 1, 2013 at 3:43 PM, Edwards, Shaun M. <span dir="ltr"><<a href="mailto:sedwards@swri.org" target="_blank">sedwards@swri.org</a>></span> wrote:<br><div class="gmail_quote">


<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><p><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">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?</span> </p></blockquote><div>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:</div>


<div><br></div><div>1. catkin-lib + catkin-app</div><div>2. catkin-lib + rosbuild-app</div><div>3. rosbuild-lib + rosbuild-app</div><div><br></div><div>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.</div>


<div><br></div><div>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.</div>


<div><br></div><div>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.</div>


<div><br></div><div>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.</div>


</div></div><div class="gmail_extra"><div><br></div><div>[1] <a href="https://github.com/ros/executive_smach/blob/groovy-devel/smach/Makefile#L1" target="_blank">https://github.com/ros/executive_smach/blob/groovy-devel/smach/Makefile#L1</a></div>


<div>[2] <a href="https://github.com/ros/executive_smach/blob/groovy-devel/smach/CMakeLists.txt#L5" target="_blank">https://github.com/ros/executive_smach/blob/groovy-devel/smach/CMakeLists.txt#L5</a></div><div><br></div>

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

<div><br></div><div style>-jon</div><div><br></div>-- <br><div dir="ltr">
<div style="font-family:arial,sans-serif;font-size:13px">Jonathan Bohren</div><div style="font-family:arial,sans-serif;font-size:13px">Laboratory for Computational Sensing and Robotics</div><div style="font-family:arial,sans-serif;font-size:13px">


<a href="http://dscl.lcsr.jhu.edu/People/JonathanBohren" target="_blank">http://dscl.lcsr.jhu.edu/People/JonathanBohren</a><br></div></div>
</div></div>