-
Notifications
You must be signed in to change notification settings - Fork 277
Policies
2024-04-24: The content on this has been preserved while we work to revise the content
For up-to-date information about the meta-ros layer please visit the main page: https://github.com/ros/meta-ros
For simplified instructions on how to get started please refer to these build instructions: https://github.com/ros/meta-ros/blob/build/kas/README.md
To chat about meta-ros, come find us on the OSRF Discord #openembedded channel.
You are also welcome to join our biweekly meetings. Catch up on our meeting minutes here: ROS OpenEmbedded Working Group Minutes - Google Docs
Revision: 6 Published: 2022-05-06
In order to keep the number of combinations of DISTRO-s, ROS distros, and OpenEmbedded release series for which we do builds to
a reasonable value, our support policy for OpenEmbedded release series is as follows:
- When a new ROS distro is first released,
build/files/ros[12]-<ROS-DISTRO>-*.mcfare created for the (typically two) OpenEmbedded release series that have a Support Level of Stable or Long Term Support as shown on Yocto Releases. - When an OpenEmbedded release series moves from the Dev to the Stable or Long Term Support Support Level, a new
release series moves to Dev and
build/files/ros[12]-*-<NEW-DEV-OE-RELEASE-SERIES>.mcfare created for all ROS distro-s that are current. However, the creation of the*.mcffiles is deferred until there is a commit in a OpenEmbeddedmasterbranch that is unique to the new release series. - When an OpenEmbedded release series moves to the Community Support Level,
build/files/ros[12]-*-<OE-RELEASE-SERIES>.mcfare moved tobuild/files-unsupportedand builds are no longer done using them, except those for ROS distro-s which are LTS, eg, foxy or melodic, where this is done when the OpenEmbedded release series moves to the EOL Support Level. However, even those for these ROS distro-s are not guaranteed to be updated for newer releases of the ROS distro-s nor for upstream changes to the OpenEmbedded release series, and only "best efforts" will be made to keep them buildable. - The OpenEmbedded release series used by the build of webOS OSE currently being used is always supported, even if it no longer
has a Support Level of Stable or Long Term Support, ie,
build/files/{webos,ros[12]}-*-<WEBOS-OE-RELEASE-SERIES>.mcfalways exist. When webOS OSE moves to a new OpenEmbedded release series, if its previous OpenEmbedded release series does not have a Support Level of Stable or Long Term Support,build/files/{webos,ros[12]}-*-<WEBOS-OE-RELEASE-SERIES>.mcfare moved tobuild/files-unsupportedand builds are no longer done using them, except those for ROS distro-s which are LTS, eg, foxy or melodic, where this is done when the OpenEmbedded release series moves to the EOL Support Level. - When a ROS distro reaches its EOL and keeping it building successfully becames non-trivial because of on-going updates to the
OpenEmbedded release series, its
meta-ros[12]-<ROS-DISTRO>sublayer is dropped, itsbuild/files/{webos,ros[12]}-<ROS-DISTRO>-*.mcfare moved tobuild/files-unsupported, and builds are no longer done using them. - There will always be at least one
build/files/{webos,ros[12]}-<ROS-DISTRO>-<OE-RELEASE-SERIES>.mcffor every non-EOL ROS distro. However, the value(s) of<OE-RELEASE-SERIES>will change during the lifetime of a ROS distro.
As of Milestone 17, each build/files*/{webos,ros[12]}-<ROS-DISTRO>-<OE-RELEASE-SERIES>.mcf contains a SupportLevel variable
with one of four possible values:
| Value | Definition |
|---|---|
full |
the configuration is fully supported |
best-effort |
the configuration has an EOL-ed ROS distro or OpenEmbedded release series, which means only a "best effort" will be made to have all its packages build |
unsupported |
the configuration is never built and only updated to fix breaking changes introduced upstream, eg, [master] of a component's repository being renamed to [main] or git:// needing to be replaced by https://
|
contrib |
the configuration has been contributed and is not built |
As of Milestone 11, meta-ros supports building for OpenEmbedded release series newer than thud and has migrated to webOS OSE
version 2.x . This means that meta-ros could be built for Raspberry Pi 4, 64-bit and 32-bit, as well as Raspberry Pi 3. In order
to reduce the number of combinations for which we do builds, the policy is that we will do them for one variant of QEMU and one
variant of Raspberry Pi for each OpenEmbedded release series based on the DISTRO as per the table below (updated for Milestone
17). However, we won't do anything that knowing prevents others from building for the other variants.
OpenEmbedded Release Series | DISTRO:
|
ros1 |
ros2 |
webos |
|---|---|---|---|
| dunfell |
qemux86, raspberrypi4
|
qemux86, raspberrypi4
|
qemux86-64, raspberrypi4-64
|
| gatesgarth |
qemux86, raspberrypi4
|
qemux86, raspberrypi4
|
N/A |
| hardknott |
qemux86, raspberrypi4
|
qemux86, raspberrypi4
|
N/A |
| honister |
qemux86, raspberrypi4
|
qemux86, raspberrypi4
|
N/A |
| kirkstone |
qemux86, raspberrypi4
|
qemux86, raspberrypi4
|
N/A |
Rationale: As of v2.14.0, upstream webOS OSE has been focused on qemux86-64 and raspberrypi4-64, which means the 32-bit
variants aren't regularly tested and often are broken. Because webOS OSE is built with both ROS 1 and ROS 2 distros, building
DISTRO = ros1 and DISTRO = ros2 for the 32-bit variants ensures that ROS packages of both versions have build coverage for all
four architectures.
Note that ROS 1 package that supports the Raspberry Pi camera (raspicam-node) can not be built for 64-bit.
The term baseline platform is defined to be the value of distribution_file.release_platforms from <ROS_DISTRO>-cache.yaml
chosen as the platform release to which the OpenEmbedded metadata for a ROS distro is targeted. Our policy is to chose the
Ubuntu release when there is more than one specified.
The packages provided by the baseline platform are known as platform packages. As of Milestone 12, our policy for selecting which version of a platform package to provide changed from trying to match that provided by the baseline platform to using the default version provided by the OpenEmbedded release series being used. We will attempt to create patches for ROS packages to allow them to build with the versions provided, but when this isn't possible, eg, a ROS 2 foxy package requiring a version of a platform package that is not supplied by thud, their recipes will be blacklisted.
Note that webOS OSE sets PREFERRED_VERSION_* for various platform packages to the versions it requires.
When importing a recipe from another OpenEmbedded layer or creating a new recipe, the latest version available at the time of import or creation used, unless the ROS package(s) that are dependent on it require a different one in order to build.
- The commits to which the upstream OpenEmbedded layers in
build/files/webos-*-<OE-RELEASE-SERIES>.mcfare pinned will match those from which the supported release of webOS OSE are built. The ones inbuild/files/ros[12]-*-<OE-RELEASE-SERIES>.mcfwill not be constrained by this and will the track the latest available from the upstream OpenEmbedded layers.
- Update the MACHINE Support section for the kirkstone OpenEmbedded release series supported in Milestone 17. Also update
it for
DISTRO = ros2being built for 32-bit architectures instead of 64-bit ones and forDISTRO = webosbeing built for 64-bit architectures instead of 32-bit ones. - Clarify when the
*.mcffiles are created for a new OpenEmbedded release series. - dashing is EOL, so use foxy as the example of an LTS ROS 2 distro.
- Add a
SupportLevelValues in*.mcfFiles section.
- Update the MACHINE Support section for the changes to the OpenEmbedded release series supported in Milestone 16:
- Drop thud, warrior, zeus. This means we are no longer doing builds for
raspberrypi3. - Add gatesgarth, hardknott, and honister.
- Drop thud, warrior, zeus. This means we are no longer doing builds for
- Clarify when support for an EOL ROS distro is dropped.
- Update for the introduction of a Long Term Support Yocto Support Level.
- Reduce the level of support given for the use of OpenEmbedded release series at Community Support Level with ROS distro-s which are LTS.
- Clarify that only
build/files/webos-*-<OE-RELEASE-SERIES>.mcfare constrained to use the same commits of upstream OpenEmbedded layers as webOS OSE.
- Update Baseline Platform and Selection of Platform Package Versions section with the policy for imported and new recipes.
- Add items to the OpenEmbedded Release Series Support section:
- for the policy when new OpenEmbedded release series are released;
- to clarify that every non-EOL ROS distro will always be supported by least one stable OpenEmbedded release series.
- Clarify for which OpenEmbedded release series
*.mcffiles are created when a release series moves from the Dev to the Stable Support Level. - Instead of dropping
*.mcffiles for unsupported cases, move them to a newbuild/files-unsupporteddirectory and state that builds are no longer done for them. - Clarify the policy when an OpenEmbedded release series moves to the EOL Support Level.
- Prefix all of the
*.mcfwithbuild/files/so that there's no confusion with the existing ones underbuild/files-contriband the newbuild/files-unsupported. - Add a Baseline Platform and Selection of Platform Package Versions section.
- Initial publication.