2. Prepare Your Development Environment

2.1. A Word on System Environments

For a native build, EVerest requires a Linux based system. One reason for that is for example Linux socket header files we use for networking.

To get building done on a Windows or Mac system, you can use WSL2 (Windows) or Docker / Podman (Mac).

For Mac, see the How-to for MAC setup.

2.2. Required Packages

To get EVerest running properly, you will mainly need the following packages:

  • Python (greater than 3.6)

  • Jinja2

  • PyYAML

  • Compiler:

    • GCC 9 (lower versions could work with some tweaking but are not recommended)

    • Clang (starting with version 12) has been used with EVerest but is not officially supported.

    • See also the FAQ entry about GNU compilers!

Make sure you have the Python packages pip, setuptools and wheel available, which are needed for the EVerest dependency manager:

python3 -m pip install --upgrade pip setuptools wheel

Note

Depending on the programming language that you will use for implementing custom modules, you might need additional tools for compilation and similar use cases. If you stumble over some trouble that is caused by EVerest - especially when using other languages than C++ -, drop us a line or consider creating a GitHub issue.

A complete list of libraries to be installed is given by the following best practices which setup a development environment on a number of operating systems.

2.3. Tested Environments

2.3.1. Ubuntu

Warning

Ubuntu 20.04 is not supported anymore. Please use Ubuntu 22.04 or newer.

Tested with Ubuntu 22.04.

Use apt to get your needed libraries installed:

sudo apt update
sudo apt install -y python3-pip git rsync wget cmake doxygen graphviz build-essential clang-tidy cppcheck openjdk-17-jdk npm docker docker-compose libboost-all-dev nodejs libssl-dev libsqlite3-dev clang-format curl rfkill libpcap-dev libevent-dev pkg-config libcap-dev

Please make sure to have nodejs installed with minimum version 10.20 for node_api version 6+. For updating to a supported version, please follow the install procedure here: https://github.com/nodesource/distributions/blob/master/README.md#installation-instructions.

2.3.2. OpenSUSE

Use zypper to get your needed libraries installed:

zypper update && zypper install -y sudo shadow
zypper install -y --type pattern devel_basis
zypper install -y git rsync wget cmake doxygen graphviz clang-tools cppcheck boost-devel libboost_filesystem-devel libboost_log-devel libboost_program_options-devel libboost_system-devel libboost_thread-devel java-17-openjdk java-17-openjdk-devel nodejs nodejs-devel npm python3-pip gcc-c++ libopenssl-devel sqlite3-devel libpcap-dev libevent-devel libcap-devel

2.3.3. Fedora

Tested with Fedora 38, 39 and 40. Here is how to get your needed libraries with dnf.

sudo dnf update
sudo dnf install make automake gcc gcc-c++ kernel-devel python3-pip python3-devel git rsync wget cmake doxygen graphviz clang-tools-extra cppcheck java-17-openjdk java-17-openjdk-devel boost-devel nodejs nodejs-devel npm openssl openssl-devel libsqlite3x-devel curl rfkill libpcap-devel libevent-devel libcap-devel

Now, it’s time to continue with the Quick Start Guide to install EVerest.

2.4. Troubleshooting

Some common problems during setting up your environment are collected here.

2.4.1. Maven dependency

For EVerest releases older than 2023.9.0 (released October 2nd 2023), Maven is required for EVerest to run. Should you need to run one of those versions, make sure you install the maven package with the package manager of your choice.

2.4.2. Java dependency

Java is not required for running the core of EVerest. However, it is required if you want to install certificates for ISO 15118 communication as currently the Java Keytool is used. Also the EXI (Efficient XML Interchange) part of Josev requires Java.

2.4.3. Python versions with pyenv

If you use pyenv for running multiple Python version in parallel on your system, you probably will see cmake not using the Python version activated by pyenv.

One solution to this is to run cmake with the PYTHON_EXECUTABLE flag. See cmake documentation for more information on this.