micro-ROS / micro-ROS/micro-ROS-Agent
Can't build agent because of fmt
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
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- 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