Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
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
5 changes: 2 additions & 3 deletions create_jenkins_job.py
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,8 @@ def main(argv=None):
'linux-aarch64': {
'label_expression': 'linux_aarch64',
'shell_type': 'Shell',
'ignore_rmw_default': data['ignore_rmw_default'] | {'rmw_connextdds'},
'ignore_rmw_default': data['ignore_rmw_default'],
'use_connext_debs_default': 'true',
'test_args_default': re.sub(r'(--ctest-args +-LE +)"?([^ "]+)"?', r'\1"(mimick|\2)"', data['test_args_default']),
},
'linux-rhel': {
Expand Down Expand Up @@ -206,8 +207,6 @@ def create_job(os_name, job_name, template_file, additional_dict):

# configure a manual version of the packaging job
ignore_rmw_default_packaging = set()
if os_name in ['linux-aarch64']:
ignore_rmw_default_packaging |= {'rmw_connextdds'}
create_job(os_name, 'ci_packaging_' + os_name, 'packaging_job.xml.em', {
'cmake_build_type': 'RelWithDebInfo',
'label_expression': packaging_label_expression,
Expand Down
24 changes: 17 additions & 7 deletions linux_docker_resources/Dockerfile
Comment thread
fgallegosalido marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -155,16 +155,19 @@ RUN pip3 install -U git+https://github.com/ahcorde/lcov-to-cobertura-xml@master

# Install the Connext binary from the OSRF repositories. if ROS_DISTRO is humble or jazzy
# install rti-connext-dds-6.0.1 else install rti-connext-dds-7.3.0-ros.
RUN if test \( ${PLATFORM} = x86 -a ${INSTALL_CONNEXT_DEBS} = true \); then \
if test \( ${ROS_DISTRO} = humble -o ${ROS_DISTRO} = jazzy \); then \
RUN \
if test ${INSTALL_CONNEXT_DEBS} = true; then \
if test \( ${PLATFORM} = x86 -a \( ${ROS_DISTRO} = humble -o ${ROS_DISTRO} = jazzy \) \); then \
Comment thread
fgallegosalido marked this conversation as resolved.
Outdated
apt-get update && RTI_NC_LICENSE_ACCEPTED=yes apt-get install -y rti-connext-dds-6.0.1; \
elif test \( ${PLATFORM} = x86 -a ${ROS_DISTRO} = kilted \); then \
apt-get update && RTI_NC_LICENSE_ACCEPTED=yes apt-get install -y rti-connext-dds-7.3.0-ros; \
else \
apt-get update && RTI_NC_LICENSE_ACCEPTED=yes apt-get install -y rti-connext-dds-7.3.0-ros; \
fi; \
fi
fi

# Install the RTI dependencies.
RUN if test ${PLATFORM} = x86; then apt-get update && apt-get install --no-install-recommends -y default-jre-headless; fi
RUN apt-get update && apt-get install --no-install-recommends -y default-jre-headless

# Install dependencies for RTI web binaries install script.
RUN apt-get update && apt-get install --no-install-recommends -y python3-pexpect
Expand All @@ -174,20 +177,27 @@ RUN apt-get update && apt-get install --no-install-recommends -y python3-pexpect
COPY rticonnextdds-src/ /tmp/rticonnextdds-src

# Join the correct Connext version files based on the value of ROS_DISTRO.
RUN if test ${ROS_DISTRO} = jazzy -o ${ROS_DISTRO} = humble; then \
RUN \
if test ${ROS_DISTRO} = jazzy -o ${ROS_DISTRO} = humble; then \
Comment thread
fgallegosalido marked this conversation as resolved.
for splitpkg in \
/tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run \
/tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-host-x64Linux.rtipkg \
/tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
done; \
else \
elif test ${ROS_DISTRO} = kilted; then \
for splitpkg in \
/tmp/rticonnextdds-src/rti_connext_dds-7.3.0-pro-host-x64Linux.run \
/tmp/rticonnextdds-src/rti_connext_dds-7.3.0-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
done; \
else \
for splitpkg in \
/tmp/rticonnextdds-src/rti_connext_dds-7.3.0-pro-host-x64Linux.run \
/tmp/rticonnextdds-src/rti_connext_dds-7.3.0-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
done; \
fi
fi

# Make the RTI Connext installation script executable. For any version of Connext.
RUN chmod 755 /tmp/rticonnextdds-src/rti_connext_dds-*-pro-host-x64Linux.run
Expand Down
13 changes: 11 additions & 2 deletions linux_docker_resources/entry_point.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ echo "done."
. /etc/os-release
VERSION_ID_MAJOR=$(echo $VERSION_ID | sed 's/\..*//')

# We only attempt to install Connext on Ubuntu amd64
if [ "${ARCH}" = "x86_64" -a "${ID}" = "ubuntu" ]; then
# We only attempt to install Connext on Ubuntu amd64 or aarch64
if [ "${ID}" = "ubuntu" ]; then
IGNORE_CONNEXTDDS=""
ignore_rwm_seen="false"
for arg in ${CI_ARGS} ; do
Expand All @@ -50,13 +50,22 @@ if [ "${ARCH}" = "x86_64" -a "${ID}" = "ubuntu" ]; then

case "${CI_ARGS}" in
*--connext-debs*)
# Installing Connext through Debian packages is supported on both x86_64 and aarch64 architectures. If we're on an unsupported architecture, skip the installation and exit with an error.
echo "Using Debian package of Connext"
if test -r /opt/rti.com/rti_connext_dds-${CONNEXT_DISPLAY_VERSION}/resource/scripts/rtisetenv_x64Linux4gcc7.3.0.sh; then
echo "Sourcing RTI setenv script /opt/rti.com/rti_connext_dds-${CONNEXT_DISPLAY_VERSION}/resource/scripts/rtisetenv_x64Linux4gcc7.3.0.sh"
. /opt/rti.com/rti_connext_dds-${CONNEXT_DISPLAY_VERSION}/resource/scripts/rtisetenv_x64Linux4gcc7.3.0.sh
fi
;;
*)
# Support for installing Connext through the RTI website installers is only supported on
# x86_64 architecture. If we're on a different architecture, skip the installation and
# exit with an error.
if [ "${ARCH}" != "x86_64" ]; then
echo "Connext is only supported on amd64 architecture. Skipping Connext installation." >&2
exit 1
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Existing behavior is to quietly skip connext installation on aarch64 even if requested. While this PR enables the deb installation scenario, I think we should continue the existing behavior and not fail the build if non-deb installation is requested.

The main scenario here is that someone might trigger a job from the launcher that uses the non-deb Connext installation. I don't think it would be a good experience if the aarch64 builds suddenly start failing and require re-running with connext disabled.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are a couple of places where we do exit 1. Should we remove those too so that the build doesn't fail?

Copy link
Copy Markdown
Member

@cottsay cottsay Mar 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we remove those too so that the build doesn't fail?

It's totally appropriate to raise a critical error if something is expected to work and doesn't. This case is different though - it's not supported and is not expected to work, and the previous behavior for that scenario (requesting Connext via binaries on arm64) was to quietly continue the build.

Copy link
Copy Markdown
Contributor Author

@fgallegosalido fgallegosalido Mar 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I refactored the Connext installation into a new function, maintaining the same behavior as before. Let me know what you think and launch a validation as soon as you feel okay with the code.

fi

echo "Installing Connext binaries off RTI website..."
if test -x /tmp/rticonnextdds-src/rti_connext_dds-${CONNEXT_DISPLAY_VERSION}-pro-host-x64Linux.run; then
rtipkg_list="\
Expand Down