Go to file
Martin Jansa d45195a2d6 gscam, pocketsphinx, ros-pocketsphinx, wxwidgets, wxpython, joint-state-publisher, sound-play: blacklist because of gstreamer 0.10 dependency
* if you still need these and use older OpenEmbedded which still provides
  gstreamer 0.10 recipes, you can unblacklist these by setting it to empty
  value, e.g.
  PNBLACKLIST[gscam] = ""
  in your local.conf or distro config.

* gstreamer 0.10 recipes were removed with:
  commit 010c2f388095c1615b99d9f38a26bbd0c9e77b39
  Author: Khem Raj <raj.khem@gmail.com>
  Date:   Fri Mar 15 18:36:40 2019 -0700

    gstreamer-0.10: Remove recipes

    It has been over 5+ years for migration to gstreamer 1.x

    Signed-off-by: Khem Raj <raj.khem@gmail.com>

* webkit-gtk was removed from oe-core even earlier in 2.0 Jethro:
  commit 68a1e346751c4d644a14035b0d7acf01d212f38c
  Author: Alexander Kanavin <alexander.kanavin@linux.intel.com>
  Date:   Mon Jun 15 17:15:39 2015 +0300

    webkit-gtk: remove the recipe for the obsolete version 1.8.3

    webkitgtk 2.8.3 is provided instead and midori browser is replaced by epiphany in
    separate commits.

    (From OE-Core rev: 1a72dc9c44c7806c869c3b3afcd5d31bcf2da979)

* fixes packagegroup-ros-world errors:
  ERROR: Nothing PROVIDES 'gst-plugins-good' (but /OE/build/oe-core/meta-ros/recipes-ros/gscam/gscam_0.2.0.bb DEPENDS on or otherwise requires it). Close matches:
    gstreamer1.0-plugins-good
  NOTE: Runtime target 'gscam' is unbuildable, removing...
  Missing or unbuildable dependency chain was: ['gscam', 'gst-plugins-good']
  NOTE: Runtime target 'packagegroup-ros-world' is unbuildable, removing...
  Missing or unbuildable dependency chain was: ['packagegroup-ros-world', 'gscam', 'gst-plugins-good']
  NOTE: Runtime target 'core-image-ros-world' is unbuildable, removing...
  Missing or unbuildable dependency chain was: ['core-image-ros-world', 'packagegroup-ros-world', 'gscam', 'gst-plugins-good']
  ERROR: Nothing PROVIDES 'gst-plugins-base' (but /OE/build/oe-core/meta-ros/recipes-ros/gscam/gscam_0.2.0.bb DEPENDS on or otherwise requires it). Close matches:
    gstreamer1.0-plugins-base
    gstreamer1.0-plugins-bad
  ERROR: Nothing PROVIDES 'gstreamer' (but /OE/build/oe-core/meta-ros/recipes-ros/gscam/gscam_0.2.0.bb DEPENDS on or otherwise requires it). Close matches:
    gstreamer1.0
    gstreamer1.0-omx
  ERROR: Nothing RPROVIDES 'gst-plugins-good-gconfelements' (but /OE/build/oe-core/meta-ros/recipes-ros/ros-pocketsphinx/ros-pocketsphinx_0.3.0.bb RDEPENDS on or otherwise requires it)
  NOTE: Runtime target 'gst-plugins-good-gconfelements' is unbuildable, removing...
  Missing or unbuildable dependency chain was: ['gst-plugins-good-gconfelements']
  NOTE: Runtime target 'ros-pocketsphinx' is unbuildable, removing...
  Missing or unbuildable dependency chain was: ['ros-pocketsphinx', 'gst-plugins-good-gconfelements']
  ERROR: Nothing RPROVIDES 'ros-pocketsphinx-dev' (but /OE/build/oe-core/meta-ros/recipes-ros/ros-pocketsphinx/ros-pocketsphinx_0.3.0.bb RDEPENDS on or otherwise requires it)
  No eligible RPROVIDERs exist for 'ros-pocketsphinx-dev'
  NOTE: Runtime target 'ros-pocketsphinx-dev' is unbuildable, removing...
  Missing or unbuildable dependency chain was: ['ros-pocketsphinx-dev']
  NOTE: Runtime target 'gstreamer0.10-pocketsphinx' is unbuildable, removing...
  Missing or unbuildable dependency chain was: ['gstreamer0.10-pocketsphinx']
  ERROR: Nothing RPROVIDES 'gscam-dev' (but /OE/build/oe-core/meta-ros/recipes-ros/gscam/gscam_0.2.0.bb RDEPENDS on or otherwise requires it)
  No eligible RPROVIDERs exist for 'gscam-dev'
  NOTE: Runtime target 'gscam-dev' is unbuildable, removing...
  Missing or unbuildable dependency chain was: ['gscam-dev']

  ERROR: Nothing PROVIDES 'gst-plugins-good' (but /OE/build/oe-core/meta-ros/recipes-extended/cmusphinx/pocketsphinx_0.8.bb DEPENDS on or otherwise requires it). Close matches:
    gstreamer1.0-plugins-good
  ERROR: Required build target 'pocketsphinx' has no buildable providers.
  Missing or unbuildable dependency chain was: ['pocketsphinx', 'gst-plugins-good']

  Summary: There were 2 ERROR messages shown, returning a non-zero exit code.
  NOTE: Started PRServer with DBfile: /OE/build/oe-core/cache/prserv.sqlite3, IP: 127.0.0.1, PORT: 45411, PID: 32361
  Parsing recipes...done.
  Parsing of 2732 .bb files complete (0 cached, 2732 parsed). 3866 targets, 65 skipped, 0 masked, 0 errors.
  NOTE: Resolving any missing task queue dependencies
  ERROR: Nothing PROVIDES 'webkit-gtk' (but /OE/build/oe-core/meta-ros/recipes-extended/wxwidgets/wxwidgets_2.9.5.bb DEPENDS on or otherwise requires it). Close matches:
    webkitgtk
  ERROR: Required build target 'meta-world-pkgdata' has no buildable providers.
  Missing or unbuildable dependency chain was: ['meta-world-pkgdata', 'wxpython', 'wxwidgets', 'webkit-gtk']

  Summary: There were 2 ERROR messages shown, returning a non-zero exit code.
  NOTE: Started PRServer with DBfile: /OE/build/oe-core/cache/prserv.sqlite3, IP: 127.0.0.1, PORT: 36105, PID: 32425
  Parsing recipes...done.
  Parsing of 2732 .bb files complete (0 cached, 2732 parsed). 3866 targets, 104 skipped, 0 masked, 0 errors.
  NOTE: Resolving any missing task queue dependencies
  ERROR: Nothing PROVIDES 'gstreamer' (but /OE/build/oe-core/meta-ros/recipes-extended/wxwidgets/wxwidgets_2.9.5.bb DEPENDS on or otherwise requires it). Close matches:
    gstreamer1.0
    gstreamer1.0-omx
  ERROR: Required build target 'meta-world-pkgdata' has no buildable providers.
  Missing or unbuildable dependency chain was: ['meta-world-pkgdata', 'joint-state-publisher', 'wxpython', 'wxwidgets', 'gstreamer']

  ERROR: Nothing RPROVIDES 'gst-plugins-ugly' (but /OE/build/oe-core/meta-ros/recipes-ros/audio-common/sound-play_0.2.13.bb RDEPENDS on or otherwise requires it)
  NOTE: Runtime target 'gst-plugins-ugly' is unbuildable, removing...
  Missing or unbuildable dependency chain was: ['gst-plugins-ugly']
  ERROR: Required build target 'meta-world-pkgdata' has no buildable providers.
  Missing or unbuildable dependency chain was: ['meta-world-pkgdata', 'sound-play', 'gst-plugins-ugly']

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
2019-07-03 17:41:56 +00:00
classes ros2msg,ros2topic: move msg files to the main package + add ros2-topic 2018-10-01 14:27:58 +00:00
conf layer.conf: Set the OE layer version to 1 2019-07-01 12:01:38 -07:00
lib/recipetool New plugin for generating catkin recipes 2017-08-25 16:13:12 -07:00
licenses Added python-defusedxml recipe to fix runtime dependency. 2018-07-11 20:44:21 +02:00
recipes-core/images add image for testing SDK 2018-05-05 21:43:30 +02:00
recipes-devtools python-bson: Remove recipe 2019-07-02 11:51:51 +00:00
recipes-extended gscam, pocketsphinx, ros-pocketsphinx, wxwidgets, wxpython, joint-state-publisher, sound-play: blacklist because of gstreamer 0.10 dependency 2019-07-03 17:41:56 +00:00
recipes-ros gscam, pocketsphinx, ros-pocketsphinx, wxwidgets, wxpython, joint-state-publisher, sound-play: blacklist because of gstreamer 0.10 dependency 2019-07-03 17:41:56 +00:00
recipes-ros2 ament-cmake-core: Fix the dependency on ${PYTHON_PN}-pyparsing 2018-10-01 14:27:58 +00:00
recipes-support/boost poco: drop recipe (resolves #377) 2017-04-14 05:55:38 +02:00
scripts Add script for version check 2018-04-09 14:26:14 +02:00
.gitignore gitignore: Ignore vim swp files 2017-12-11 15:24:16 +01:00
.gitmodules dropping unmaintained test-reports git submodule (resolves #297) 2014-12-02 08:41:55 +01:00
.travis.yml .travis.yml: continuously check the patch files 2014-08-18 06:53:41 +02:00
.yottaci.yml enable CI builds 2017-09-20 08:57:29 +03:00
CONTENTS CONTENTS: adjusted to current state and tuned formatting 2013-08-05 08:12:21 +02:00
COPYING.MIT adding license in preparation of going public 2012-12-20 14:23:02 +01:00
README.md README.md: Introduce the [legacy] branch 2019-07-01 12:01:16 -07:00

README.md

Branch legacy

This branch contains the legacy layer version 1 implementation of meta-ros that provides ROS 1 Indigo Igloo (and a few initial bits of ROS 2 Ardent Apalone from #538, see the recipes-ros2 directory) in an OpenEmbedded Linux system. This branch might work better with older OpenEmbedded releases prior to thud than the other layer version 2 branches.

It supplies a cross-compilation build system for many common ROS packages.

It is no longer under active development and is not being tested, but will be retained until it is no longer needed by the community. The only criterion for acceptance of a pull request for it is that it's based off its current HEAD and merges cleanly.

IMPORTANT RESOURCES

Note: In October 2016, the mailing list at https://groups.google.com/forum/#!forum/meta-ros has been discontinued and discussion has moved to https://discourse.ros.org/c/openembedded. However, the mailing list is still a good resource on issues that have been resolved in the past.

MAINTAINERS

CONTRIBUTORS

HOW TO CONTRIBUTE

We are still working on this development and are interested in other use cases. If you are interested in this project, please contact us via email. The more people are interested, the more we will be pushing this project. If you want to contribute, please contact us and we can discuss open issues and how to join forces.

DEPENDENCIES

This layer depends on:

openembedded-core URI: git://git.openembedded.org/openembedded-core subdirectory: meta branch: thud revision: HEAD

meta-openembedded (meta-oe) URI: git://git.openembedded.org/meta-openembedded subdirectory: meta-oe branch: thud revision: HEAD

meta-python (since a6d7ba92645a112af358efd94ff3aa0c74985a51@meta-openembedded) URI: git://git.openembedded.org/meta-openembedded subdirectory: meta-python branch: thud revision: HEAD

meta-multimedia (since fe44ac167a2a76531af3519f3889fce92024567b@meta-openembedded) URI: git://git.openembedded.org/meta-openembedded subdirectory: meta-multimedia branch: thud revision: HEAD

meta-intel-realsense (since 4a5ba0f20094dd3d07c0a0c1dede2ba40e9d6abf) URI: https://github.com/IntelRealSense/meta-intel-realsense branch: thud revision: HEAD This layer is required only if you need to build realsense-camera driver.

bitbake > 1.20

DEPENDENCIES ON RECENT COMMITS

Here, we list which parts of this layer depend on recent commits in the bitbake, openembedded-core and meta-openembedded repositories. Using git blame on the lines below, you can find the commits in meta-ros that rely on the remote commits. In case of porting to other versions, you must possibly revert some of those commits.

ament-cmake-core depends on python3-pyparsing which is available in meta-python since pyro 1a373a033f482981eb59ff8d9eb7a9437fa18cd4@meta-openembedded and native version since rocko 06eb9d658e71b6a61f2589d9618ae2ca35eaaf8b@meta-openembedded python3-pyparsing-native depends on python3-datetime-native, python3-debugger-native and python3-stringold-native which were added in oe-core python3-native in pyro: 462ccb35a5de32b52ddb733d1868df6ac5426f20@openembedded-core and 800753069f667cd1664d70b3779150c467e3b3fe@openembedded-core simple bbappend as shown in: https://github.com/ros/meta-ros/pull/607#pullrequestreview-143981126 is enough to resolve this if you're using old pyro unsupported release.

ros2topic (and few more recipes when ROS_USE_PYTHON3 is set to yes) depends on python3-pyyaml which was added in 1161ab8f8dda272eb5d09917446cc5b971be1335@meta-openembedded.

cv-bridge and dependent recipes, e.g., the image-transport recipes, depend on 7568bfdd114597956a1da68746f207ec7f93a48d@openembedded-core. For native python-numpy support, these recipes also depend on c13c5f40160d289bb62538a16900fed30621cb22@meta-openembedded or on 9bf355cceaec6ebacdcbcc35f9713ff73e1c85da@openembedded-core.

Some recipes that need the Eigen library, e.g., the pcl-ros recipe, depend on 424e3c1b930c0103c2cedfd4df1671e84a5256d5@meta-openembedded.

Using wildcards in bbappend versions part in name depends on 31bc9af9cd56e7b318924869970e850993fafc5f@bitbake and 991cbeedbde8bd25ce08c669b1bfac8b99e33149@bitbake.

octomap-ros and collada-urdf depend on 43073569cb67d98c11aa71211d77b566b64f9145@openembedded-core and 783fb88f476c94d5d4f4b954f7053464d9a6dff5@openembedded-core.

urdfdom-py depends on the meta-python layer since a6d7ba92645a112af358efd94ff3aa0c74985a51@meta-openembedded.

Since 3edf08b38b0af93cef0933b061349264dc86d54c@openembedded-core, recipes relying on opencv need to activate the DISTRO_FEATURE opengl.

rosbridge-library depends on python-six, which is provided in meta-python since a36869c700bed940f7f0aa4b9703ae630dc84eac@meta-openembedded.

INSTALLATION

The repository contains a layer for ROS that builds on top of the OpenEmbedded Core layer and the meta-oe layer.

We try our best to keep up with the development of the current HEAD of the layers mentioned above. If you notice any problems with the current HEAD, please report this in our issue tracker.

You can use this layer with earlier versions of the layers mentioned above and their release branches, dora and daisy, with a few minor adjustments. The section "dependencies on recent commits" in this file provides a few pointers to adjust this layer for other versions.

USAGE

Initialize the build environment:

source oe-init-build-env

Add the required layers (see DEPENDENCIES) by modifying ./conf/bblayers.conf (adjust /home/me/devel as necessary):

BBLAYERS ?= " \
/home/me/devel/openembedded-core/meta \
/home/me/devel/meta-openembedded/meta-oe \
/home/me/devel/meta-openembedded/meta-python \
/home/me/devel/meta-openembedded/meta-multimedia \
/home/me/devel/meta-ros \
"

By default meta-ros uses python2 in all its recipes. If you want ROS packages to use python3 then add the following line in your ./conf/local.conf file:

ROS_USE_PYTHON3 = "yes"

Compile package:

bitbake <package-name>

The recipe core-image-ros-roscore provides a minimal Linux system that runs roscore.

You can compile the minimal Linux system with

bitbake core-image-ros-roscore

Then for example, you start this system in the qemu virtual machine with

runqemu <MACHINE> core-image-ros-roscore

On the Linux system, ensure that the own host's name in resolved by adding

127.0.0.1	<HOSTNAME>.localdomain		<HOSTNAME>

to the /etc/hosts file, and set up the environment with

export ROS_ROOT=/opt/ros
export ROS_DISTRO=indigo
export ROS_PACKAGE_PATH=/opt/ros/indigo/share
export PATH=$PATH:/opt/ros/indigo/bin
export LD_LIBRARY_PATH=/opt/ros/indigo/lib
export PYTHONPATH=/opt/ros/indigo/lib/python2.7/site-packages
export ROS_MASTER_URI=http://localhost:11311
export CMAKE_PREFIX_PATH=/opt/ros/indigo
touch /opt/ros/indigo/.catkin

Finally, you can start roscore with

roscore

If you want to use the roswtf utility for diagnostics and experience an exception like

rospkg.os_detect.OsNotDetected: Could not detect OS, tried ['windows', 'ubuntu', 'slackware', 'rhel', 'qnx', 'osx', 'opensuse', 'opensuse', 'mint', 'linaro', 'gentoo', 'funtoo', 'freebsd', 'fedora', 'elementary', 'debian', 'cygwin', 'centos', 'arch']

then you need to set ROS_OS_OVERRIDE to one of the listed OS names, e.g.

export ROS_OS_OVERRIDE=ubuntu

And since Yocto-based distributions are not supported by the rospkg library you have to interpret roswtf's output by translating Ubuntu package names manually to their corresponding package/recipe names that were chosen in the meta-ros layer.

CROSS-COMPILING ALL ROS PACKAGES IN meta-ros

The meta-ros layers only includes a subset of the officially released ROS packages, available from packages.ros.org. The here provided ROS packages are mainly driven by the current users' needs.

For ROS packages that depend on cv-bridge, the commercial license flag must be whitelisted, as cv-bridge depends on opencv, and opencv by default depends on libav that has special terms and conditions when used commercially. This can be done by adding to the local.conf the line:

LICENSE_FLAGS_WHITELIST = "commercial"

Alternatively, the dependency from opencv on libav can be explicit excluded by modifying the PACKAGECONFIG setting.

LICENSE

All metadata is MIT licensed unless otherwise stated. Source code included in tree for individual recipes is under the LICENSE stated in each recipe (.bb file) unless otherwise stated. The descriptions in the recipes of ROS packages have been extracted from the ROS wiki (https://www.ros.org/wiki/) and are licensed under Creative Commons Attribution 3.0 (https://creativecommons.org/licenses/by/3.0/) unless otherwise noted.

This README document is Copyright (C) 2012 BMW Car IT GmbH.

REDISTRIBUTIONS

The log4cxx recipe originated from the recipe in the OpenEmbedded (Classic) Development (cf. http://cgit.openembedded.org/openembedded/tree/recipes/log4cxx) licensed with the MIT License.

The yaml-cpp recipe originated from the recipe in Kartik Mohta's OpenEmbedded layer (cf. https://github.com/kartikmohta/meta-km/blob/master/recipes-devtools/yaml-cpp/yaml-cpp_0.3.0.bb) licensed with the MIT License.

The python-ecdsa recipe originated from the recipe in the OpenStack Yocto layer (cf. https://git.yoctoproject.org/clean/cgit.cgi/meta-cloud-services/tree/meta-openstack/recipes-devtools/python/python-ecdsa_0.13.bb?id=38973e8bc393a4ca36090c58c8b6eb6d093ea69a) licensed with the MIT License.

The python-pbr recipe originated from the recipe in the meta-python layer (cf. https://git.openembedded.org/meta-openembedded/tree/meta-python/recipes-devtools/python/python-pbr_3.1.1.bb?id=b3eb3c647dc86306d9346bea621fb4b6994ec461) licensed with the MIT License.

The core-image-ros-* recipes originated from the core-image-minimal recipe in OpenEmbedded Core (cf. https://cgit.openembedded.org/openembedded-core/tree/meta/recipes-core/images/core-image-minimal.bb) licensed with the MIT License.

The original or modified files are redistributed here under the same MIT License.