VILLASframework
Modular co-simulation framework
Installation

VILLASnode can be installed in multiple ways:

Docker images

There exists a set of Docker images for running and developing VILLASnode. Docker images are available for x86_64/amd64, armhf and arm64 architectures it you can run it also on a Raspberry Pi or other embedded platforms. We use Alpinelinux-based images to keep the size of the image below 100MB.

With a working Docker daemon, you can run it like this:

$ docker run --privileged registry.git.rwth-aachen.de/acs/public/villas/node

To start the main daemon, you can pass a configuration file via a volume mount:

$ docker run --volume /path/to/my/local.conf:/config.conf --privileged registry.git.rwth-aachen.de/acs/public/villas/node node /config.conf

From source

VILLASnode can be compiled from source using CMake. This process has been tested with the following Linux distributions:

  • Fedora 33
  • Debian 10 (Buster)
  • Ubuntu 20.04 (Bionic Beaver)
  • Centos 8
  • Alpine Edge

Prerequisites

VILLASnode currently has the following list of dependencies:

There are three ways to install these dependencies:

  1. You can install most of the dependencies using the package manger of your Linux distribution:

Use the following command to install the dependencies under Debian/Ubuntu-based distributions:

$ sudo apt-get install \
gcc g++ \
pkg-config make cmake ninja-build \
protobuf-compiler protobuf-c-compiler \
autoconf automake libtool \
texinfo git mercurial curl \
flex bison xmlto \
doxygen dia graphviz \
libssl-dev \
libprotobuf-dev \
libprotobuf-c-dev \
uuid-dev \
libconfig-dev \
libnl-3-dev libnl-route-3-dev \
libcurl4-openssl-dev \
libjansson-dev \
libzmq3-dev \
libnanomsg-dev \
librabbitmq-dev \
libmosquitto-dev \
libcomedi-dev \
libibverbs-dev \
librdmacm-dev \
libre-dev \
libspdlog-dev \
libfmt-dev \
libusb-1.0-0-dev \
liblua5.3-dev \
librdkafka-dev

or the following line for Fedora/CentOS/Redhat systems:

$ sudo dnf config-manager --add-repo https://packages.fein-aachen.org/fedora/fein.repo
$ sudo dnf install \
gcc gcc-c++ \
pkgconfig make cmake ninja-build \
protobuf-compiler protobuf-c-compiler \
autoconf automake libtool \
texinfo git mercurial curl tar \
flex bison rpmdevtools \
doxygen dia graphviz \
openssl-devel \
protobuf-devel \
protobuf-c-devel \
libuuid-devel \
libconfig-devel \
libnl3-devel \
libcurl-devel \
jansson-devel \
spdlog-devel \
fmt-devel \
libwebsockets-devel \
zeromq-devel \
nanomsg-devel \
librabbitmq-devel \
mosquitto-devel \
libibverbs-devel \
librdmacm-devel \
re-devel \
libusb-devel \
lua-devel \
librdkafka-devel

or for Alpine:

$ echo "@testing http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
$ apk update
$ apk add gcc g++ \
pkgconf cmake make \
autoconf automake libtool \
git mercurial \
flex bison \
protobuf \
file
openssl-dev \
ossp-uuid-dev@testing \
libconfig-dev \
libwebsockets-dev \
curl-dev \
jansson-dev \
spdlog-dev \
fmt-dev \
libnl3-dev \
graphviz-dev \
protobuf-dev \
protobuf-c-dev \
zeromq-dev \
nanomsg-dev@testing \
rabbitmq-c-dev \
mosquitto-dev \
libusb-dev \
lua-dev \
librdkafka-dev

Downloading from Git

$ git clone https://git.rwth-aachen.de/acs/public/villas/node.git VILLASnode
$ cd VILLASnode
$ git submodule update --init common

Install unpackaged dependencies

VILLASnode requires several external libraries which are not packaged by common Linux distributions (see above). Please consult the list above to install at least the mandatory dependencies by hand or use the following script:

$ bash packaging/deps.sh

Compilation

Start the compilation with:

$ mkdir build
$ cd build
$ cmake ..
$ make -j$(nproc)

Installation

Install the files to your search path:

$ sudo make install
$ sudo ldconfig

Append PREFIX=/opt/local to change the installation destination.

Test installation

Verify everything is working and required node-types are compiled-in:

$ villas node --help

Will print the current version including a list of all supported node-types, hooks, etc.