Installation¶
This document describes the compilation and installation process. Most of that work is automated with Meson, a build tool written in Python.
Packages¶
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.
Fedora¶
RPM packages for Fedora (24, 25 and rawhide) and EPEL 7 (CentOS, RHEL) are available from the arteymix/valum-framework Copr repository.
dnf copr enable arteymix/valum-framework
The valum-0.3
package contains the shared libraries, valum-0.3-devel
contains all that is necessary to build an application and valum-0.3-doc
deliver user and API documentation.
dnf install valum-0.3 valum-0.3-devel valum-0.3-doc
Nix¶
nix-shell -p valum
Solus¶
eopkg it valum
Arch Linux (AUR)¶
yaourt valum
Subproject¶
If your project uses the Meson build system, you may integrate the framework as
a subproject. The project must be cloned in the subprojects
folder,
preferably using a git submodule. Be careful using a tag and not the master
trunk.
The following variables can be used as dependencies:
vsgi
for the abstraction layervalum
for the framework
Note that due to Meson design, dependencies must be explicitly provided.
project('app', 'c', 'vala')
glib = dependency('glib-2.0')
gobject = dependency('gobject-2.0')
gio = dependency('gio-2.0')
soup = dependency('libsoup-2.4')
vsgi = subproject('valum').get_variable('vsgi')
valum = subproject('valum').get_variable('valum')
executable('app', 'app.vala',
dependencies: [glib, gobject, gio, soup, vsgi, valum])
Docker¶
To use Valum with Docker, use the provided valum/valum image. It is based on the latest stable Ubuntu.
FROM valum/valum:latest
WORKDIR /app
ADD . .
RUN valac --pkg=valum-0.3 app.vala
EXPOSE 3003
ENTRYPOINT /app/app
Vagrant¶
You can provision a Vagrant VM with Valum. There’s no Vagrantfile
provided because each project will likely have it’s own setup and deployment
constraints.
wget https://github.com/valum-framework/valum/archive/v0.3.0.zip
unzip v0.3.0.zip
cd valum-0.3.0
mkdir build
meson --prefix=/usr --buildtype=release build
ninja -C build
ninja -C build test
ninja -C build install
Dependencies¶
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.36 |
ninja | >=1.6.0 |
glib-2.0 | >=2.40 |
gio-2.0 | >=2.40 |
gio-unix-2.0 | >=2.40 |
libsoup-2.4 | >=2.44 |
Recent dependencies will enable more advanced features:
Package | Version | Feature |
---|---|---|
gio-2.0 | >=2.44 | better support for asynchronous I/O |
libsoup-2.4 | >=2.48 | new server API |
You can also install additional dependencies to build the examples, you will
have to specify the -D enable_examples=true
flag during the configure step.
Package | Description |
---|---|
ctpl | C templating library |
gee-0.8 | data structures |
json-glib-1.0 | JSON library |
libmemcached | client for memcached cache storage |
libluajit | embed a Lua VM |
libmarkdown | parser and generator for Markdown |
template-glib | templating library |
Download the sources¶
You may either clone the whole git repository or download one of our releases from GitHub:
git clone git://github.com/valum-framework/valum.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.
Build¶
mkdir build && cd build
meson ..
ninja # or 'ninja-build' on some distribution
Install¶
The framework can be installed for system-wide availability.
sudo ninja install
Once installed, VSGI implementations will be looked up into ${prefix}/${libdir}/vsgi-0.3/servers
.
This path can be changed by setting the VSGI_SERVER_PATH
environment
variable.
Run the tests¶
ninja test
If any of them fail, please open an issue on GitHub so that we can tackle
the bug. Include the test logs (e.g. build/meson-private/mesonlogs.txt
) and
any relevant details.