generators.py
Go to the documentation of this file.
1 from ros_introspection.cmake import Command, SectionStyle
2 
3 BUILTIN_INTERFACES = {
4  'duration': 'builtin_interfaces/Duration',
5  'time': 'builtin_interfaces/Time'
6 }
7 
8 
10  for section in gen.sections:
11  for field in section.fields:
12  if field.type in BUILTIN_INTERFACES:
13  field.type = BUILTIN_INTERFACES[field.type]
14  gen.changed = True
15  elif field.type == 'Header':
16  field.type = 'std_msgs/Header'
17  gen.changed = True
18 
19 
20 def update_generators(package):
21  if not package.generators:
22  return
23 
24  for gen in package.get_all_generators():
26 
27  # Update Dependencies
28  package.manifest.insert_new_packages('buildtool_depend', ['rosidl_default_generators'])
29  package.manifest.insert_new_packages('exec_depend', ['rosidl_default_runtime'])
30  if package.manifest.format < 3:
31  package.manifest.upgrade(3)
32  package.manifest.insert_new_packages('member_of_group', ['rosidl_interface_packages'])
33 
34  # Enabling C++14
35  cxx_name = 'CMAKE_CXX_STANDARD'
36  cxx_value = '14'
37  if cxx_name in package.cmake.variables:
38  for cmd in package.cmake.content_map['set']:
39  tokens = cmd.get_tokens(include_name=True)
40  if tokens[0] == cxx_name and tokens[1] != cxx_value:
41  cmd.sections[0].values = [cxx_value]
42  cmd.changed = True
43  else:
44  set_cmd = Command('set')
45  set_cmd.add_section(cxx_name, cxx_value)
46  package.cmake.add_command(set_cmd)
47 
48  # Other msg operations
49  fp = Command('find_package')
50  fp.add_section('', ['rosidl_default_generators'])
51  fp.add_section('REQUIRED')
52  package.cmake.add_command(fp)
53 
54  my_style = SectionStyle('\n ', '\n ', '\n ')
55  idl = Command('rosidl_generate_interfaces')
56  generator_paths = [gen.type + '/' + gen.name for gen in package.get_all_generators()]
57  idl.add_section('', ['${PROJECT_NAME}'] + generator_paths, my_style)
58  idl.add_section('DEPENDENCIES', package.get_dependencies_from_msgs(), my_style)
59  package.cmake.add_command(idl)
60 
61  for old_cmd_name in ['add_message_files', 'add_service_files', 'generate_messages']:
62  for cmd in package.cmake.content_map[old_cmd_name]:
63  package.cmake.remove_command(cmd)


magical_ros2_conversion_tool
Author(s):
autogenerated on Wed Mar 3 2021 03:56:02