-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Decouple idl generation pipeline from rmw implementations #50
Comments
@dirk-thomas Can you check if my description is correct? |
The RMW implementations register their typesupports with this: https://github.com/ros2/rmw/blob/9f2e181306c66ac0f09674086a108d4657611766/rmw/cmake/register_rmw_implementation.cmake#L65 And the rosidl_typesupport/rosidl_typesupport_cpp/cmake/rosidl_typesupport_cpp_generate_interfaces.cmake Line 65 in 38eb801
Therefore I doubt that dependency can simply be eliminated. |
Yes, I ran into that problem after trying to build the interfaces before the rmw implementations. |
If you only have a single typesupport you avoid the overhead of the indirection by directly linking against it. |
Closing, as I've already found a way of solving the problem. See: |
I will reopen this since the previous work around has reached its limits with recent changes. The goal described by this ticket is what is imo the correct approach to solve ros2/rmw_dds_common#8. |
I've cancelled both linux jobs, as there are a lot of failures in the macos and Windows ones. |
The The |
Feature request
Feature description
Currently, rosidl_generate_interfaces from rosidl_cmake can't be called before the rmw implementations are built.
Decoupling idl generation from the
rmw
implementations will allow to use the same message abstractions at rmw level for implementing ros2/design#250.Implementation considerations
Currently, rosidl_typesupport_c and rosidl_typesupport_cpp have a build dependency on
rmw_implementation
, which depends on the available implementations (see 1 2).I first believed that they depend on
rmw_implementation
, because the typesupports are being registered there (e.g.: rmw_fastrtps_cpp), but I later realize that that resource isn't needed inrmw_typesupport_*
packages nor in rosidl_cmake.If that the case, we could simply delete that dependency.
For using the idl pipeline generation (calling
rosidl_generate_interfaces
macro), you may want to use the default generators by adding a build tool dependency onrosidl_default_generators
, which depends on thermw_typesupport_*
and also in rosidl_generator_py. The latest, also depends on the rmw_implementation package, because it is using the previously commented resource registered by the rmw implementations.I think that we could avoid using that resource, and directly query this other.
As I don't need the python generated file, I will only add a dependency on the packages I need instead of using
rosidl_default_generators
.The text was updated successfully, but these errors were encountered: