osrf / auto-abi-checker

Tool designed to facilitate the run the great ABI compliance checker by supporting easy inputs and no configuration files
Apache License 2.0
5 stars 4 forks source link

rosidl_typesupport on Foxy: same file in two packages #16

Open j-rivero opened 4 years ago

j-rivero commented 4 years ago

Compilation of the whole repository is failing since to the two packages ship the same file and the compiler falls into a previous definition problem.

  // add includes
  #include "/tmp/tmp2214w6b4/files/opt/ros/foxy/include/rosidl_typesupport_c/message_type_support_dispatch.h"
  #include "/tmp/tmp2214w6b4/files/opt/ros/foxy/include/rosidl_typesupport_c/service_type_support_dispatch.h"
  #include "/tmp/tmp2214w6b4/files/opt/ros/foxy/include/rosidl_typesupport_c/type_support_map.h"
  #include "/tmp/tmp2214w6b4/files/opt/ros/foxy/include/rosidl_typesupport_cpp/message_type_support_dispatch.hpp"
  #include "/tmp/tmp2214w6b4/files/opt/ros/foxy/include/rosidl_typesupport_cpp/service_type_support_dispatch.hpp"
  #include "/tmp/tmp2214w6b4/files/opt/ros/foxy/include/rosidl_typesupport_cpp/type_support_map.h"
  #include "/tmp/tmp2214w6b4/files/opt/ros/foxy/include/rosidl_typesupport_c/identifier.h"
  #include "/tmp/tmp2214w6b4/files/opt/ros/foxy/include/rosidl_typesupport_c/visibility_control.h"
  #include "/tmp/tmp2214w6b4/files/opt/ros/foxy/include/rosidl_typesupport_cpp/identifier.hpp"
  #include "/tmp/tmp2214w6b4/files/opt/ros/foxy/include/rosidl_typesupport_cpp/visibility_control.h"

  // add namespaces
  namespace rosidl_typesupport_cpp{typedef int tmp_add_type_1;}
  rosidl_typesupport_cpp::tmp_add_type_1 tmp_add_func_1(){return 0;};

  // add classes
  rosidl_message_type_support_t* tmp_add_class_0;
  rosidl_service_type_support_t* tmp_add_class_1;
  type_support_map_t* tmp_add_class_2;

The GCC parameters:
  /usr/bin/x86_64-linux-gnu-gcc-9 -fdump-lang-raw -fkeep-inline-functions -c -x c++ -fpermissive -w --std=c++17 -DBOOST_HAS_PTHREADS=1 -I/opt/ros/foxy/src/gtest_vendor/include -I/opt/ros/foxy/include "/tmp/JGxAGlGCBB/dump1.h"  -I/tmp/tmp2214w6b4/files/opt/ros/foxy/include

In file included from /tmp/JGxAGlGCBB/dump1.h:8:
/tmp/tmp2214w6b4/files/opt/ros/foxy/include/rosidl_typesupport_cpp/type_support_map.h:26:16: error: redefinition of ‘struct type_support_map_t’
   26 | typedef struct type_support_map_t
      |                ^~~~~~~~~~~~~~~~~~
In file included from /tmp/JGxAGlGCBB/dump1.h:5:
/tmp/tmp2214w6b4/files/opt/ros/foxy/include/rosidl_typesupport_c/type_support_map.h:26:16: note: previous definition of ‘struct type_support_map_t’
   26 | typedef struct type_support_map_t
      |                ^~~~~~~~~~~~~~~~~~
In file included from /tmp/JGxAGlGCBB/dump1.h:8:
/tmp/tmp2214w6b4/files/opt/ros/foxy/include/rosidl_typesupport_cpp/type_support_map.h:46:3: error: conflicting declaration ‘typedef int type_support_map_t’
   46 | } type_support_map_t;
      |   ^~~~~~~~~~~~~~~~~~
In file included from /tmp/JGxAGlGCBB/dump1.h:5:
/tmp/tmp2214w6b4/files/opt/ros/foxy/include/rosidl_typesupport_c/type_support_map.h:46:3: note: previous declaration as ‘typedef struct type_support_map_t type_support_map_t’
   46 | } type_support_map_t;

Ideally one of the files should be removed but the bug can point to problems in the way the auto-abi-checker is working: each package should be compiled in isolation, if possible.

j-rivero commented 4 years ago

Possible workaround https://github.com/ros2/rosidl_typesupport/issues/79