E17 with ecomorph and ecomp on FreeBSD

I have been trying to get all of this to work together and play nicely for quite a while now. I am pleased to be able to say:

IT WORKS! (Imagine that I am running into a room full of people shouting this.)

I have no idea how to create a port for this, as there is a bit of hand editing involved, so here is a short tutorial on how to make your e17 compositing dreams a reality.

Firstly, some prerequisites. You will need to install shells/bash, devel/git, and devel/subversion.

Step one:

The x11-wm/enlightenment from ports will not work for this. You will need to install e17 from svn. There is already a more than adequate tutorial on this at http://www.bendug.org/howto:build_e17_from_source_on_freebsd_8, so I will not repeat it here, however, there are some adjustments which need to be made. The first adjustment is the revision number. There are a few issues with the most current revision (at least there were when I downloaded it today. It might be fixed in a week.) The revision that we need to work with is 67785, your mileage may vary on this, but it is working for me at the moment. So checkout this revision by using the revision short option for all of the items that you download.

[cmd=]svn co -r 67785[/cmd]

After checking out the 67785 revision for ALL of the libraries, e, and any extra modules that you want. Start compilation in the order specified in the linked tutorial. Before you compile e the window manager proper, you need to set an extra environment variable. For some reason libgcrypt does not get automatically linked. I am not really sure why this is, but setting the LIBS environment variable will fix it. I use bash so,
[cmd=]export LIBS=-lgcrypt[/cmd]

Once you have compiled e and any extras that you want, it is time to acquire ecomp and ecomorph.
Code:
$ git clone git://github.com/jeffdameth/ecomp.git
$ git clone git://github.com/jeffdameth/ecomorph.git
Compile ecomorph first using gmake and gmake install. You have to use gnuMAKE for this, another design decision that I was not thrilled with, but I guess I can complain when I start writing code for the project...

Anyhow, navigate to the directory you cloned ecomp into, (for most people this will be ecomp/, unless you named it something different.) There are some changes that need to be made here. Run autogen.sh with the following flags:
[cmd=]$./autgen.sh --disable-inotify[/cmd]

Note that if you installed e into a non-standard prefix, you will need to define that also as outlined in the linked tutorial on installing e. After speaking with some of the people on the itask wiki, I was told that inotify was not necessary for ecomp to work, it is used to update the config without restarting the module, so this functionality is lost. DO NOT start compiling after the autogen.sh command completes. There are two files that need to be edited first.

The first is the Makefile located in the current directory under src/Makefile. The last three characters of line number 259 are -ldl. Remove this. This links against libdl which is an extra library whose functionality is already present in libc on FreeBSD. The second file that needs to be edited is located in the current directory under bcop/src/bcop.in. You will need to edit the first line to point to bash. On my system the line now looks like this:
Code:
#!/usr/local/bin/bash
If you do not change this, ecomp will not compile. After editing these files, you can complete compilation again using gmake.

After successful completion of these steps you should have a working installation of enlightenment with the ecomp/ecomorph compositing module installed. Before you start the window manager, be sure that you have enabled AIGLX in your xorg.conf file, mine looks like this:
Code:
Section "ServerLayout"
    Identifier     "X.org Configured"
    Screen      0  "Screen0" 0 0
    InputDevice    "Mouse0" "CorePointer"
    InputDevice    "Keyboard0" "CoreKeyboard"
    Option  "AIGLX" "True"
EndSection
Once you have done that and restarted X, start enlightenment. According to the discussion that I had on the itask wiki ecomorph needs to be started with the ecomorph ini command. This runs the binary directly, and should be done this way because we compiled ecomorph without inotify enabled. Before you do this you need to set the LIBGL_ALWAYS_INDIRECT environment variable to true.
[cmd=]$ export LIBGL_ALWAYS_INDIRECT=true[/cmd]

I suggest adding this to your profile, as it just makes life a little more convenient. You should see ecomorph listed in Module Settings under System, enable this module. If everything worked out, you can now run
[cmd=]$ ecomorph ini[/cmd]
in a terminal, and compositing should be working. The last step is configuring ecomorph to do what you want through the ecomorph configuration screen. This can be accessed by left clicking on the desktop and highlighting "settings" from the menu.

I think that about sums it up. I hope that this was helpful to you. I have had a few conversations about this on other threads, and decided that since I had worked it out, perhaps a tutorial was called for. This is the first one that I have written, so I apologize if it is a little disconnected, (I also wanted to get this documented before I forgot any steps.)

Attached is a screenshot.

And finally, it would appear that automounting works with e. I have not configured my HAL policies, but I am getting error messages when attaching devices letting me know that I don't have permission to mount the device, so it looks promising. Also, I am not an e developer. I will help where I can but my knowledge here is not all inclusive, so there will be a limit to the amount of assistance that I can give here.
 

Attachments

  • shot.jpg
    shot.jpg
    74.1 KB · Views: 811
If anyone decides to try this out, let me know, and please try to give me specific information i.e, system arch, branch (RELEASE, STABLE, CURRENT), version, and any other information that might be useful. If I can get this completely figured out I will try to write a port for it.
 
I am not. I have had to roll back to revision 65643. For some reason every revision above this restarts randomly. I am not sure why this is. I have a feeling that it has something to do with evas, but as of yet, I have been unable to confirm this. If you want to use revision 65643, the directions are exactly the same, however, you will need to add --disable-mixer to the configure options for e17, the LIBS environment variable changes to export LIBS="-lgcrypt -lehal -leukit", you will also need an older version of the ecomorph module, located here. I am currently working on porting this module to FreeBSD. E17 is in the process of being upgraded to revision 65643 in the ports tree, the PR can be viewed here. Hopefully, this will be committed soon, and hopefully I will have the ports for ecomp and ecomorph finished sometime this month.
*UPDATE*
For those of you that want to run the latest version of E17 from svn, I have tested, and can confirm that the random restart error has been fixed in revision 71136. For those of you that have seen this, you will know what I mean, for those that have not, just know that E17 is working on FreeBSD at revision 71136. You will however need to change your config.site. I cannot speak for any versions of FreeBSD other than 9.0-RELEASE amd64, and 9.0-STABLE amd64. The config.site should read:
Code:
CFLAGS="-L/usr/local/lib -I/usr/local/include -I/usr/local/share/libtool/libltdl"
LDFLAGS="-L/usr/local/lib -I/usr/local/include -lintl -liconv"
CPPFLAGS="-I/usr/local/include -I/usr/local/share/libtool/libltdl"
ACLOCAL_FLAGS="-I /usr/local/share/aclocal"
LD_LIBRARY_PATH="/usr/local/lib:/usr/local/e17/lib:$LD_LIBRARY_PATH"
If LDFLAGS is not adjusted in this manner, ecore will fail to build with opengl support. This is bad as it means no compositing. I am working on a set of patches to fix this behavior, and obviate the need for a config.site. Also, ecomp and ecomorph can be built from git using the latest version of the EFL from svn. The aforementioned edits for ecomp/ecomorph must still be applied.
 
All right the ports are finished. For patches see here. I need to test these ports on FreeBSD 9.0-RELEASE amd64 and FreeBSD 9.0-RELEASE i386. If I have time I will test it on 8.3-RELEASE for amd64.
 
Testing on FreeBSD 9.0-STABLE amd64, FreeBSD 9.0-RELEASE amd64, FreeBSD 9.0-RELEASE i386, FreeBSD 8.3-RELEASE amd64 is completed. It works for me on these architectures and platforms.
 
Current Stable version of E17 is now in the ports tree, thanks to the hard work of Grzegorz Blach. Ecomp/Ecomorph should get committed soon hopefully. Please reply to this thread if you wind up testing them, the Ecomp/Ecomorph ports that is.
 
Back
Top