Closed ahcorde closed 4 years ago
It would make it easier to review these PRs if you could reference at least one specific source line in the packages where new dependencies are added to clarify why they are added. It might also be good to clarify - when runtime packages are added - why generators are still needed.
It might also be good to clarify - when runtime packages are added - why generators are still needed.
This was my fault I didn't remove the rosidl_generator_c/cpp dependencies. I revisited all the changes and removed this dependencies
I have been checking rcl, rcl_lifecycle, rcl_action, rclcpp and rclcpp_action all of them make use of rosidl_generator ( with the new packages should be rosidl_runtime) but I think this dependecy is not need it, the reason why it's because rosidl_generator/rosidl_runtim is used where a message packages it's being used too.
Some examples: RCL: https://github.com/ros2/rcl/blob/master/rcl_action/CMakeLists.txt#L57 https://github.com/ros2/rcl/blob/master/rcl_lifecycle/CMakeLists.txt#L48
RCLCPP:
https://github.com/ros2/rclcpp/blob/master/rclcpp_action/CMakeLists.txt#L36 https://github.com/ros2/rclcpp/blob/master/rclcpp/CMakeLists.txt#L180
@wjwwood and @dirk-thomas what do you think?
Please double check that with all the PRs the actual goal (avoiding a runtime dependency on any generator package) has been achieved.
I have been reproducing the failure in my local MAC OS machine. if I used include_directories
there is no issue when cmake is trying to find the generated headers, but with target_include_directories
, I think a race condition is happening. If I execute colcon a second time then the error disappears.
@wjwwood or @dirk any thoughts about this?
The rosidl_generator_cpp
PR removes the add_dependencies(<test_target> ${PROJECT_NAME})
calls for all test targets: e.g. https://github.com/ros2/rosidl/pull/442/files#diff-59c331d207ef4d5e6a390e74e0bc4739L54
Without that dependency CMake tries to build the test before the code generator was run which creates the used header files.
The packages depend on rosidl_generator_c
or rosidl_generator_cpp
are:
The packages depend on rosidl_runtime_c
or rosidl_runtime_cpp
The packages depend on rosidl_generator_c or rosidl_generator_cpp are:
I guess the dependencies still need to be removed from the two introspection packages then to achieve the stated goal, right?
rosidl_generator_c
and rosidl_generator_cpp
from rosidl_typesupport_introspection_cpp
and rosidl_typesupport_introspection_c
https://github.com/ros2/rosidl/pull/442/commits/3db20b0726ad4967cc640fa0ed33f67e78322fc0rosidl_generator_c
and rosidl_generator_cpp
to rosidl_generator_py
https://github.com/ros2/rosidl_python/pull/100/commits/dea8232a1e1a9b9c92d7c8b15dfcd2a215ae0a6fThe packages depend on rosidl_generator_c
or rosidl_generator_cpp
are:
The packages depend on rosidl_runtime_c
or rosidl_runtime_cpp
The packages depend on rosidl_generator_c
or rosidl_generator_cpp
are:
The packages depend on rosidl_runtime_c
or rosidl_runtime_cpp
Please update all PRs to update / revert changes to dependency types of the following kind, e.g. ros2/rmw_dds_common#10:
Since the added buildtool_depend
and buildtool_export_depend
dependencies are a build as well as a run dependency please revert the dependency type to the previously used depend
. I would rather like to avoid that kind of dependency type changes in this already massive amount of changes.
Also please update the list of all related PRs somewhere in this ticket - in a single place (rather than having to scroll through the whole thread).
The packages depend on rosidl_generator_c
or rosidl_generator_cpp
are:
The packages depend on rosidl_runtime_c
or rosidl_runtime_cpp
These warnings on Windows were already fixed, but I didn't update the branch in the PR
15:49:21 C:\ci\ws\src\ros2\rmw_dds_common\rmw_dds_common\test\test_graph_cache.cpp(195,8): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. [C:\ci\ws\build\rmw_dds_common\test_graph_cache.vcxproj]
15:49:21 C:\ci\ws\src\ros2\rmw_dds_common\rmw_dds_common\test\test_graph_cache.cpp(388,8): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. [C:\ci\ws\build\rmw_dds_common\test_graph_cache.vcxproj]
CMake Deprecation Warning at /home/jenkins-agent/workspace/ci_linux-aarch64/ws/install/ament_cmake_export_interfaces/share/ament_cmake_export_interfaces/cmake/ament_export_interfaces.cmake:37 (message):
ament_export_interfaces() is deprecated, use ament_export_targets() instead
Call Stack (most recent call first):
CMakeLists.txt:85 (ament_export_interfaces)
In MacOS
Windows
This issue is to track all the PRs that are need it to compile ros2.repos with the changes introduced in this PR split https://github.com/ros2/rosidl/pull/442. We will have these packages: