diff --git a/create_jenkins_job.py b/create_jenkins_job.py index 47fcc567..f71ea600 100755 --- a/create_jenkins_job.py +++ b/create_jenkins_job.py @@ -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': { @@ -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, diff --git a/linux_docker_resources/Dockerfile b/linux_docker_resources/Dockerfile index 8349cfdc..20a5a616 100644 --- a/linux_docker_resources/Dockerfile +++ b/linux_docker_resources/Dockerfile @@ -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 @@ -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 diff --git a/linux_docker_resources/entry_point.sh b/linux_docker_resources/entry_point.sh index 27ac9aa6..2889d6f5 100755 --- a/linux_docker_resources/entry_point.sh +++ b/linux_docker_resources/entry_point.sh @@ -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 @@ -50,6 +50,7 @@ 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" @@ -57,6 +58,14 @@ if [ "${ARCH}" = "x86_64" -a "${ID}" = "ubuntu" ]; then 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 + 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="\