Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
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
Copy link
Member

Choose a reason for hiding this comment

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

A lot of these changes don't seem related to aarch64. Possibly prep for a new version of Connext in Rolling soon?

Can we keep this PR scoped to the changes necessary for aarch64?

Copy link
Author

Choose a reason for hiding this comment

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

Sorry for that, we are working in parallel on #844, and some changes slipped. I'll remove those here

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 \
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 \
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
Comment on lines +65 to +66
Copy link
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
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?

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