User Tools

Site Tools


Sidebar

opensand:manuals:5.2:compilation_manual:index

Compilation Manual

This page describes how to compile the OpenSAND source code, generate the Debian packages and install it from the source.

The source code is available in the Net4Sat GitLab OpenSAND project.
These procedures are based on the release version 5.0.0.

Requirements

The code is compiled regularly on Ubuntu 16.04 LTS and Ubuntu 14.04 LTS hosts, both with x86 and x64 processors.

The following table lists the required packages to compile OpenSAND:

OS Required packages
Ubuntu 16.04 LTS sudo fakeroot apt-utils software-properties-common python-minimal build-essential debhelper autotools-dev automake libtool pkg-config python-setuptools gcc g++ libxml++2.6-dev libgoogle-perftools-dev python-dev libpcap-dev python-lxml swig libnl-3-dev dh-systemd
Ubuntu 14.04 LTS sudo fakeroot apt-utils software-properties-common python-minimal build-essential debhelper autotools-dev automake libtool pkg-config python-support python-setuptools gcc g++ libxml++2.6-dev libgoogle-perftools-dev python-dev libpcap-dev python-lxml swig libnl-3-dev

When compiling the encapsulation and lan adaptation plugins, the development version of their associated library is also needed.
The procedure to install these libraries is as follows:

  • Ubuntu 16.04 LTS
$ sudo apt-add-repository "deb http://packages.net4sat.org/opensand xenial stable"
$ sudo apt-get update
$ sudo apt-get install libgse-dev librle-dev librohc-dev
  • Ubuntu 14.04 LTS
$ sudo apt-add-repository "deb http://packages.net4sat.org/opensand trusty stable"
$ sudo apt-get update
$ sudo apt-get install libgse-dev librle-dev librohc-dev

The plugin ROHC is optional when using OpenSAND, therefore, its compilation too.

Docker and LXC can be used to compile OpenSAND source code.

Source Code and Package Overview

This section describes the OpenSAND source code and packages that are generated after compilation.

Source Code Presentation

The OpenSAND source code is divided in several directories. This table lists the most important:

Directory Language Description
opensand-daemon Python 2.7 Source code of the OpenSAND Daemon which controls an OpenSAND entity (ST, GW or SAT)
opensand-collector Python 2.7 Source code of the OpenSAND Collector which aggregates probes and logs from OpenSAND Daemons
opensand-manager Python 2.7 Source code of the OpenSAND Manager which controls all OpenSAND entities and displays probes and logs
opensand-output C++ Source code of the Output library which provides an API to send probes and logs to the Collector of the testbed
opensand-conf C++ Source code of the Configuration library which provides an API to read the OpenSAND configuration
opensand-rt C++ Source code of the Real Time library which provides real time threads and channels to exchange data between them
opensand-core C++ Source code of the OpenSAND entities which emulate a ST, a GW or a SAT
Source code of the Plugin library which implements a structure to interface external libraries
opensand-plugins/encapsulation/gse C++ & Python 2.7 Source code of the GSE plugin which interfaces the external GSE library
opensand-plugins/encapsulation/rle C++ & Python 2.7 Source code of the RLE plugin which interfaces the external RLE library
opensand-plugins/lan_adaptation/rohc C++ & Python 2.7 Source code of the ROHC plugin which interfaces the external ROHC library

Generated Packages

Each source code directory is able to generate one or more packages. They are detailed on the following table:

Directory Package Contents
opensand-daemon opensand-daemon Daemon scripts and configuration binaries
opensand-collector opensand-collector Collector scripts
opensand-manager opensand-manager-core Manager shell scripts
opensand-manager-gui Manager GUI scripts and configuration files
opensand-output libopensand-output Output library for exploitation
libopensand-output-dev Output library headers for development
libopensand-output-dbg Output library symbols for debug
opensand-conf libopensand-conf Configuration library for exploitation
libopensand-conf-dev Configuration library headers for development
libopensand-conf-dbg Configuration library symbols for debug
opensand-rt libopensand-rt Real Time library for exploitation
libopensand-rt-dev Real Time library headers for development
libopensand-rt-dbg Real Time library symbols for debug
opensand-core opensand-core-conf Configuration files for Core exploitation
opensand-core Core binaries for exploitation
opensand-core-dbg Core binaries symbols for debug
libopensand-plugin Plugin library for exploitation
libopensand-plugin-dev Plugin library headers for development
libopensand-plugin-dbg Plugin library symbols for debug
opensand-plugins/encapsulation/gse libopensand-gse-encap-plugin-conf Configuration files of the GSE Encapsulation plugin for exploitation
libopensand-gse-encap-plugin Library the GSE Encapsulation plugin for exploitation
libopensand-gse-encap-plugin-dbg Library symbols the GSE Encapsulation plugin for debug
libopensand-gse-encap-plugin-manager Manager module of the GSE Encapsulation plugin
opensand-plugins/encapsulation/rle libopensand-rle-encap-plugin-conf Configuration files of the RLE Encapsulation plugin for exploitation
libopensand-rle-encap-plugin Library the RLE Encapsulation plugin for exploitation
libopensand-rle-encap-plugin-dbg Library symbols the RLE Encapsulation plugin for debug
libopensand-rle-encap-plugin-manager Manager module of the RLE Encapsulation plugin
opensand-plugins/lan_adaptation/rohc libopensand-rohc-lan-adapt-plugin-conf Configuration files of the ROHC lan adaptation plugin for exploitation
libopensand-rohc-lan-adapt-plugin Library the ROHC lan adaptation plugin for exploitation
libopensand-rohc-lan-adapt-plugin-dbg Library symbols the ROHC lan adaptation plugin for debug
libopensand-rohc-lan-adapt-plugin-manager Manager module of the ROHC lan adaptation plugin

Additional meta packages can be generated:

  • opensand: installs all packages required by an OpenSAND entity (ST, GW or SAT) with required plugins
  • opensand-manager: installs all packages required by the graphical Manager with required plugins modules

Compile source to generate package

OpenSAND source code is usually compiled to generate Debian packages, to be installed next.
To make this operation easier, a script has been developed to automatize the packaging from source, including compilation.
This script is present in the directory opensand-packaging and is capable of generating Ubuntu 16.04 LTS and Ubuntu 14.04 LTS packages, but it could be extended to other distributions.

The help message prompted by this script build-pkgs is presented below:

$ ./opensand-packaging/build-pkgs -h
Usage : build-pkgs [OPTIONS] -s <src path> -d <dst path> -t <dist> TARGET
Available TARGETS :   all:      build all packages (default)
                      libs:     build only libraries packages
                      core:     build only core packages
                      services: build only services packages
                      encap:    build only encapsulation plugins
                      lan:      build only lan adaptation plugins
Available OPTIONS :   -m        move packages into manager, daemon and all
                                directories.
                      -i        install build-dependencies automatically
                      -f        add a user flag to packages
List of available distributions:
xenial trusty

For example, the command to execute in order to launch the complete packaging, assuming the OpenSAND source code directory is the current directory and the compilation host is Ubuntu 16.04 LTS:

$ ./opensand-packaging/build-pkgs -s . -d ../workspace -t xenial all

When the compilation ends, you should find OpenSAND packages in the ../workspace/pkgs directory, and the source code used to compile it in the ../workspace/src.
In case of compilation error, the script should stop and display error location. To display the complete error message, you can consult the two following log files inside the specific component directory (in src directory):

  • config.log: configuration log file
  • build.log: compilation log file

For more information about how to install OpenSAND without generating the debian packages, consult the Advanced Compilation Manual page.

opensand/manuals/5.2/compilation_manual/index.txt ยท Last modified: 2020/04/24 16:26 by duboise