Installation

This is a step by step guide on how to install the RTC Toolkit from scratch.

Machine Preparation

Install a real or virtual machine according to the Linux Installation Document

Note

use as ELT_ROLE the default: ELT_ROLE=BASE

Note

For this version, the RTC Tk requires a machine with at least 8GB of RAM to compile.

ELT Development Environment

Before installing the IFW it is needed to setup the environment. A very good starting point is this document

Note

The version 3.1.5 of ELT Development Environment shall be used with version 0.1 of RTC Toolkit . This is ELT Development Environment based on Cent OS 8.2. RTC Toolkit should still work under Cent OS 7 where ELT Development Environment version 2.2.5 shall be used.

RTI Connext DDS

RTI Connext DDS shall be installed in /opt. RTC Toolkit was developed and tested with version 6.0.1 (CentOS 8), and version 5.3.0 (CentOS 7).

Note

For the details about the installation please refer to: RTI ConnextDDS 6.0.1 Installation Guide

Account configuration

  1. Login as your user.

  2. Create the directories for the installation areas:

    $ cd <the location for introot>
    $ getTemplate -d introot INTROOT
    

    The environment shall contain the definitions of the relevant environment variables such as INTROOT, LD_LIBRARY_PATH, PYTHONPATH, etc. These environment variables will be automatically defined by means of the file private.lua, defined here below, which in turn uses the system modulefile definitions in /elt/System/modulefiles/introot.lua. (In the following steps, we suppose that INTROOT is created in the home directory of the user.)

  3. In your home directory:

    $ mkdir modulefiles
    $ cd modulefiles
    
  4. Create and edit the file private.lua under modulefiles directory. Use the example file below for RTI Connect DDS version 6.0.1:

    local introot = <introot location>          -- here put actual introot location
    
    setenv("INTROOT", introot)
    setenv("PREFIX", introot)
    
    setenv("NDDS_QOS_PROFILES",
           "file://" .. introot .. "/resource/config/rtctk/RTCTK_DEFAULT_QOS_PROFILES.xml")
    
    load("rti_connext_dds/6.0.1")
    load("introot")
    

    Important

    For other version of RTI Connect DDS version i.e. 5.3.0 it is needed to set several environment variables related to RTI DDS in private.lua:

    local introot = <introot location>          -- here put actual introot location
    
    setenv("INTROOT", introot)
    setenv("PREFIX", introot)
    
    setenv("NDDS_QOS_PROFILES",
           "file://" .. introot .. "/resource/config/rtctk/RTCTK_DEFAULT_QOS_PROFILES.xml")
    
    local rti_version = 5.3.0
    local rti_root = "/opt/rti_connext_dds-"..rti_version
    setenv("NDDSHOME", rti_root)
    prepend_path( "PATH", pathJoin(rti_root,"/bin"))
    prepend_path("LD_LIBRARY_PATH", pathJoin(rti_root, "/lib/x64Linux4gcc7.3.0"))
    prepend_path("PKG_CONFIG_PATH", pathJoin(rti_root, "pkgconfig"))
    
    load ("introot")
    

    Important

    Log out and then in again so that modulefiles directory becomes known to the environment and the newly created private.lua is loaded. This is needed only when the directory modulefiles and the private.lua are created for the first time.

    File private.lua is loaded by default upon login. In case more .lua files (with different names) will be added to $HOME/modulefiles, they can be made known to the environment just with:

    $ module load
    

    You can check which LMOD modules are available after login with:

    $ module avail
    

    The output should look like as follows: (the available/loaded modules might change with the software versions, but private and introot should be loaded)

    ---------------------------------------------------- /home/<user>/modulefiles ----------------------------------------------------
    private (L)
    
    ---------------------------------------------------- /elt/System/modulefiles ------------------------------------------------------
    ciisrv/ciisrv (L)    clang    consul (L)    cpl (L)    czmq (L)    doxygen (L)    eltdev (L)    gcc/9 (L)    introot (L)
    jdk/java-openjdk (L)    mal/mal (L)    nix/2.3 (L)    nomad (L)    opentracing (L)    python/3.7 (L)    rti_connext_dds/6.0.1 (L)
    slalib_c (L)
    
    ----------------------------------------------- /usr/share/lmod/lmod/modulefiles/Core ---------------------------------------------
    lmod    settarg
    
    Where:
    L:  Module is loaded
    

    Note

    For more information about Lmod refer to section 3.2 Environmental Modules System (Lmod) in document

Installation of Dependencies

To be able to compile and use the RTC Toolkit the following dependencies need to be installed first:

  • ETR - Integration Test Runner

  • RAD - Application Framework

  • Roadrunner/ipcq - Interprocess Queue

  • Roadrunner/numapp - NUMA affinity

  1. Download, unpack and build RAD component

Download from ESO Gitlab tarball of: RAD v2.1.0 unpack it and execute the steps below to build and install the software.

cd rad
waf configure build install
cd ..
  1. Download, unpack and build ETR component

Download from ESO Gitlab tarball of: ETR v3.0.0-alpha unpack it and execute the steps below to build and install the software.

cd etr
waf configure build install
cd ..
  1. Download, unpack and build Roadrunner components (numpp, ipcq)

Download from ESO Gitlab tarball of: Roadrunner v0.1.0-alpha unpack it and execute the steps below to build and install the software.

cd roadrunner/numapp
waf configure build install
cd ../ipcq
waf configure build install
cd ../..

Installation of the RTC Toolkit

Download from ESO Gitlab tarball of: RTC Toolkit v0.1.0-alpha unpack it and execute the steps below to build and install RTC toolkit software.

cd rtctk/
waf configure build install

Unit-tests can be run by invoking:

waf test --alltests

Documentation (manuals and API Doxygen) can be generated by invoking:

waf build --with-docs

The result can be viewed by opening the respective index.html file under build/doc/.

Verify Correct Installation

To verify that the RTC Toolkit was installed correctly run the end-to-end integration test.

cd test/exampleEndToEnd
etr -v

The integration test is expected to terminate successfully after running for about one minute.