The Myth of the Muttering Madman is a project in self-realization.

Sunday, May 06, 2007

Enlightenment Foundation Libraries and Rage 0.2.0

Enlightenment logoFor those of you who don't know, Enlightenment is a window manager for linux.

Ever since I watched Raster's presentation at linux.conf.au 2007 earlier this year I've been thinking about the enlightenment libraries, and particularly how they'd be suited to building a media center type application for linux. During his presentation, Raster had a lot of good things to say about performance and efficiency. For a programmer, that is pretty inspiring stuff to hear :)

So today I jumped into #e on chat.freenode.net and asked around about just this question. Raster was in there and quickly let me know about Rage, something he whipped together pretty quickly and had posted about a few months ago on his website (video here). I decided that this would be a perfect opportunity to get my hands dirty and learn a bit about the libraries.

To this end I've documented the process I went through to get the relevant libraries (and Rage of course) installed on my linux box. FYI - I have just upgraded to Feisty (last couple of weeks) and had no enlightenment libraries previously installed (in fact I haven't mucked around with enlightenment for probably close on 8 years). You'll see in the documented steps below that there were quite a few dependencies not met. I've deliberately left all these steps in there. If someone else has similar dependency problems, then By the Power of Google, this info might help :)

So without further ado, here are the steps I went through to get Rage built and working on Feisty. Forgive the verbosity, and enjoy! :)


0) Get rage from the enlightenment cvs with:

cvs -d :pserver:anonymous@anoncvs.enlightenment.org:/var/cvs/e login
cvs -z3 -d :pserver:anonymous@anoncvs.enlightenment.org:/var/cvs/e co misc

Find the rage source at misc/rage

1) Try running ./autogen.sh for rage

Running aclocal...
./autogen.sh: 8: aclocal: not found

2) 'automake' seems not to be installed so install it via Adept

3) Try to run ./autogen.sh again

Running aclocal...
configure.in:13: warning: macro `AM_ENABLE_SHARED' not found in library
configure.in:14: warning: macro `AM_PROG_LIBTOOL' not found in library

4) Looks like 'libtools' is not installed either, so install that via Adept too

5) Try running ./autogen.sh again

checking for EET... configure: error: Package requirements (eet) were not met:

No package 'eet' found

6) EET is an enlightenment foundation library (there's going to be a few of these dependencies), so get it from the enlightenment cvs with:

cvs -z3 -d :pserver:anonymous@anoncvs.enlightenment.org:/var/cvs/e co e17/libs/eet

7) run ./autogen.sh from the eet directory

configure: error: "Cannot find zlib.h. Make sure your CFLAGS environment variable contains include
lines for the location of this file"

8) install 'zlib1g-dev' using Adept

9) run ./autogen.sh again

configure: error: "Cannot find jpeglib.h. Make sure your CFLAGS environment variable contains include
lines for the location of this file"

10) install 'libjpeg62-dev using Adept

11) run 'make'

12) run 'sudo make install'

13) try running ./autogen.sh for rage again

checking for EVAS... configure: error: Package requirements (evas) were not met:

14) get evas from cvs with:

cvs -z3 -d :pserver:anonymous@anoncvs.enlightenment.org:/var/cvs/e co e17/libs/eet

15) run autogen.sh

checking for FREETYPE... configure: error: Package requirements (freetype2 >= 9.3.0) were not met:

16) install 'libfreetype6-dev' using Adept

17) run ./autogen.sh again

18) run 'make'

19) run 'sudo make install'

20) try running ./autogen.sh for rage again

checking for EDJE... configure: error: Package requirements (edje) were not met:

No package 'edje' found

21) get edje from cvs with:

cvs -z3 -d :pserver:anonymous@anoncvs.enlightenment.org:/var/cvs/e co e17/libs/edje

22) run ./autogen.sh for edje

No package 'ecore-evas' found
No package 'ecore-job' found
No package 'embryo' found

23) get both the ecore and embryo libraries from cvs with:

cvs -z3 -d :pserver:anonymous@anoncvs.enlightenment.org:/var/cvs/e co e17/libs/ecore
cvs -z3 -d :pserver:anonymous@anoncvs.enlightenment.org:/var/cvs/e co e17/libs/embryo

24) run ./autogen.sh for ecore

25) run 'make' for ecore

26) run 'sudo make install' for ecore

27) run ./autogen.sh for embryo

28) run 'make' for embryo

29) run 'sudo make install' for embryo

30) try running ./autogen.sh for edje again

31) run 'make' for edje

32) run 'sudo make install' for edje

33) try running ./autogen.sh for rage again

checking for EMOTION... configure: error: Package requirements (emotion) were not met:

34) get emotion from cvs with:

cvs -z3 -d :pserver:anonymous@anoncvs.enlightenment.org:/var/cvs/e co e17/libs/emotion

35) run ./autogen.sh for emotion

checking for XINE... configure: error: Package requirements (libxine >= 1.1.1) were not met:

36) install 'libxine-dev' using Adept

37) run ./autogen.sh for emotion again

38) run 'make' for emotion

edje_cc: Error. unable to load image for image "tiles.png" part entry to ../data/theme.edj. Missing PNG or JPEG loader modules for
Evas or file does not exist, or is not readable.
make[2]: *** [theme.edj] Error 255
make[2]: Leaving directory `/home/adrian/development/e/e17/libs/emotion/data'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/adrian/development/e/e17/libs/emotion'
make: *** [all] Error 2

39) install 'libpng12-dev' using Adept

40) rebuild evas (./autogen.sh, make, sudo make install)

N.B. this builds png image loader support into evas which is what make was trying to use above

41) run ./autogen.sh, make and 'sudo make install' for emotion

42) try running ./autogen.sh for rage again

43) run make for rage

In file included from main.h:1,
from main.c:1:
e.h:38:21: error: Ecore_X.h: No such file or directory
make[3]: *** [main.o] Error 1

45) Looks like Ecore_X.h wasn't installed. I discovered that this was an optional component that wasn't installed when I was building ecore, so after looking through ./configure in the ecore directory I discovered that I could probably fix it with:

run './autogen.sh --enable-ecore-x-xcb' for ecore

failed - dependency not met

46) To fix this problem I had to install 'libxcb-xlib0-dev'. So do that using Adept

47) try './autogen.sh --enable-ecore-x-xcb' for ecore again

dependency checking seemed to pass this time

48) run 'make' for ecore

lots of errors! (these were related to X development libraries)

49) install xorg-dev using Adept

50) run './autogen.sh --enable-ecore-x-xcb' and then 'make' for ecore

In file included from ecore_evas.c:4:
ecore_evas_private.h:37:40: error: Evas_Engine_Software_X11.h: No such file or directory
make[4]: *** [ecore_evas.lo] Error 1

51) Ok, so maybe when I installed evas the X11 software engine option wasn't installed, so rebuild and reinstall evas by running './autogen.sh' and 'make' and 'sudo make install' again

52) try running './autogen.sh --enable-ecore-x-xcb' and 'make' for ecore again

53) run 'sudo make install' for ecore

54) run './autogen.sh' for rage again

55) run 'make' for rage again

56) run 'sudo make install' for rage


The README for rage tells you how to get rage to scan your disk for media (that's currently the default way of importing or seeing your videos etc). It's fairly straightfoward.

After that just run ./rage and you'll have a working media centre based on the Enlightenment libraries :D

P.S. I was pretty impressed that it could play my phone videos, xvid anime, certain tv shows etc. Rage didn't hiccup once on any of the media I threw at it. Awesome! :D

No comments:

about me