Enna Compilation on Ubuntu #3

Ok Here an update of compiling enna for Ubuntu. Previous post about enna’s compilation is now verry old.
Enna has changed, EFL has changed and geexbox has new rocking libs that enna uses.
As explain by Mathieu in his blog post (in french) Geexbox libs have reached stability.
When I talk about geexbox libs, i’m talking about libplayer, libnfo and libvalhalla.
What are these libs for ?

Libplayer :

If you have already compiled enna, you should know about libplayer. Libplayer is a wrapper for common mediaplayer binary and libs. The most used in enna is mplayer. But we are also using xine (for DVD player). To avoid code duplication to control this different mediaplayers, libplayer implement a set of common functions to use all of this backend. It’s very usefull.


Libnfo is a really tiny lib, and his goal is to implement XBMC NFO specifications. NFO are XML files that you can put in your directories, which describes a media file. You can add in this XML file a synopsys of a movie, add actors, directors …. This lib is used in a libvalhalla grabber.


You can see this lib as the Enna media database, but it’s more than that. During enna initialization, libvalhalla is launched and begin to parse all the files that it can (those specified in enna.cfg). It parses videos, musics and pictures files and add them in a sqlite database. Tags embedded in medias are parsed and insert and when it’s done it tries to get more inforations from the  internet. Currently ther is a dozen of grabbers availaible for libvalhalla, like amazon, lastfm, lyricswiki, imdb, allocine, the movie db, the TV db and more…
By this way we can displayed synopsys, covers or fanart in Enna’s UI.
Libvalhalla is really powerfull, but it is also really fast.
For example parsing 1000 files (Ogg and MP3) take less than 25seconds ! Of course it’s only the time to parse ID3 tags and add them in database, without grabbers. Time to get infos with grabbers depends on you network access and on web services used, it can be really fast for some services, but can take about 50 seconds sometimes. Anyway libvalhlla grab files in parallel, so you should not noticed that.

About EFL ?

Enna uses Elementary now. To be short, elementary is a widget library on top of Evas and Edje so we don’t have to rewrite code ever and ever, we are using elementary list (genlist), elementary buttons and label ….
There is less code in enna core and we can focus on usability.

The easy method :

On Ubuntu Karmic :
Add this line to /etc/apt/sources.list :
deb http://packages.geexbox.org/ karmic main
and install development packages :
apt-get update
apt-get install libeina-dev libeet-dev libevas-dev libevas-engines libevas-engines-extras libecore-dev libefreet-dev libembryo-dev libedje-dev libedje-bin libedbus-dev libhal-dev libhal-storage-dev libnfo-dev libplayer-dev libvalhalla-dev
Get enna :
hg clone http://hg.geexbox.org/enna
cd enna
sudo make install
and that’s all 🙂

For experts : EFL + GB + enna compilation from sources

If you are on a Ubuntu machine, you can install these libs :

sudo apt-get install xterm make gcc bison flex subversion automake autoconf autotools-dev \
autoconf-archive libtool gettext \
libpam0g-dev libfreetype6-dev libpng12-dev zlib1g-dev libjpeg62-dev \
libtiff4-dev libungif4-dev librsvg2-dev libx11-dev libxcursor-dev \
libxrender-dev libxrandr-dev libxfixes-dev libxdamage-dev \
libxcomposite-dev libxss-dev libxp-dev libxext-dev libxinerama-dev \
libxft-dev libxfont-dev libxi-dev libxv-dev libxkbfile-dev \
libxkbui-dev libxres-dev libxtst-dev libltdl7-dev libglu1-xorg-dev \
libglut3-dev xserver-xephyr libdbus-1-dev cvs subversion mercurial \
liblua5.1-dev libavformat-dev mplayer libxine-dev libxml2-dev \
libcurl4-openssl-dev wget libexif-dev libsqlite3-dev libxine1-all-plugins libxine1-ffmpeg
This should be enough to compile EFL and GeeXboX libs.

Easy_e17 :

EFL compilation will be done with Brian ‘morlenxus’ Miculcy script : easy_e17.sh
We need to change a bit this script to suit our needs.
edit this script with the editor of your choice and change :
line 26 :
change     efl_basic="eina eet evas ecore efreet e_dbus embryo edje esmart"
with       efl_basic="eina eet evas ecore efreet e_dbus embryo edje elementary"
line 29 :
change     bin_basic="exchange e entrance"
with       bin_basic="expedite"
line 44 :
change     autogen_args=""		# evas:--enable-gl-x11
with       autogen_args="evas:--enable-gl-x11"
Save your changes.
This script will download, build and install EFL in /opt/e17 and set all environnement variable you need to execute an EFL binary.
Sources will be download in $HOME/e17_src.
execute the script with :
./easy_e17.sh -i
Compilation begins. Later if you want to update EFL you just have to execute
./easy_e17.sh -u
And only changes will be compiled.

Gb libs

You can open a new terminal, while EFL compilation we will download geexbox libs and enna tip.
create a new directory : mkdir gb_src && cd gb_src
Enne uses for now stable versions of geexbox libs.
hg clone -r v1.0.0 http://hg.geexbox.org/libplayer
hg clone -r v1.0.0 http://hg.geexbox.org/libnfo
hg clone -r v1.0.0 http://hg.geexbox.org/libvalhalla
hg clone http://hg.geexbox.org/enna
When EFL compilation is done and succesfull, you can verify if all is working fine by executing : elementary_test
If something happens, congrats, EFL are correctly installed 🙂
Ok, now GB libs. We will installed all libs in /opt/e17.
cd libplayer
./configure --prefix=/opt/e17
sudo make install
cd .. && cd libnfo
./configure --prefix=/opt/e17
sudo make install
cd .. && cd libvalhalla
./configure --prefix=/opt/e17
sudo make install
cd .. && cd enna
./autogen.sh --prefix=/opt/e17
sudo make install
At this point you should have enna functionnal.
You can run it with : enna


A new configuration file is created at the first execution in $HOME/.enna/enna.cfg
You can change settings in this file to suit your needs :
in [localfiles] section you can change path of you Media files :
For example if you have an music directory in /home/user/Music
Add this line :
path_music=file:///home/user/Music,Music collection,icon/favorite
You can do the same for video and photos.
just change path_music by path_video of path_photo of course you can remove dummy lines. Change the setiing on line 93 also. It will give to libvalhalla the directories to scan. For the same music direcotry than earlier add the line in [media_db] section :
All files present in this directory will be added to media database AND if you add/remove or change files, modifications will be reflect in database on the fly.
I hope you will enjoy Enna !