diff --git a/.gitignore b/.gitignore index e89d22e299..c2056e1f23 100644 --- a/.gitignore +++ b/.gitignore @@ -56,6 +56,9 @@ tmp/ .viminfo .lesshst +# RTI Workspace +rti_workspace/ + # Licenses rti_license.dat diff --git a/applications/dds/dds_video/Dockerfile b/applications/dds/dds_video/Dockerfile index e6c823dcda..de714bbd1a 100644 --- a/applications/dds/dds_video/Dockerfile +++ b/applications/dds/dds_video/Dockerfile @@ -76,6 +76,24 @@ RUN if ! grep -q "VERSION_ID=\"22.04\"" /etc/os-release; then \ COPY benchmarks/holoscan_flow_benchmarking/requirements.txt /tmp/benchmarking_requirements.txt RUN pip install -r /tmp/benchmarking_requirements.txt + +# Install connext 7.5.0 from .deb package +# Download the public key for the RTI APT repository +RUN curl -sSL -o /usr/share/keyrings/rti-official-archive.gpg \ +https://packages.rti.com/deb/official/repo.key + +# Add the RTI APT repository to the sources list +RUN printf -- "deb [arch=%s signed-by=%s] %s %s main\n" \ + $(dpkg --print-architecture) \ + /usr/share/keyrings/rti-official-archive.gpg \ + https://packages.rti.com/deb/official \ + $(. /etc/os-release && echo ${VERSION_CODENAME}) \ + | tee /etc/apt/sources.list.d/rti.list >/dev/null + +# Set environment variable to accept the RTI License Agreement +RUN export RTI_LICENSE_AGREEMENT_ACCEPTED=accepted && apt update \ + && apt install -y rti-connext-dds-7.5.0 + # For RTI Connext DDS RUN apt update \ && apt install --no-install-recommends -y \ @@ -85,7 +103,10 @@ RUN echo 'export JREHOME=$(readlink /etc/alternatives/java | sed -e "s/\/bin\/ja # Set default Holohub data directory ENV HOLOSCAN_INPUT_PATH=/workspace/holohub/data -ENV NDDSHOME=/opt/rti.com/rti_connext_dds-7.3.0 +ENV NDDSHOME=/opt/rti.com/rti_connext_dds-7.5.0 ENV RTI_CONNEXT_DDS_DIR=$NDDSHOME -CMD ["/bin/bash", "-c", "source $NDDSHOME/resource/scripts/rtisetenv_x64Linux4gcc7.3.0.bash && exec /bin/bash"] +COPY ./applications/dds/dds_video/bootstrap.sh /bootstrap.sh +RUN chmod +x /bootstrap.sh + +CMD ["/bootstrap.sh"] diff --git a/applications/dds/dds_video/README.md b/applications/dds/dds_video/README.md index ae79bc3633..131fe85444 100644 --- a/applications/dds/dds_video/README.md +++ b/applications/dds/dds_video/README.md @@ -23,28 +23,37 @@ Holoviz output. ## Prerequisites -- This application requires an installation of [RTI Connext Express](https://content.rti.com/l/983311/2025-07-08/q5x1n8) to provide access to the DDS domain. -To obtain a license/activation key, please [click here](https://content.rti.com/l/983311/2025-07-25/q6729c). Please see the [usage rules](https://www.rti.com/products/connext-express) for Connext Express. -- V4L2 capable device +- **RTI Connext 7.5.0 Express** + - Provides access to the DDS domain. + - Already included if using the container build. + - Otherwise, install via [RTI APT instructions](https://content.rti.com/l/983311/2025-07-08/q5x1n8). -> [!NOTE] -> Instructions below are based on the `.run' installer from RTI Connext. Refer to the -> [Linux installation](https://community.rti.com/static/documentation/developers/get-started/full-install.html) -> for details. +- **RTI Activation Key** + - [Request a license/activation key](https://content.rti.com/l/983311/2025-07-25/q6729c). + - See the [usage rules](https://www.rti.com/products/connext-express). + - For Holoscan usage, download the key, copy it into the `holohub` repository, and rename it to `rti_license.dat`. +- **V4L2-capable video device** + - Required for video capture when running as a publisher. + +## Quick Start (Docker) -## Quick Start +This guide shows how to run the DDS Video application using the Docker build environment. + +1. Obtain an **RTI Activation Key** (see [Prerequisites](#prerequisites)). +2. Place the license in the `holohub` directory as `rti_license.dat`. +3. Open **two terminal windows** and run: ```bash # Start the publisher -./holohub run dds_video --docker-opts="-v $HOME/rti_connext_dds-7.3.0:/opt/rti.com/rti_connext_dds-7.3.0/" --run-args="-p" +./holohub run dds_video --docker-opts="-v ./rti_license.dat:/opt/rti.com/rti_connext_dds-7.5.0/rti_license.dat" --run-args="-p" # Start the subscriber -./holohub run dds_video --docker-opts="-v $HOME/rti_connext_dds-7.3.0:/opt/rti.com/rti_connext_dds-7.3.0/" --run-args="-s" +./holohub run dds_video --docker-opts="-v ./rti_license.dat:/opt/rti.com/rti_connext_dds-7.5.0/rti_license.dat" --run-args="-s" ``` -## Building the Application +## Building locally the Application To build on an IGX devkit (using the `armv8` architecture), follow the [instructions to build Connext DDS applications for embedded Arm targets](https://community.rti.com/kb/how-do-i-create-connext-dds-application-rti-code-generator-and-build-it-my-embedded-target-arm) @@ -56,21 +65,15 @@ the `NDDSHOME` environment variable to the RTI Connext installation directory (such as when using the RTI `setenv` scripts), or manually at build time, e.g.: ```sh -./holohub build --local dds_video --configure-args="-DRTI_CONNEXT_DDS_DIR=~/rti/rti_connext_dds-7.3.0" +./holohub build --local dds_video --configure-args="-DRTI_CONNEXT_DDS_DIR=~/opt/rti.com/rti_connext_dds-7.5.0" ``` -### Building with a Container +### Building with the Container -Due to the license requirements of RTI Connext it is not currently supported to -install RTI Connext into a development container. Instead, Connext should be -installed onto the host as above and then the development container can be -launched with the RTI Connext folder mounted at runtime. To do so, ensure that -the `NDDSHOME` and `CONNEXTDDS_ARCH` environment variables are set (which can be -done using the RTI `setenv` script) and use the following: ```sh # 1. Build and launch the container -./holohub run-container dds_video --docker-opts="-v $HOME/rti_connext_dds-7.3.0:/opt/rti.com/rti_connext_dds-7.3.0/" +./holohub run-container dds_video --docker-opts="-v ./rti_license.dat:/opt/rti.com/rti_connext_dds-7.5.0/rti_license.dat" # 3. Build the application ./holohub build dds_video # Continue to the next section to run the application with the publisher. @@ -78,7 +81,6 @@ done using the RTI `setenv` script) and use the following: ``` - ## Running the Application Both a publisher and subscriber process must be launched to see the result of @@ -98,8 +100,8 @@ $ ./holohub run --no-local-build dds_video --run-args="-s" If running the application generates an error about `RTI Connext DDS No Source for License information`, ensure that the RTI Connext license has either been -installed system-wide or the `NDDSHOME` environment variable has been set to -point to your user's RTI Connext installation path. +installed system-wide or the `RTI_LICENSE_FILE` environment variable has been set to +point to the license file path. Note that these processes can be run on the same or different systems, so long as they are both discoverable by the other via RTI Connext. If the processes are run on diff --git a/applications/dds/dds_video/bootstrap.sh b/applications/dds/dds_video/bootstrap.sh index 0ce1fb00b9..1ee4f91f92 100755 --- a/applications/dds/dds_video/bootstrap.sh +++ b/applications/dds/dds_video/bootstrap.sh @@ -14,5 +14,5 @@ # See the License for the specific language governing permissions and # limitations under the License. -source /opt/rti.com/rti_connext_dds-7.3.0/resource/scripts/rtisetenv_x64Linux4gcc7.3.0.bash +source /opt/rti.com/rti_connext_dds-7.5.0/resource/scripts/rtisetenv_x64Linux4gcc7.3.0.bash exec /bin/bash diff --git a/operators/dds/README.md b/operators/dds/README.md index 302e6dc8e5..6ae4d15b08 100644 --- a/operators/dds/README.md +++ b/operators/dds/README.md @@ -9,32 +9,30 @@ a wide array of external applications and platforms. ## Requirements -[RTI Connext](https://content.rti.com/l/983311/2024-04-30/pz1wms) must be -installed on the system and a valid RTI Connext license must be installed to run -any application using one of these operators. To build on an IGX devkit (using +- **RTI Connext 7.5.0 Express** + - Provides access to the DDS domain. + - Already included if using the [container build](../../applications/dds/dds_video/Dockerfile) you can find in the dds_video application directory + - Otherwise, install via [RTI APT instructions](https://content.rti.com/l/983311/2025-07-08/q5x1n8). + +- **RTI Activation Key** + - [Download the RTI license/activation key](https://content.rti.com/l/983311/2025-07-25/q6729c). + - See the [usage rules](https://www.rti.com/products/connext-express). + - For Holoscan usage, download the key, copy it into the `holohub` root directory, and rename it to `rti_license.dat`. + +To build on an IGX devkit (using the `armv8` architecture), follow the [instructions to build Connext DDS applications for embedded Arm targets](https://community.rti.com/kb/how-do-i-create-connext-dds-application-rti-code-generator-and-build-it-my-embedded-target-arm) up to step 5 (Installing Java and setting JREHOME). -To build the operators, the `RTI_CONNEXT_DDS_DIR` CMake variable must point to +To build the operators out of the dockerfile, the `RTI_CONNEXT_DDS_DIR` CMake variable must point to the installation path for RTI Connext. This can be done automatically by setting the `NDDSHOME` environment variable to the RTI Connext installation directory (such as when using the RTI `setenv` scripts), or manually at build time, e.g.: ```sh -$ ./holohub build dds_video --configure-args="-DRTI_CONNEXT_DDS_DIR=~/rti/rti_connext_dds-7.3.0" +$ ./holohub build dds_video" ``` -## Using a Development Container - -Due to the license requirements of RTI Connext it is not currently supported to -install RTI Connext into a development container. Instead, if a development -container is to be used, Connext should be installed onto the host as above and -then the container can be launched with the RTI Connext folder mounted at -runtime. To do so, ensure that the `NDDSHOME` and `CONNEXTDDS_ARCH` environment -variables are set (which can be done using the RTI `setenv` script) and use the -following: +## Example Application -```sh -./holohub run --docker-opts "-v $NDDSHOME:/opt/dds -e NDDSHOME=/opt/dds -e CONNEXTDDS_ARCH=$CONNEXTDDS_ARCH" -``` +See the [DDS Video Application documentation](../../applications/dds/dds_video/README.md) for an example of how to use these operators in a Holoscan application. diff --git a/operators/dds/metadata.json b/operators/dds/metadata.json index e669669817..d8fffedc35 100644 --- a/operators/dds/metadata.json +++ b/operators/dds/metadata.json @@ -19,6 +19,7 @@ "2.0.0" ] }, + "dockerfile": "../../applications/dds/dds_video/Dockerfile", "platforms": ["x86_64", "aarch64"], "tags": ["Networking and Distributed Computing", "DDS", "RTI Connext"], "ranking": 2,