Skip to content
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

Add generators and runtime configuration packages #1

Merged
merged 2 commits into from
Aug 23, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# rosidl_core

Provides buildtime and runtime dependencies for ROS messages.

- [rosidl\_core\_generators](rosidl_core_generators/README.md) brings together dependencies for generating and building code for ROS messages.
- [rosidl\_core\_runtime](rosidl_core_runtime/README.md) brings together dependencies for using ROS messages at runtime.

For dependencies required for ROS services and ROS actions, you should depend on [rosidl_defaults](https://github.com/ros2/rosidl_defaults).
17 changes: 17 additions & 0 deletions rosidl_core_generators/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
cmake_minimum_required(VERSION 3.5)

project(rosidl_core_generators NONE)

find_package(ament_cmake REQUIRED)

ament_export_dependencies(ament_cmake_core)
ament_export_dependencies(rosidl_cmake)

if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
ament_lint_auto_find_test_dependencies()
endif()

ament_package(
CONFIG_EXTRAS "rosidl_core_generators-extras.cmake.in"
)
9 changes: 9 additions & 0 deletions rosidl_core_generators/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# rosidl_core_generators

Provides CMake functionality for finding and adding buildtime dependencies for packages providing ROS message definitions.

## Features

The *features* of this package consist entirely of serving as a gathering place for all runtime related dependencies of ROS interface packages.
These dependencies can be found in the [package.xml](package.xml).
This helps reduce the boilerplate needed when developers create their own interface packages.
41 changes: 41 additions & 0 deletions rosidl_core_generators/package.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>rosidl_core_generators</name>
<version>0.0.0</version>
<description>A configuration package defining core ROS interface generators.</description>
<maintainer email="jacob@openrobotics.org">Jacob Perron</maintainer>
<license>Apache License 2.0</license>
<author email="dthomas@osrfoundation.org">Dirk Thomas</author>

<buildtool_depend>ament_cmake</buildtool_depend>

<buildtool_export_depend>ament_cmake_core</buildtool_export_depend>
<buildtool_export_depend>rosidl_cmake</buildtool_export_depend>

<!-- Bloom does not support group_depend, so this unrolls rosidl_generator_packages -->
<buildtool_export_depend>rosidl_generator_c</buildtool_export_depend>
<buildtool_export_depend>rosidl_generator_cpp</buildtool_export_depend>
<buildtool_export_depend>rosidl_generator_py</buildtool_export_depend>

<!-- Bloom does not support group_depend, so this unrolls rosidl_typesupport_c_packages -->
<buildtool_export_depend>rosidl_typesupport_c</buildtool_export_depend>
<buildtool_export_depend>rosidl_typesupport_fastrtps_c</buildtool_export_depend>
<buildtool_export_depend>rosidl_typesupport_introspection_c</buildtool_export_depend>

<!-- Bloom does not support group_depend, so this unrolls rosidl_typesupport_cpp_packages -->
<buildtool_export_depend>rosidl_typesupport_cpp</buildtool_export_depend>
<buildtool_export_depend>rosidl_typesupport_fastrtps_cpp</buildtool_export_depend>
<buildtool_export_depend>rosidl_typesupport_introspection_cpp</buildtool_export_depend>

<test_depend>ament_lint_auto</test_depend>
<test_depend>ament_lint_common</test_depend>

<group_depend>rosidl_generator_packages</group_depend>
<group_depend>rosidl_typesupport_c_packages</group_depend>
<group_depend>rosidl_typesupport_cpp_packages</group_depend>

<export>
<build_type>ament_cmake</build_type>
</export>
</package>
33 changes: 33 additions & 0 deletions rosidl_core_generators/rosidl_core_generators-extras.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# generated from
# rosidl_core_generators/rosidl_core_generators-extras.cmake.in

find_package(ament_cmake_core REQUIRED)
ament_index_get_resources(rosidl_typesupport_c_packages "rosidl_typesupport_c")
ament_index_get_resources(rosidl_typesupport_cpp_packages "rosidl_typesupport_cpp")
ament_index_get_resources(rosidl_generator_packages "rosidl_generator_packages")
set(_exported_dependencies
"rosidl_typesupport_c"
"rosidl_typesupport_cpp"
${rosidl_typesupport_c_packages}
${rosidl_typesupport_cpp_packages}
${rosidl_generator_packages}
)

# find_package() all dependencies (if available)
# and append their DEFINITIONS INCLUDE_DIRS and LIBRARIES variables
# to @PROJECT_NAME@_DEFINITIONS , @PROJECT_NAME@_INCLUDE_DIRS and
# @PROJECT_NAME@_LIBRARIES.
foreach(_dep ${_exported_dependencies})
find_package("${_dep}" QUIET)
if(${_dep}_FOUND)
if(${_dep}_DEFINITIONS)
list(APPEND @PROJECT_NAME@_DEFINITIONS "${${_dep}_DEFINITIONS}")
endif()
if(${_dep}_INCLUDE_DIRS)
list(APPEND @PROJECT_NAME@_INCLUDE_DIRS "${${_dep}_INCLUDE_DIRS}")
endif()
if(${_dep}_LIBRARIES)
list(APPEND @PROJECT_NAME@_LIBRARIES "${${_dep}_LIBRARIES}")
endif()
endif()
endforeach()
14 changes: 14 additions & 0 deletions rosidl_core_runtime/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
cmake_minimum_required(VERSION 3.5)

project(rosidl_core_runtime NONE)

find_package(ament_cmake REQUIRED)

if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
ament_lint_auto_find_test_dependencies()
endif()

ament_package(
CONFIG_EXTRAS "rosidl_core_runtime-extras.cmake.in"
)
116 changes: 116 additions & 0 deletions rosidl_core_runtime/QUALITY_DECLARATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
This document is a declaration of software quality for the `rosidl_core_runtime` package, based on the guidelines in [REP-2004](https://www.ros.org/reps/rep-2004.html).
ivanpauno marked this conversation as resolved.
Show resolved Hide resolved

# `rosidl_core_runtime` Quality Declaration

The package `rosidl_core_runtime` claims to be in the **Quality Level 1** category as long as it is used with a **Quality Level 1** middleware.

Below are the rationales, notes, and caveats for this claim, organized by each requirement listed in the [Package Requirements for Quality Level 2 in REP-2004](https://www.ros.org/reps/rep-2004.html).

## Version Policy [1]

### Version Scheme [1.i]

`rosidl_core_runtime` uses `semver` according to the recommendation for ROS Core packages in the [ROS 2 Developer Guide](https://docs.ros.org/en/rolling/Contributing/Developer-Guide.html#versioning).

### Version Stability [1.ii]

`rosidl_core_runtime` is at a stable version i.e. `>= 1.0.0`. The current version can be found in its [package.xml](./package.xml), and its change history can be found in its [CHANGELOG](./CHANGELOG.md).

### Public API Declaration [1.iii]

`rosidl_core_runtime` does not provide any public API of its own.

### API Stability Within a Released ROS Distribution [1.iv]/[1.vi]

`rosidl_core_runtime` does not provide its own API and therefore API stability will not be impacted by changes.

### ABI Stability Within a Released ROS Distribution [1.v]/[1.vi]

`rosidl_core_runtime` does not contain any C or C++ code, therefore changes will not affect ABI stability.

## Change Control Process [2]

`rosidl_core_runtime` follows the recommended guidelines for ROS Core packages in the [ROS 2 Developer Guide](https://docs.ros.org/en/rolling/Contributing/Developer-Guide.html#quality-practices).

### Change Requests [2.i]

All changes will occur through a pull request, check [ROS 2 Developer Guide](https://docs.ros.org/en/rolling/Contributing/Developer-Guide.html#change-control-process) for additional information.

### Contributor Origin [2.ii]

This package uses DCO as its confirmation of contributor origin policy. More information can be found in [CONTRIBUTING](../CONTRIBUTING.md).

### Peer Review Policy [2.iii]

Following the recommended guidelines for ROS Core packages, all pull requests must have at least 1 peer review.

### Continuous Integration [2.iv]

All pull request must pass CI on all [tier 1 platforms](https://www.ros.org/reps/rep-2000.html#support-tiers)

### Documentation Policy [2.v]

All pull requests must resolve related documentation changes before merging.

## Documentation [3]

### Feature Documentation [3.i]

`rosidl_core_runtime` does not currently have its own features.

### Public API Documentation [3.ii]

`rosidl_core_runtime` does not have a public API and therefore does not require API documentation.

### License [3.iii]

The license for `rosidl_core_runtime` is Apache 2.0, the type is declared in the [package.xml](package.xml) manifest file, and a full copy of the license is in the [LICENSE](../LICENSE) file.

There are no source files in this package and therefore linters do not check for a license statement.

### Copyright Statements [3.iv]

There are no source code files in this package and therefore no files are currently yet copyrighted.

## Testing [4]

`rosidl_core_runtime` is a package providing solely CMake files and therefore does not require tests and has no coverage or performance requirements.

### Linters and Static Analysis [4.v]

`rmw` uses and passes all the standard linters and static analysis tools for a CMake package as described in the [ROS 2 Developer Guide](https://docs.ros.org/en/rolling/Contributing/Developer-Guide.html#linters-and-static-analysis).

Results of linter tests can be found [here](https://ci.ros2.org/view/nightly/job/nightly_linux_release/lastBuild/testReport/rosidl_core_runtime/).

## Dependencies [5]

### Direct Runtime ROS Dependencies [5.i]/[5.ii]

`rosidl_core_runtime` has the following group dependencies all of which are at **Quality Level 1** for **Quality Level 1** middlewares:
* `rosidl_runtime_packages` At the time of writing, this group contains the following runtime packages:
- `rosidl_runtime_c` [QUALITY DECLARATION](https://github.com/ros2/rosidl/blob/master/rosidl_runtime_c/QUALITY_DECLARATION.md)
- `rosidl_runtime_cpp` [QUALITY DECLARATION](https://github.com/ros2/rosidl/blob/master/rosidl_runtime_cpp/QUALITY_DECLARATION.md)
- `rosidl_typesupport_c` [QUALITY DECLARATION](https://github.com/ros2/rosidl_typesupport/blob/master/rosidl_typesupport_c/QUALITY_DECLARATION.md)
- `rosidl_typesupport_cpp` [QUALITY DECLARATION](https://github.com/ros2/rosidl_typesupport/blob/master/rosidl_typesupport_cpp/QUALITY_DECLARATION.md)
* `rosidl_typesupport_c_packages` At the time of writing, this group does not contain middleware independent runtime dependencies. It will likely include `typesupport_c` packages for your chosen middleware, which need to be **Quality Level 1** for this package to be considered **Quality Level 1**.
* `rosidl_typesupport_cpp_packages` At the time of writing, this group does not contain middleware independent runtime dependencies. It will likely include `typesupport_cpp` packages for your chosen middleware, which need to be **Quality Level 1** for this package to be considered **Quality Level 1**.

Note that interface generation or interface typesupport dependencies used only by Python client libraries are not considered in this assessment.

### Direct Runtime Non-ROS Dependencies [5.iii]
`rosidl_core_runtime` does not have any runtime non-ROS dependencies.

## Platform Support [6]

`rosidl_core_runtime` supports all of the tier 1 platforms as described in [REP-2000](https://www.ros.org/reps/rep-2000.html#support-tiers), and tests each change against all of them.

Currently nightly results can be seen here:
* [linux-aarch64_release](https://ci.ros2.org/view/nightly/job/nightly_linux-aarch64_release/lastBuild/testReport/rosidl_core_runtime/)
* [linux_release](https://ci.ros2.org/view/nightly/job/nightly_linux_release/lastBuild/testReport/rosidl_core_runtime/)
* [windows_release](https://ci.ros2.org/view/nightly/job/nightly_win_rel/lastBuild/testReport/rosidl_core_runtime/)

## Security [7]

### Vulnerability Disclosure Policy [7.i]

This package conforms to the Vulnerability Disclosure Policy in [REP-2006](https://www.ros.org/reps/rep-2006.html).
13 changes: 13 additions & 0 deletions rosidl_core_runtime/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# rosidl_core_runtime
ivanpauno marked this conversation as resolved.
Show resolved Hide resolved

Provides CMake functionality for finding and adding runtime dependencies for packages providing ROS message definitions.

## Features

The *features* of this package consist entirely of serving as a gathering place for all runtime related dependencies of ROS interface packages.
These dependencies can be found in the [package.xml](package.xml).
This helps reduce the boilerplate needed when developers create their own ROS interface packages.

## Quality Declaration

This package claims to be in the **Quality Level 1** category, see the [Quality Declaration](QUALITY_DECLARATION.md) for more details.
38 changes: 38 additions & 0 deletions rosidl_core_runtime/package.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>rosidl_core_runtime</name>
<version>0.0.0</version>
<description>A configuration package defining runtime dependencies for core ROS interfaces.</description>
<maintainer email="jacob@openrobotics.org">Jacob Perron</maintainer>
<license>Apache License 2.0</license>
<author email="dthomas@osrfoundation.org">Dirk Thomas</author>

<buildtool_depend>ament_cmake</buildtool_depend>

<!-- Bloom does not support group_depend, so this unrolls rosidl_runtime_packages -->
<build_export_depend>rosidl_runtime_c</build_export_depend>
<build_export_depend>rosidl_runtime_cpp</build_export_depend>
<build_export_depend>rosidl_generator_py</build_export_depend>

<!-- Bloom does not support group_depend, so this unrolls rosidl_typesupport_c_packages -->
<build_export_depend>rosidl_typesupport_c</build_export_depend>
<build_export_depend>rosidl_typesupport_fastrtps_c</build_export_depend>
<build_export_depend>rosidl_typesupport_introspection_c</build_export_depend>

<!-- Bloom does not support group_depend, so this unrolls rosidl_typesupport_cpp_packages -->
<build_export_depend>rosidl_typesupport_cpp</build_export_depend>
<build_export_depend>rosidl_typesupport_fastrtps_cpp</build_export_depend>
<build_export_depend>rosidl_typesupport_introspection_cpp</build_export_depend>

<test_depend>ament_lint_auto</test_depend>
<test_depend>ament_lint_common</test_depend>

<group_depend>rosidl_runtime_packages</group_depend>
<group_depend>rosidl_typesupport_c_packages</group_depend>
<group_depend>rosidl_typesupport_cpp_packages</group_depend>

<export>
<build_type>ament_cmake</build_type>
</export>
</package>
24 changes: 24 additions & 0 deletions rosidl_core_runtime/rosidl_core_runtime-extras.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# generated from
# rosidl_core_runtime/rosidl_core_runtime-extras.cmake.in

find_package(ament_cmake_core REQUIRED)
ament_index_get_resources(rosidl_runtime_packages "rosidl_runtime_packages")

# find_package() all dependencies (if available)
# and append their DEFINITIONS INCLUDE_DIRS and LIBRARIES variables
# to @PROJECT_NAME@_DEFINITIONS , @PROJECT_NAME@_INCLUDE_DIRS and
# @PROJECT_NAME@_LIBRARIES.
foreach(_dep ${rosidl_runtime_packages})
find_package("${_dep}" QUIET)
if(${_dep}_FOUND)
if(${_dep}_DEFINITIONS)
list(APPEND @PROJECT_NAME@_DEFINITIONS "${${_dep}_DEFINITIONS}")
endif()
if(${_dep}_INCLUDE_DIRS)
list(APPEND @PROJECT_NAME@_INCLUDE_DIRS "${${_dep}_INCLUDE_DIRS}")
endif()
if(${_dep}_LIBRARIES)
list(APPEND @PROJECT_NAME@_LIBRARIES "${${_dep}_LIBRARIES}")
endif()
endif()
endforeach()