mad scientist
Please remain calm--I may be mad, but I am a professional.

Build Evolution from Source Made Simple

Date:7 February 2010

What is Evolution?

Evolution is a "personal information manager": a combination email client, addressbook handler, and calendar manager. It is part of the Gnome desktop.

Evolution is a fairly good package, but the feature that catapults it into "killer app" status is the Evolution Exchange plugin, which allows Evolution to act as a client for Microsoft Exchange servers; this includes participating in shared calendaring with free/busy support, meeting request and accept features, etc. Evolution can also access Microsoft's Global Address List to search contacts, etc. as well as manage task lists.

In short, if your environment has standardized on Microsoft Exchange as its group productivity server and you want to run GNU/Linux, you absolutely need Evolution on your system.

My Distro Already Has Evolution

Now that you're convinced you can't live without Evolution, what's this page for?

Unfortunately, while Evolution has been around a long time, it has had a rocky life. The fact that it's more buggy than you'd expect a stable package to be, combined with the fact that it is, after all, handling your email (something most of us take very seriously), means that there has been a lot frustration around Evolution; much of it is historical and no longer relevant but some is still true.

As a result, many people want to build and run the up-to-the-minute version of the tool, and don't want to wait for the normal Gnome 6 month release cycle to get their bugs fixed and/or take advantage of the improvements--much less the weeks after that it takes for the new version to show up packaged for the distro of their choice.

This page is for those people: it provides a simple way for you to build your own install of Evolution and its plugins, etc., based on the very latest code committed to the Gnome Git tree at any time.

What's Here

I got tired of typing commands to update my Evolution workspaces with the latest versions of code, then entering the configure, build, and install commands. Although it's so much easier than in the old days, it's still tedious. Since I happen to know a little something about make, I decided to create a makefile to handle it all for me.

This site provides a GNU make makefile that will verify that your system has the proper prerequisites to build Evolution from source, check out the latest version of Evolution from SVN, perform a localized build and install of Evolution, install a shell script to invoke the localized build of Evolution with the proper environment set (including enabling all debugging options so you can help the developers make Evolution even better), and instructions on how to use it.


Well, you knew it was too good to be true, eh?

The reality for building Gnome applications, including Evolution, is that they are very dependent on a large suite of reusable libraries. This is a good thing, as any Computer Science nerd will tell you, but it does mean that setting out to build a Gnome application can involve first building a large number of other packages. The makefile provided here knows how to build a range of these libraries, but not all. Also, at times newer and older versions are not compatible and this can mean you have to build even more things. After a while I got tired of adding new libraries etc. to the makefile.

Currently the makefile is known to work on Ubuntu 9.10. Earlier versions of Ubuntu are known to have issues (in particular, because newer versions of Evolution require newer versions of libxml2, and that causes a huge number of other items to need to be rebuilt. The makefile will notify you of packages you need to have installed, that you might not have.

If you don't have Ubuntu 9.10, you can set the DISTRO variable to empty (so it doesn't do any prerequisite checks) and cross your fingers! If you would like to help get this working on other distributions, such as RPM-based systems, I'm interested but you'll have to do the bulk of the work since I don't have such a system.

How To Use It

Simply download the Makefile and run "make". You can run "make help" for more details.

There are some customizations you can make, by setting make variables. These are documented at the top of the makefile. If you don't want to change the makefile itself, you can create a file in the same directory as you run make from, with those variable settings.

If you don't have a supported distribution but want to try to build anyway, you can set the "DISTRO" make variable to empty (by default, currently it's "karmic").

By default, the makefile checks out and builds the latest version on the Git trunk for all packages. If you want to build the latest on a specific branch, set the "branch" make variable to the version number; e.g. "branch := 2.28".

Enough! I'll get to the point already:

  1. Create a directory to hold the workspaces. You will need at least 1.5G of disk space:
    mkdir $HOME/evo-src
    cd $HOME/evo-src
  2. Download the Makefile into that directory:
    rm -f Makefile
  3. If you have customizations, as described above, make them now.

  4. Now, just run make!

Some steps of the build require sudo privileges (note: not the install!). You will be asked to type your password. It will take a while but when it's done you should have a complete Evolution install representing the state of the art on the HEAD of the Gnome Git archives.

When it's done, you can start Evolution using the /opt/evo/bin/evolution-src script (which will also be installed for you). This script enables debugging and core dumps and creates a unique directory for each invocation of Evolution. You can find these in $HOME/evo/log. If you should get a crash or unexplainable behavior you can use the information in this directory to help you report the bug to the Evolution developers.

Note that if you don't have an existing Evolution account, you may need to enable plugins when you start Evolution. Go to the Edit -> Plugins menu and ensure that plugins you want such as Exchange Operations and Bogofilter junk plugin (if you use Bogofilter--and why wouldn't you?!?!) are enabled.

You can re-run make any time you want. You should also check back from time to time for newer versions of the Makefile. Some other targets you might find useful:

make check-changelog
Report any changes made in the upstream Git repository since the last time you ran make update
make update
Update your local workspace to the latest upstream version of the Git repository.
make clean
Clean the object directories for each package you built.
make shinyclean
Run make clean, and delete the installed version of Evolution completely. This is sometimes needed if the code changes drastically during development.
make superclean
Run make shinyclean, and delete all the source repositories as well. The next make will start completely from scratch with fresh pulls from Git etc.


Not all operations can be easily/nicely encapsulated in the makefile, unfortunately. Here are a few notes you might find interesting.

  1. If you've never run Evolution 2.29 or above, you will need to install a number of gconf schema files for each new user account. To do this, run:
    for schema in $PREFIX/etc/gconf/schemas/*.schema; do \
       gconftool-2 --install-schema-file $schema; \

Have fun!