Skip to content

Building with ros2 humble and gbiggs backport branch of rosbag2 fails #1

@cgarry-vs

Description

@cgarry-vs

Pulling in the rosbag2 events from this PR ros2/rosbag2#1037 and attempting to build with ROS2 Humble fails with the following output:

colcon build --symlink-install --packages-select system_data_recorder
Starting >>> system_data_recorder
--- stderr: system_data_recorder                             
/home/veesai/ros2_humble/src/system_data_recorder/src/sdr_component.cpp: In member function ‘virtual rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn sdr::SystemDataRecorder::on_configure(const rclcpp_lifecycle::State&)’:
/home/veesai/ros2_humble/src/system_data_recorder/src/sdr_component.cpp:101:6: error: ‘rosbag2_cpp::bag_events::WriteSplitInfo’ has not been declared
  101 |     (rosbag2_cpp::bag_events::WriteSplitInfo & info) {
      |      ^~~~~~~~~~~
/home/veesai/ros2_humble/src/system_data_recorder/src/sdr_component.cpp: In lambda function:
/home/veesai/ros2_humble/src/system_data_recorder/src/sdr_component.cpp:104:29: error: request for member ‘opened_file’ in ‘info’, which is of non-class type ‘int’
  104 |       last_bag_file_ = info.opened_file;
      |                             ^~~~~~~~~~~
/home/veesai/ros2_humble/src/system_data_recorder/src/sdr_component.cpp:106:36: error: request for member ‘closed_file’ in ‘info’, which is of non-class type ‘int’
  106 |       notify_new_file_to_copy(info.closed_file);
      |                                    ^~~~~~~~~~~
/home/veesai/ros2_humble/src/system_data_recorder/src/sdr_component.cpp: In member function ‘virtual rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn sdr::SystemDataRecorder::on_configure(const rclcpp_lifecycle::State&)’:
/home/veesai/ros2_humble/src/system_data_recorder/src/sdr_component.cpp:107:5: error: no match for ‘operator=’ (operand types are ‘rosbag2_cpp::bag_events::BagSplitCallbackType’ {aka ‘std::function<void(rosbag2_cpp::bag_events::BagSplitInfo&)>’} and ‘sdr::SystemDataRecorder::on_configure(const rclcpp_lifecycle::State&)::<lambda(int&)>’)
  107 |     };
      |     ^
In file included from /usr/include/c++/9/future:48,
                 from /home/veesai/ros2_humble/install/rclcpp/include/rclcpp/rclcpp/executors.hpp:18,
                 from /home/veesai/ros2_humble/install/rclcpp/include/rclcpp/rclcpp/rclcpp.hpp:155,
                 from /home/veesai/ros2_humble/src/system_data_recorder/include/sdr/sdr_component.hpp:25,
                 from /home/veesai/ros2_humble/src/system_data_recorder/src/sdr_component.cpp:15:
/usr/include/c++/9/bits/std_function.h:462:7: note: candidate: ‘std::function<_Res(_ArgTypes ...)>& std::function<_Res(_ArgTypes ...)>::operator=(const std::function<_Res(_ArgTypes ...)>&) [with _Res = void; _ArgTypes = {rosbag2_cpp::bag_events::BagSplitInfo&}]’
  462 |       operator=(const function& __x)
      |       ^~~~~~~~
/usr/include/c++/9/bits/std_function.h:462:33: note:   no known conversion for argument 1 from ‘sdr::SystemDataRecorder::on_configure(const rclcpp_lifecycle::State&)::<lambda(int&)>’ to ‘const std::function<void(rosbag2_cpp::bag_events::BagSplitInfo&)>&’
  462 |       operator=(const function& __x)
      |                 ~~~~~~~~~~~~~~~~^~~
/usr/include/c++/9/bits/std_function.h:480:7: note: candidate: ‘std::function<_Res(_ArgTypes ...)>& std::function<_Res(_ArgTypes ...)>::operator=(std::function<_Res(_ArgTypes ...)>&&) [with _Res = void; _ArgTypes = {rosbag2_cpp::bag_events::BagSplitInfo&}]’
  480 |       operator=(function&& __x) noexcept
      |       ^~~~~~~~
/usr/include/c++/9/bits/std_function.h:480:28: note:   no known conversion for argument 1 from ‘sdr::SystemDataRecorder::on_configure(const rclcpp_lifecycle::State&)::<lambda(int&)>’ to ‘std::function<void(rosbag2_cpp::bag_events::BagSplitInfo&)>&&’
  480 |       operator=(function&& __x) noexcept
      |                 ~~~~~~~~~~~^~~
/usr/include/c++/9/bits/std_function.h:494:7: note: candidate: ‘std::function<_Res(_ArgTypes ...)>& std::function<_Res(_ArgTypes ...)>::operator=(std::nullptr_t) [with _Res = void; _ArgTypes = {rosbag2_cpp::bag_events::BagSplitInfo&}; std::nullptr_t = std::nullptr_t]’
  494 |       operator=(nullptr_t) noexcept
      |       ^~~~~~~~
/usr/include/c++/9/bits/std_function.h:494:17: note:   no known conversion for argument 1 from ‘sdr::SystemDataRecorder::on_configure(const rclcpp_lifecycle::State&)::<lambda(int&)>’ to ‘std::nullptr_t’
  494 |       operator=(nullptr_t) noexcept
      |                 ^~~~~~~~~
/usr/include/c++/9/bits/std_function.h:523:2: note: candidate: ‘template<class _Functor> std::function<_Res(_ArgTypes ...)>::_Requires<std::function<_Res(_ArgTypes ...)>::_Callable<typename std::decay<_Functor>::type>, std::function<_Res(_ArgTypes ...)>&> std::function<_Res(_ArgTypes ...)>::operator=(_Functor&&) [with _Functor = _Functor; _Res = void; _ArgTypes = {rosbag2_cpp::bag_events::BagSplitInfo&}]’
  523 |  operator=(_Functor&& __f)
      |  ^~~~~~~~
/usr/include/c++/9/bits/std_function.h:523:2: note:   template argument deduction/substitution failed:
/usr/include/c++/9/bits/std_function.h: In substitution of ‘template<class _Res, class ... _ArgTypes> template<class _Cond, class _Tp> using _Requires = typename std::enable_if<_Cond::value, _Tp>::type [with _Cond = std::function<void(rosbag2_cpp::bag_events::BagSplitInfo&)>::_Callable<sdr::SystemDataRecorder::on_configure(const rclcpp_lifecycle::State&)::<lambda(int&)>, std::__invoke_result<sdr::SystemDataRecorder::on_configure(const rclcpp_lifecycle::State&)::<lambda(int&)>&, rosbag2_cpp::bag_events::BagSplitInfo&> >; _Tp = std::function<void(rosbag2_cpp::bag_events::BagSplitInfo&)>&; _Res = void; _ArgTypes = {rosbag2_cpp::bag_events::BagSplitInfo&}]’:
/usr/include/c++/9/bits/std_function.h:523:2:   required by substitution of ‘template<class _Functor> std::function<void(rosbag2_cpp::bag_events::BagSplitInfo&)>::_Requires<std::function<void(rosbag2_cpp::bag_events::BagSplitInfo&)>::_Callable<typename std::decay<_Tp>::type, std::__invoke_result<typename std::decay<_Tp>::type&, rosbag2_cpp::bag_events::BagSplitInfo&> >, std::function<void(rosbag2_cpp::bag_events::BagSplitInfo&)>&> std::function<void(rosbag2_cpp::bag_events::BagSplitInfo&)>::operator=<_Functor>(_Functor&&) [with _Functor = sdr::SystemDataRecorder::on_configure(const rclcpp_lifecycle::State&)::<lambda(int&)>]’
/home/veesai/ros2_humble/src/system_data_recorder/src/sdr_component.cpp:107:5:   required from here
/usr/include/c++/9/bits/std_function.h:385:8: error: no type named ‘type’ in ‘struct std::enable_if<false, std::function<void(rosbag2_cpp::bag_events::BagSplitInfo&)>&>’
  385 |  using _Requires = typename enable_if<_Cond::value, _Tp>::type;
      |        ^~~~~~~~~
/usr/include/c++/9/bits/std_function.h:532:2: note: candidate: ‘template<class _Functor> std::function<_Res(_ArgTypes ...)>& std::function<_Res(_ArgTypes ...)>::operator=(std::reference_wrapper<_Functor>) [with _Functor = _Functor; _Res = void; _ArgTypes = {rosbag2_cpp::bag_events::BagSplitInfo&}]’
  532 |  operator=(reference_wrapper<_Functor> __f) noexcept
      |  ^~~~~~~~
/usr/include/c++/9/bits/std_function.h:532:2: note:   template argument deduction/substitution failed:
/home/veesai/ros2_humble/src/system_data_recorder/src/sdr_component.cpp:107:5: note:   ‘sdr::SystemDataRecorder::on_configure(const rclcpp_lifecycle::State&)::<lambda(int&)>’ is not derived from ‘std::reference_wrapper<_Tp>’
  107 |     };
      |     ^
make[2]: *** [CMakeFiles/sdr_component.dir/build.make:63: CMakeFiles/sdr_component.dir/src/sdr_component.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:107: CMakeFiles/sdr_component.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
---
Failed   <<< system_data_recorder [2.82s, exited with code 2]

Summary: 0 packages finished [3.28s]
  1 package failed: system_data_recorder
  1 package had stderr output: system_data_recorder

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions