Skip to content

Binary Packages for Evolution

Providing precompiled SyncEvolution packages for Evolution has been a major pain in the… rear end. SyncEvolution depends on three different Evolution libraries. Since Evolution 2.6.1 (included in Ubuntu 6.06 LTS, which is still in use today), more often than not one of these libraries was changed in a new release. As a result of that I had to package SyncEvolution 10 times for Evolution (three version on x86, two on amd64, both as .deb and as plain .tar.gz) to have binaries for a majority of the users.

SyncEvolution in Distributions

Some might argue that releasing the source would be enough and that users who want binaries should ask their distribution. I would be happy to see more distributions pick up SyncEvolution: Fedora already has it, Debian and Ubuntu don’t. I don’t know about others. There is an intent to package it for Debian, but the usage of AGPL in the Funambol library raised some concerns.

It seems that there will be a need for separate binaries for a while. Besides, when I release an update I want users to actually use it without having to wait for a distro update.

Evolution 2.24 and 2.26

For a while the situation seemed to get better, with three releases in a row with the same interface (2.12, 2.20, 2.22). But 2.24 changes the interface again (for a good reason, but still…) and 2.26 is likely to do it again (reverting an API change in order to use upstream libical).

Avoiding the problem: one binary to sync them all

The prospect of having to support yet another set of libs was enough motivation to rethink my approach. In 0.8.1 I added code which calls all required Evolution functions indirectly via dlopen/dlsym. That way the binary itself doesn’t have to be linked against specific versions of the Evolution libraries. Because the required functions behave the same in all Evolution releases (knock on wood for the future…), the same binary now works with all currently supported Evolution releases.

Not only do I have less work packaging Evolution, users now also no longer have to pick the right package. “aptitude install syncevolution” just works. Yeah!

In order to be compatible with future releases, the binary also checks library versions more recent than the ones that are known to work if it doesn’t find a known-good one. This is slightly risky because those future libraries might not be compatible after all, but I’ll keep an eye on that. If I’m lucky, then it’ll save me work, if not, then I would have to release an update anyway. Now on to releasing 0.8.1 itself…

{ 2 } Comments

  1. jorge | February 12, 2009 at 2:37 pm | Permalink

    Where are the debs?

    Great work! Thanks!

  2. Patrick Ohly | February 12, 2009 at 3:04 pm | Permalink

    Jorge, they are in the repository described in the install instructions:

{ 2 } Trackbacks

  1. [...] and will be in major distributions soon. 0.8.1 supports all Evolution releases from 2.6.3 to 2.24 in the same binary. 2.6.1 in Ubuntu 6.06 LTS might also work now – in contrast to the other Evolution releases this [...]

  2. [...] uncertainties about the interpretation of the license in the context of client programs currently keep SyncEvolution out of Debian. The position of the FSF on this matter is clear now, but I still think they could improve their [...]

Post a Comment

Your email is never published nor shared. Required fields are marked *