MIT-SPARK / Hydra-ROS

Hydra ROS Interface
BSD 2-Clause "Simplified" License
39 stars 16 forks source link

[BUG] Hydra ROS build failing #2

Closed vishrutskaushik closed 2 months ago

vishrutskaushik commented 7 months ago

I am using a ubuntu 20.04 with ROS Noetic docker with all dependencies installed.

I am facing the following build issue in hydra_ros /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference to spark_dsg::ZmqReceiver::~ZmqReceiver()' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference tospark_dsg::ZmqReceiver::ZmqReceiver(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, unsigned long)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference to spark_dsg::ZmqReceiver::graph() const' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference tospark_dsg::ZmqReceiver::recv(unsigned long)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra_ros/lib/libhydra_ros.so: undefined reference to `spark_dsg::ZmqSender::ZmqSender(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, unsigned long)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra_ros/lib/libhydra_ros.so: undefined reference to spark_dsg::ZmqSender::send(spark_dsg::DynamicSceneGraph const&)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra_ros/lib/libhydra_ros.so: undefined reference tospark_dsg::ZmqSender::~ZmqSender()' collect2: error: ld returned 1 exit status make[2]: [CMakeFiles/scene_graph_logger_node.dir/build.make:301: /workspaces/peer_perception/devel/.private/hydra_ros/lib/hydra_ros/scene_graph_logger_node] Error 1 make[1]: [CMakeFiles/Makefile2:307: CMakeFiles/scene_graph_logger_node.dir/all] Error 2 make[1]: Waiting for unfinished jobs.... /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference to spark_dsg::ZmqReceiver::~ZmqReceiver()' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference tospark_dsg::ZmqReceiver::ZmqReceiver(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, unsigned long)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference to spark_dsg::ZmqReceiver::graph() const' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference tospark_dsg::ZmqReceiver::recv(unsigned long)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra_ros/lib/libhydra_ros.so: undefined reference to `spark_dsg::ZmqSender::ZmqSender(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, unsigned long)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra_ros/lib/libhydra_ros.so: undefined reference to spark_dsg::ZmqSender::send(spark_dsg::DynamicSceneGraph const&)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra_ros/lib/libhydra_ros.so: undefined reference tospark_dsg::ZmqSender::~ZmqSender()' collect2: error: ld returned 1 exit status make[2]: [CMakeFiles/hydra_visualizer_node.dir/build.make:301: /workspaces/peer_perception/devel/.private/hydra_ros/lib/hydra_ros/hydra_visualizer_node] Error 1 make[1]: [CMakeFiles/Makefile2:2212: CMakeFiles/hydra_visualizer_node.dir/all] Error 2 /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference to spark_dsg::ZmqReceiver::~ZmqReceiver()' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference tospark_dsg::ZmqReceiver::ZmqReceiver(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, unsigned long)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference to spark_dsg::ZmqReceiver::graph() const' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference tospark_dsg::ZmqReceiver::recv(unsigned long)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra_ros/lib/libhydra_ros.so: undefined reference to `spark_dsg::ZmqSender::ZmqSender(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, unsigned long)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra_ros/lib/libhydra_ros.so: undefined reference to spark_dsg::ZmqSender::send(spark_dsg::DynamicSceneGraph const&)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra_ros/lib/libhydra_ros.so: undefined reference tospark_dsg::ZmqSender::~ZmqSender()' collect2: error: ld returned 1 exit status make[2]: [CMakeFiles/hydra_topology_node.dir/build.make:301: /workspaces/peer_perception/devel/.private/hydra_ros/lib/hydra_ros/hydra_topology_node] Error 1 make[1]: [CMakeFiles/Makefile2:334: CMakeFiles/hydra_topology_node.dir/all] Error 2 /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference to spark_dsg::ZmqReceiver::~ZmqReceiver()' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference tospark_dsg::ZmqReceiver::ZmqReceiver(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, unsigned long)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference to spark_dsg::ZmqReceiver::graph() const' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference tospark_dsg::ZmqReceiver::recv(unsigned long)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra_ros/lib/libhydra_ros.so: undefined reference to `spark_dsg::ZmqSender::ZmqSender(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, unsigned long)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra_ros/lib/libhydra_ros.so: undefined reference to spark_dsg::ZmqSender::send(spark_dsg::DynamicSceneGraph const&)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra_ros/lib/libhydra_ros.so: undefined reference tospark_dsg::ZmqSender::~ZmqSender()' collect2: error: ld returned 1 exit status make[2]: [CMakeFiles/hydra_ros_node.dir/build.make:301: /workspaces/peer_perception/devel/.private/hydra_ros/lib/hydra_ros/hydra_ros_node] Error 1 make[1]: [CMakeFiles/Makefile2:361: CMakeFiles/hydra_ros_node.dir/all] Error 2 /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference to spark_dsg::ZmqReceiver::~ZmqReceiver()' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference tospark_dsg::ZmqReceiver::ZmqReceiver(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, unsigned long)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference to spark_dsg::ZmqReceiver::graph() const' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference tospark_dsg::ZmqReceiver::recv(unsigned long)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra_ros/lib/libhydra_ros.so: undefined reference to `spark_dsg::ZmqSender::ZmqSender(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, unsigned long)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra_ros/lib/libhydra_ros.so: undefined reference to spark_dsg::ZmqSender::send(spark_dsg::DynamicSceneGraph const&)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra_ros/lib/libhydra_ros.so: undefined reference tospark_dsg::ZmqSender::~ZmqSender()' collect2: error: ld returned 1 exit status make[2]: [CMakeFiles/dsg_optimizer_node.dir/build.make:301: /workspaces/peer_perception/devel/.private/hydra_ros/lib/hydra_ros/dsg_optimizer_node] Error 1 make[1]: [CMakeFiles/Makefile2:388: CMakeFiles/dsg_optimizer_node.dir/all] Error 2 /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference to spark_dsg::ZmqReceiver::~ZmqReceiver()' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference tospark_dsg::ZmqReceiver::ZmqReceiver(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, unsigned long)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference to spark_dsg::ZmqReceiver::graph() const' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra/lib/libhydra.so: undefined reference tospark_dsg::ZmqReceiver::recv(unsigned long)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra_ros/lib/libhydra_ros.so: undefined reference to `spark_dsg::ZmqSender::ZmqSender(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, unsigned long)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra_ros/lib/libhydra_ros.so: undefined reference to spark_dsg::ZmqSender::send(spark_dsg::DynamicSceneGraph const&)' /usr/bin/ld: /workspaces/peer_perception/devel/.private/hydra_ros/lib/libhydra_ros.so: undefined reference tospark_dsg::ZmqSender::~ZmqSender()' collect2: error: ld returned 1 exit status make[2]: [CMakeFiles/gvd_validator_node.dir/build.make:302: /workspaces/peer_perception/devel/.private/hydra_ros/lib/hydra_ros/gvd_validator_node] Error 1 make[1]: [CMakeFiles/Makefile2:1132: CMakeFiles/gvd_validator_node.dir/all] Error 2 make: [Makefile:141: all] Error 2 cd /workspaces/peer_perception/build/hydra_ros; catkin build --get-env hydra_ros | catkin env -si /usr/bin/make --jobserver-auth=3,4; cd -

.................................................................................................................................................................................................................. Failed << hydra_ros:make [ Exited with code 2 ]
Failed <<< hydra_ros [ 26.7 seconds ]
[build] Summary: 25 of 26 packages succeeded.
[build] Ignored: 6 packages were skipped or are skiplisted.
[build] Warnings: 7 packages succeeded with warnings.
[build] Abandoned: None.
[build] Failed: 1 packages failed.
[build] Runtime: 3 minutes and 30.1 seconds total.
[build] Note: Workspace packages have changed, please re-source setup files to use them.

I have tried cleaning and rebuilding several times. Hydra ros is not able to detect spark_dsg for some reason. I also tried sourcing current build and rebuilding still it throws the same undefined reference to `spark_dsg::ZmqSender.

nathanhhughes commented 7 months ago

Sorry about that; spark-dsg optionally depends on libzmq and then Hydra assumes that spark-dsg has that feature turned on. If you do sudo apt install libzmq3-dev and then rebuild spark-dsg (catkin clean spark_dsg may be necessary) it should build. I should be able to put a more robust fix together after the RSS deadline

nathanhhughes commented 2 months ago

The zmq dependency is now installed by default, so I'm closing this issue for now