Skip to content

Commit aace9de

Browse files
committed
Unify generate_substitutions_from_package
Some ROS2 specific additions where added to the $ git-bloom-generate rosdebian call. This moves them into the common generate_substitutions_from_package and thus making it available to $ bloom-generate [ros]debian as well. Note that fallback_resolver is now a required argument.
1 parent 8e16f28 commit aace9de

File tree

3 files changed

+54
-52
lines changed

3 files changed

+54
-52
lines changed

bloom/generators/debian/generate_cmd.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ def get_subs(pkg, os_name, os_version, ros_distro, deb_inc=0, native=False):
8686
os_name,
8787
os_version,
8888
ros_distro,
89+
fallback_resolver=lambda name, _rosdistro: name,
8990
deb_inc=deb_inc,
9091
native=native
9192
)

bloom/generators/debian/generator.py

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@
8383

8484
from bloom.packages import get_package_data
8585

86+
from bloom.rosdistro_api import get_index
87+
8688
from bloom.util import code
8789
from bloom.util import to_unicode
8890
from bloom.util import execute_command
@@ -285,11 +287,11 @@ def generate_substitutions_from_package(
285287
os_name,
286288
os_version,
287289
ros_distro,
290+
fallback_resolver,
288291
installation_prefix='/usr',
289292
deb_inc=0,
290293
peer_packages=None,
291294
releaser_history=None,
292-
fallback_resolver=None,
293295
native=False
294296
):
295297
peer_packages = peer_packages or []
@@ -472,6 +474,53 @@ def convertToUnicode(obj):
472474
for item in data.items():
473475
data[item[0]] = convertToUnicode(item[1])
474476

477+
data['Rosdistro'] = ros_distro
478+
data['Package'] = fallback_resolver(data['Package'], ros_distro)
479+
480+
# ROS 2 specific bloom extensions.
481+
ros2_distros = [
482+
name for name, values in get_index().distributions.items()
483+
if values.get('distribution_type') == 'ros2']
484+
if ros_distro in ros2_distros:
485+
# Add ros-workspace package as a dependency to any package other
486+
# than ros_workspace and its dependencies.
487+
if package.name not in ['ament_cmake_core', 'ament_package', 'ros_workspace']:
488+
workspace_pkg_name = fallback_resolver('ros-workspace', ros_distro)
489+
data['BuildDepends'].append(workspace_pkg_name)
490+
data['Depends'].append(workspace_pkg_name)
491+
492+
# Add packages necessary to build vendor typesupport for rosidl_interface_packages to their
493+
# build dependencies.
494+
if ros_distro in ros2_distros and \
495+
ros_distro not in ('r2b2', 'r2b3', 'ardent') and \
496+
'rosidl_interface_packages' in [p.name for p in package.member_of_groups]:
497+
ROS2_VENDOR_TYPESUPPORT_DEPENDENCIES = [
498+
'rosidl-typesupport-fastrtps-c',
499+
'rosidl-typesupport-fastrtps-cpp',
500+
]
501+
502+
# Connext was changed to a new rmw that doesn't require typesupport after Foxy
503+
if ros_distro in ('bouncy', 'crystal', 'dashing', 'eloquent', 'foxy'):
504+
ROS2_VENDOR_TYPESUPPORT_DEPENDENCIES.extend([
505+
'rosidl-typesupport-connext-c',
506+
'rosidl-typesupport-connext-cpp',
507+
])
508+
509+
# OpenSplice was dropped after Eloquent.
510+
# rmw implementations are required as dependencies up to Eloquent.
511+
if ros_distro in ('bouncy', 'crystal', 'dashing', 'eloquent'):
512+
ROS2_VENDOR_TYPESUPPORT_DEPENDENCIES.extend([
513+
'rmw-connext-cpp',
514+
'rmw-fastrtps-cpp',
515+
'rmw-implementation',
516+
'rmw-opensplice-cpp',
517+
'rosidl-typesupport-opensplice-c',
518+
'rosidl-typesupport-opensplice-cpp',
519+
])
520+
521+
data['BuildDepends'] += [
522+
fallback_resolver(name, ros_distro) for name in ROS2_VENDOR_TYPESUPPORT_DEPENDENCIES]
523+
475524
return data
476525

477526

bloom/generators/rosdebian.py

Lines changed: 3 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,6 @@
4444

4545
from bloom.logging import info
4646

47-
from bloom.rosdistro_api import get_index
48-
4947
from bloom.util import get_distro_list_prompt
5048

5149

@@ -81,58 +79,12 @@ def fallback_resolver(key, peer_packages, rosdistro=self.rosdistro):
8179
self.os_name,
8280
debian_distro,
8381
self.rosdistro,
82+
fallback_resolver,
8483
self.install_prefix,
8584
self.debian_inc,
8685
[p.name for p in self.packages.values()],
8786
releaser_history=releaser_history,
88-
fallback_resolver=fallback_resolver
8987
)
90-
subs['Rosdistro'] = self.rosdistro
91-
subs['Package'] = rosify_package_name(subs['Package'], self.rosdistro)
92-
93-
# ROS 2 specific bloom extensions.
94-
ros2_distros = [
95-
name for name, values in get_index().distributions.items()
96-
if values.get('distribution_type') == 'ros2']
97-
if self.rosdistro in ros2_distros:
98-
# Add ros-workspace package as a dependency to any package other
99-
# than ros_workspace and its dependencies.
100-
if package.name not in ['ament_cmake_core', 'ament_package', 'ros_workspace']:
101-
workspace_pkg_name = rosify_package_name('ros-workspace', self.rosdistro)
102-
subs['BuildDepends'].append(workspace_pkg_name)
103-
subs['Depends'].append(workspace_pkg_name)
104-
105-
# Add packages necessary to build vendor typesupport for rosidl_interface_packages to their
106-
# build dependencies.
107-
if self.rosdistro in ros2_distros and \
108-
self.rosdistro not in ('r2b2', 'r2b3', 'ardent') and \
109-
'rosidl_interface_packages' in [p.name for p in package.member_of_groups]:
110-
ROS2_VENDOR_TYPESUPPORT_DEPENDENCIES = [
111-
'rosidl-typesupport-fastrtps-c',
112-
'rosidl-typesupport-fastrtps-cpp',
113-
]
114-
115-
# Connext was changed to a new rmw that doesn't require typesupport after Foxy
116-
if self.rosdistro in ('bouncy', 'crystal', 'dashing', 'eloquent', 'foxy'):
117-
ROS2_VENDOR_TYPESUPPORT_DEPENDENCIES.extend([
118-
'rosidl-typesupport-connext-c',
119-
'rosidl-typesupport-connext-cpp',
120-
])
121-
122-
# OpenSplice was dropped after Eloquent.
123-
# rmw implementations are required as dependencies up to Eloquent.
124-
if self.rosdistro in ('bouncy', 'crystal', 'dashing', 'eloquent'):
125-
ROS2_VENDOR_TYPESUPPORT_DEPENDENCIES.extend([
126-
'rmw-connext-cpp',
127-
'rmw-fastrtps-cpp',
128-
'rmw-implementation',
129-
'rmw-opensplice-cpp',
130-
'rosidl-typesupport-opensplice-c',
131-
'rosidl-typesupport-opensplice-cpp',
132-
])
133-
134-
subs['BuildDepends'] += [
135-
rosify_package_name(name, self.rosdistro) for name in ROS2_VENDOR_TYPESUPPORT_DEPENDENCIES]
13688
return subs
13789

13890
def generate_branching_arguments(self, package, branch):
@@ -162,9 +114,9 @@ def get_subs(pkg, os_name, os_version, ros_distro, deb_inc, native):
162114
ros_distro,
163115
RosDebianGenerator.default_install_prefix + ros_distro,
164116
deb_inc=deb_inc,
165-
native=native
117+
native=native,
118+
fallback_resolver=rosify_package_name
166119
)
167-
subs['Package'] = rosify_package_name(subs['Package'], ros_distro)
168120
return subs
169121

170122

0 commit comments

Comments
 (0)