micro-ROS / micro-ROS/micro-ROS-Agent

Can't build agent because of fmt

Đang mở
#255 7 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Ngôn ngữ chính
C++
Star
201
Fork
111
Merge trung bình
1 ngày 6 giờ
Pull request đã merge (30 ngày)
10

Mô tả

- Hardware description: Personnal computer running Ubuntu 24.04
- Installation type: Micro-ros-setup, colcon-build, snap
- Version or commit hash: jazzy
- Current spdlog version: 1.15.0

**Context:**
I'm building a ros2 package based on [linorobot2](https://github.com/linorobot/linorobot2) which requires micro ros agent.

#### Behavior
Following the [installation tutorial](https://micro.ros.org/docs/tutorials/core/first_application_linux/), I execute the ```ros2 run build_agent.sh``` command and get this error:

```
In file included from /home/darkadius/anaconda3/include/fmt/format.h:41,
from /home/darkadius/anaconda3/include/fmt/core.h:5,
from /home/darkadius/anaconda3/include/spdlog/fmt/fmt.h:28,
from /home/darkadius/anaconda3/include/spdlog/common.h:50,
from /home/darkadius/anaconda3/include/spdlog/spdlog.h:12,
from /home/darkadius/ros2_ws/build/micro_ros_agent/agent/src/xrceagent/include/uxr/agent/logger/Logger.hpp:23,
from /home/darkadius/ros2_ws/build/micro_ros_agent/agent/src/xrceagent/include/uxr/agent/transport/SessionManager.hpp:18,
from /home/darkadius/ros2_ws/build/micro_ros_agent/agent/src/xrceagent/include/uxr/agent/transport/Server.hpp:20,
from /home/darkadius/ros2_ws/build/micro_ros_agent/agent/src/xrceagent/include/uxr/agent/transport/tcp/TCPv6AgentLinux.hpp:19,
from /home/darkadius/ros2_ws/build/micro_ros_agent/agent/src/xrceagent/src/cpp/transport/tcp/TCPv6AgentLinux.cpp:15:

/home/darkadius/anaconda3/include/fmt/base.h: In instantiation of ‘fmt::v11::detail::value::value(const T&, fmt::v11::detail::custom_tag) [with T = dds::xrce::TransportAddress; typename std::enable_if<(! has_formatter()), int>::type = 0; Context = fmt::v11::context]’:
/home/darkadius/anaconda3/include/fmt/base.h:2208:65: required from ‘fmt::v11::detail::value::value(T&) [with T = dds::xrce::TransportAddress; typename std::enable_if<(std::integral_constant::value || std::is_enum::value) || std::is_union::value) || std::is_array<_Up>::value) && (! fmt::v11::detail::has_to_string_view::value)) && (! fmt::v11::detail::is_named_arg::value)) && (! fmt::v11::detail::use_format_as::value)) && (! fmt::v11::detail::use_format_as_member::type, std::integral_constant >::value))>::value || (!1)), int>::type = 0; Context = fmt::v11::context]’
/home/darkadius/anaconda3/include/fmt/base.h:2781:20: required from ‘constexpr fmt::v11::detail::format_arg_store fmt::v11::make_format_args(T& ...) [with Context = context; T = {const char [24], dds::xrce::TransportAddress}; int NUM_ARGS = 2; int NUM_NAMED_ARGS = 0; long long unsigned int DESC = 252]’
/home/darkadius/anaconda3/include/spdlog/logger.h:328:75: required from ‘void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args&& ...) [with Args = {const char (&)[24], dds::xrce::TransportAddress&}; spdlog::string_view_t = fmt::v11::basic_string_view]’
/home/darkadius/anaconda3/include/spdlog/logger.h:80:13: required from ‘void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, fmt::v11::format_string, Args&& ...) [with Args = {const char (&)[24], dds::xrce::TransportAddress&}; fmt::v11::format_string = fmt::v11::fstring]’
/home/darkadius/ros2_ws/build/micro_ros_agent/agent/src/xrceagent/include/uxr/agent/transport/util/InterfaceLinux.hpp:63:17: required from here

/home/darkadius/anaconda3/include/fmt/base.h:2235:45: error: ‘fmt::v11::detail::type_is_unformattable_for _’ has incomplete type
2235 | type_is_unformattable_for _;
```
#### Solutions tried:
-**Downgrading spdlog:** Jazzy's rclpy requires spdlog 1.15.0
-**Building libfmt from source** from [here](https://github.com/micro-ROS/micro-ROS-Agent/issues/50#issuecomment-2131215009) : Gives the above error as the new libfmt wasn't detected
-**Using the DUAGENT flag (both on/off)** from [here](https://github.com/micro-ROS/micro_ros_setup/issues/455#issuecomment-1042635375) : Still gives me the above error
-**Using the snap version** from [here](https://github.com/micro-ROS/micro-ROS-Agent/issues/186#issuecomment-1494091767) : The package does build successfully, however, the only micro-ros-agent package on snap was the foxy version, which causes fatal compatibility issues upon launching the linorobot2 package

It feels like I've tried everything short of a complete ros2/ubuntu reinstall (which I'd like to avoid, obviously). Does anyone has some advice?

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Bắt đầu bằng cách tái hiện bản build Jazzy với build_agent.sh và kiểm tra InterfaceLinux.hpp quanh dòng 63, nơi lỗi fmt/spdlog được khởi tạo. Theo dõi các bản cài đặt fmt và spdlog mà bản build chọn, sau đó xác minh rằng micro-ROS Agent được build và vẫn tương thích với thiết lập linorobot2 được báo cáo.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
cpp
Lĩnh vực
build-system
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Ít trao đổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
38/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.