eclipse-cyclonedds / cyclonedds

Eclipse Cyclone DDS project
https://projects.eclipse.org/projects/iot.cyclonedds
Other
854 stars 352 forks source link

Compilation error with ROS2 Humble by sources #2016

Open gorghino opened 4 months ago

gorghino commented 4 months ago

Hi, I'm trying to add cyclonedds to my ROS2 Humble built with sources on a Jetson Orin NX (arm64 - Ubuntu 20.04). Unfortunately it seems there're some conflicts with iceoryx:

Cloning:

nvidia@nvidia-orin-rt:~/ros2_humble/src$ git clone https://github.com/eclipse-cyclonedds/cyclonedds eclipse-cyclonedds/cyclonedds
Cloning into 'eclipse-cyclonedds/cyclonedds'...
remote: Enumerating objects: 45827, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 45827 (delta 0), reused 0 (delta 0), pack-reused 45820
Receiving objects: 100% (45827/45827), 24.61 MiB | 16.62 MiB/s, done.
Resolving deltas: 100% (31689/31689), done.
nvidia@nvidia-orin-rt:~/ros2_humble/src$ git clone https://github.com/ros2/rmw_cyclonedds.git -b humble
Cloning into 'rmw_cyclonedds'...
remote: Enumerating objects: 2792, done.
remote: Counting objects: 100% (1219/1219), done.
remote: Compressing objects: 100% (299/299), done.
remote: Total 2792 (delta 1088), reused 940 (delta 920), pack-reused 1573
Receiving objects: 100% (2792/2792), 1.05 MiB | 12.74 MiB/s, done.
Resolving deltas: 100% (2044/2044), done.
nvidia@nvidia-orin-rt:~/ros2_humble/src$ cd ..
nvidia@nvidia-orin-rt:~/ros2_humble$ rosdep install --from src -i --ignore-src -r -y --rosdistro humble
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
cyclonedds: No definition of [iceoryx_hoofs] for OS version [focal]
rmw_cyclonedds_cpp: No definition of [iceoryx_binding_c] for OS version [focal]
Continuing to install resolvable dependencies...
#All required rosdeps installed successfully

Full log: cmakelog.log

Error:

[ 81%] Building C object src/idl/CMakeFiles/idl.dir/src/symbol.c.o
cd /home/nvidia/ros2_humble/build/cyclonedds/src/idl && /usr/bin/cc -Didl_EXPORTS -I/home/nvidia/ros2_humble/src/eclipse-cyclonedds/cyclonedds/src/idl/include -I/home/nvidia/ros2_humble/src/eclipse-cyclonedds/cyclonedds/src/idl/src -I/home/nvidia/ros2_humble/build/cyclonedds/src/idl/include -I/home/nvidia/ros2_humble/build/cyclonedds/src/idl -I/home/nvidia/ros2_humble/src/eclipse-cyclonedds/cyclonedds/src/idl/../core/ddsi/include -I/home/nvidia/ros2_humble/src/eclipse-cyclonedds/cyclonedds/src/idl/../core/cdr/include -I/home/nvidia/ros2_humble/src/eclipse-cyclonedds/cyclonedds/src/security/api/include -I/home/nvidia/ros2_humble/build/cyclonedds/src/security/api/include -I/home/nvidia/ros2_humble/src/eclipse-cyclonedds/cyclonedds/src/security/api/../../core/ddsi/include -I/home/nvidia/ros2_humble/src/eclipse-cyclonedds/cyclonedds/src/security/api/../../core/cdr/include -I/home/nvidia/ros2_humble/build/cyclonedds/src/core -I/home/nvidia/ros2_humble/build/cyclonedds/src/core/include -I/home/nvidia/ros2_humble/src/eclipse-cyclonedds/cyclonedds/src/core/ddsc/include -I/home/nvidia/ros2_humble/src/eclipse-cyclonedds/cyclonedds/src/ddsrt/include -I/home/nvidia/ros2_humble/src/eclipse-cyclonedds/cyclonedds/src/ddsrt/src -I/home/nvidia/ros2_humble/build/cyclonedds/src/ddsrt/include -O2 -g -DNDEBUG -std=gnu99 -fPIC -Wall -Wextra -Wconversion -Wmissing-prototypes -MD -MT src/idl/CMakeFiles/idl.dir/src/symbol.c.o -MF CMakeFiles/idl.dir/src/symbol.c.o.d -o CMakeFiles/idl.dir/src/symbol.c.o -c /home/nvidia/ros2_humble/src/eclipse-cyclonedds/cyclonedds/src/idl/src/symbol.c
/home/nvidia/ros2_humble/src/eclipse-cyclonedds/cyclonedds/src/psmx_iox/src/psmx_iox_impl.cpp:26:10: fatal error: iceoryx_hoofs/posix_wrapper/signal_watcher.hpp: No such file or directory
   26 | #include "iceoryx_hoofs/posix_wrapper/signal_watcher.hpp"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [src/psmx_iox/CMakeFiles/psmx_iox.dir/build.make:79: src/psmx_iox/CMakeFiles/psmx_iox.dir/src/psmx_iox_impl.cpp.o] Error 1
make[2]: Leaving directory '/home/nvidia/ros2_humble/build/cyclonedds'
make[1]: *** [CMakeFiles/Makefile2:741: src/psmx_iox/CMakeFiles/psmx_iox.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

I can see the iceoryx installed in my ROS2 install folder:

nvidia@nvidia-orin-rt:~/ros2_humble$ find /home/nvidia/ros2_humble/install -name signal_watcher.hpp
/home/nvidia/ros2_humble/install/include/iceoryx/v2.90.0/iox/signal_watcher.hpp
/home/nvidia/ros2_humble/install/include/iceoryx/v2.0.5/iceoryx_hoofs/posix_wrapper/signal_watcher.hpp

The ros2 workspace was sourced before installing cyclonedds.

Probably related to https://github.com/eclipse-cyclonedds/cyclonedds/issues/2012