120 lines
6.6 KiB
Plaintext
120 lines
6.6 KiB
Plaintext
# Copyright (c) 2019 LG Electronics, Inc.
|
|
#
|
|
# Configuration settings common to all ROS_DISTRO-s.
|
|
|
|
# All generated recipes have this set to "1" because they inherit ros_superflore_generated.
|
|
ROS_SUPERFLORE_GENERATED ??= "0"
|
|
|
|
# Ensure that this always has a value when it's used to form DISTROOVERRIDES -- it's only explicitly set in generated recipes.
|
|
ROS_COMPONENT_TYPE ??= "unset"
|
|
|
|
# Ensure that this always has a value -- it's only explicitly set in generated recipes.
|
|
ROS_BUILD_TYPE ??= "unset"
|
|
|
|
# This is used to form the paths to the .inc files in the generated recipes.
|
|
ROS_LAYERDIR := "${LAYERDIR}"
|
|
|
|
# ROS_DISTRO_COMPAT contains the list of ROS_DISTRO-s with which this branch of meta-ros is compatible (based on the versions of
|
|
# the platform packages provided by it and the branches of the upstream OE layers used).
|
|
ROS_DISTRO_COMPAT = "crystal"
|
|
|
|
|
|
# "1" or "2"
|
|
ROS_DISTRO_METADATA_VERSION_MAJOR = "${ROS_VERSION}"
|
|
|
|
# Could covert the first letter to an integer, but everyone knows the ROS distro-s by their names, so just use it.
|
|
ROS_DISTRO_METADATA_VERSION_MINOR = "${ROS_DISTRO}"
|
|
|
|
# Crystal releases have been given patch numbers, but none of the others have them => use the release date (YYYYMMDD) for the
|
|
# micro version, unless this is prior to the first release of a ROS_DISTRO, when the date portion of
|
|
# ROS_SUPERFLORE_GENERATION_DATETIME is used.
|
|
ROS_DISTRO_METADATA_VERSION_MICRO = "${@d.getVar('ROS_SUPERFLORE_GENERATION_DATETIME', True)[0:8] \
|
|
if d.getVar('ROS_DISTRO_RELEASE_DATE', True) == '' else \
|
|
d.getVar('ROS_DISTRO_RELEASE_DATE', True) \
|
|
}"
|
|
|
|
# Value determined by superflore and set in conf/ros-distro/include/ROS_DISTRO/generated-ros-distro.inc
|
|
ROS_NUM_CACHE_YAML_COMMITS ??= "0"
|
|
ROS_DISTRO_METADATA_VERSION_UPDATE = "${ROS_NUM_CACHE_YAML_COMMITS}"
|
|
|
|
# ROS_DISTRO_METADATA_VERSION_REVISION is set to "0" in generated-ros-distro.inc and then is incremented there (manually) every
|
|
# time meta-ros is released because of a manually created change, ie, NOT as a result of a superflore run (which resets it to "0").
|
|
ROS_DISTRO_METADATA_VERSION_REVISION ??= "0"
|
|
|
|
ROS_DISTRO_METADATA_VERSION = "${ROS_DISTRO_METADATA_VERSION_MAJOR}.${ROS_DISTRO_METADATA_VERSION_MINOR}.${ROS_DISTRO_METADATA_VERSION_MICRO}.${ROS_DISTRO_METADATA_VERSION_UPDATE}"
|
|
ROS_DISTRO_METADATA_VERSION .= "${@'' \
|
|
if d.getVar('ROS_DISTRO_METADATA_VERSION_REVISION', True) == '0' else \
|
|
'-' + d.getVar('ROS_DISTRO_METADATA_VERSION_REVISION', True) \
|
|
}"
|
|
|
|
# For ROS 1, set this to "${ROS_DISTRO}" in conf/bblayers.conf . Can't use overrides to do this because its value is needed below.
|
|
ROS1_COMPONENTS_BASELINE_DISTRO ?= "melodic"
|
|
|
|
require conf/ros-distro/include/${ROS1_COMPONENTS_BASELINE_DISTRO}/generated-ros-distro.inc
|
|
# The list of components whose ROS_COMPONENT_TYPE is "ros1". NB. It is assumed that once a component is "ros1", it's always
|
|
# considered "ros1" even though a "ros2" edition of it might be built (or vice versa).
|
|
ROS1_COMPONENTS := "${ROS_SUPERFLORE_GENERATED_RECIPES_FOR_COMPONENTS}"
|
|
|
|
# If ROS_DISTRO is unset, the build will abort with a ParseError when bitbake attempts to include a file with ROS_DISTRO in its
|
|
# path below.
|
|
ROS_DISTRO ?= "${@bb.error('ROS_DISTRO must be set in conf/bblayers.conf')}"
|
|
|
|
# Bitbake complains if a file is included more than once.
|
|
require ${@'conf/ros-distro/include/empty.inc' \
|
|
if d.getVar('ROS_DISTRO', True) == d.getVar('ROS1_COMPONENTS_BASELINE_DISTRO', True) else \
|
|
'conf/ros-distro/include/' + d.getVar('ROS_DISTRO', True) + '/generated-ros-distro.inc' \
|
|
}
|
|
|
|
require conf/ros-distro/include/${ROS_DISTRO}/generated-superflore-datetime.inc
|
|
require conf/ros-distro/include/${ROS_DISTRO}/ros-distro.inc
|
|
|
|
# ROS_DISTRO_BASELINE_PLATFORM is set in ros-distro.inc .
|
|
require conf/ros-distro/include/${ROS_DISTRO_BASELINE_PLATFORM}/ros-distro-platform-preferred-providers.inc
|
|
require conf/ros-distro/include/${ROS_DISTRO_BASELINE_PLATFORM}/ros-distro-platform-recipe-blacklist.inc
|
|
require conf/ros-distro/include/${ROS_DISTRO_BASELINE_PLATFORM}/ros-distro-platform-preferred-versions.inc
|
|
require conf/ros-distro/include/${ROS_DISTRO}/ros-distro-preferred-providers.inc
|
|
require conf/ros-distro/include/${ROS_DISTRO}/ros-distro-recipe-blacklist.inc
|
|
require conf/ros-distro/include/${ROS_DISTRO}/ros-distro-preferred-versions.inc
|
|
|
|
|
|
# Give ROS billing in DISTRO_NAME if being used in a foreign DISTRO.
|
|
ROS_DISTRO_NAME_PREPEND ?= "${@'' \
|
|
if d.getVar('DISTRO', True) == d.getVar('ROS_DISTRO_TYPE', True) else \
|
|
'ROS ' + d.getVar('ROS_VERSION', True) + ' with ' \
|
|
}"
|
|
DISTRO_NAME_prepend = "${ROS_DISTRO_NAME_PREPEND}"
|
|
|
|
# Append the ROS metadata version to DISTRO_VERSION if being used in a foreign DISTRO.
|
|
ROS_OE_DISTRO_VERSION_APPEND ?= "${@'' \
|
|
if d.getVar('DISTRO', True) == d.getVar('ROS_DISTRO_TYPE', True) else \
|
|
'+' + d.getVar('ROS_DISTRO_METADATA_VERSION', True) \
|
|
}"
|
|
DISTRO_VERSION_append = "${ROS_OE_DISTRO_VERSION_APPEND}"
|
|
|
|
# Default to showing DISTRO_NAME and the ROS build environment variable settings in the build configuration.
|
|
ROS_EXTRA_BUILDCFG_VARS ?= "DISTRO_NAME ROS_DISTRO ROS_VERSION ROS_PYTHON_VERSION"
|
|
BUILDCFG_VARS_append = " ${ROS_EXTRA_BUILDCFG_VARS}"
|
|
|
|
# Allow images of different ROS_DISTRO-s to be distinguished.
|
|
ROS_IMAGE_BASENAME_APPEND ?= "-${ROS_DISTRO}"
|
|
IMAGE_BASENAME_append = "${ROS_IMAGE_BASENAME_APPEND}"
|
|
|
|
|
|
# If DISTRO is unset, the OE config sanity check will end up aborting the build after this ERROR message has been output a number
|
|
# of times. (An unset variable in an "include" line doesn't cause a ParseError the way it does in a "require" line.)
|
|
DISTRO ?= "${@bb.error('DISTRO must be set in conf/bblayers.conf (not conf/local.conf)')}"
|
|
|
|
# Don't allow ROS-only images to be built with DISTRO set to "webOS" as they will contain different platform packages, eg, the
|
|
# kernel, from images with the same names built with DISTRO set to "ros1" or "ros2". Using BBMASK instead of PNBLACKLIST because
|
|
# a RE name match is wanted.
|
|
BBMASK += "${@'recipes-core/images/core-image-ros-.*' \
|
|
if d.getVar('DISTRO', True) == 'webos' else \
|
|
'' \
|
|
}"
|
|
|
|
# Ignore metadata that requires meta-webos if it's not present.
|
|
BBMASK += "${@bb.utils.contains('BBFILE_COLLECTIONS', 'meta-webos', '', 'recipes-core/images/webos-.*', d)}"
|
|
|
|
# Optionally include fixups for foreign DISTRO-s.
|
|
include conf/ros-distro/include/${DISTRO}-compat.inc
|