The primary update is that package.xml is now used for each package. stack.xml and manifest.xml can be removed. Also without a concept of a stack anymore we need to make metapackages with the same name, and dependencies on all the former stack contents.

Having done quite a few of these conversions in the last few days this is my observed procedure. Create a subdirectory with the name of the stack. Move stack.xml into the new subdirectory and rename it to package.xml. And it will need to conform to rep 127 http://www.ros.org/reps/rep-0127.html Also then you will need to update CMakeLists.txt for the new simpler syntax. When you are ready to release, the rosdistro file will need the full version number x.y.z-d as well as a list of sub packages. in the form {name: path/to/name/in/repo, name2: path/to/name2} where path/to/name/in/repo can be omitted if it is equal to the name. If no list of packages is provided it is assumed to be a unary package at the root. After releasing the bloom pipeline has been simplified to two commands bloom-import-upstream then bloom-release ROSDISTRO

An example of me doing all this is in robot mode. see https://kforge.ros.org/robotmodel/robot_model/rev/ae60aded70f3

Currently I have the following packages flagged as needing this attention/package.xml added.

ivcon
ompl
ecto_opencv
pcl
libccd
convex_decomposition
geometric_shapes
moveit_msgs
usdfdom
ecto_pcl
rosdoc_lite
shape_tools
python_qt_bindings
octovis
console_bridge
object_recognition_transparent_objects
flirtlib
ecto_image_pipeline
python_orocos_kdl
moveit_core
object_recognition_msgs
srdfdom
urdf_headers
object_recognition_tabletop
libg2o
swig_wx
octomap
object_recognition_tod
urdfdom
ecto_openni
sbpl
pcl_ros
object_recognition_capture
eigen_stl_containers
flann
roslisp
random_numbers
octomap_msgs
fcl
ecto_ros
object_recognition_linemod
orocos_kdl

(If it's catkin independent please talk to William, he's improved how we can inject package.xml into a package. There should be documentation coming out soon for that. )

Some specific notes on converting catkin packges to the new format from doing it recently:

Inside the package.xml you will need to: * change the toplevel tag to package. * remove the brief from the description tag. * remove the review tag * remove the copyright tag * create run_depend and build_depend tags on all the former stack contents (note singular for the dependency tags!) * add <metapackage/> tag to the exports section

Inside each package, you will need to do the following: * convert manifest.xml into package.xml

  • add the name and version tags
  • convert the author tag to rep 127 format (one tag per person with an optional email attribute)
  • add a maintainer tag for rep 127 (must have an email attribute)
  • remove the brief from the description
  • remove the review tag
  • remove the copyright tag
  • add build and run depends for dependent packages
  • rosdeps become build_depends and run_depend rules too.

* update CMakeLists.txt

  • make sure all package CMakeLists.txt start with cmake_minimum_required(VERSION 2.8.3)
  • remove catkin_stack call if present
  • add find_package(catkin REQUIRED COMPONENTS all dependent catkin packages)
    • you should usually call find_package(catkin ..) only once, each call will overwrite the catkin_* variables
  • change catkin_project($PACKAGENAME ..) to catkin_package(..)
  • add DEPENDS on the same list as above aka "all dependent catkin packages" if these packages are exposed to stuff which depends on this package
  • switch to use catkin_INCLUDE_DIRS and catkin_LIBRARIES as variables, the above find will clump all dependent package info into the one variable for convenience
  • when installing files use the variable CATKIN_PACKAGE_*_DESTINATION

* install the latest catkin_pkg from debs (python-catkin-pkg) * build your packages in a workspace to verify that they work

  • you can use "catkin_build_isolated PARENT_FOLDER_OF_PACKAGES PARENT_FOLDER_FOR_BUILD" to verify that your packages build in individual workspaces (i.e. in "src" you should call "catkin_build_isolated . .." which will build all packages under source in topological order and create N build folders under ../build_isolated)

* release using bloom

  • make sure you're using the latest bloom from debs
  • git bloom-import-upstream
  • git bloom-release groovy (this will create branches and tags for each package in the gbp repo)
  • then push using the command it shows you

* update the rosdistro with the version

  • add packages list
  • set the full version id including the debian increment (note it defaults to 0 debian inc)
  • notify us so that we can generate the individual jobs on jenkins for each package

Wiki: catkin/GroovyInProgressUpgradeNotes (last edited 2012-10-07 22:21:46 by TullyFoote)