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¶
Login as your user.
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.)
In your home directory:
$ mkdir modulefiles $ cd modulefiles
Create and edit the file
private.lua
undermodulefiles
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
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 ..
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 ..
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.