Can't build agent because of fmt

Ouverte
#255 7 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
38/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Calme
Stack technique
cpp
Domaine
build-system

Piste de recherche

Commencez par reproduire le build de Jazzy avec build_agent.sh et inspectez InterfaceLinux.hpp autour de la ligne 63, où l’erreur fmt/spdlog est instanciée. Déterminez quelles installations de fmt et spdlog le build sélectionne, puis vérifiez que le micro-ROS Agent se construit et reste compatible avec la configuration linorobot2 signalée.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

  • 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 which requires micro ros agent.

Behavior

Following the installation tutorial, 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<Context>::value(const T&, fmt::v11::detail::custom_tag) [with T = dds::xrce::TransportAddress; typename std::enable_if<(! has_formatter<T, typename Context::char_type>()), int>::type <anonymous> = 0; Context = fmt::v11::context]’:
/home/darkadius/anaconda3/include/fmt/base.h:2208:65:   required from ‘fmt::v11::detail::value<Context>::value(T&) [with T = dds::xrce::TransportAddress; typename std::enable_if<(std::integral_constant<bool, (((((((std::is_class<T>::value || std::is_enum<T>::value) || std::is_union<T>::value) || std::is_array<_Up>::value) && (! fmt::v11::detail::has_to_string_view<T, void>::value)) && (! fmt::v11::detail::is_named_arg<T>::value)) && (! fmt::v11::detail::use_format_as<T>::value)) && (! fmt::v11::detail::use_format_as_member<typename std::remove_const<T>::type, std::integral_constant<bool, true> >::value))>::value || (!1)), int>::type <anonymous> = 0; Context = fmt::v11::context]’
/home/darkadius/anaconda3/include/fmt/base.h:2781:20:   required from ‘constexpr fmt::v11::detail::format_arg_store<Context, NUM_ARGS, NUM_NAMED_ARGS, DESC> 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<char>]’
/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<T ...>, Args&& ...) [with Args = {const char (&)[24], dds::xrce::TransportAddress&}; fmt::v11::format_string<T ...> = fmt::v11::fstring<const char (&)[24], dds::xrce::TransportAddress&>]’
/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<dds::xrce::TransportAddress, char> _’ has incomplete type
 2235 |     type_is_unformattable_for<T, char_type> _;
Solutions tried:

-Downgrading spdlog: Jazzy's rclpy requires spdlog 1.15.0
-Building libfmt from source from here : Gives the above error as the new libfmt wasn't detected
-Using the DUAGENT flag (both on/off) from here : Still gives me the above error
-Using the snap version from here : 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?

Langage dominant
C++
Étoiles
201
Forks
111
Merge moyen
1 j 6 h
PR mergées (30 j)
10

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de micro-ROS/micro-ROS-Agent

Toutes les issues de micro-ROS/micro-ROS-Agent

Issues similaires

Plus d'issues C++

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.