Building Lumiera from source ============================ At the moment you can build Lumiera, start the standard Lumiera GUI and run the Lumiera test suite. 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 with _commandline survival skills_ on your system. Although Git is required if you do not use the Debian package, we'll explicitly provide all giot commands. There are two distinct methods to build: - use the Debian source code package of Lumiera - use Git to retrieve all source code NOTE: just compiling Lumieara on a _Debian-based_ system (e.g. Ubuntu) is much simpler using the Debian source package. See the separate link:DebianBuilding.html[tutorial page] for this (or the general link:/debian/[instructions for installing on Debian/Ubuntu]). The purpose of this tutorial here is to show you the elementary and generic steps to compile Lumiera from source. Requirements ------------ To build Lumiera, you'll require GNU C/C++ compiler (Version 4.X) in addition to the following: * link:http://git-scm.com/[Git VCS] * link:http://www.scons.org/[SCons build system] * link:http://www.boost.org/[Boost libraries] * link:http://gmerlin.sourceforge.net/[GAVL library] * *NoBug* (see below) * Lumiera source code The GUI depends on the following: * http://www.gtkmm.org/en/[gtkmm] * http://cgit.freedesktop.org/xorg/lib/libXv[libXv] 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 libraries to link against. These packages are ususally named `-devel` or `-dev`. For Debian based systems, e.g. Ubuntu, you can install these packages as follows: ------------------------------------------------------------------------------------- sudo apt-get install build-essential autoconf scons valgrind libtool git-core \ libboost-dev libboost-program-options-dev libboost-regex-dev libboost-filesystem-dev \ libgavl-dev libgdl-1-dev libgtkmm-2.4-dev librsvg2-dev libxv-dev ------------------------------------------------------------------------------------- Optionally, you may also want to install the *gtk2-engines* package. Build Directory --------------- 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_ . Lumiera Specific Libraries -------------------------- Now that you have your basic build system setup, you'll next have obtain support libraries required by Lumiera that are not directly part of the Lumiera project itself. At the moment, you'll have to get the source code for the support libraries at build them from source. We do not have them pre-packaged at the moment, but this will hopefully change over time. However, it is not too difficult to build the support libraries and the instructions following here should not be too difficult. WARNING: Note that the following procedures will try to install files into your base system below `/usr/local`. To do so, you'll need administrative permission for the machine you're working on. These additions might interfere with other libraries installed by your package manager (if you get into trouble updating your system later on, you might have to manually remove these libraries). NoBug: obtaining, building and installing ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *NoBug* is an instrumentation and diagnostics library. + Enter _workspace direcory_ as explained above. Get the NoBug source code: ------------------------------------------------------------ git clone git://git.pipapo.org/nobug ------------------------------------------------------------ This will create a (sub)directory called nobug that contains source code. + Compile and install NoBug with the following commands: (this will try to install the NoBug library in /usr/lib, so you will require root privilages to do so!) ------------------------------------------------------------ cd nobug autoreconf -i mkdir build cd build ../configure make sudo make install ------------------------------------------------------------ GDL: obtaining, building and installing ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The *GNOME Docking library* is generally available through your package manager, but we contributed some improvements, which are only available in the very recent development versions of GDL. If your distribution provides a GDL >= 2.27, you're fine. Otherwise we've created a special package, which doesn't interfere with an existing (older) installation of GDL. Ubuntu 9.04 note:: intltool-update is not patched, you must add +/usr/share/intltool-debian/+ to get the gdl-package to configure correctly (JSC). Ubuntu 10.10 note:: you need to install the +intltool+ package from the standard ubuntu repository ------------------------------------------------------------ git clone git://git.lumiera.org/gdl-package cd gdl-package ./configure make sudo make install ------------------------------------------------------------ For more detailed instructions on how to build GDL (also how to build it into a Debian package) see http://lists.lumiera.org/pipermail/lumiera/2009-April/000891.html[this message + on the Lumiera mailing list]. check library linkage ^^^^^^^^^^^^^^^^^^^^^ The compile will warn you to add various directories to /etc/ld.so.conf and then run ldconfig. This will allow your dynamic liker to pick up the newly built libraries later when you try to start Lumiera. If you don't want to reconfigure your system and add `/usr/local/lib` to the linker configuration, you may alternatively just add the directories to your LD_LIBRARY_PATH environment variable. Either way, check that all libraries are accessible and OK: ------------------------------------------------------------ sudo ldconfig -v | grep 'nobug' ------------------------------------------------------------ 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 ------------------------------------------------------------ or similar. The same applies to 'libgdl-lum.so.0' if you needed to build it explicitly for your system. If any of these libraries are not listed, you'll have to see why before you can continue. Building Lumiera ---------------- Up to now, Lumiera has had (and equivalent) build systems: *scons* and *autotools*. (Note 3/2011: At the moment, the autotools build system is broken; only the scons build mechanism is working. It is always a good idea to check the current build stats from our *builddrone*, which automatically builds the latest version from the master repository. Please have a look at this http://lumiera.org/builddrone/table.html[current build stats]-page.) Next, after having built and installed the external libraries, go into the _workspace directory_ and retrieve the Lumiera source code. Thereafter, build Lumiera. * Issue the following command to retireve the Lumiera source code and, thereafter, build Lumiera using *scons*: + (more options for building with scons can be found via:`scons -h` ) + ----------------- git clone git://git.lumiera.org/LUMIERA cd LUMIERA scons ----------------- + * Alternatively, if you'd prefer to build using *autotools* _(not working currently 3/11)_, issue the following commands: + ----------------- git clone git://git.lumiera.org/LUMIERA cd LUMIERA autoreconf -fi mkdir build cd build ../configure make ----------------- maybe build and run the test suite by issuing `scons check` or `make check` The build process will take some time, so sit back and relax. 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 as a whole. Just invoke the +target/lumiera+ executable. The current working directory is not particularly relevant. After the build has finished successfully, you should be able to start Lumiera. Currently, this will bring up the GUI, without any further functionality You should see something like this: image:{l}/images/lumiera_gui_small.png[Current Lumiera GUI Screenshot] What's next? ------------ If you're a coder, maybe you've found something to improve...? + Contributing to Lumiera is easy, thanks to *Git* -> Tutorial link:contributing.html[Contributing to Lumiera coding]