ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

This was discussed on the ros-buildsystem sig as well as in the ROS platform group meetings, and subsequently added to REP-127 as shown in the history here on github on March 7th.

I'm really surprised this change was released into groovy. I thought it wasn't going to take effect until Hydro.

From REP-127:

The empty tag is used to indicate that a package is a metapackage which implies that it does only have a fixed minimal CMakeLists.txt which will only install the package.xml file. This information is necessary for the ROS wiki to show the relationship between these metapackages and other packages and as a backward compatibility with rosbuild. Non-metapackages must not depend on metapackages but instead on the packages they depend on.

The CMakeLists.txt file for a metapackage is supposed to look like:

cmake_minimum_required(VERSION 2.8.3)
project(PACKAGE_NAME)
find_package(catkin REQUIRED)
catkin_metapackage()

From the buildsystem sig mailing list (@tkruse):

So the currently favoured solution will be to allow CMakeLists.txt with metapackages. In order to encourage users to not fill their metapackages with anything else than just the installation of the package manifest itself, catkin will scan the CmakeLists.txt and warn if users put in more than the minimally required lines. This may still change if someone has a better idea, or other blockers appear.

This was discussed on the ros-buildsystem sig as well as in the ROS platform group meetings, and subsequently added to REP-127 as shown in the history here on github on March 7th.

I'm really surprised this change was released into groovy. I thought it wasn't going to take effect until Hydro.

From REP-127: as it reads today:

The empty tag is used to indicate that a package is a metapackage which implies that it does only have a fixed minimal CMakeLists.txt which will only install the package.xml file. This information is necessary for the ROS wiki to show the relationship between these metapackages and other packages and as a backward compatibility with rosbuild. Non-metapackages must not depend on metapackages but instead on the packages they depend on.

The CMakeLists.txt file for a metapackage is supposed to look like:

cmake_minimum_required(VERSION 2.8.3)
project(PACKAGE_NAME)
find_package(catkin REQUIRED)
catkin_metapackage()

From the buildsystem sig mailing list (@tkruse):

So the currently favoured solution will be to allow CMakeLists.txt with metapackages. In order to encourage users to not fill their metapackages with anything else than just the installation of the package manifest itself, catkin will scan the CmakeLists.txt and warn if users put in more than the minimally required lines. This may still change if someone has a better idea, or other blockers appear.