diff --git a/.gitmodules b/.gitmodules index 4aefa708..5e57ccf1 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +1,7 @@ [submodule "linux_docker_resources/rticonnextdds-src"] path = linux_docker_resources/rticonnextdds-src url = git@github.com:osrf/rticonnextdds-bins.git - branch = binaries/linux/amd64/6.0.1 + branch = binaries/linux/amd64/omnibus [submodule "linux_docker_resources/rticonnextdds-license"] path = linux_docker_resources/rticonnextdds-license url = git@github.com:osrf/rticonnextdds-license.git diff --git a/linux_docker_resources/Dockerfile b/linux_docker_resources/Dockerfile index b4961356..ae425d90 100644 --- a/linux_docker_resources/Dockerfile +++ b/linux_docker_resources/Dockerfile @@ -153,8 +153,15 @@ RUN apt-get update && apt-get install --no-install-recommends -y lcov # merged use the fork with the fix. RUN pip3 install -U git+https://github.com/ahcorde/lcov-to-cobertura-xml@master -# Install the Connext binary from the OSRF repositories. -RUN if test \( ${PLATFORM} = x86 -a ${INSTALL_CONNEXT_DEBS} = true \); then apt-get update && RTI_NC_LICENSE_ACCEPTED=yes apt-get install -y rti-connext-dds-6.0.1; fi +# 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 \ + apt-get update && RTI_NC_LICENSE_ACCEPTED=yes apt-get install -y rti-connext-dds-6.0.1; \ + else \ + apt-get update && RTI_NC_LICENSE_ACCEPTED=yes apt-get install -y rti-connext-dds-7.3.0-ros; \ + 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 @@ -162,16 +169,28 @@ RUN if test ${PLATFORM} = x86; then apt-get update && apt-get install --no-insta # Install dependencies for RTI web binaries install script. RUN apt-get update && apt-get install --no-install-recommends -y python3-pexpect -# Get and install the RTI web binaries. -# Connext 6.0.1 for jammy, the evaluation bundles don't contain security extensions so we need to distribute the pro binaries to ourselves. +# Get and install the RTI Connext web binaries. +# RTI Connext web binaries installation is only supported on x86_64. COPY rticonnextdds-src/ /tmp/rticonnextdds-src -RUN 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 \ + +# Join the correct Connext version files based on the value of ROS_DISTRO. +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 \ + 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 -RUN chmod 755 /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run + done; \ + 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 # Add the connextdds installation script used in entry_point.sh ADD rti_web_binaries_install_script.py /tmp/rti_web_binaries_install_script.py @@ -226,6 +245,9 @@ RUN apt-get update && apt-get install -y \ RUN update-ccache-symlinks ENV DISPLAY=:99 +# Making the RTI Connext env variable to the entry_point.sh script so that it can be used to run +# the RTI Connext installation script. +ENV ROS_DISTRO=${ROS_DISTRO} # Create a user to own the build output. RUN useradd -u 1234 -m rosbuild diff --git a/linux_docker_resources/Dockerfile-RHEL b/linux_docker_resources/Dockerfile-RHEL index b279a74b..cfc3f507 100644 --- a/linux_docker_resources/Dockerfile-RHEL +++ b/linux_docker_resources/Dockerfile-RHEL @@ -185,17 +185,29 @@ RUN dnf install \ python3-pexpect \ --refresh -y -# Get and install the RTI web binaries. -# Connext 6.0.1 for humble and beyond, the evaluation bundles don't contain security extensions so we need to distribute the pro binaries to ourselves. +# Get and install the RTI Connext web binaries. +# RTI Connext web binaries installation is only supported on x86_64. COPY rticonnextdds-src/ /tmp/rticonnextdds-src -RUN 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; \ - chmod 755 /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run; + +# Join the correct Connext version files based on the value of ROS_DISTRO. +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 \ + 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 + +# 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 + ADD rti_web_binaries_install_script.py /tmp/rti_web_binaries_install_script.py # Add the RTI license file. diff --git a/linux_docker_resources/entry_point.sh b/linux_docker_resources/entry_point.sh index 78da433b..88cba9f0 100755 --- a/linux_docker_resources/entry_point.sh +++ b/linux_docker_resources/entry_point.sh @@ -39,30 +39,51 @@ if [ "${ARCH}" = "x86_64" -a "${ID}" = "ubuntu" ]; then # Install RTI Connext DDS if we didn't find 'rmw_connextdds' within the "ignore-rmw" option strings. if [ -z "${IGNORE_CONNEXTDDS}" ]; then echo "Installing Connext..." + + export CONNEXT_FULL_VERSION="7.3.0" + export CONNEXT_DISPLAY_VERSION="$CONNEXT_FULL_VERSION" + if [ "${ROS_DISTRO}" = "jazzy" ] || [ "${ROS_DISTRO}" = "humble" ]; then + export CONNEXT_FULL_VERSION="6.0.1.25" + export CONNEXT_DISPLAY_VERSION="${CONNEXT_FULL_VERSION%.*}" + fi + case "${CI_ARGS}" in *--connext-debs*) echo "Using Debian package of Connext" - if test -r /opt/rti.com/rti_connext_dds-6.0.1/resource/scripts/rtisetenv_x64Linux4gcc7.3.0.sh; then - echo "Sourcing RTI setenv script /opt/rti.com/rti_connext_dds-6.0.1/resource/scripts/rtisetenv_x64Linux4gcc7.3.0.sh" - . /opt/rti.com/rti_connext_dds-6.0.1/resource/scripts/rtisetenv_x64Linux4gcc7.3.0.sh + 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 ;; *) echo "Installing Connext binaries off RTI website..." - if test -x /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run; then - python3 -u /tmp/rti_web_binaries_install_script.py /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run \ - /home/rosbuild/rti_connext_dds-6.0.1 --rtipkg_paths \ - /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 \ - /tmp/rticonnextdds-src/openssl-1.1.1k-6.0.1.25-host-x64Linux.rtipkg \ - /tmp/rticonnextdds-src/rti_security_plugins-6.0.1.25-host-x64Linux.rtipkg \ - /tmp/rticonnextdds-src/rti_security_plugins-6.0.1.25-target-x64Linux4gcc7.3.0.rtipkg + if test -x /tmp/rticonnextdds-src/rti_connext_dds-${CONNEXT_DISPLAY_VERSION}-pro-host-x64Linux.run; then + rtipkg_list="\ + /tmp/rticonnextdds-src/openssl-3.0.12-${CONNEXT_FULL_VERSION}-host-x64Linux.rtipkg \ + /tmp/rticonnextdds-src/openssl-3.0.12-${CONNEXT_FULL_VERSION}-target-x64Linux4gcc7.3.0.rtipkg \ + /tmp/rticonnextdds-src/rti_security_plugins-${CONNEXT_FULL_VERSION}-host-openssl-3.0-x64Linux.rtipkg \ + /tmp/rticonnextdds-src/rti_security_plugins-${CONNEXT_FULL_VERSION}-target-openssl-3.0-x64Linux4gcc7.3.0.rtipkg \ + " + connext_base_architecture="x64Linux3gcc4.8.2" + if [ "${CONNEXT_FULL_VERSION}" = "6.0.1.25" ]; then + rtipkg_list="\ + /tmp/rticonnextdds-src/rti_connext_dds-${CONNEXT_FULL_VERSION}-pro-host-x64Linux.rtipkg \ + /tmp/rticonnextdds-src/openssl-1.1.1k-${CONNEXT_FULL_VERSION}-host-x64Linux.rtipkg \ + /tmp/rticonnextdds-src/rti_security_plugins-${CONNEXT_FULL_VERSION}-host-x64Linux.rtipkg \ + /tmp/rticonnextdds-src/rti_security_plugins-${CONNEXT_FULL_VERSION}-target-x64Linux4gcc7.3.0.rtipkg \ + " + connext_base_architecture="x64Linux2.6gcc4.4.5" + fi + python3 -u /tmp/rti_web_binaries_install_script.py /tmp/rticonnextdds-src/rti_connext_dds-${CONNEXT_DISPLAY_VERSION}-pro-host-x64Linux.run \ + /home/rosbuild/rti_connext_dds-${CONNEXT_DISPLAY_VERSION} --rtipkg_paths \ + /tmp/rticonnextdds-src/rti_connext_dds-${CONNEXT_FULL_VERSION}-pro-target-x64Linux4gcc7.3.0.rtipkg \ + $rtipkg_list if [ $? -ne 0 ]; then echo "Connext not installed correctly (maybe you're on an ARM machine?)." >&2 exit 1 fi - export CONNEXTDDS_DIR=/home/rosbuild/rti_connext_dds-6.0.1 - export RTI_OPENSSL_LIBS=$CONNEXTDDS_DIR/resource/app/lib/x64Linux2.6gcc4.4.5 + export CONNEXTDDS_DIR=/home/rosbuild/rti_connext_dds-${CONNEXT_DISPLAY_VERSION} + export RTI_OPENSSL_LIBS=$CONNEXTDDS_DIR/resource/app/lib/${connext_base_architecture} else echo "No connext installation files found found." >&2 exit 1 @@ -84,4 +105,4 @@ sed -i -e "s/rosbuild:x:$ORIG_GID:/rosbuild:x:$GID:/" /etc/group chown -R ${UID}:${GID} "${ORIG_HOME}" echo "done." -exec sudo -H -u rosbuild -E -- xvfb-run -s "-ac -screen 0 1280x1024x24" /bin/sh -c "$*" \ No newline at end of file +exec sudo -H -u rosbuild -E -- xvfb-run -s "-ac -screen 0 1280x1024x24" /bin/sh -c "$*" diff --git a/linux_docker_resources/rticonnextdds-src b/linux_docker_resources/rticonnextdds-src index c8a7784e..3d367af7 160000 --- a/linux_docker_resources/rticonnextdds-src +++ b/linux_docker_resources/rticonnextdds-src @@ -1 +1 @@ -Subproject commit c8a7784e759cd275712d394e48c5b2f6612cea56 +Subproject commit 3d367af76020d1d174c36987f4fdff1d7aa2dbce diff --git a/windows_docker_resources/Dockerfile b/windows_docker_resources/Dockerfile index cf48f6db..691e5b97 100644 --- a/windows_docker_resources/Dockerfile +++ b/windows_docker_resources/Dockerfile @@ -43,24 +43,24 @@ RUN pixi --color never --no-progress -q list # Setup environment variables needed for Connext ENV RTI_LICENSE_FILE C:\connext\rti_license.dat -ENV CONNEXTDDS_DIR C:\connext\rti_connext_dds-6.0.1 -ENV RTI_OPENSSL_BIN C:\connext\openssl-1.1.1k\x64Win64VS2017\bin -ENV RTI_OPENSSL_LIB C:\connext\openssl-1.1.1k\x64Win64VS2017\lib +ENV CONNEXTDDS_DIR C:\connext\rti_connext_dds-7.3.0 +ENV RTI_OPENSSL_BIN C:\connext\openssl-3.0.12\x64Win64VS2017\bin +ENV RTI_OPENSSL_LIB C:\connext\openssl-3.0.12\x64Win64VS2017\lib # Copy over necessary Connext files into container RUN IF NOT EXIST "C:\TEMP" mkdir C:\TEMP COPY rticonnextdds-src\ C:\TEMP\rticonnextdds-src -RUN copy /b C:\TEMP\rticonnextdds-src\rti_connext_dds-6.0.1-pro-host-x64Win64.exe.??? C:\TEMP\rticonnextdds-src\rti_connext_dds-6.0.1-pro-host-x64Win64.exe -RUN copy /b C:\TEMP\rticonnextdds-src\rti_connext_dds-6.0.1-pro-target-x64Win64VS2017.rtipkg.??? C:\TEMP\rticonnextdds-src\rti_connext_dds-6.0.1-pro-target-x64Win64VS2017.rtipkg +RUN copy /b C:\TEMP\rticonnextdds-src\rti_connext_dds-7.3.0-pro-host-x64Win64.exe.??? C:\TEMP\rticonnextdds-src\rti_connext_dds-7.3.0-pro-host-x64Win64.exe +RUN copy /b C:\TEMP\rticonnextdds-src\rti_connext_dds-7.3.0-pro-target-x64Win64VS2017.rtipkg.??? C:\TEMP\rticonnextdds-src\rti_connext_dds-7.3.0-pro-target-x64Win64VS2017.rtipkg COPY rticonnextdds-license\rti_license.dat $RTI_LICENSE_FILE # Install Connext -RUN pixi run 7z x -oC:\connext C:\TEMP\rticonnextdds-src\openssl-1.1.1k-target-x64Win64VS2017.zip -RUN C:\TEMP\rticonnextdds-src\rti_connext_dds-6.0.1-pro-host-x64Win64.exe --mode unattended --unattendedmodeui minimalWithDialogs --prefix C:\connext -RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\openssl-1.1.1k-6.0.1.25-host-x64Win64.rtipkg -RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\rti_connext_dds-6.0.1-pro-target-x64Win64VS2017.rtipkg -RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\rti_security_plugins-6.0.1.25-host-x64Win64.rtipkg -RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\rti_security_plugins-6.0.1.25-target-x64Win64VS2017.rtipkg +RUN C:\TEMP\rticonnextdds-src\rti_connext_dds-7.3.0-pro-host-x64Win64.exe --mode unattended --unattendedmodeui minimalWithDialogs --prefix C:\connext +RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\openssl-3.0.12-7.3.0-host-x64Win64.rtipkg +RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\openssl-3.0.12-7.3.0-target-x64Win64VS2017.rtipkg +RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\rti_connext_dds-7.3.0-pro-target-x64Win64VS2017.rtipkg +RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\rti_security_plugins-7.3.0-host-x64Win64.rtipkg +RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\rti_security_plugins-7.3.0-target-x64Win64VS2017.rtipkg # Note that this *must* be in shell form, not exec form, so Docker on Windows appropriately substitutes %CI_ARGS% WORKDIR C:\ci diff --git a/windows_docker_resources/rticonnextdds-src b/windows_docker_resources/rticonnextdds-src index d28e1bd3..78e9410a 160000 --- a/windows_docker_resources/rticonnextdds-src +++ b/windows_docker_resources/rticonnextdds-src @@ -1 +1 @@ -Subproject commit d28e1bd3b5ba6e71bc90687f481b5531111cd95f +Subproject commit 78e9410a73b11666fbd196a0af1d926620cbfe91