This document describes the compilation and installation process. Most of that work is automated with Meson, a build tool written in Python.


Packages for RPM and Debian based Linux distributions will be provided for stable releases so that the framework can easily be installed in a container or production environment.


RPM packages for Fedora (21, 22 and rawhide) are available from the arteymix/valum-framework Copr repository.

dnf copr enable arteymix/valum-framework

The valum package contains the shared library and valum-devel contains all that is necessary to build an application.

dnf install valum valum-devel


nix-shell -p valum


The following dependencies are minimal to build the framework under Ubuntu 12.04 LTS and should be satisfied by most recent Linux distributions.

Package Version
vala >=0.26
python >=3.4
meson >=0.31
ninja >=1.5.1
glib-2.0 >=2.32
gio-2.0 >=2.32
gio-unix-2.0 >=2.32
gthread-2.0 >=2.32
libsoup-2.4 >=2.38

Recent dependencies will enable more advanced features:

Package Version Feature
gio-2.0 >=2.34 CGI server uses the command line stdin which can be provided by DBus
gio-2.0 >=2.40 CLI arguments parsing
gio-2.0 >=2.44 write_head_async in Response
libsoup-2.4 >=2.48 new server API
libsoup-2.4 >=2.50 uses Soup.ClientContext.steal_connection directly

You can also install additional dependencies to build the examples, you will have to specify the --enable-examples flag during the configure step.

Package Description
json-glib-1.0 JSON library
libmemcached client for memcached cache storage
libluajit embed a Lua VM

Download the sources

You may either clone the whole git repository or download one of our releases from GitHub:

git clone git:// && cd valum

The master branch is a development trunk and is not guaranteed to be very stable. It is always a better idea to checkout the latest tagged release.


mkdir build && cd build
meson ..
ninja # or 'ninja-build' on some distribution


Installing the build files is optional and if you omit that step, make sure that LD_LIBRARY_PATH points to the build folder where the shared library has been generated.

sudo ninja install

The installation is usually prefixed by /usr/local, which is generally not in the dynamic library path. You have to export the LD_LIBRARY_PATH environment variable for it to work.

export LD_LIBRARY_PATH=/usr/local/lib64 # just lib on 32-bit systems

Run the tests

ninja test

If any of them fail, please open an issue on GitHub so that we can tackle the bug.

Run the sample application

You can run the sample application from the build folder if you called meson with the -D enable_examples=true flag, it uses the HTTP.