Installation and Debug

Installing Aravis

Aravis uses the meson build system ( http://mesonbuild.com/ ). After you have downloaded the latest release from https://github.com/AravisProject/aravis/releases, you can build and install Aravis like any other meson project:

meson setup build
cd build
ninja
ninja install

The build can be configured at any time using meson configure in the build directory. meson configure invoked without any other argument will show the configuration options.

On some platforms (like Ubuntu), you may have to configure the dynamic linker (ld) to let it know where the aravis libraries are installed, and run ldconfig as root in order to update ld cache.

sudo ldconfig

Release versions

Please use the released versions of Aravis and not a git checkout, unless you want to work on Aravis itself or test a commit.

The current version naming follows a major.minor.micro scheme. Odd minor values indicates development releases, and even minor values stable releases. Prior to 1.0.0, stable releases with different minor are not compatible, and are parallel installable, with executables suffixed with -major.minor.

Install dependencies on Ubuntu 20.04

Prior to running meson and ninja, dependencies can be installed using the following(tested on Ubuntu 20.04):

sudo apt install libxml2-dev libglib2.0-dev cmake libusb-1.0-0-dev gobject-introspection \
                 libgtk-3-dev gtk-doc-tools  xsltproc libgstreamer1.0-dev \
                 libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev \
                 libgirepository1.0-dev gettext

Install dependencies on Fedora 34/35

Due to differences in the deb and rpm package ecosystems dependencies can be installed on Fedora (tested on 34 and 35) with:

sudo dnf install libxml2-devel glib2-devel cmake libusb1-devel gobject-introspection \
                 gobject-introspection-devel gstreamer1-plugins-base-devel gtk3-devel \
                 gtk-doc libxslt gstreamer1-devel gstreamer1-plugins-good python3-gobject \
                 g++ meson gettext

Building on macOS

Using the GNU build system on macOS is not directly supported, but can be mimicked by augmenting the install procedure above with some environment settings (tested on macOS Catalina):

brew install gettext intltool gtk-doc libxml2 meson libusb
meson setup build
ninja -C build

If you want to be able to build the viewer, you have to install some additional packages:

brew install gtk+3 gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad libnotify gnome-icon-theme
meson configure -Dviewer=enabled build

Building on Windows

MSYS2 provides native Aravis packages. The package includes the DLL, headers and utilities (including the viewer).

To build Aravis by yourself, install MSYS2 and enter the mingw64 shell. Refer to the mingw CI configuration file for list of dependencies (such as mingw-w64-x86_64-libxml2 and so on) which must be installed prior to building via pacman -S .... The build process itself is the same as on other platforms (meson/ninja).

Alternatively, you can build Aravis using Microsoft Visual C++ (MSVC) and Conan package manager. Have a look at the msvc CI configuration file.

Cross-compilation for Windows

Aravis for Windows can be also cross-compiled on Linux (and used in Wine) using crossroad, provided that cross-compiler and native build tools (sudo apt install gcc-mingw-w64-x86-64 meson ninja=build on Debian/Ubuntu) are installed:

# note: use the git version, not the one from pypi
pip3 install --user git+git://git.tuxfamily.org/gitroot/crossroad/crossroad.git
# create cross-compilation environment with architecture "w64" called "aravis"
crossroad w64 aravis
# install packages required for compilation; crossroad adds the mingw-w64_x86_64- prefix automatically
crossroad install libnotify gstreamer gst-plugins-good gst-plugins-bad gst-plugins-bad gobject-introspection libusb gtk3 libxml2 zlib
# clone aravis sources
git clone https://github.com/AravisProject/aravis
cd aravis
# configure, crossroad adjusts meson for cross-compilation; build directory is created
crossroad meson setup build
# compile and install
ninja -C build install

Debugging Aravis

The ARV_DEBUG environment variable can be set to a comma separated list of debugging categories, which will make Aravis print out different types of debugging informations to the console. A debug level can also be specified, using a number from 0 (none) to 4 (trace) separated from the category name by a colon. For example, the following command before running an Aravis based application will make Aravis print out all stream and device related informations:

export ARV_DEBUG=stream:3,device:3

Available debug level and categories are:

Debug categories:
interface      : Device lookup for each supported protocol
device         : Device control
stream         : Video stream management
stream-thread  : Video stream thread (likely high volume output)
cp             : Control protocol packets
sp             : Stream protocol packets (likely high volume output)
genicam        : Genicam specialized DOM elements
policies       : Genicam runtime configurable policies
chunk          : Chunk data code
dom            : Genicam DOM document
evaluator      : Expression evaluator
viewer         : Simple viewer application
misc           : Miscellaneous code
all            : Everything

Debug levels:
0: none
1: warning
2: info
3: debug
4: trace