Kirkstone (l4t-r32.7.x) Flashed image ROS 2 underlay installation does not have packages listed in "IMAGE_INSTALL:append" (possible export issue to underlay)
Describe the bug I'm still really new to yocto, and the meta-ros recipes look a bit different from what I have seen with generic yocto recipes. However in my meta layer with the image_install:append list, I have a ton of ROS 2 packages (e.g. python3 colcon, ament_cmake*, examples*, rosidl_*)
On the flashed image looks like only the python3 colcon, rpyutils sensor_msgs, std_msgs, examples, and a handful of other ros base packages get installed to "/opt/ros/humble" underlay, which is enough to run ros2 cli commands and colcon build, but not enough to create or build custom packages with dependencies on rosidl generators for example.
The underlay doesn't seem to have these packages groups specified in the image install append list:
ament_cmake, acment_cmake_ros, ament_index, rclcpp, rosidl, rosidl_defaults, rcl, rcl_interfaces, test_interface_files, unique_identifier_msgs, rcutils, libyaml_vendor
To Reproduce Layers:
layer path priority
==========================================================================
meta /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta 5
meta-tegra /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-tegra 5
contrib /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-tegra/contrib 4
meta-oe /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-oe 5
meta-python /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-python 5
meta-networking /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-networking 5
meta-filesystems /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-filesystems 5
meta-virtualization /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-virtualization 8
meta-tegra-community /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-tegra-community 20
meta-tegra-support /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-tegra-support 40
meta-demo-ci /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-demo-ci 40
meta-tegrademo /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-tegrademo 50
meta-ros2 /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-ros/meta-ros2 11
meta-ros2-humble /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-ros/meta-ros2-humble 12
meta-ros-common /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-ros/meta-ros-common 10
meta-dds /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-dds 6
workspace /home/papadrew/Downloads/l4t_build/tegra-demo-distro/build/workspace 99
Building for a jetson-xavier-nx-devkit-tx2-nx on ubuntu 24.04 native host
No bitbake errors seen, only the missing ros 2 underlay packages
Effectively I have to install the missing packages in an overlay as shown below, but somehow std_msgs and sensor_msgs can be traced to the underlay:
jetson-xavier-nx-devkit-tx2-nx:~/ros_ws$ ros2 pkg prefix rosidl_parser
/home/savagerobotstx2/ros_ws/install/rosidl_parser
jetson-xavier-nx-devkit-tx2-nx:~/ros_ws$ ros2 pkg prefix sensor_msgs
/opt/ros/humble
jetson-xavier-nx-devkit-tx2-nx:~/ros_ws$ ros2 pkg prefix std_msgs
/opt/ros/humble
Expected behavior The image install appends should export ros packages to the underlay in "/opt/ros/humble/"
I'm attaching my image bitbake file for reference (with txt extension only for github attachment compatibility) demo-image-ros2.txt
Looking in the ros underlay of the kirkstone image, I do not see cmake folders under any of the packages.
The example minimal pub/sub works out of the box, so everything built in the underlay works, but any attempt to build overlay packages fails.
Hi @dirksavage88
There are two distros if you include tegra-demo distro layer, one is "tegrademo" another is "ros2".
if you use tegra-demo distro, DISTRO would be set by "tegrademo" not "ros2". it would affect to build and install ros package correctly because all build configuration for ros2 is defined "ros2" distro.
So, I recommend you to exclude tegra-demo distro layer and you can add ros packages to local.conf in prompt.
BR, Mark
@robwoolley I have to confirm, but I think this might be resolved by your recent fix to the PYTHONPATH in kirkstone and kirkstone-next
Closing as likely fixed. Please feel free to open a new issue if the problem still exists.