ros / meta-ros

OpenEmbedded Layers for ROS 1 and ROS 2
MIT License
391 stars 255 forks source link

{jazzy}: add bbappend to fix dependency issue of liblz4-vendor #1206

Closed jiaxshi closed 3 weeks ago

jiaxshi commented 3 months ago

lz4 is provided by poky. And it provides: liblz4 and liblz4-dev. Error: ERROR: Nothing PROVIDES 'ROS_UNRESOLVED_DEP-liblz4-dev' /local/mnt/workspace/jiaxshi/projects/ros_poky/meta-ros/meta-ros2-jazzy/generated-recipes/rosbag2/liblz4-vendor_0.26.1-2.bb DEPENDS on or otherwise requires it)

jiaxshi commented 3 months ago

Checked latest https://github.com/ros/rosdistro/blob/jazzy/2024-08-09/rosdep/base.yaml,

lz4:
  alpine: [lz4-dev]
  arch: [lz4]
  debian: [liblz4-dev]
  fedora: [lz4-devel]
  freebsd: [liblz4]
  gentoo: [app-arch/lz4]
  nixos: [lz4]
  openembedded: [lz4@openembedded-core]
sgstreet commented 1 month ago

@jiaxshi I'm trying to understand and follow the meta-ros development approach. Why not just change meta-ros2-jazzy/conf/ros-distro/include/jazzy/ros-distro.inc like this?

diff --git a/meta-ros2-jazzy/conf/ros-distro/include/jazzy/ros-distro.inc b/meta-ros2-jazzy/conf/ros-distro/include/jazzy/ros-distro.inc
index 82bf4da06..1a6420a85 100644
--- a/meta-ros2-jazzy/conf/ros-distro/include/jazzy/ros-distro.inc
+++ b/meta-ros2-jazzy/conf/ros-distro/include/jazzy/ros-distro.inc
@@ -386,3 +386,6 @@ ROS_UNRESOLVED_DEP-libgdal-dev = "gdal"
 ROS_UNRESOLVED_DEP-python3-smbus = "python3-smbus"
 ROS_UNRESOLVED_DEP-libxkbcommon-dev = "libxkbcommon"
 ROS_UNRESOLVED_DEP-libavdevice-dev = "ffmpeg"
+
+ROS_UNRESOLVED_DEP-liblz4-dev = "lz4"
+ROS_UNRESOLVED_DEP-liblz4 = "lz4"

I want to understand so I can follow the your lead.

jiaxshi commented 1 month ago

@jiaxshi I'm trying to understand and follow the meta-ros development approach. Why not just change meta-ros2-jazzy/conf/ros-distro/include/jazzy/ros-distro.inc like this?

diff --git a/meta-ros2-jazzy/conf/ros-distro/include/jazzy/ros-distro.inc b/meta-ros2-jazzy/conf/ros-distro/include/jazzy/ros-distro.inc
index 82bf4da06..1a6420a85 100644
--- a/meta-ros2-jazzy/conf/ros-distro/include/jazzy/ros-distro.inc
+++ b/meta-ros2-jazzy/conf/ros-distro/include/jazzy/ros-distro.inc
@@ -386,3 +386,6 @@ ROS_UNRESOLVED_DEP-libgdal-dev = "gdal"
 ROS_UNRESOLVED_DEP-python3-smbus = "python3-smbus"
 ROS_UNRESOLVED_DEP-libxkbcommon-dev = "libxkbcommon"
 ROS_UNRESOLVED_DEP-libavdevice-dev = "ffmpeg"
+
+ROS_UNRESOLVED_DEP-liblz4-dev = "lz4"
+ROS_UNRESOLVED_DEP-liblz4 = "lz4"

I want to understand so I can follow the your lead.

Hi @sgstreet The solution is flexible in yocto. Your change is fine to fix the issue. I didn't change it in ros-distro.inc because the file is generated by superflore tool. The best solution is to modify the dependency in base.yaml, i think. ros-distro.inc will be overwrite in next superflore generation. We need to fix the issue again if liblz4 is marked as unresolved dependency in base.yaml.

robwoolley commented 3 weeks ago

jiaxshi is correct that the long-term fix is to add it to base.yaml.

The ros-distro.inc is not a generated file, so I am okay with adding ROS_UNRESOLVED_DEP-liblz4 to it. It will make it easier to find when we take all the other ROS_UNRESOLVED_DEP references and merge them into base.yaml.

I have merged sgstreet's fix into scarthgap-next.

jiaxshi commented 3 weeks ago

Ok, that's good.