E LogoThese details come following a request by Sujith Emmanuel following a post I made about getting E17 working on Solaris 10 Sunray servers.

None of these details are Sunray specific. Thankfully e17 is relocatable and is intelligent enough to workout if it's been moved. I detail installing the files in my home directory as this is the only directory that is common on ALL the Sunray servers, and is the only one I have write permissions to.

I've used these same details to install E17 on Nevada (snv 70) into /opt/e17 on an Ultra 20 (x86), so these instructions will work for both SPARC and x86 hosts.

These instructions only detail building the basic window manager. Once you've got this built, you can then go ahead and try building the rest of the components. You will need to check the README files and work out the dependencies. I'll update this post when I get a chance to do this.

Download

I'm building from the snapshots provided at https://download.enlightenment.org/snapshots/. At the time of writing, the LATEST snapshot was 2007-08-26, which is what I have used. Your filenames will vary depending on the snapshot used, but the actual component names will remain the same.

Download the following files:

  • imlib2-1.4.0.003.tar.gz
  • eet-0.9.10.041.tar.gz
  • evas-0.9.9.041.tar.gz
  • ecore-0.9.9.041.tar.gz
  • embryo-0.9.1.041.tar.gz
  • edje-0.5.0.041.tar.gz
  • efreet-0.0.3.006.tar.gz
  • enlightenment-0.16.999.041.tar.gz

Build Order

In order to successfully build and install E17, you need to pay attention to the requirements of each component. At the time of writing, the following order is required:

  • imlib
  • eet
  • evas
  • ecore
  • embryo
  • edje
  • efreet
  • elightenment

Build Environment

To ensure consistency, and ease the build process, whilst at the same time removing the need to use LD_LIBRARY_PATH when running E17, you need to configure your environment. If you've compiled software correctly on Solaris, there really should be no need to set LD_LIBRARY_PATH for anything, unless you're developing a new version of a library. See Building Software on the Solaris OS for more details.

I set the following environment variables.

EPATH=$HOME/apps/sparc/e17-041
PATH=/usr/sfw/bin:/usr/bin:/sbin:/usr/sbin:/usr/ccs/bin:/usr/dt/bin:\
         /usr/openwin/bin:/usr/sfw/bin:$EPATH/bin
LDFLAGS="-L/usr/sfw/lib,-R/usr/sfw/lib,-L$EPATH/lib,-R$EPATH/lib"
PKG_CONFIG_PATH=$EPATH/lib/pkgconfig
CCDIR=/usr/sfw/bin
CC=${CCDIR}/gcc
CXX=${CCDIR}/g++

Setting $EPATH isn't necessary, it just makes it easier to set other various options. You can use any location you like.

You'll note I'm using the GCC supplied with Solaris 10. I've attempted to get things compiling with SunStudio 11 and 12, but didn't have much luck. I've not had the time to sit down with each component and work out why.

Building and Installing

Extract all tarballs to a single directory for easy building. I extracted all the tarballs to ${HOME}/apps/src/e17/.

Now build each component as follows:

$ cd [component directory]
$ ./configure --prefix=${EPATH}
$ make
$ make install

e.g.

$ cd eet-0.9.10.041
$ ./configure --prefix=${EPATH}
$ make
$ make install

Bugs

At the time of writing there appears to only be 1 bug that stops the build and installation process - Bug 186 - which stops Enlightenment from building with the following error:

Undefined symbol        first referenced in file
MAX                     e_actions.o

In order to resolve this bug, and allow Enlightenment to compile, you need to modify enlightenment-0.16.999.041/src/bin/e_actions.c and add the following lines above the first "define" line:

#ifndef MAX
#define MAX(x, y) (((x) > (y)) ? (x) : (y))
#endif

Save the file and then run ./configure, make and make install. Enlightenment should compile without any more problems.

Starting E17

There are several ways you can start E17 depending on where you've installed it, and the overall control you have over the installed machine.

If you don't have root access, you can start E17 in one of two ways:

Standalone

Add "exec [EPATH]/bin/enlightenment_start" to the end of your ${HOME}/.dtprofile file. Then login. No matter which desktop option you choose, you'll get enlightenment.

Within Gnome

Login to JDS/Gnome and then go to (depending on which OS you're using)...

Solaris 10: Launch -> Preferences -> Desktop Preferences -> Sessions
Nevada: Launch -> Preferences -> Sessions

Go to the "Current Session" tab and select the "metacity" line. Change the style to "Normal" and click apply. Do the same for "nautilus". Don't close the window yet.

Now go to "Startup Programs" tab and add a new startup program pointing to the [EPATH]/bin/enlightenment_start binary in the directory you installed E17 into then save the current session...

Solaris 10: check the "Automatically save changes to session" box
Nevada: click the "Save the current session" button on the Session Options tab.

E17 will start on your next login.

You can now logout and login again, or start E17 in the current session by opening up a terminal and running...

pkill metacity; pkill nautilus; [$EPATH]/bin/enlightenment_start &

This will kill nautilus and metacity, and start E17.

This method has a bit of a disadvantage in that the E17 lock screen and logout buttons don't work correctly. You need to use the gnome buttons or modify the E17 buttons to call the gnome commands.

To reverse these steps, remove the "Startup Programs" entry you added to the Gnome Sessions and then run the following in a terminal...

pkill enlightenment; sleep 2; nautilus &; metacity &

... and then save your session in the Gnome sessions dialog window.

If you have root access, you can add an entry to dtlogin by following these instructions, making the necessary path changes where appropriate. Other sources are available which detail the same procedure.

Once you're all up and running, you can start to configure your desktop to your heart's content.

Please note, E17 is not even considered "Alpha" software yet. Things can and will change, and there will be bugs. If things are not working for you, try a different snapshot.