TITLE: Enlightenment DR17 LFS VERSION: Tested with CVS, >=4.0 should work AUTHOR: Boris Buegling SYNOPSIS: How to compile and use e17 from CVS HINT: Get the latest version of this hint at http://www.icculus.org/~boris/e17/enlightenment_dr17.txt . Questions, bugfixes or suggestions should go to boris@icculus.org. This hint describes the installation and usage of the CVS version of Enlightenment DR17 as well as some related packages. It will also give you some knowledge about the APIs and structure of the Enlightenment project. Of course, I will provide no warranty for the information included in this document, I even imply that it is useless ;-). 1) Prerequisites Before you start building e17, you should make sure that you have the following packages installed correctly. If some packages are missing on your system, you can find instructions on how to install them in the BLFS book. You will need: cvs, fam, freetype2, gdk-imlib, gtk+1, libjpeg, libpng, libtiff, libungif, libxml2, pcre and zlib. 2) Downloading The next step is downloading all the necessary packages and patches before I get to the instructions. First, get these files with your favourite HTTP/ FTP downloading application: ftp://ftp.gnu.org/pub/gnu/automake/automake-1.4-p5.tar.gz ftp://ftp.gnu.org/pub/gnu/libtool/libtool-1.4.3.tar.gz http://prdownloads.sourceforge.net/freetype/freetype-1.3.1.tar.gz After that you have to fetch the CVS sources with this commands: cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ferite co ferite cvs -d:pserver:anonymous@cvs.enlightenment.sourceforge.net:/cvsroot/enlightenment \ co e17 Finally, you need these patches I made: http://www.icculus.org/~boris/e17/e.patch 3) Installing For installing e17 you have to choices, either you go the "real" way and build all the stuff by hand using the instructions given under 5) or you download and use my bash script which automatically does all the work for you, then see 4). The complete build of the Enlightenment DR17 release requires approximately 50 MB of diskspace, if you choose to install additional software from 6) you may need even more. 4) Using the script Download the build script at http://www.icculus.org/~boris/e17/e17_build.sh and make it executable. Now take a look at the variables defined at the top of the script, I will explain their purpose in the following : INSTALL: Where do you want to install your copy of e17 ? LOG: Where should the build logfiles be stored ? BUILD: Temporary location for the build trees PATCH: Location of the patches CVS: Location of the CVS trees downloaded above PKG: Location of the packages downloaded above If you want to use any optimizations for building e17, you may want to customize the CCOPTS and LDOPTS variables. CCOPTS will be put into CFLAGS and CXXFLAGS and LDOPTS will be LDFLAGS later. If you do not know what these variables do, you should not change their values. 5) Compiling manually Following the real LFS spirit, you almost certainly want to compile all the packages manually. This part of the hint will walk you through the compilation as well as presenting some information about the applications and libraries you will install. ** Environment settings Before you compile any packages, you should use the following commands to set up your environment. export E17=/usr/local/e17 export PATH=$PATH:$E17/bin This will install Enlightenment in $E17, you can change this to whatever directory you like. * PREREQUISITES * ** Automake This rather old version of automake is installed, because several e17 packages still use this for their autotools build files. It will only be installed temporary and can be deleted after building e17. ./configure --prefix=~/autofoo && make && make install ** Libtool This package is also installed by the LFS book and will just be here to work with the temporary installed automake above. ./configure --prefix=~/autofoo && make && make install ** Freetype1 This package provides an API for using TrueType fonts in X11 applications. It is the old 1.x version which is no longer covered in the BLFS, but it is still used by Imlib2. ./configure --prefix=$E17 && make && make install * ENLIGHTENMENT DR17 * All enlightenment packages basically use the following installation method. For a shorter and easier to use hint, I will only provide you with information how the various packages differ from this method instead of repeating myself all over the place. ./autogen.sh --prefix=$E17 && make && make install All libraries have their source code under libs/ in the CVS tree, all apps under apps/. The ferite sources lie in a separate directory. ** edb This library is just a 'local' copy of the Berkeley DB 2.7.7, because the Enlightenment project was well aware of its changing API. It still requires the old automake 1.4 and because of that needs a change in the PATH environment variable before installing it. This procedure will be referenced in the other packages instructions to avoid repetition. OLD_PATH=$PATH export PATH=~/autofoo/bin:$PATH After the installation of this package, reset this variable by using export PATH=$OLD_PATH ** imlib2 This is a library that does image loading and saving as well as rendering. It depends on automake 1.4 too and therefore needs the instructions used to change your PATH from edb above. ** eet This is a tiny zip-like compression and data-storage library. It is installed with the default instructions. ** imlib2_loaders This package contains some additional loader plugins for Imlib2. It needs edb's automake 1.4 instructions. If you plan to optimize your e17 build, you should unset all *FLAGS while compiling this package. ** evas This library provides a clean display canvas API. It needs additional configuration flags for autogen.sh. I am using the following flags, you might want to look into evas' README for further information. Replace the usual autogen.sh line with this: ./autogen.sh --enable-software-x11 --enable-image-loader-png \ --enable-image-loader-jpeg --enable-image-loader-eet \ --enable-image-loader-edb --enable-cpu-p2-only --enable-cpu-mmx \ --enable-cpu-sse --enable-cpu-c --enable-scale-smooth \ --enable-scale-sample --enable-convert-8-rgb-332 \ --enable-convert-8-rgb-666 --enable-convert-8-rgb-232 \ --enable-convert-8-rgb-222 --enable-convert-8-rgb-221 \ --enable-convert-8-rgb-121 --enable-convert-8-rgb-111 \ --enable-convert-16-rgb-565 --enable-convert-16-rgb-555 \ --enable-convert-16-rgb-rot-0 --enable-convert-32-rgb-8888 \ --enable-convert-32-rgbx-8888 --enable-convert-32-bgr-8888 \ --enable-convert-32-bgrx-8888 --enable-convert-32-rgb-rot-0 \ --prefix=$E17 && ** ebits This the the "Enlightened Image Bits Canvas" library. It is the most undocumented piece of Enlightenment code, so I cannot provide further information. It needs the automake 1.4 instructions. ** ecore Ecore is a convenience library which wraps basic X11 operations. It can be used by other window managers or other low-level X11 applications to speed up development. It uses the default instructions. ** efsd This is a file system daemon which uses libfam. It lies under apps/ in the CVS tree and needs the default instructions. ** ferite Ferite is a new programming language with is used by the Enlightenment project as their scripting language. It needs a change to the default instructions after the autogen.sh command and is an optional but heavily recommended package. cd modules/sys && ./consts.sh > consts.h && cd ../.. && Just use the normal instructions after this. It fixes a flaw in the ferite build system which does not create the required consts.h file. ** ebg The "Enlightenment Background library" handles the wallpapers in the E17 desktop world. It is installed using the default instructions. ** e This is the Enlightenment desktop shell itself. It lives under apps/ and uses the default instructions, but needs a little patch which you downloaded above. Apply it using this: patch -Np1 -i e.patch This fixes a problem with the autodetection of imlib2 edb loader plugin which always fails. In addition to this, recent CVS versions also introduced a little bug, which may be fixed very quickly. If you get an error message using the following commands, please try to build Enlightenment without them. cd data/borders && ln -s ../fonts . && cd ../.. These commands make a symbolic link to the fonts/ directory in the borders/ directory to fix a little bug which results in not having any fonts in Enlightenment. ** ebindings Provides keybindings for the Enlightenment environment. This application needs the default instructions. You just need to execute this command before building as usual: touch NEWS ChangeLog This creates this two empty files, because automake stops when they are not present. ** ebony Enlightenment's background file editor application, which is installed with the default instructions. ** entice This is another undocumented application. I think it is some kind of of image viewer, but you do not need this at all, it is just here for completeness sake. Using the default instructions... ** esmall This is an internal scripting language for Enlightenment. I am currently not sure if this is used/needed by anything anymore, so it is also just here for complete sake. Install it with the default instructions. ** imlib2_tools This is a imlib2 clone of the ImageMagick commandline tools. Needs the default instructions. ** med This is an experimental menu editor, which can be installed with the default instructions. ** etcher This is an experimental theme editor, which can be installed with the default instructions. ** entrance This is Enlightenment's XDM implementation. I do not cover the installation of it in this hint, because it requires PAM. ** eprog This is a convience library for evas2, which is currently not there in CVS. This default-instructions-using package is also just here for completeness sake and not required by anything at the moment. ** ewd This is an utility library used by ewl. It is similar to glib since it provides general data structures for a X11 toolkit. You can install it with the default instructions. ** estyle This is an "evas based text stylization library" which can be installed with the default instructions. It is currently not needed by anything. ** etox This is an "evas based text layout library", the counterpart to estyle which is also just here for completeness sake and uses - right, the default instructions. ** ewl This is the Enlightenment Widget library, a X11 toolkit with an API similar to gtk+. It is currently not used by any applications, but you can compile the test program and play with it for yourself. It also uses the default instructions. 6) Additional software Enlightenment DR17 is aimed to become a real desktop shell, such as KDE or Gnome. Therefore, the CVS trees include several applications for using e17 as your desktop environment. In the following, I want to present some other projects which rely on the enlightenment libraries and will improve your experience with DR17. For those of you, who just want to do a full test build of all e17 packages, I created another build script which is available here: http://www.icculus.org/~boris/e17/addsw_build.sh . I will describe the whole process for all the "real" LFS'ers in the following. ** libast Download this package: libast-0.5.tar.gz Use this commands to install libast : ./configure --prefix=/usr && make && make install This is a library for "assorted spiffy things", it is a convenience library for Eterm. ** Eterm Download this package: Eterm-0.9.2.tar.gz Use this commands to install Eterm : ./configure --prefix=/usr --enable-trans --with-imlib --enable-mmx \ --enable-utmp && make && make install This is a vt100 terminal emulator for the Enlightenment desktop which has some fancy eye-candy. ** Feh Download this package: feh-1.1.1.tar.gz Use this commands to install feh : ./configure --prefix=/usr && make && make install This is a *really* fast image viewer using imlib2. You almost certainly want to use this for image browsing. ** Evidence I have made a little patch for this, but it has some other glitches and at the moment, this package is not really usable, so I do not include it in this hint. If you want to try this file manager out for yourself, you can get my patch to get you started here: http://www.icculus.org/~boris/e17/evidence.patch 7) Conclusion The Enlightenment desktop is still under heavy development. The development team is really concerned about the quality of the design and the code itself, therefore their development pace seems to be very slow (the project started in 2000), but you have to consider that core parts like evas were rewritten several times and you can look at imlib2 for an example of really fast image loading code. This hint uses a CVS version of e17, so please do not post user questions to either me or the Enlightenment team. I will happily answer any questions concerning the build process though and I try to provide usage information were possible in this hint. ChangeLog: 2003-03-12 Added 'Additional software' section 2003-03-11 Fonts fix in the e instructions 2003-03-09 Initial version of the hint