2011-02-13 00:03:10 +01:00
|
|
|
Building Lumiera from source
|
|
|
|
|
============================
|
2013-10-28 00:19:03 +01:00
|
|
|
:Date: 2013
|
|
|
|
|
:toc:
|
2011-02-13 00:09:08 +01:00
|
|
|
|
2013-01-03 02:59:22 +01:00
|
|
|
At the moment you can build Lumiera, start the standard Lumiera GUI and run the
|
2013-10-28 00:19:03 +01:00
|
|
|
Lumiera test suite. The GUI you start might look like a mockup, but in fact is
|
2018-11-16 22:38:29 +01:00
|
|
|
_is_ the real application; just there isn't much wiring between GUI, model and
|
2013-10-28 00:19:03 +01:00
|
|
|
core yet. This will remain the state of affairs for the foreseeable future, since
|
|
|
|
|
we're developing core components against a test suite with unit and integration
|
|
|
|
|
tests. Thus, the growth of our test suite is the only visible indication of
|
|
|
|
|
progress.
|
2013-01-03 02:59:22 +01:00
|
|
|
|
|
|
|
|
This tutorial outlines the fundamental steps required to compile Lumiera on
|
|
|
|
|
Linux (or a comparable) system. We'll assume that you have a certain familiarity
|
2013-10-28 00:19:03 +01:00
|
|
|
with _commandline survival skills_ on your system. To help you getting started,
|
|
|
|
|
this tutorial lists all the necessary commands explicitly. footnote:[there are
|
|
|
|
|
some minor differences between the various Debian based distributions, thus the
|
|
|
|
|
exact version numbers and package names appearing in our example commands might
|
|
|
|
|
be slightly different on your system]
|
2013-01-03 02:59:22 +01:00
|
|
|
|
|
|
|
|
There are two distinct methods to build:
|
|
|
|
|
|
2013-10-28 00:19:03 +01:00
|
|
|
- use the Debian source code package of Lumiera (the »Debian way«)
|
|
|
|
|
- use Git to retrieve all source code and build the »classical way«
|
2013-01-03 02:59:22 +01:00
|
|
|
|
2011-03-31 19:53:56 +02:00
|
|
|
|
2015-11-02 19:41:24 +01:00
|
|
|
NOTE: just compiling Lumiera on a _Debian-based_ system (e.g. Mint, Ubuntu...)
|
2013-10-28 00:19:03 +01:00
|
|
|
is much simpler when using the Debian source package. See the separate
|
|
|
|
|
link:DebianBuilding.html[tutorial page] for this footnote:[besides, there
|
|
|
|
|
is a separate page with general
|
|
|
|
|
link:/debian/[instructions for installing on Debian/Ubuntu]).]
|
2011-03-31 19:53:56 +02:00
|
|
|
The purpose of this tutorial here is to show you the elementary
|
|
|
|
|
and generic steps to compile Lumiera from source.
|
|
|
|
|
|
2013-01-03 02:59:22 +01:00
|
|
|
|
|
|
|
|
Requirements
|
|
|
|
|
------------
|
|
|
|
|
|
2013-10-28 00:19:03 +01:00
|
|
|
To build Lumiera, you'll need a _build environment_ together with the
|
|
|
|
|
_development packages_ of the libraries Lumiera depends on.
|
|
|
|
|
footnote:[there is a separate documentation page listing the
|
|
|
|
|
link:{ldoc}/technical/build/Dependencies.html[build dependencies] explicitly.
|
|
|
|
|
We'll try to keep that information up to date -- but in the end, the really
|
|
|
|
|
authoritative information about the build dependencies is encoded into the
|
|
|
|
|
link:{ldoc}/technical/build/SCons.html[build system]. Thus, when the build
|
|
|
|
|
system aborts, indicating that a never version of some library is required,
|
|
|
|
|
then usually the build system is right...]
|
2015-11-02 19:41:24 +01:00
|
|
|
More specifically, you'll need the GNU C/C\++ compiler with C++14 support (Version >= 4.9)
|
2013-10-28 00:19:03 +01:00
|
|
|
in addition to the following tools and libraries:
|
2011-03-31 19:53:56 +02:00
|
|
|
|
2015-11-02 19:41:24 +01:00
|
|
|
* link:http://git-scm.com/[Git] (version management system)
|
2011-03-31 19:53:56 +02:00
|
|
|
* link:http://www.scons.org/[SCons build system]
|
|
|
|
|
* link:http://www.boost.org/[Boost libraries]
|
|
|
|
|
* link:http://gmerlin.sourceforge.net/[GAVL library]
|
2013-10-28 00:19:03 +01:00
|
|
|
* link:http://nobug.pipapo.org/[NoBug] (see below)
|
2013-01-03 02:59:22 +01:00
|
|
|
* Lumiera source code
|
2011-02-13 00:03:10 +01:00
|
|
|
|
2013-01-03 02:59:22 +01:00
|
|
|
The GUI depends on the following:
|
2011-03-01 06:04:29 +01:00
|
|
|
|
2013-10-28 00:19:03 +01:00
|
|
|
* link:http://www.gtkmm.org/en/[gtkmm]
|
|
|
|
|
* link:http://cgit.freedesktop.org/xorg/lib/libXv[libXv]
|
2015-11-02 19:41:24 +01:00
|
|
|
* link:https://wiki.gnome.org/LibRsvg[lib rSVG]
|
2013-10-28 00:19:03 +01:00
|
|
|
* link:https://git.gnome.org/browse/gdl[lib GDL]
|
2015-11-20 05:34:11 +01:00
|
|
|
|
|
|
|
|
CAUTION: there are known problems with *GCC-5.x* as of 11/2015 +
|
|
|
|
|
on recent distributions (Ubuntu/wily, Debian/stretch) you might
|
|
|
|
|
encounter failing tests.footnote:[these problems aren't really serious;
|
|
|
|
|
basically we're sometimes checking mangled class/type names, and seemingly
|
|
|
|
|
the mangling behaviour of GCC has changed slightly. We're working on that...]
|
2011-03-01 06:04:29 +01:00
|
|
|
|
2013-01-03 02:59:22 +01:00
|
|
|
TIP: Generally speaking, when you want to build software, you'll need the
|
|
|
|
|
_development_ version of the packages that contain the headers and pre-built
|
2013-10-28 00:19:03 +01:00
|
|
|
libraries to link against. These packages are usually named `-devel` or `-dev`.
|
2011-02-13 00:03:10 +01:00
|
|
|
|
2013-10-28 00:19:03 +01:00
|
|
|
For Debian based systems, e.g. Mint, Ubuntu..., you can install these packages as follows:
|
2011-02-13 00:03:10 +01:00
|
|
|
|
2011-03-31 19:53:56 +02:00
|
|
|
-------------------------------------------------------------------------------------
|
2013-10-27 08:41:40 +01:00
|
|
|
sudo apt-get install build-essential scons git-core valgrind intltool \
|
2011-03-31 19:53:56 +02:00
|
|
|
libboost-dev libboost-program-options-dev libboost-regex-dev libboost-filesystem-dev \
|
2015-08-15 21:50:00 +02:00
|
|
|
libgavl-dev libgtkmm-3.0-dev libgdl-3-dev librsvg2-dev libxv-dev
|
2011-03-31 19:53:56 +02:00
|
|
|
-------------------------------------------------------------------------------------
|
2011-02-13 00:03:10 +01:00
|
|
|
|
2015-11-02 19:41:24 +01:00
|
|
|
Ubuntu note::
|
|
|
|
|
some people reported you need to install the `intltool` package from the standard
|
|
|
|
|
Ubuntu repository (for this reason it is included in the above collection)
|
2015-11-20 05:34:11 +01:00
|
|
|
Mint-17.2 (Rafaela) and Ubuntu 12.LTS::
|
|
|
|
|
we really need the gcc-4.9, so building on these platforms is a bit tricky. See our
|
2015-11-05 03:27:55 +01:00
|
|
|
link:{ldoc}/technical/howto/backporting.html#_building_on_mint_17_2_rafaela_8201_8212_8201_gcc_and_libstdc_4_9[»Backporting«]
|
|
|
|
|
page for detailed info...
|
2015-11-20 05:34:11 +01:00
|
|
|
GCC-5.0::
|
|
|
|
|
we're aware of some changes in mangled names (or type-IDs), which cause some tests to fail.
|
|
|
|
|
Other than that, compilation worked for us.
|
|
|
|
|
|
2011-03-01 06:04:29 +01:00
|
|
|
|
2011-03-31 19:53:56 +02:00
|
|
|
|
2013-01-03 02:59:22 +01:00
|
|
|
Build Directory
|
2011-02-13 00:03:10 +01:00
|
|
|
---------------
|
|
|
|
|
|
2013-01-03 02:59:22 +01:00
|
|
|
You'll need to check out the source code in some directory or other. You'll also
|
|
|
|
|
have to use this directory to build Lumiera. This could be a temporary
|
|
|
|
|
directory, or some "workspace" directory below your home directory. We'll refer
|
|
|
|
|
to this directory as _workspace directory_ .
|
2011-02-13 00:03:10 +01:00
|
|
|
|
2013-10-28 00:19:03 +01:00
|
|
|
|
2013-01-03 02:59:22 +01:00
|
|
|
Lumiera Specific Libraries
|
2011-02-13 00:03:10 +01:00
|
|
|
--------------------------
|
2013-10-28 00:19:03 +01:00
|
|
|
Now that you have your basic build environment prepared, the next step is to care
|
|
|
|
|
for some special libraries required by Lumiera that are not directly part of the
|
|
|
|
|
Lumiera project itself, but aren't readily available through the usual package
|
|
|
|
|
manager of the common distributions either. footnote:[we maintain our own Debian
|
|
|
|
|
package depot at Lumiera.org and provide binary Debian packages for a range of
|
|
|
|
|
distributions; yet this tutorial strives at showing the basic and generic method
|
|
|
|
|
for building. Thus we'll show you here how to build these libraries from source
|
|
|
|
|
yourself] Thus, we'll have to get the source code for these support libraries,
|
|
|
|
|
build and install them before we're able to compile Lumiera.
|
2011-02-13 00:03:10 +01:00
|
|
|
|
|
|
|
|
WARNING: Note that the following procedures will try to install files into your
|
2013-10-28 00:19:03 +01:00
|
|
|
base system below `/usr/local`. +
|
2013-01-03 02:59:22 +01:00
|
|
|
To do so, you'll need administrative permission for the machine you're working
|
2011-02-13 00:03:10 +01:00
|
|
|
on. These additions might interfere with other libraries installed by your
|
|
|
|
|
package manager (if you get into trouble updating your system later on,
|
2013-01-03 02:59:22 +01:00
|
|
|
you might have to manually remove these libraries).
|
2011-02-13 00:03:10 +01:00
|
|
|
|
|
|
|
|
|
2013-10-28 00:19:03 +01:00
|
|
|
NoBug: building and installing
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
|
|
link:http://nobug.pipapo.org/[NoBug] is an instrumentation and diagnostics library. +
|
2013-01-03 02:59:22 +01:00
|
|
|
Enter _workspace direcory_ as explained above.
|
|
|
|
|
Get the NoBug source code:
|
2011-02-13 00:03:10 +01:00
|
|
|
|
|
|
|
|
------------------------------------------------------------
|
2013-10-27 10:18:38 +01:00
|
|
|
git clone git://git.lumiera.org/debian/nobug
|
2011-02-13 00:03:10 +01:00
|
|
|
------------------------------------------------------------
|
|
|
|
|
|
2013-01-03 02:59:22 +01:00
|
|
|
This will create a (sub)directory called nobug that contains source code. +
|
2013-10-28 00:19:03 +01:00
|
|
|
Compile and install NoBug with the following commands:
|
2011-02-13 00:03:10 +01:00
|
|
|
------------------------------------------------------------
|
|
|
|
|
cd nobug
|
|
|
|
|
autoreconf -i
|
|
|
|
|
mkdir build
|
|
|
|
|
cd build
|
|
|
|
|
../configure
|
|
|
|
|
make
|
2011-03-07 03:58:54 +01:00
|
|
|
sudo make install
|
2011-02-13 00:03:10 +01:00
|
|
|
------------------------------------------------------------
|
|
|
|
|
|
2015-11-02 19:41:24 +01:00
|
|
|
GDL-mm: building and installing
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
2015-08-15 21:50:00 +02:00
|
|
|
|
2015-11-02 19:41:24 +01:00
|
|
|
The *GNOME Docking library* is available through your your package manager,
|
|
|
|
|
but we additionally need the C++ bindings. Since these haven't made it into the
|
|
|
|
|
standard repositories yet, we provide a suitable custom package here;
|
|
|
|
|
the following shows how to build the latter
|
2011-02-13 00:03:10 +01:00
|
|
|
|
2013-10-28 00:19:03 +01:00
|
|
|
Version limitation::
|
2015-11-02 19:41:24 +01:00
|
|
|
we rely on GTK-3 and thus need a compatible GDL-3.
|
2013-10-28 00:19:03 +01:00
|
|
|
|
2018-09-13 01:00:02 +02:00
|
|
|
There is a dependency on `xmlto`, which is an xml converter. To install on Debian:
|
|
|
|
|
|
|
|
|
|
------------------------------------------------------------
|
|
|
|
|
apt-get install xmlto
|
|
|
|
|
------------------------------------------------------------
|
2011-02-13 00:03:10 +01:00
|
|
|
|
|
|
|
|
------------------------------------------------------------
|
2015-11-02 19:41:24 +01:00
|
|
|
git clone git://git.lumiera.org/debian/gdlmm
|
|
|
|
|
cd gdlmm
|
2018-09-13 00:28:53 +02:00
|
|
|
git checkout debian
|
2011-02-13 00:03:10 +01:00
|
|
|
./configure
|
|
|
|
|
make
|
|
|
|
|
sudo make install
|
|
|
|
|
------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-10-28 00:19:03 +01:00
|
|
|
verify library linkage
|
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~
|
2011-02-13 00:03:10 +01:00
|
|
|
|
2013-10-28 00:19:03 +01:00
|
|
|
The compile might warn you to add various directories to `/etc/ld.so.conf` and then
|
|
|
|
|
to run `ldconfig`. This will allow your dynamic linker to pick up the newly built
|
2011-02-13 00:03:10 +01:00
|
|
|
libraries later when you try to start Lumiera. If you don't want to reconfigure
|
2013-01-03 02:59:22 +01:00
|
|
|
your system and add `/usr/local/lib` to the linker configuration, you may
|
2013-10-28 00:19:03 +01:00
|
|
|
alternatively just add the directories to your `LD_LIBRARY_PATH` environment
|
2011-02-13 00:03:10 +01:00
|
|
|
variable.
|
|
|
|
|
|
|
|
|
|
Either way, check that all libraries are accessible and OK:
|
|
|
|
|
|
|
|
|
|
------------------------------------------------------------
|
2011-03-31 19:53:56 +02:00
|
|
|
sudo ldconfig -v | grep 'nobug'
|
2011-02-13 00:03:10 +01:00
|
|
|
------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
and you should get a list of the libraries, part of which should look like this:
|
|
|
|
|
|
|
|
|
|
------------------------------------------------------------
|
|
|
|
|
libnobug.so.0 -> /usr/local/lib/libnobug.so.0.0.0
|
|
|
|
|
libnobugmt.so.0 -> /usr/local/lib/libnobugmt.so.0.0.0
|
|
|
|
|
libgdl-lum.so.0 -> /usr/local/lib/libgdl-lum.so.0.0.0
|
|
|
|
|
------------------------------------------------------------
|
|
|
|
|
|
2015-11-02 19:41:24 +01:00
|
|
|
or similar. The same applies to other custom libraries you needed to build
|
2013-01-03 02:59:22 +01:00
|
|
|
explicitly for your system. If any of these libraries are not listed, you'll
|
|
|
|
|
have to see why before you can continue.
|
2011-02-13 00:03:10 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
Building Lumiera
|
2011-02-13 04:31:13 +01:00
|
|
|
----------------
|
2011-02-13 00:03:10 +01:00
|
|
|
|
2013-01-03 02:59:22 +01:00
|
|
|
Next, after having built and installed the external libraries, go into the
|
|
|
|
|
_workspace directory_ and retrieve the Lumiera source code. Thereafter, build
|
2013-10-28 00:19:03 +01:00
|
|
|
Lumiera by invoking the *scons* build
|
2015-11-02 19:41:24 +01:00
|
|
|
footnote:[more options for building with scons can be found via: `scons -h` ]
|
2011-02-13 00:03:10 +01:00
|
|
|
-----------------
|
|
|
|
|
git clone git://git.lumiera.org/LUMIERA
|
|
|
|
|
cd LUMIERA
|
|
|
|
|
scons
|
|
|
|
|
-----------------
|
|
|
|
|
|
2013-10-28 00:19:03 +01:00
|
|
|
maybe build and run the test suite by issuing `scons check`
|
2011-02-13 00:03:10 +01:00
|
|
|
|
2013-01-03 02:59:22 +01:00
|
|
|
The build process will take some time, so sit back and relax.
|
2011-02-13 00:03:10 +01:00
|
|
|
|
2013-01-03 02:59:22 +01:00
|
|
|
NOTE: you do not need to _install_ Lumiera. It will find all files it requires
|
|
|
|
|
relative to the directory structure it generates, which is freely relocatable
|
2011-03-31 19:53:56 +02:00
|
|
|
as a whole. Just invoke the +target/lumiera+ executable. The current
|
2013-01-03 02:59:22 +01:00
|
|
|
working directory is not particularly relevant.
|
2011-02-13 00:03:10 +01:00
|
|
|
|
|
|
|
|
After the build has finished successfully, you should be able to start Lumiera.
|
2015-11-02 19:41:24 +01:00
|
|
|
Currently, this will bring up the GUI, _without any further functionality_ (!)
|
2011-02-13 00:03:10 +01:00
|
|
|
|
2013-01-03 02:59:22 +01:00
|
|
|
You should see something like this:
|
2011-02-13 00:03:10 +01:00
|
|
|
|
2011-03-10 01:10:38 +01:00
|
|
|
image:{l}/images/lumiera_gui_small.png[Current Lumiera GUI Screenshot]
|
2011-03-04 02:48:31 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
What's next?
|
|
|
|
|
------------
|
2015-11-02 19:41:24 +01:00
|
|
|
If you're a coder, maybe you have found something to improve...? +
|
2013-01-03 02:59:22 +01:00
|
|
|
Contributing to Lumiera is easy, thanks to *Git*
|
2011-03-04 02:48:31 +01:00
|
|
|
|
|
|
|
|
-> Tutorial link:contributing.html[Contributing to Lumiera coding]
|
|
|
|
|
|