Building from Source (with Autotools)¶
To build and install from source, please read the following sections. Ubuntu 18.04 is assumed, but should work on other recent Debian-based distros.
Please make sure you have enough RAM available on your system to build Tizonia. A good 8GB of RAM may be needed if you are planning to build everything, including the ‘tizonia’ player application. You might encounter problems if you are trying to run the compilation while large programs like Chrome or Firefox are running. See Known issues for the kind of errors that you might encounter in those cases. Also look at Conditional compilation of sub-projects for instructions on how to disable certain parts of the software.
NOTE: Also make sure you have some time in your hands. Building Tizonia may take at least 20 minutes on a fast SSD-based system. You may want to look at Speeding up (re-)compilation usingccache if you are planning to build the Tizonia tree multiple times.
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
Once all the dependencies have been installed, build and install the OpenMAX IL framework, all plugins and the ‘tizonia’ command-line application, using any of the following methods.
The following command re-configures all sub-projects with ‘debug’ type of flags, and then proceeds to build and install them.
$ tizonia-dev-build --debug --install
The following command re-configures all sub-projects with ‘release’ type of flags, builds and installs them.
$ tizonia-dev-build --release --install
Single Debian package created with ‘checkinstall’¶
The following command configures all sub-projects with ‘release’ flags appropriate for a Debian/Ubuntu system, builds the whole repo, then using checkinstall creates a single Debian package and installs it in the system. The package can then be removed via ‘dpkg’ or even moved to another machine for testing.
NOTE: This is the best way to build Tizonia if all you want is to install it on a system that for which there are no official binaries.
NOTE: This is not how the Debian packages hosted on Bintray are created. The packages hosted on Bintray are fully ‘debianized’ packages created using the ‘tizonia-qemu-debootstrap-env’ script.
# This produces and install a Debian package called 'tizonia-all-testing' $ tizonia-dev-build --debian # To remove from the system, run: $ dpkg -r tizonia-all-testing
The traditional method¶
Alternatively, from the top of Tizonia’s repo, one can also do the familiar:
$ autoreconf -ifs $ ./configure # or ./configure --disable-player to disable the command-line player program $ make $ make install
Conditional compilation of sub-projects¶
Some people are only interested in building the OpenMAX IL framework, without
tizonia player application (that lives under the ‘player’
sub-directory). During configuration, it can be disabled by including the
# Disable compilation of the command-line player program. $ ./configure --disable-player
--no-player option may be added to
disable configuration and build of the
# Build and install in DEBUG mode without the command-line player program. $ tizonia-dev-build --no-player --debug --install
--without-libspotify option may be included to disable configuration and
build of the libspotify-based OpenMAX IL component. This option will also
disable the support for this plugin in the
tizonia player program.
# Disable support for the spotify_source plugin. $ ./configure --without-libspotify
--without-alsa option may be included to disable configuration and
build of the ALSA-based OpenMAX IL pcm renderer.
# Disable support for the ALSA pcm renderer plugin. $ ./configure --without-alsa
Tizonia’s configuration file¶
Copy tizonia.conf into the user’s config folder:
$ mkdir -p $HOME/.config/tizonia \ && cp $TIZONIA_REPO_DIR/config/src/tizonia.conf $HOME/.config/tizonia
Resource Manager’s D-BUS service activation file (optional)¶
OpenMAX IL Resource Management is present but disabled by default. This is a feature required on an compliant OpenMAX IL 1.2 implementation. Currently, there is no other use beyond enabling OpenMAX IL compliance. In case this is to be used during OpenMAX IL conformance testing (prior to that, it needs to be explicitly enabled in tizonia.conf), copy the Resource Manager’s D-BUS activation file to some place where it can be found by the DBUS services. E.g:
$ mkdir -p ~/.local/share/dbus-1/services \ && cp rm/tizrmd/dbus/com.aratelia.tiz.rm.service ~/.local/share/dbus-1/services
MSM is used to generate a number of state machines that control the tunneled
OpenMAX IL components for the various playback uses cases. The state machines
are quite large and MSM is known for not being easy on the compilers. Building
tizonia command-line app in ‘debug’ configuration (with debug symbols,
etc) requires quite a bit of RAM.
You may see GCC crashing like below; simply keep running
make -j1 or
make -j1 install until the application is fully built (it will finish eventually,
given the sufficient amount RAM). An alternative to that is to build in
‘release’ mode (especially if you are on a 32-bit distro).
Making all in src CXX tizonia-tizplayapp.o CXX tizonia-main.o CXX tizonia-tizomxutil.o CXX tizonia-tizprogramopts.o CXX tizonia-tizgraphutil.o CXX tizonia-tizgraphcback.o CXX tizonia-tizprobe.o CXX tizonia-tizdaemon.o CXX tizonia-tizplaylist.o CXX tizonia-tizgraphfactory.o CXX tizonia-tizgraphmgrcmd.o CXX tizonia-tizgraphmgrops.o CXX tizonia-tizgraphmgrfsm.o CXX tizonia-tizgraphmgr.o CXX tizonia-tizdecgraphmgr.o g++: internal compiler error: Killed (program cc1plus) Please submit a full bug report, with preprocessed source if appropriate. See <file:///usr/share/doc/gcc-4.8/README.Bugs> for instructions. make: *** [tizonia-tizplayapp.o] Error 4 make: *** Waiting for unfinished jobs.... g++: internal compiler error: Killed (program cc1plus) Please submit a full bug report, with preprocessed source if appropriate. See <file:///usr/share/doc/gcc-4.8/README.Bugs> for instructions.
Speeding up (re-)compilation using ccache¶
ccache is a compiler cache. It speeds up recompilation by caching previous compilations. With Tizonia, this is very useful during development, especially since the ‘player’ application is so hard to build due to the boost machinery.
On a debian system, ccache can be installed using:
$ sudo apt-get install ccache
Once ccache is installed,
tizonia-dev-build will detect its presence and
start making use of it to (dramatically) reduce compilation time in most cases.