Skip to content

SyncEvolution 0.8 Released

Prereleases have been around for a while and were even recommended for new installations. There haven’t been any bug reports for the latest beta packages, so it was time to put the gears into action, get the compilers running and spin some nice packages for the final 0.8 release…

Available Packages

The usual number of packages are available again:

  • for Evolution 2.6 (x86 and AMD64), 2.8 (only x86), 2.12 (x86 and AMD64, also works for any Evolution >= 2.10), all of these as .tar.gz and .deb
  • for Mac OS X (a fat binary for PPC and x86)
  • for Maemo (ITOS 2008, should work on Chinook and Diablo)
  • source code

For installation instructions see the www.estamos.de installation page.

iPhone

I have not prepared packages for the iPhone. This platform is now covered by Funambol’s own client.

Changes

There have been no changes since beta 3. For those who switch from 0.7 to 0.8, here’s the full list of changes since that version:

Updating user configuration: this version introduces a new, simplified configuration layout. Old configurations still work. They can be converted to the new format via a new “--migrate” command line option.

0.8 also uses a different change tracking for Mac OS X address book, Evolution calendars, task lists and memos. After switching from a previous release to the current one or vice versa, do a “syncevolution --sync refresh-from-server” once to reset the change tracking. Not doing so can result in applying the same changes to the server multiple times and thus duplicates.

  • New configuration file layout: following the freedesktop.org recommendation, new configurations are stored in $XDG_CONFIG_HOME/syncevolution or $HOME/.config/syncevolution if XDG_CONFIG_HOME is not set. The old layout under $HOME/.sync4j/evolution is still supported.
  • New command line options: new configurations can be created by syncevolution itself (--configure), including setting of all configuration properties (--sync-property, --source-property). The configuration can dumped to stdout (--print-config), with or without comments explaining each property (--quiet). See the README for details (relevant section online).
  • The “evolutionsource” source property no longer has to be configured. If left blank, the default client database will be synchronized.
  • Selecting which kind of data is to be synchronized under a specific source name is a lot easier now and the same on all supported platforms: the SyncEvolution backends can be selected via aliases (e.g. “contacts”) and the format is specified via an optional MIME type (e.g. “contacts:text/x-vcard”). In the unlikely situation that multiple backends are active which can synchronize the same kind of data, then the right one can be selected by the unique name of the backend (e.g. “Evolution Address Book”).
  • New configurations automatically get a random client ID string. Setting it manually is still possible, but no longer necessary. Disabling unavailable data sources is also done automatically.

    SyncEvolution checks that the backend is available and there is at least one database (the first one will be synchronized unless explicitly changed). If these checks fail and the sync source was explicitly requested by the user by listing it after the server name, then an error is printed and no configuration is written. If the user wants the default setup, then the source is silently disabled.

  • All passwords can be read from stdin at runtime or an environment variable (see “--sync-property password=?” or README for details). Both avoids the less secure storing of plain text passwords in the configuration files (SF #1832458).
  • Detached recurrences: meeting series where some occurrences were modified are now supported. Previously only the main event was synchronized. All exceptions got lost when copying back from the server. Requires a SyncML server which supports this. ScheduleWorld was extended to do that.
  • Fixed segfaults caused by logging certain data. The reason was an API change in the client library’s logging calls which the older SyncEvolution code hadn’t been adapted to. Did not normally occur, but might have been the reason for SF #1830149 (unconfirmed).
  • Time zone support: the time zones of incoming events are mapped to native time zone definitions whenever possible. Currently this works if the TZID follows the Olson naming scheme with a location at the end. Matching the time zone has the advantage of being able to update the time zone definition without having to recreate the event. If matching fails and the VTIMEZONE definition differs from one already imported earlier, then SyncEvolution works arounds limitation in Evolution by renaming the time zone. Previously the new event used the old and most likely out-dated time zone definition.

    Evolution itself does not do either of these steps itself yet, thus importing meeting invitations via Evolution still fails in some cases. The code implementing the time zone handling described above was written with inclusion into Evolution itself in mind; it got included in Evolution 2.22.3.

  • On Maemo/Nokia Internet Tablets, calendar synchronization now works because the new calendar change tracking no longer depends on some of the backend calls which used to fail (SF #1734977).
  • Added SSL configuration options: certificate checking can be relaxed or disabled completely (SF #1852647).
  • Added a new file backend: stores each SyncML item as a separate file in a directory. The directory has to be specified via the database name, using [file://]<path> as format. The file:// prefix is optional, but the directory is only created if it is used.

    Change tracking is done via the file systems modification time stamp: editing a file treats it as modified and then sends it to the server in the next sync. Removing and adding files also works.

    The local unique identifier for each item is its name in the directory. New files are created using a running count which initialized based on the initial content of the directory to “highest existing number + 1″ and incremented to avoid collisions.

    Although this sync source itself does not care about the content of each item/file, the server needs to know what each item sent to it contains and what items the source is able to receive. Therefore the “type” property for this source must contain a data format specified, including a version for it. Here are some examples:

    • type=file:text/vcard:3.0
    • type=file:text/plain:1.0
  • Code restructuring: it is now possible to add new backends and thus write SyncML clients for other kinds of data without touching any line of code in SyncEvolution itself. All the required interfaces are documented inside SyncEvolution itself. A HTML documentation can be built via the new “make doc” target (requires Doxygen and dot).

    The SyncEvolution framework itself never depended on GNOME or Evolution, only the Evolution data sources did. If you want support for other ways of storing your data, consider writing a new data source – it is really easy. See EvolutionSyncSource or TrackingSyncSource for details.

  • Messages are printed to the screen immediately. More readable log file format.
  • Maemo: the useless “list: unable to access calendars: failure” error message is avoided. It was triggered by not having memo support in Evolution Data Server. Cleaned up the code so that it properly distinguishes between ‘calendar’, ‘memo list’ and ‘task list’.
  • added server template for MemoToo; note that the server has not been tested
  • added synchronization of Evolution memo summary

    Most devices only synchronize plain text and do not have a separate summary field. Such an extra summary field was added to Evolution after memo support was initially implemented in SyncEvolution, therefore SyncEvolution did not transmit that field.

    Added transmitting the summary by inserting it as first line of the plain text blob *if* it is not already identical with the first line. When receiving a memo, the summary is set from the first line *without* removing the first line because the first line might have been used as a normal part of the memo.

  • Various other minor changes, fixes and lots of code cleanups.
  • license cleanup: SyncEvolution is GPL v2 or later

{ 21 } Comments

  1. Thomas Novin | September 11, 2008 at 5:33 pm | Permalink

    Nice! I noticed that nowhere on your site you mention Genesis. Genesis is a graphical front-end for SyncEvolution. Check it out, https://launchpad.net/genesis-sync/.

  2. Patrick Ohly | September 11, 2008 at 8:50 pm | Permalink

    The SyncEvolution start page mentiones Genesis, both in the first paragraph and in the links section. If it should be mentioned elsewhere, then please let me know.

  3. ric | September 28, 2008 at 10:25 pm | Permalink

    On OS X, when typing :
    syncevolution –configure –sync-property username= –sync-property password= scheduleworld

    I get :
    No such file or directory

    Even after creating myself : /Users/me/.config/syncevolution/sources

  4. Mike | September 30, 2008 at 9:25 am | Permalink

    Hi Patrick,
    I’m installing SyncEvolution on Ubuntu Intrepid having had it working great on Hardy. It says “The following packages have unmet dependencies:
    syncevolution-evolution-2.12: Depends: libedataserver1.2-9 which is a virtual package.” The version of libedataserver on Intrepid is 1.2-11.

    Should I install the old package, or will you be updating the archive?

    Thanks for all the effort on this great connector.

    Mike

  5. Jan Thomä | September 30, 2008 at 2:28 pm | Permalink

    What is the current status of Synching Calendar Events on mac os X ? From what i get, the funambol isync plugin is dead in the water, no checkins there for months and they weren’t capable of doing calendar events anyway. Any plans to get this functionality into Syncevolution?

  6. Patrick Ohly | October 4, 2008 at 11:21 am | Permalink

    Gosh, I’m gone for just a week and look at the number of issues to deal with when I come back ;-) Okay, let’s look at each one:

    @ric: the command works fine for me. I tried it after moving the existing ~/.config and ~/.sync4j out of the way. I’m not sure where the error comes from – can you please quote the complete output? syncevolution is in your PATH, right?

    @Mike: I wasn’t aware that 2.24 changed the ABI and thus the version number of the lib. I have a nightly test for this case, but it wasn’t working correctly and therefore I missed the change. Thanks for pointing it out!

    I looked at the change which modified the version number and it seems to me that this could have been avoided. I have contacted the Evolution hackers and asked for clarification. I can think of some ways how this could be solved, but none of them are nice.

    As a temporary workaround you can a) unpack the evolution-2.12 tar.gz and b) create a symlink with sudo ln -s libedataserver-1.2.so.11 /usr/lib/libedataserver-1.2.so.9. If I have to, I’ll work around this issue by changing the packages.

    @Jan: there are no plans to add calendar support for Mac OS X. I don’t have the time to do it myself and no-one else has volunteered to work on it. I suggested to Funambol to merge our efforts on Mac OS X, but that didn’t go anywhere and as you said, now even the original Funambol iSync plugin seems to be unmaintained.

  7. Trevor | October 5, 2008 at 5:14 am | Permalink

    I am using the client now as I just got a Blackberry. I am syncing my Evolution data with ScheduleWorld. When I am syncing my addressbook, the syncevolution client seems to hang and takes along time to return. At times, it doesn’t ever return and I have to press Ctrl-C.

    To add in, I have my Evolution connected to a LDAP backend for the address book. I don’t know if this causes problems.

    I have no problems syncing the calendar from Evolution to ScheduleWorld.

    Please let me know what I can do to help get this issue rectified.

  8. Patrick Ohly | October 5, 2008 at 10:11 pm | Permalink

    Trevor, as a first step please check the client.log (created in /tmp/SyncEvolution*) when SyncEvolution hangs. If the last entry is about sending data out to ScheduleWorld, then the server isn’t responding.

    If that’s not the case, then connect a debugger to the process (open another shell, ps x | grep syncevolution, gdb -p pid_of_syncevolution) and produce a complete stack backtrace (thread apply all bt) and send me the result. Please mention which version of Evolution you use.

    If you suspect that the LDAP backend might have something to do with it, then you could check whether the problem persists when using the normal file backend.

  9. Trevor | October 8, 2008 at 12:33 am | Permalink

    Hey Patrick,

    Thanks for the reply. I moved away from the LDAP backend and now I have no issues with the syncing. It completes fine and I have no errors.

  10. Roy Cabaniss | October 15, 2008 at 10:55 pm | Permalink

    Using Suse 11, kernel Linux 2.6.25.16-0.1-default x86_64, kde 3.5.9, evolution 2.22.1.1 (yeah I know its old but it is the default novell has for suse) I’ve been trying to get evo to sync with scheduleworld. I found the following rpm syncevolution-0.8-1.12.x86_64.rpm and was trying to install with it but I keep getting the following error Failed dependencies: libedataserver-1.2.so.11()(64bit) is needed. I can’t seem to find that file anywhere in the “normal” suse repositories.

    When I compile it from source it goes through the config/make/makeinstall sequence without error messages that kill it but then I get the following when I type syncevolution: syncevolution: error while loading shared libraries: libcurl-gnutls.so.3: and it installs in the usr/local/bin (no surprise there)

    Last, I went to do a compile and install into my home bin directory. Lo and behold it appears to have compiled and installed. Neither of the prior two error messages occured. Wierd. Any idea what’s happening?

  11. Patrick Ohly | October 15, 2008 at 11:31 pm | Permalink

    Roy, I don’t know why your first self-compiled syncevolution didn’t work. You would have to provide more information, like the complete error message (it was cut off after “libcurl-gnutls.so.3:”) and the output of “ldd /usr/local/bin/syncevolution”.

    Does the following precompiled binary work for you: syncevolution-0.8.1-evolution-amd64.tar.gz?

    Are you really on a 64 bit installation? Otherwise use the normal package without the -amd64 or x86_64 suffix.

    Out of curiosity, where did you find the syncevolution-0.8-1.12.x86_64.rpm?

  12. Roy Cabaniss | October 16, 2008 at 5:57 pm | Permalink

    Patrick:
    Yes I am on a 64 bit installation. When I try the precompiled binary I get the following error message:
    ./syncevolution: error while loading shared libraries: libcurl-gnutls.so.3: cannot open shared object file: No such file or directory and sure enough that file is not a part of suse 11.

    When I take the source for syncevolution-.8 and compile it myself in my $home/bin then it seems to work ok. (Mind you I am still trying to find the config file for scheduleworld and where to save said config file at but syncevolution itself is giving me the evolution information)
    I found the file at http://rpm.pbone.net though when I went back today it was not there.

  13. Patrick Ohly | October 16, 2008 at 6:17 pm | Permalink

    @Roy: there’s not much that I can do about libcurl-gnutls.so.3 right now. I need to link against that when building on Debian. You might get away with adding a symbolic link (”sudo ln -s libcurl.so.3 /usr/lib64/libcurl-gnutls.so.3″), but this means hacking your system in an unclean way. Better use your self-compiled binary.

    You might also ask Suse to package SyncEvolution. If you do, feel free to copy me or send me a link.

    Regarding the config file, in 0.8 this is no longer necessary. Please have a look at Getting Started.

    BTW, 0.8.1 is the current version.

  14. Roy Cabaniss | October 16, 2008 at 10:45 pm | Permalink

    Actually I have many os’s on the beast, I simply linked from either a ubuntu or suse 10.2 (both of which possessed the file) and it worked. Then I undid it (cause I agree, the self compiled binary is to me safer). I WILL ask suse to package syncevo since I view it as a useful tool for a working environment.
    While I know that 8.1 is the current, I finally got 8.0 to work and it seems to work fine so I think it will be a while before I update. (The last stage is getting my palm to sync with the evo at work.) The we go home blackberry -> outlook -> scheduleworld -> evolution both at work and home -> palm pilot tungsten E2. Pretty much all devices and accounts in sync. Very very kewl and thanks for the work on this product.

  15. Ali Habib Shahbour | October 25, 2008 at 2:41 pm | Permalink

    Hello

    I am unable to compile the latest version 0.8.1 on Fedora 9 , i am getting this error

    syncevolution.cpp:32:25: error: glib-object.h: No such file or directory

    even though the glib-object.h exist in /usr/include/glib2-2.0/glib-object.h.

    BR
    Shahbour

  16. Patrick Ohly | October 26, 2008 at 9:22 pm | Permalink

    Ali, can you quote the output preceding that error? I’m interested in the g++ call and its parameters. On my system, -I/usr/include/glib-2.0 is part of the command line, which is where that file is found.

    What does “pkg-config --cflags glib-2.0” say?

  17. Ali Habib Shahbour | October 27, 2008 at 11:40 am | Permalink

    Hello Patrick,

    This the output i got

    syncevolution.cpp:32:25: error: glib-object.h: No such file or directory
    syncevolution.cpp:165: fatal error: opening dependency file .deps/syncevolution-syncevolution.Tpo: Permission denied
    compilation terminated.

    As for the pkg-config –cflags glib-2.0

    -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include

    BR

  18. Ali Habib Shahbour | October 27, 2008 at 11:45 am | Permalink

    Sorry Patrick

    i did make as normal user above

    syncevolution.cpp:32:25: error: glib-object.h: No such file or directory
    make[4]: *** [syncevolution-syncevolution.o] Error 1
    make[4]: Leaving directory `/home/ac/Download/IPod/syncevolution-0.8.1/src’
    make[3]: *** [all-recursive] Error 1
    make[3]: Leaving directory `/home/ac/Download/IPod/syncevolution-0.8.1/src’
    make[2]: *** [all] Error 2
    make[2]: Leaving directory `/home/ac/Download/IPod/syncevolution-0.8.1/src’
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/home/ac/Download/IPod/syncevolution-0.8.1′
    make: *** [all] Error 2

    this is the out put of make

  19. Patrick Ohly | October 27, 2008 at 10:21 pm | Permalink

    Ali, please quote the g++ invocation. It’s directly before the part that you quoted.

    What is the value of GLIB_CFLAGS in your config.status? I mean the line with s,@GLIB_CFLAGS@. If it doesn’t contain -I/usr/include/glib-2.0 then please send me the complete output of your configure run (by email – it’ll be long).

  20. Filip Hanik | November 13, 2008 at 6:08 am | Permalink

    For fedora 9, I simply did

    sudo ln -s /usr/lib64/libcurl.so.4 /usr/lib64/libcurl-gnutls.so.3

    and that took care of the libcurl dependency

  21. shuang.wan | February 20, 2009 at 8:16 am | Permalink

    bellow patch solved problem.
    diff -r -uBb ./src/Makefile.am ../../moblin/syncevolution-0.8.1a/src/Makefile.am
    — ./src/Makefile.am 2008-12-16 05:18:31.000000000 +0800
    +++ ../../moblin/syncevolution-0.8.1a/src/Makefile.am 2009-02-20 14:07:36.000000000 +0800
    @@ -1,7 +1,7 @@
    BACKENDS = backends/addressbook backends/evolution backends/file backends/sqlite
    SUBDIRS = core $(BACKENDS)

    -AM_CPPFLAGS = $(SUBDIRS:%=-I$(srcdir)/%) @BACKEND_CPPFLAGS@ @FUNAMBOL_CFLAGS@
    +AM_CPPFLAGS = $(SUBDIRS:%=-I$(srcdir)/%) @BACKEND_CPPFLAGS@ @FUNAMBOL_CFLAGS@ @GLIB_CFLAGS@

    # applies to sources in SyncEvolution repository, but not
    # the Funambol C++ client library
    diff -r -uBb ./src/Makefile-gen.am ../../moblin/syncevolution-0.8.1a/src/Makefile-gen.am
    — ./src/Makefile-gen.am 2008-12-16 04:57:26.000000000 +0800
    +++ ../../moblin/syncevolution-0.8.1a/src/Makefile-gen.am 2009-02-20 14:07:45.000000000 +0800
    @@ -1,7 +1,7 @@
    BACKENDS = @BACKENDS@
    SUBDIRS = core $(BACKENDS)

    -AM_CPPFLAGS = $(SUBDIRS:%=-I$(srcdir)/%) @BACKEND_CPPFLAGS@ @FUNAMBOL_CFLAGS@
    +AM_CPPFLAGS = $(SUBDIRS:%=-I$(srcdir)/%) @BACKEND_CPPFLAGS@ @FUNAMBOL_CFLAGS@ @GLIB_CFLAGS@

    # applies to sources in SyncEvolution repository, but not
    # the Funambol C++ client library

Post a Comment

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