Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable /opt/ros prefix for ROS 2 #1149

Open
wants to merge 3 commits into
base: kirkstone-next
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions meta-ros-common/classes/ros_cmake.bbclass
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
# Copyright (c) 2019 LG Electronics, Inc.
# Copyright (c) Qualcomm Innovation Center, Inc. All rights reserved

inherit cmake

EXTRA_OECMAKE:prepend = "\
-DCMAKE_PREFIX_PATH='${STAGING_DIR_HOST}${ros_prefix};${STAGING_DIR_HOST}${prefix}' \
-DCMAKE_INSTALL_PREFIX:PATH='${ros_prefix}' \
-DCMAKE_MODULE_PATH='${STAGING_DIR_HOST}${ros_datadir}/cmake/Modules/' \
"

EXTRA_OECMAKE:prepend:class-native = "\
-DCMAKE_PREFIX_PATH='${STAGING_DIR_NATIVE}${ros_prefix};${STAGING_DIR_NATIVE}${prefix}' \
-DCMAKE_INSTALL_PREFIX:PATH='${ros_prefix}' \
"
7 changes: 7 additions & 0 deletions meta-ros-common/classes/ros_opt_prefix.bbclass
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
#
# Copyright (c) 2013 Stefan Herbrechtsmeier, Bielefeld University
# Copyright (c) 2019-2020 LG Electronics, Inc.
# Copyright (c) Qualcomm Innovation Center, Inc. All rights reserved
#

ros_prefix ?= "${base_prefix}/opt/ros/${ROS_DISTRO}"

ros_bindir = "${ros_prefix}/bin"
ros_sbindir = "${ros_prefix}/sbin"
ros_libdir = "${ros_prefix}/${baselib}"
ros_libexecdir = "${ros_libdir}/${ROS_BPN}"
ros_includedir = "${ros_prefix}/include"
ros_datadir = "${ros_prefix}/share"
ros_sysconfdir = "${ros_prefix}/etc"
ros_stacksdir = "${ros_prefix}/stacks"
ros_toolsdir = "${ros_prefix}/tools"

# Used by chrpath.bbclass
PREPROCESS_RELOCATE_DIRS += " \
Expand All @@ -35,6 +38,8 @@ FILES:${PN} += "\
${ros_datadir} \
${ros_sysconfdir} \
${ros_stacksdir} \
${ros_toolsdir}/ \
${ros_prefix} \
"

FILES:${PN}-dev += "\
Expand Down Expand Up @@ -65,6 +70,8 @@ SYSROOT_DIRS:append = " \
${ros_datadir} \
${ros_stacksdir} \
${ros_sysconfdir} \
${ros_bindir} \
${ros_sbindir} \
"

SYSROOT_DIRS_NATIVE:append = " \
Expand Down
1 change: 1 addition & 0 deletions meta-ros2/classes/ros2_distro.bbclass
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Copyright (c) 2019-2020 LG Electronics, Inc.

inherit ros_distro
inherit ros_opt_prefix

# Place metadata unique to ROS 2 distros here.

Expand Down
14 changes: 13 additions & 1 deletion meta-ros2/classes/ros_ament_cmake.bbclass
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# Copyright (c) Qualcomm Innovation Center, Inc. All rights reserved

# The SOABI setting changed in newer python3 with:
# http://git.openembedded.org/openembedded-core/commit/?h=warrior&id=f3326309c7c22a6034917f6eee21908c61f44a2f
# https://github.com/python/cpython/pull/13196/commits/752b61141da76e81e53700bdbea81cd95af617b6
Expand All @@ -19,10 +21,20 @@ EXTRA_OECMAKE:append:class-target = " -DPYTHON_SOABI=${PYTHON_SOABI}"
#
# "Could not find ROS middleware implementation 'NOTFOUND'"
#
export AMENT_PREFIX_PATH="${STAGING_DIR_HOST}${prefix};${STAGING_DIR_NATIVE}${prefix}"
export AMENT_PREFIX_PATH="${STAGING_DIR_HOST}${prefix};${STAGING_DIR_NATIVE}${prefix};${STAGING_DIR_HOST}${ros_prefix};${STAGING_DIR_NATIVE}${ros_prefix}"

inherit cmake python3native

FILES:${PN}:prepend = " \
${datadir}/ament_index \
"

EXTRA_OECMAKE:prepend = "\
-DCMAKE_PREFIX_PATH='${STAGING_DIR_HOST}${ros_prefix};${STAGING_DIR_HOST}${prefix}' \
-DCMAKE_INSTALL_PREFIX:PATH='${ros_prefix}' \
"

EXTRA_OECMAKE:prepend:class-native = "\
-DCMAKE_PREFIX_PATH='${ros_prefix}' \
-DCMAKE_INSTALL_PREFIX:PATH='${ros_prefix}' \
"
26 changes: 21 additions & 5 deletions meta-ros2/classes/ros_ament_python.bbclass
Original file line number Diff line number Diff line change
@@ -1,18 +1,34 @@
# Copyright (c) 2018-2019 LG Electronics, Inc.
# Copyright (c) Qualcomm Innovation Center, Inc. All rights reserved

inherit setuptools3_legacy

do_install:append() {
mkdir -p ${D}${datadir}/ament_index/resource_index/packages
touch ${D}${datadir}/ament_index/resource_index/packages/${ROS_BPN}
if test -e ${D}${libdir}/${ROS_BPN}; then
for i in ${D}${libdir}/${ROS_BPN}/* ${D}${libdir}/${ROS_BPN}/*/*; do
mkdir -p ${D}${ros_datadir}/ament_index/resource_index/packages
touch ${D}${ros_datadir}/ament_index/resource_index/packages/${ROS_BPN}
if test -e ${D}${ros_libdir}/${ROS_BPN}; then
for i in ${D}${ros_libdir}/${ROS_BPN}/* ${D}${ros_libdir}/${ROS_BPN}/*/*; do
[ -f $i ] && sed -i '1c#!/usr/bin/python3' $i
done
true
fi

# similar to what setuptools3_legacy.bbclass does here:
for i in ${D}${ros_bindir}/* ${D}${ros_sbindir}/*; do
if [ -f "$i" ]; then
sed -i -e s:${PYTHON}:${USRBINPATH}/env\ ${SETUPTOOLS_PYTHON}:g $i
sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
fi
done
}

FILES:${PN}:prepend = " \
${datadir}/ament_index \
${ros_datadir}/ament_index \
"

PYTHON_SITEPACKAGES_DIR = "${ros_libdir}/${PYTHON_DIR}/site-packages"
jiaxshi marked this conversation as resolved.
Show resolved Hide resolved

SETUPTOOLS_INSTALL_ARGS = "--root=${D} \
--prefix=${ros_prefix} \
--install-lib=${PYTHON_SITEPACKAGES_DIR} \
--install-data=${ros_datadir}"