Building from Source (with Meson) [RECOMMENDED]¶
Prerequisites¶
To build Tizonia using the Meson build system, you need at least Meson ‘>=0.53.0’.
$ sudo -H pip3 install meson --upgrade
Ninja is the recommended Meson backend.
$ sudo apt-get install ninja-build
Dependencies¶
To install all the development dependencies, the tizonia-dev-build
tool is
the recommended way. This script lives under the tools
directory and internally
maintains an up-to-date list of all the packages that are required in a
Debian-compatible system to build Tizonia from source.
NOTE: The following command installs Mopidy’s ‘libspotify-dev’ package, and the ‘gmusicapi’, ‘soundcloud’, ‘pafy’ and ‘youtube-dl’ Python PIP packages, plus a few other necessary debian packages.
# Setup the following environment variables
$ export TIZONIA_REPO_DIR=/path/to/tizonia/repo # (e.g. /home/user/tizonia-openmax-il)
$ export TIZONIA_INSTALL_DIR=/path/to/install/dir # (e.g. /usr or /home/user/temp)
$ export PATH=$TIZONIA_REPO_DIR/tools:$PATH
# Set the PYTHONPATH accordingly (replace X to match the python version on your system)
$ export PYTHONPATH=$TIZONIA_INSTALL_DIR/lib/python3.X/site-packages:$PYTHONPATH
# Now install everything that is required to build Tizonia from source (Debian derivative assumed)
$ tizonia-dev-build --deps
Building¶
Building Tizonia with Meson is easy.
First, declare flags you wish (in CFLAGS
, CXXFLAGS
, FFLAGS
and FCFLAGS
).
Then invoke meson
with the various parameters you might want to specify, e.g:
$ meson --buildtype=plain --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib \
--bindir=/usr/bin --sbindir=/usr/sbin --includedir=/usr/include --datadir=/usr/share \
--mandir=/usr/share/man --infodir=/usr/share/info --localedir=/usr/share/locale \
--sysconfdir=/etc --localstatedir=/var --sharedstatedir=/var/lib --wrap-mode=nodownload \
--auto-features=enabled . build
NOTE: some distributions (e.g. Ubuntu) will use
/usr/lib
instead of/usr/lib64
on some architectures, use your best judgement.
If you wish to set options (as per meson_options.txt
), you can pass them with
-D
to the configuration line.
Then build with:
$ ninja -v -j1 -C build
NOTE: -j1 is recommended as it reduces the memory requirements during compilation.
And install with:
$ DESTDIR=<mydir> /usr/bin/ninja install -v -j1 -C build
On OSX things are still experimental. You’ll have to install the required dependencies with brew and
therefore use /usr/local
as prefix and adjust everything else accordingly. Also you will have to
pass -Dpkg_config_path=/usr/local/lib
and -Dcmake_prefix_path=/usr/local/lib
, plus other modifications.