The catkin package has got a runtime dependency to cmake, make,
gcc and other build utilities. These dependencies, however, are
only needed if it is desired to build with catkin on the target
board. If we do not want to build on the target board, i.e., if
we just want to use ros tools like roslaunch, only a small part
of catkin (i.e., the corresponding python packages) is required
to be deployed on the target board.
Therefore, we introduce a new package called catkin-runtime.
It installs only the python packages that are required for
the ros tools to run. The roslib package now depends on
catkin-runtime (previously: catkin).
I also tried an alternative approach which just modifies catkin.bb:
- add a catkin-runtime package
- move PYTHON_SITEPACKAGES_DIR from FILES_catkin to FILES_CATKIN_RUNTIME
- make catkin_runtime RDEPEND on the python stuff
- make catkin RDEPEND on the cmake, binutils, ..., + catkin-runtime
With this setup, for some reason, bitbake thinks that
catkin-runtime still RDEPENDS on binutils. Therefore, I split up
the catkin recipe into two different recipes. Here, the
RDEPENDS are managed correctly.
If we want to deploy catkin as a build tool on the board, we can
simply add a runtime dependency to catkin. However, this should
not be the default setup.
Special thanks go to Tobias Henkel (tobias.henkel@bmw-carit.de)
who deserves most of the credits for this patch.
Signed-off-by: Andreas Baak <andreas.baak@bmw-carit.de>
When roslaunch is started, it checks the file size of the local log
directory by calling:
disk_usage = rosclean.get_disk_usage(d) [1]
The function `get_disk_usage` [2] in rosclean creates a subprocess and
calls `du -sb` on Linux systems (cf. [3]).
However, the `du` command, which busybox usually provides on an
embedded Linux image, does not support the `-b` option, and only the
`du` command from the coreutils [4] supports this option.
This issue was first reported in April 2013 on the meta-ros issue
tracker [5]. Hence, on the first iteration of this issue, the
commit db0c8d5c [6] simply adds the dependency on coreutils to
roslaunch.
However, this has certain disadvantages:
- coreutils is licensed under GPLv3 and must not be deployed in a
product, which is massively distributed to customers.
- coreutils has larger file-system foot print than busybox and makes
the minimal Linux images considerably larger.
As a fortuitous circumstance, Alexis Ballier [7] had already observed
this disadvantage and provides a patch [8, 9] that makes
`get_disk_usage` use `du -k`, which works with busybox and coreutils.
So, on the second iteration of this issue, this commit here patches
rosclean's `get_disk_usage` function with the aforementioned patch.
This slightly modifies the semantics of this function. However, I
believe this plays only a minor role for the overall intended
functionality to check if the log usage has reached a critical file-size
limit, and it allows us to remove the dependency on coreutils, which is
much more critical.
Andreas Baak reported the disadvantages of the previous solution, which
triggered the re-investigation. The current resolution has been
discussed and worked out in collaboration with Andreas Baak.
[1] 9da29441f3/tools/roslaunch/src/roslaunch/rlutil.py (L63)
[2] c6e91f9af1/tools/rosclean/src/rosclean/__init__.py (L120)
[3] c6e91f9af1/tools/rosclean/src/rosclean/__init__.py (L130)
[4] http://cgit.openembedded.org/cgit.cgi/openembedded-core/tree/meta/recipes-core/coreutils/coreutils_8.23.bb?h=master
[5] https://github.com/bmwcarit/meta-ros/issues/60
[6] db0c8d5cd1
[7] https://github.com/aballier
[8] https://github.com/ros/ros/pull/76
[9] bbf1f945c7
Signed-off-by: Lukas Bulwahn <lukas.bulwahn@oss.bmw-carit.de>
Signed-off-by: Andreas Baak <andreas.baak@bmw-carit.de>
The native packages are not required anymore, because the needed
python scripts during compile time are also provided by the
cross-compiled packages and the python scripts are platform
independent. Only the catkin package is provided as native package.
The ros recipes are updated to 1.10.6 to be in line with
4551e7c32d/hydro/release.yaml.
The previously applied patch has been included in 1.10.6 and is
removed from the recipe and this repository.
All ROS packages with install tools in the bin directory or install
python code with is used by other packages should be used as native
version. Adapte the DEPENDS accordingly.
Signed-off-by: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
The recipes were created by manually extracting the information
from the corresponding package.xml.
Signed-off-by: Lukas Bulwahn <lukas.bulwahn@oss.bmw-carit.de>
After the release of ROS groovy, there is no strong reason to
continue to work on the cross-compilation of the previous ROS
version fuerte. Hence, this commit removes the initial
non-functioning recipe and the reference in the README file.
For cross-compiling ROS fuerte, the repository at
https://github.com/yida/yida-collections
might be a better starting point anyway.
Signed-off-by: Lukas Bulwahn <lukas.bulwahn@oss.bmw-carit.de>
Cmake should search in the native sysroot for rosunit. Remove
NO_CMAKE_FIND_ROOT_PATH from the find_program call to allow
cmake to search in the native sysroot.
Signed-off-by: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>