From ddcf3762cf6026af22ea548ec54031a4d1603564 Mon Sep 17 00:00:00 2001 From: Daisuke Nishimatsu Date: Sun, 5 Jun 2022 23:57:50 +0900 Subject: [PATCH 1/2] feat: obtain interface version from cmake variable Signed-off-by: Daisuke Nishimatsu --- rosidl_generator_rs/bin/rosidl_generator_rs | 10 +++++++++- rosidl_generator_rs/cmake/custom_command.cmake | 1 + .../rosidl_generator_rs_generate_interfaces.cmake | 1 + rosidl_generator_rs/resource/Cargo.toml.em | 4 +--- rosidl_generator_rs/rosidl_generator_rs/__init__.py | 3 ++- 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/rosidl_generator_rs/bin/rosidl_generator_rs b/rosidl_generator_rs/bin/rosidl_generator_rs index 2d36a68bc..5bd7fe0c7 100755 --- a/rosidl_generator_rs/bin/rosidl_generator_rs +++ b/rosidl_generator_rs/bin/rosidl_generator_rs @@ -31,9 +31,17 @@ def main(argv=sys.argv[1:]): '--typesupport-impls', required=True, help='All the available typesupport implementations') + parser.add_argument( + '--package-version', + required=True, + help='The version of interface package') args = parser.parse_args(argv) - return generate_rs(args.generator_arguments_file, args.typesupport_impls) + return generate_rs( + args.generator_arguments_file, + args.typesupport_impls, + args.package_version, + ) if __name__ == '__main__': diff --git a/rosidl_generator_rs/cmake/custom_command.cmake b/rosidl_generator_rs/cmake/custom_command.cmake index a3f3ff916..011dcbc41 100644 --- a/rosidl_generator_rs/cmake/custom_command.cmake +++ b/rosidl_generator_rs/cmake/custom_command.cmake @@ -23,6 +23,7 @@ add_custom_command( COMMAND ${PYTHON_EXECUTABLE} ${rosidl_generator_rs_BIN} --generator-arguments-file "${generator_arguments_file}" --typesupport-impls "${_typesupport_impls}" + --package-version "${package_version}" DEPENDS ${target_dependencies} COMMENT "Generating Rust code for ROS interfaces" VERBATIM diff --git a/rosidl_generator_rs/cmake/rosidl_generator_rs_generate_interfaces.cmake b/rosidl_generator_rs/cmake/rosidl_generator_rs_generate_interfaces.cmake index 33ff0e871..771ce647b 100644 --- a/rosidl_generator_rs/cmake/rosidl_generator_rs_generate_interfaces.cmake +++ b/rosidl_generator_rs/cmake/rosidl_generator_rs_generate_interfaces.cmake @@ -119,6 +119,7 @@ foreach(dep ${target_dependencies}) endforeach() set(generator_arguments_file "${CMAKE_CURRENT_BINARY_DIR}/rosidl_generator_rs__arguments.json") +set(package_version "${${PROJECT_NAME}_VERSION}") rosidl_write_generator_arguments( "${generator_arguments_file}" PACKAGE_NAME "${PROJECT_NAME}" diff --git a/rosidl_generator_rs/resource/Cargo.toml.em b/rosidl_generator_rs/resource/Cargo.toml.em index 234c28ed6..2aa193b4a 100644 --- a/rosidl_generator_rs/resource/Cargo.toml.em +++ b/rosidl_generator_rs/resource/Cargo.toml.em @@ -1,8 +1,6 @@ [package] name = "@(package_name)" -@# The version should ideally be taken from package.xml, see -@# https://github.com/ros2-rust/ros2_rust/issues/116 -version = "0.2.0" +version = "@(package_version)" edition = "2021" [dependencies] diff --git a/rosidl_generator_rs/rosidl_generator_rs/__init__.py b/rosidl_generator_rs/rosidl_generator_rs/__init__.py index 6d998491c..00e2b1286 100644 --- a/rosidl_generator_rs/rosidl_generator_rs/__init__.py +++ b/rosidl_generator_rs/rosidl_generator_rs/__init__.py @@ -52,7 +52,7 @@ def convert_lower_case_underscore_to_camel_case(word): return ''.join(x.capitalize() or '_' for x in word.split('_')) -def generate_rs(generator_arguments_file, typesupport_impls): +def generate_rs(generator_arguments_file, typesupport_impls, package_version): args = read_generator_arguments(generator_arguments_file) package_name = args['package_name'] @@ -157,6 +157,7 @@ def generate_rs(generator_arguments_file, typesupport_impls): cargo_toml_data = { 'dependency_packages': dependency_packages, 'package_name': args['package_name'], + 'package_version': package_version, } expand_template( os.path.join(template_dir, 'Cargo.toml.em'), From 0c78e272cb15d3996ef2bb0246e4ac1267cee145 Mon Sep 17 00:00:00 2001 From: Daisuke Nishimatsu Date: Mon, 6 Jun 2022 02:55:22 +0900 Subject: [PATCH 2/2] refactor: append package version into generator arguments file Signed-off-by: Daisuke Nishimatsu --- rosidl_generator_rs/bin/rosidl_generator_rs | 5 ----- rosidl_generator_rs/cmake/custom_command.cmake | 1 - .../cmake/rosidl_generator_rs_generate_interfaces.cmake | 6 +++++- rosidl_generator_rs/rosidl_generator_rs/__init__.py | 4 ++-- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/rosidl_generator_rs/bin/rosidl_generator_rs b/rosidl_generator_rs/bin/rosidl_generator_rs index 5bd7fe0c7..0bfcc2213 100755 --- a/rosidl_generator_rs/bin/rosidl_generator_rs +++ b/rosidl_generator_rs/bin/rosidl_generator_rs @@ -31,16 +31,11 @@ def main(argv=sys.argv[1:]): '--typesupport-impls', required=True, help='All the available typesupport implementations') - parser.add_argument( - '--package-version', - required=True, - help='The version of interface package') args = parser.parse_args(argv) return generate_rs( args.generator_arguments_file, args.typesupport_impls, - args.package_version, ) diff --git a/rosidl_generator_rs/cmake/custom_command.cmake b/rosidl_generator_rs/cmake/custom_command.cmake index 011dcbc41..a3f3ff916 100644 --- a/rosidl_generator_rs/cmake/custom_command.cmake +++ b/rosidl_generator_rs/cmake/custom_command.cmake @@ -23,7 +23,6 @@ add_custom_command( COMMAND ${PYTHON_EXECUTABLE} ${rosidl_generator_rs_BIN} --generator-arguments-file "${generator_arguments_file}" --typesupport-impls "${_typesupport_impls}" - --package-version "${package_version}" DEPENDS ${target_dependencies} COMMENT "Generating Rust code for ROS interfaces" VERBATIM diff --git a/rosidl_generator_rs/cmake/rosidl_generator_rs_generate_interfaces.cmake b/rosidl_generator_rs/cmake/rosidl_generator_rs_generate_interfaces.cmake index 771ce647b..0d04344c6 100644 --- a/rosidl_generator_rs/cmake/rosidl_generator_rs_generate_interfaces.cmake +++ b/rosidl_generator_rs/cmake/rosidl_generator_rs_generate_interfaces.cmake @@ -119,7 +119,6 @@ foreach(dep ${target_dependencies}) endforeach() set(generator_arguments_file "${CMAKE_CURRENT_BINARY_DIR}/rosidl_generator_rs__arguments.json") -set(package_version "${${PROJECT_NAME}_VERSION}") rosidl_write_generator_arguments( "${generator_arguments_file}" PACKAGE_NAME "${PROJECT_NAME}" @@ -131,6 +130,11 @@ rosidl_write_generator_arguments( TARGET_DEPENDENCIES ${target_dependencies} ) +file(READ ${generator_arguments_file} contents) +string(REPLACE "\n}" + ",\n \"package_version\": \"${${PROJECT_NAME}_VERSION}\"\n}" contents ${contents}) +file(WRITE ${generator_arguments_file} ${contents}) + file(MAKE_DIRECTORY "${_output_path}") set(_target_suffix "__rs") diff --git a/rosidl_generator_rs/rosidl_generator_rs/__init__.py b/rosidl_generator_rs/rosidl_generator_rs/__init__.py index 00e2b1286..d0e3c6ac3 100644 --- a/rosidl_generator_rs/rosidl_generator_rs/__init__.py +++ b/rosidl_generator_rs/rosidl_generator_rs/__init__.py @@ -52,7 +52,7 @@ def convert_lower_case_underscore_to_camel_case(word): return ''.join(x.capitalize() or '_' for x in word.split('_')) -def generate_rs(generator_arguments_file, typesupport_impls, package_version): +def generate_rs(generator_arguments_file, typesupport_impls): args = read_generator_arguments(generator_arguments_file) package_name = args['package_name'] @@ -157,7 +157,7 @@ def generate_rs(generator_arguments_file, typesupport_impls, package_version): cargo_toml_data = { 'dependency_packages': dependency_packages, 'package_name': args['package_name'], - 'package_version': package_version, + 'package_version': args['package_version'], } expand_template( os.path.join(template_dir, 'Cargo.toml.em'),