Commit 1cdedde5 authored by Gill Lumer-Klabbers's avatar Gill Lumer-Klabbers
Browse files

Move ros2 workspace back to root

parent 8d4dc72b
<!--
For general questions, please ask on ROS answers: https://answers.ros.org, make sure to include at least the `ros2` tag and the rosdistro version you are running, e.g. `ardent`.
For general design discussions, please post on discourse: https://discourse.ros.org/c/ng-ros
Not sure if this is the right repository? Open an issue on https://github.com/ros2/ros2/issues
For Bug report or feature requests, please fill out the relevant category below
-->
## Bug report
**Required Info:**
- Operating System:
- <!-- OS and version (e.g. Windows 10, Ubuntu 16.04...) -->
- Installation type:
- <!-- binaries or from source -->
- Version or commit hash:
- <!-- Output of git rev-parse HEAD, release version, or repos file -->
- DDS implementation:
- <!-- rmw_implementation used (e.g. Fast-RTPS, RTI Connext, etc -->
- Client library (if applicable):
- <!-- e.g. rclcpp, rclpy, or N/A -->
#### Steps to reproduce issue
<!-- Detailed instructions on how to reliably reproduce this issue http://sscce.org/
``` code that can be copy-pasted is preferred ``` -->
```
```
#### Expected behavior
#### Actual behavior
#### Additional information
<!-- If you are reporting a bug delete everything below
If you are requesting a feature deleted everything above this line -->
----
## Feature request
#### Feature description
<!-- Description in a few sentences what the feature consists of and what problem it will solve -->
#### Implementation considerations
<!-- Relevant information on how the feature could be implemented and pros and cons of the different solutions -->
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Changelog for package ros1_bridge
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0.9.4 (2020-09-10)
------------------
* use hardcoded QoS (keep all, transient local) for /tf_static topic in dynamic_bridge (`#282 <https://github.com/ros2/ros1_bridge/issues/282>`_)
* document explicitly passing the topic type to 'ros2 topic echo' (`#279 <https://github.com/ros2/ros1_bridge/issues/279>`_)
0.9.3 (2020-07-07)
------------------
* Fix multiple definition if message with same name as service exists (`#272 <https://github.com/ros2/ros1_bridge/issues/272>`_)
* Contributors: Dirk Thomas
0.9.2 (2020-06-01)
------------------
* When generating service mappings cast pair to set to avoid duplicate pairs (`#268 <https://github.com/ros2/ros1_bridge/issues/268>`_)
* Contributors: Gavin Suddrey
0.9.1 (2020-05-27)
------------------
* Deprecate package key for service parameters, use full type instead (`#263 <https://github.com/ros2/ros1_bridge/issues/263>`_)
* Fix removing obsolete ROS 2 service bridges (`#267 <https://github.com/ros2/ros1_bridge/issues/267>`_)
* Gracefully handle invalid ROS 1 publishers (`#266 <https://github.com/ros2/ros1_bridge/issues/266>`_)
* Use reliable publisher in simple bridge (`#264 <https://github.com/ros2/ros1_bridge/issues/264>`_)
* Remove outdated information on Fast RTPS bug (`#260 <https://github.com/ros2/ros1_bridge/issues/260>`_)
* Contributors: Dirk Thomas, Thom747
0.9.0 (2020-05-18)
------------------
* Avoid new deprecations (`#255 <https://github.com/ros2/ros1_bridge/issues/255>`_)
* Updates since changes to message_info in rclcpp (`#253 <https://github.com/ros2/ros1_bridge/issues/253>`_)
* Assert ROS 1 nodes' stdout (`#247 <https://github.com/ros2/ros1_bridge/issues/247>`_)
* Ignore actionlib_msgs deprecation warning (`#245 <https://github.com/ros2/ros1_bridge/issues/245>`_)
* Drop workaround for https://github.com/ros2/rmw_fastrtps/issues/265. (`#233 <https://github.com/ros2/ros1_bridge/issues/233>`_)
* Code style only: wrap after open parenthesis if not in one line (`#238 <https://github.com/ros2/ros1_bridge/issues/238>`_)
* Contributors: Dirk Thomas, Jacob Perron, Michel Hidalgo, William Woodall
0.8.2 (2020-01-17)
------------------
* fix building test when ROS 1 diagnostic_msgs is isolated from roscpp (`#236 <https://github.com/ros2/ros1_bridge/issues/236>`_)
* fix service with custom mapped message field (`#234 <https://github.com/ros2/ros1_bridge/issues/234>`_)
* Contributors: Dirk Thomas
0.8.1 (2019-10-23)
------------------
* fix showing duplicate keys in --print-pairs (`#225 <https://github.com/ros2/ros1_bridge/issues/225>`_)
* fix bridging builtin_interfaces Duration and Time (`#224 <https://github.com/ros2/ros1_bridge/issues/224>`_)
* Don't use features that will be deprecated (`#222 <https://github.com/ros2/ros1_bridge/issues/222>`_)
* Contributors: Dirk Thomas, Peter Baughman
0.8.0 (2019-09-27)
------------------
* Promote special CLI rules to flags. (`#217 <https://github.com/ros2/ros1_bridge/issues/217>`_)
* Update __log_rosout_disable workaround to use --ros-args. (`#216 <https://github.com/ros2/ros1_bridge/issues/216>`_)
* Clearer instructions for example (`#211 <https://github.com/ros2/ros1_bridge/issues/211>`_)
* add services bridging to parameter_bridge (`#176 <https://github.com/ros2/ros1_bridge/issues/176>`_)
* Contributors: Jose Luis Blanco-Claraco, Michel Hidalgo, cyrilleberger
0.7.3 (2019-08-02)
------------------
* fix typename in static bridge (`#209 <https://github.com/ros2/ros1_bridge/issues/209>`_)
* fix cosmetic in message (`#207 <https://github.com/ros2/ros1_bridge/issues/207>`_)
* Use %zu print format for size_t (`#204 <https://github.com/ros2/ros1_bridge/issues/204>`_)
* Fix parameter bridge for topic if ros1 and ros2 type have a different name (`#177 <https://github.com/ros2/ros1_bridge/issues/177>`_)
* Contributors: Dirk Thomas, Emerson Knapp, cyrilleberger
0.7.2 (2019-05-29)
------------------
* add note about rostopic echo (`#202 <https://github.com/ros2/ros1_bridge/issues/202>`_)
* add workspace setup documentation (`#201 <https://github.com/ros2/ros1_bridge/issues/201>`_)
* Contributors: Mabel Zhang
0.7.1 (2019-05-20)
------------------
* Disable rosout logging for the bridge (`#197 <https://github.com/ros2/ros1_bridge/issues/197>`_)
* Handle launch_testing assertExitCodes correctly (`#193 <https://github.com/ros2/ros1_bridge/issues/193>`_)
* Support field selection (`#174 <https://github.com/ros2/ros1_bridge/issues/174>`_)
* Use interface kind names properly in ROS2 interface type names. (`#194 <https://github.com/ros2/ros1_bridge/issues/194>`_)
* Contributors: Juan Rodriguez Hortala, Michel Hidalgo, ivanpauno
0.7.0 (2019-05-08)
------------------
* Adds interface type to ROS2 message type name. (`#191 <https://github.com/ros2/ros1_bridge/issues/191>`_)
* fix build by passing options (`#192 <https://github.com/ros2/ros1_bridge/issues/192>`_)
* changes to avoid deprecated API's (`#189 <https://github.com/ros2/ros1_bridge/issues/189>`_)
* Corrected publish calls with shared_ptr signature, leftovers (`#190 <https://github.com/ros2/ros1_bridge/issues/190>`_)
* Corrected publish calls with shared_ptr signature (`#188 <https://github.com/ros2/ros1_bridge/issues/188>`_)
* Migrate launch tests to new launch_testing features & API (`#179 <https://github.com/ros2/ros1_bridge/issues/179>`_)
* Some small fixes to the README (`#186 <https://github.com/ros2/ros1_bridge/issues/186>`_)
* Fix the generator. (`#185 <https://github.com/ros2/ros1_bridge/issues/185>`_)
* Merge pull request `#183 <https://github.com/ros2/ros1_bridge/issues/183>`_ from ros2/interface_specific_compilation_units
* remove note about memory usage from README
* split into interface specific compilation units
* duplicate template before modifying it to track history
* fix log messages (`#182 <https://github.com/ros2/ros1_bridge/issues/182>`_)
* use safe_load instead of deprecated load (`#180 <https://github.com/ros2/ros1_bridge/issues/180>`_)
* Merge pull request `#178 <https://github.com/ros2/ros1_bridge/issues/178>`_ from ros2/gonzalodepedro/fix-propagate-args-to-rcl-init
* Allows propagations of cmd args to rclcpp::init
* add section about DCO to CONTRIBUTING.md
* Add launch along with launch_testing as test dependencies. (`#171 <https://github.com/ros2/ros1_bridge/issues/171>`_)
* Switch to rclcpp logging and improve messages (`#167 <https://github.com/ros2/ros1_bridge/issues/167>`_)
* invalidate wrong cached result for diagnostic_msgs (`#170 <https://github.com/ros2/ros1_bridge/issues/170>`_)
* Drops legacy launch API usage. (`#163 <https://github.com/ros2/ros1_bridge/issues/163>`_)
* export find_ros1_package cmake (`#164 <https://github.com/ros2/ros1_bridge/issues/164>`_)
* ensure that the diagnostic_msgs package is from ROS 2 (`#169 <https://github.com/ros2/ros1_bridge/issues/169>`_)
* Allow latching for ROS1 pub, and custom qos for ROS2 components (`#162 <https://github.com/ros2/ros1_bridge/issues/162>`_)
* Allow external use of ros1_bridge library factories (`#160 <https://github.com/ros2/ros1_bridge/issues/160>`_)
* Contributors: Chris Lalancette, Dirk Thomas, Gonzalo de Pedro, Gonzo, Karsten Knese, Michel Hidalgo, Mikael Arguedas, Paul Bovbel, William Woodall, ivanpauno
0.6.1 (2018-12-12)
------------------
* exclude ros1 nodelets (`#152 <https://github.com/ros2/ros1_bridge/issues/152>`_)
* fix is_package_mapping check (`#151 <https://github.com/ros2/ros1_bridge/issues/151>`_)
* Contributors: Dirk Thomas, Karsten Knese
0.6.0 (2018-12-08)
------------------
* expose convert function (`#146 <https://github.com/ros2/ros1_bridge/issues/146>`_)
* support for custom field mapping for services (`#147 <https://github.com/ros2/ros1_bridge/issues/147>`_)
* handle idl files correctly (`#145 <https://github.com/ros2/ros1_bridge/issues/145>`_)
* Fix for actions subfolder introduction in ros2 message bridge (`#143 <https://github.com/ros2/ros1_bridge/issues/143>`_)
* use new error handling API from rcutils (`#141 <https://github.com/ros2/ros1_bridge/issues/141>`_)
* changed cmake message logger level (`#138 <https://github.com/ros2/ros1_bridge/issues/138>`_)
* Contributors: Alberto Soragna, Dirk Thomas, Karsten Knese, Samuel Servulo, William Woodall
0.5.1 (2018-08-20)
------------------
* Merge pull request `#136 <https://github.com/ros2/ros1_bridge/issues/136>`_ from ros2/update_docs_135
* update doc to reflect that any mapping combination is supported
* rule can be a message mapping even if a field mapping is provided as well (`#135 <https://github.com/ros2/ros1_bridge/issues/135>`_)
* Contributors: Mikael Arguedas
0.5.0 (2018-06-27)
------------------
* remove --build-tests which is an ament argument from colcon invocation
* print service pairs as well (`#124 <https://github.com/ros2/ros1_bridge/issues/124>`_)
* print message for all ROS 2 message pkgs (`#123 <https://github.com/ros2/ros1_bridge/issues/123>`_)
* update README to use colcon and ROS Melodic (`#122 <https://github.com/ros2/ros1_bridge/issues/122>`_)
* include module name which wasn't found in error message (`#121 <https://github.com/ros2/ros1_bridge/issues/121>`_)
* use catkin_pkg to parse packages (`#119 <https://github.com/ros2/ros1_bridge/issues/119>`_)
* migrate launch -> launch.legacy (`#117 <https://github.com/ros2/ros1_bridge/issues/117>`_)
* Duplicate messages in bidirectional_bridge fix (`#113 <https://github.com/ros2/ros1_bridge/issues/113>`_)
* Fix linter failures from includes (`#110 <https://github.com/ros2/ros1_bridge/issues/110>`_)
* Map duration and time messages (`#106 <https://github.com/ros2/ros1_bridge/issues/106>`_)
* clarify that all field must be listed explicitly (`#109 <https://github.com/ros2/ros1_bridge/issues/109>`_)
* add an error message if the mapping rules are not a list (`#107 <https://github.com/ros2/ros1_bridge/issues/107>`_)
* advise to ask questions on ROS answers
* Contributors: ArkadiuszNiemiec, Dirk Thomas, Mikael Arguedas, Tully Foote, William Woodall, dhood
0.4.0 (2017-12-08)
------------------
* match topic name printed in console (`#102 <https://github.com/ros2/ros1_bridge/issues/102>`_)
* Update for rclcpp namespace removals (`#101 <https://github.com/ros2/ros1_bridge/issues/101>`_)
* cmake 3.10 compatibility: pass absolute path to file(GENERATE) function (`#100 <https://github.com/ros2/ros1_bridge/issues/100>`_)
* depend on rosidl_interfaces_packages group (`#99 <https://github.com/ros2/ros1_bridge/issues/99>`_)
* Fix building of ros1_bridge against newer roscpp. (`#98 <https://github.com/ros2/ros1_bridge/issues/98>`_)
* Merge pull request `#97 <https://github.com/ros2/ros1_bridge/issues/97>`_ from ros2/ament_cmake_pytest
* use ament_cmake_pytest instead of ament_cmake_nose
* Merge pull request `#96 <https://github.com/ros2/ros1_bridge/issues/96>`_ from ros2/print_type_names
* print bridged type names
* Increase timeout waiting for server for ros2 client in tests (`#94 <https://github.com/ros2/ros1_bridge/issues/94>`_)
* update style to match latest uncrustify (`#93 <https://github.com/ros2/ros1_bridge/issues/93>`_)
* Contributors: Brian Gerkey, Chris Lalancette, Dirk Thomas, Esteve Fernandez, Hunter Allen, Jackie Kay, Karsten Knese, Mikael Arguedas, Morgan Quigley, Rafal Kozik, Rafał Kozik, Steven! Ragnarök, Tully Foote, William Woodall, dhood, gerkey
cmake_minimum_required(VERSION 3.5)
project(ros1_bridge)
# Default to C++14
if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 14)
endif()
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra)
endif()
find_package(rmw REQUIRED)
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(rmw_implementation_cmake REQUIRED)
find_package(std_msgs REQUIRED)
# find ROS 1 packages
set(cmake_extras_files cmake/find_ros1_package.cmake cmake/find_ros1_interface_packages.cmake)
include(cmake/find_ros1_package.cmake)
find_package(PkgConfig)
if(NOT PKG_CONFIG_FOUND)
message(WARNING "Failed to find PkgConfig, skipping...")
# call ament_package() to avoid ament_tools treating this as a plain CMake pkg
ament_package()
return()
endif()
find_ros1_package(roscpp)
if(NOT ros1_roscpp_FOUND)
message(WARNING "Failed to find ROS 1 roscpp, skipping...")
# call ament_package() to avoid ament_tools treating this as a plain CMake pkg
ament_package(
CONFIG_EXTRAS ${cmake_extras_files}
)
return()
endif()
find_ros1_package(std_msgs REQUIRED)
# find ROS 1 packages with messages / services
include(cmake/find_ros1_interface_packages.cmake)
find_ros1_interface_packages(ros1_message_packages)
set(prefixed_ros1_message_packages "")
foreach(ros1_message_package ${ros1_message_packages})
# TODO(karsten1987): This is currently a workaround to work with ROS 2 classloader
# rather than ROS 1 classloader.
if(NOT "${ros1_message_package}" STREQUAL "nodelet")
find_ros1_package(${ros1_message_package} REQUIRED)
list(APPEND prefixed_ros1_message_packages "ros1_${ros1_message_package}")
endif()
endforeach()
set(TEST_ROS1_BRIDGE FALSE)
if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
find_package(diagnostic_msgs REQUIRED)
find_ros1_package(diagnostic_msgs)
find_ros1_package(roslaunch)
ament_lint_auto_find_test_dependencies()
if(ros1_diagnostic_msgs_FOUND AND ros1_roslaunch_FOUND)
# ensure that the ROS 2 diagnostic_msgs was found by find_package
# and not the ROS 1 package
set(_ros1_diagnostic_msgs_DIR "${ros1_diagnostic_msgs_PREFIX}/share/diagnostic_msgs/cmake")
if("${diagnostic_msgs_DIR}" STREQUAL "${_ros1_diagnostic_msgs_DIR}")
# invalidate the cached result to retry finding the package next time
unset(diagnostic_msgs_DIR CACHE)
message(FATAL_ERROR "Failed to find ROS 2 package 'diagnostic_msgs'")
endif()
set(TEST_ROS1_BRIDGE TRUE)
endif()
endif()
ament_export_include_directories(include)
ament_export_libraries(${PROJECT_NAME})
ament_python_install_package(${PROJECT_NAME})
ament_package(
CONFIG_EXTRAS ${cmake_extras_files}
)
set(generated_path "${CMAKE_BINARY_DIR}/generated")
set(generated_files "${generated_path}/get_factory.cpp")
list(APPEND generated_files "${generated_path}/get_mappings.cpp")
# generate per interface compilation units to keep the memory usage low
ament_index_get_resources(ros2_interface_packages "rosidl_interfaces")
# actionlib_msgs is deprecated, but we will quiet the warning until the bridge has support for
# ROS actions: https://github.com/ros2/design/issues/195
set(actionlib_msgs_DEPRECATED_QUIET TRUE)
foreach(package_name ${ros2_interface_packages})
find_package(${package_name} QUIET REQUIRED)
message(STATUS "Found ${package_name}: ${${package_name}_VERSION} (${${package_name}_DIR})")
if(NOT "${package_name}" STREQUAL "builtin_interfaces")
list(APPEND generated_files "${generated_path}/${package_name}_factories.cpp")
list(APPEND generated_files "${generated_path}/${package_name}_factories.hpp")
foreach(interface_file ${${package_name}_IDL_FILES})
file(TO_CMAKE_PATH "${interface_file}" interface_name)
get_filename_component(interface_basename "${interface_name}" NAME_WE)
# skipping actions and request and response messages of services
if(NOT "${interface_name}" MATCHES "^(msg|srv)/" OR "${interface_basename}" MATCHES "_(Request|Response)$")
continue()
endif()
string(REPLACE "/" "__" interface_name "${interface_name}")
get_filename_component(interface_name "${interface_name}" NAME_WE)
list(APPEND generated_files "${generated_path}/${package_name}__${interface_name}__factories.cpp")
endforeach()
endif()
endforeach()
set(target_dependencies
"bin/ros1_bridge_generate_factories"
"resource/get_factory.cpp.em"
"resource/get_mappings.cpp.em"
"resource/interface_factories.cpp.em"
"resource/pkg_factories.cpp.em"
"resource/pkg_factories.hpp.em"
"ros1_bridge/__init__.py")
add_custom_command(
OUTPUT ${generated_files}
COMMAND ${PYTHON_EXECUTABLE} bin/ros1_bridge_generate_factories
--output-path "${generated_path}" --template-dir resource
DEPENDS ${target_dependencies}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating factories for interface types")
if(NOT WIN32)
# ignore warning in ROS 1 message headers
set_source_files_properties(${generated_files}
PROPERTIES COMPILE_FLAGS "-Wno-unused-parameter")
endif()
include_directories(include ${generated_path})
function(custom_executable target)
cmake_parse_arguments(
ARG "ROS1_DEPENDENCIES" "" "TARGET_DEPENDENCIES" ${ARGN})
add_executable(${target}
${ARG_UNPARSED_ARGUMENTS})
ament_target_dependencies(${target}
"rclcpp"
${ARG_TARGET_DEPENDENCIES})
if(ARG_ROS1_DEPENDENCIES)
ament_target_dependencies(${target}
"ros1_roscpp"
"ros1_std_msgs")
endif()
if(ARG_DEPENDENCIES)
add_dependencies(${target} ${ARG_DEPENDENCIES})
endif()
install(TARGETS ${target}
DESTINATION lib/${PROJECT_NAME})
endfunction()
custom_executable(simple_bridge_1_to_2 "src/simple_bridge_1_to_2.cpp"
ROS1_DEPENDENCIES
TARGET_DEPENDENCIES "std_msgs")
custom_executable(simple_bridge_2_to_1 "src/simple_bridge_2_to_1.cpp"
ROS1_DEPENDENCIES
TARGET_DEPENDENCIES "std_msgs")
custom_executable(simple_bridge "src/simple_bridge.cpp"
ROS1_DEPENDENCIES
TARGET_DEPENDENCIES "std_msgs")
add_library(${PROJECT_NAME} SHARED
"src/builtin_interfaces_factories.cpp"
"src/convert_builtin_interfaces.cpp"
"src/bridge.cpp"
${generated_files})
ament_target_dependencies(${PROJECT_NAME}
${prefixed_ros1_message_packages}
${ros2_interface_packages}
"rclcpp"
"ros1_roscpp"
"ros1_std_msgs")
install(TARGETS ${PROJECT_NAME}
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin)
custom_executable(static_bridge
"src/static_bridge.cpp"
ROS1_DEPENDENCIES
TARGET_DEPENDENCIES ${ros2_interface_packages})
target_link_libraries(static_bridge
${PROJECT_NAME})
custom_executable(parameter_bridge
"src/parameter_bridge.cpp"
ROS1_DEPENDENCIES
TARGET_DEPENDENCIES ${message_packages})
target_link_libraries(parameter_bridge
${PROJECT_NAME})
custom_executable(dynamic_bridge
"src/dynamic_bridge.cpp"
ROS1_DEPENDENCIES
TARGET_DEPENDENCIES ${ros2_interface_packages})
target_link_libraries(dynamic_bridge
${PROJECT_NAME})
if(TEST_ROS1_BRIDGE)
custom_executable(test_ros2_client_cpp "test/test_ros2_client.cpp")
ament_target_dependencies("test_ros2_client_cpp${target_suffix}" "ros1_roscpp" "diagnostic_msgs")
custom_executable(test_ros2_server_cpp "test/test_ros2_server.cpp")
ament_target_dependencies("test_ros2_server_cpp${target_suffix}" "ros1_roscpp" "diagnostic_msgs")
set(TEST_BRIDGE_DYNAMIC_BRIDGE "$<TARGET_FILE:dynamic_bridge>")
set(TEST_BRIDGE_ROS2_CLIENT "$<TARGET_FILE:test_ros2_client_cpp>")
set(TEST_BRIDGE_ROS2_SERVER "$<TARGET_FILE:test_ros2_server_cpp>")
endif()
macro(targets)
set(TEST_BRIDGE_RMW ${rmw_implementation})
configure_file(
test/test_topics_across_dynamic_bridge.py.in
test_topics_across_dynamic_bridge${target_suffix}.py.genexp
@ONLY
)
file(GENERATE
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/test_topics_across_dynamic_bridge${target_suffix}_$<CONFIG>.py"
INPUT "${CMAKE_CURRENT_BINARY_DIR}/test_topics_across_dynamic_bridge${target_suffix}.py.genexp"
)
add_launch_test(
"${CMAKE_CURRENT_BINARY_DIR}/test_topics_across_dynamic_bridge${target_suffix}_$<CONFIG>.py"
TARGET test_topics_across_dynamic_bridge${target_suffix}
ENV RMW_IMPLEMENTATION=${rmw_implementation}
TIMEOUT 60)
configure_file(
test/test_services_across_dynamic_bridge.py.in
test_services_across_dynamic_bridge${target_suffix}.py.genexp
@ONLY
)
file(GENERATE
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/test_services_across_dynamic_bridge${target_suffix}_$<CONFIG>.py"
INPUT "${CMAKE_CURRENT_BINARY_DIR}/test_services_across_dynamic_bridge${target_suffix}.py.genexp"
)
add_launch_test(
"${CMAKE_CURRENT_BINARY_DIR}/test_services_across_dynamic_bridge${target_suffix}_$<CONFIG>.py"
TARGET test_services_across_dynamic_bridge${target_suffix}
ENV RMW_IMPLEMENTATION=${rmw_implementation}
TIMEOUT 60)
endmacro()
if(TEST_ROS1_BRIDGE)
find_package(launch_testing_ament_cmake REQUIRED)
add_executable(test_ros1_client "test/test_ros1_client.cpp")
ament_target_dependencies(test_ros1_client "ros1_diagnostic_msgs" "ros1_roscpp")
add_executable(test_ros1_server "test/test_ros1_server.cpp")
ament_target_dependencies(test_ros1_server "ros1_diagnostic_msgs" "ros1_roscpp")
set(TEST_BRIDGE_ROS1_ENV "${ros1_roslaunch_PREFIX}/env.sh")
set(TEST_BRIDGE_ROSCORE "${ros1_roslaunch_PREFIX}/bin/roscore")
set(TEST_BRIDGE_ROS1_CLIENT "$<TARGET_FILE:test_ros1_client>")
set(TEST_BRIDGE_ROS1_SERVER "$<TARGET_FILE:test_ros1_server>")
call_for_each_rmw_implementation(targets)
endif()
install(
PROGRAMS bin/ros1_bridge_generate_factories
DESTINATION lib/${PROJECT_NAME}/generate_factories
)
install(
DIRECTORY cmake
DESTINATION share/${PROJECT_NAME}
)
install(
DIRECTORY include/
DESTINATION include
)
install(
DIRECTORY resource
DESTINATION share/${PROJECT_NAME}
)
Any contribution that you make to this repository will
be under the Apache 2 License, as dictated by that
[license](http://www.apache.org/licenses/LICENSE-2.0.html):
~~~
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
~~~
Contributors must sign-off each commit by adding a `Signed-off-by: ...`
line to commit messages to certify that they have the right to submit
the code they are contributing to the project according to the
[Developer Certificate of Origin (DCO)](https://developercertificate.org/).
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,