-
Notifications
You must be signed in to change notification settings - Fork 256
Policies
Revision: 3 Published: 2020-06-10
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>-*.mcf
are created for the (typically two) OpenEmbedded release series that have a Support Level of Stable as shown on Yocto Releases. - When an OpenEmbedded release series moves from the Dev to the Stable Support Level, a new release series moves to
Dev and
build/files/ros[12]-*-<NEW-DEV-OE-RELEASE-SERIES>.mcf
are created for all ROS distro-s that are current. - When an OpenEmbedded release series moves to the Community Support Level,
build/files/ros[12]-*-<OE-RELEASE-SERIES>.mcf
are moved tobuild/files-unsupported
and builds are no longer done using them, except those for ROS distro-s which are LTS, eg, dashing or melodic, where this is done when the OpenEmbedded release series moves to the EOL Support Level. - 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, ie,
build/files/{webos,ros[12]}-*-<WEBOS-OE-RELEASE-SERIES>.mcf
always 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,build/files/{webos,ros[12]}-*-<WEBOS-OE-RELEASE-SERIES>.mcf
are moved tobuild/files-unsupported
and builds are no longer done using them, except those for ROS distro-s which are LTS, eg, dashing or melodic, where this is done when the OpenEmbedded release series moves to the EOL Support Level. - When a ROS distro reaches its EOL, its
meta-ros[12]-<ROS-DISTRO>
sublayer is dropped, itsbuild/files/{webos,ros[12]}-<ROS-DISTRO>-*.mcf
are 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>.mcf
for 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 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
can 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. However, we won't do
anything that knowing prevents others from building for the other variants.
OpenEmbedded Release Series | DISTRO:
|
ros1 |
ros2 |
webos |
---|---|---|---|
thud |
qemux86 , raspberrypi3
|
qemux86 , raspberrypi3
|
qemux86 , raspberrypi4
|
warrior |
qemux86 , raspberrypi4
|
qemux86-64 , raspberrypi4-64
|
N/A |
zeus |
qemux86 , raspberrypi4
|
qemux86-64 , raspberrypi4-64
|
N/A |
dunfell |
qemux86 , raspberrypi4
|
qemux86-64 , raspberrypi4-64
|
N/A |
We are keeping ros1
builds 32-bit because its 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.
- 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
*.mcf
files are created when a release series moves from the Dev to the Stable Support Level. - Instead of dropping
*.mcf
files for unsupported cases, move them to a newbuild/files-unsupported
directory 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
*.mcf
withbuild/files/
so that there's no confusion with the existing ones underbuild/files-contrib
and the newbuild/files-unsupported
. - Add a Baseline Platform and Selection of Platform Package Versions section.
- Initial publication.