Skip to content

Commit 7e8c9d0

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.
1 parent 8e16f28 commit 7e8c9d0

File tree

3 files changed

+53
-50
lines changed

3 files changed

+53
-50
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+
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,6 +287,7 @@ def generate_substitutions_from_package(
285287
os_name,
286288
os_version,
287289
ros_distro,
290+
rosify_package_name,
288291
installation_prefix='/usr',
289292
deb_inc=0,
290293
peer_packages=None,
@@ -309,7 +312,8 @@ def generate_substitutions_from_package(
309312
# Debian Package Format
310313
data['format'] = 'native' if native else 'quilt'
311314
# Package name
312-
data['Package'] = sanitize_package_name(package.name)
315+
data['Package'] = rosify_package_name(sanitize_package_name(package.name), ros_distro)
316+
313317
# Installation prefix
314318
data['InstallationPrefix'] = installation_prefix
315319
# Resolve dependencies
@@ -472,6 +476,50 @@ def convertToUnicode(obj):
472476
for item in data.items():
473477
data[item[0]] = convertToUnicode(item[1])
474478

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

477525

@@ -887,6 +935,7 @@ def get_subs(self, package, debian_distro, releaser_history=None):
887935
self.os_name,
888936
debian_distro,
889937
self.rosdistro,
938+
lambda name, _rosdistro: name,
890939
self.install_prefix,
891940
self.debian_inc,
892941
[p.name for p in self.packages.values()],

bloom/generators/rosdebian.py

Lines changed: 2 additions & 49 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,13 @@ def fallback_resolver(key, peer_packages, rosdistro=self.rosdistro):
8179
self.os_name,
8280
debian_distro,
8381
self.rosdistro,
82+
rosify_package_name,
8483
self.install_prefix,
8584
self.debian_inc,
8685
[p.name for p in self.packages.values()],
8786
releaser_history=releaser_history,
8887
fallback_resolver=fallback_resolver
8988
)
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]
13689
return subs
13790

13891
def generate_branching_arguments(self, package, branch):
@@ -160,11 +113,11 @@ def get_subs(pkg, os_name, os_version, ros_distro, deb_inc, native):
160113
os_name,
161114
os_version,
162115
ros_distro,
116+
rosify_package_name,
163117
RosDebianGenerator.default_install_prefix + ros_distro,
164118
deb_inc=deb_inc,
165119
native=native
166120
)
167-
subs['Package'] = rosify_package_name(subs['Package'], ros_distro)
168121
return subs
169122

170123

0 commit comments

Comments
 (0)