Are we there yet?

Hi All,

Next week i have my exams, so here i am, putting a pause to my work on syncevolution. Will get back to work after next saturday.  So what exactly is the current status? I’d say we are 65% there: The backend is nearly ready.Theoretically, it needs :

1) 1 addition so that KDE specific entries of a contact are preserved during a sync.

2) A bug fix, which will have to start the akonadi server if it isn’t already running. Currently The sync operation just hangs up on my ubuntu machine, if akonadi backend is enabled and the akonadi server isn’t running.

3) Need to look for a notes application using akonadi. Right now, we are just storing the Notes as plain text items in an akonadi collection, while KNotes can’t access it.

And apart from these major ToDos , there are little fixes here and there, a lot of testing, a GUI(Work in progress) and a Bluedevil plugin(nearly done) are in store. So once done, All the goodies of a Nokia PC Suite would be available on a KDE desktop.

And for those tired of reading my blog posts and are interested in having a hands on experience on the actual thing, here it is:

git:// syncevolution

All the information you need is contained within…




Beware, Its A LOT of homework to be done , so i seriously suggest waiting for the completed work, which I promise will be here very soon.. I really want your first impression to be something really good, and right now the code is nowhere near that.

To simplify things a bit, here is the moral of the story of the Readme files(feel free to point out if i missed out anything),

Step 1) Install all the dependencies. On my ubuntu machine, this is what i had to install: i might have missed out some or added something extra… especially the build-essentials package and git-core…

sudo apt-get install libnotify-dev libboost-dev libakonadi-dev akonadi-server libqt4-dev kdepim-runtime kdepimlibs5-dev akonadiconsole libbluetooth-dev libsoup-gnome2.4-dev libopenobex-dev libglib2.0-dev libdbus-glib-1-dev libtool intltool automake xsltproc libsqlite3-dev libpcre3-dev

Step 2) Get and compile the source code from my git repo:

mkdir SyncEvolution
cd SyncEvolution

#get libsynthesis needed for syncevolution from the repo

git clone git:// synthesis

#get syncevolution
git clone git:// syncevolution

cd syncevolution

cd ..
mkdir build
cd build
../syncevolution/configure –prefix=$PWD/../dist –with-synthesis-src=../synthesis –disable-shared –enable-static –enable-developer-mode –disable-ebook –disable-ecal –enable-dbus-service –enable-akonadi –enable-qt-dbus –enable-kwallet

# Assuming that everything builds perfectly,
# now you will have start syncevo-dbus-server in SyncEvolution/build/src
# and then you can use the command line tool syncevolution in the same directory

Step 3) Configure it and Use it 🙂 (The command line tool will function as advertised in the README.rst

If you get stuck at any point, feel free to contact me on this blog.
Good Luck (Y)

P.S Make sure that you have backed up your PIM data before you try this. (on both the devices). I myself have lost my contacts or ended up with too many duplicates.

Also, additional information could be found on

[updated to fetch the libsynthesis from the meego repo and to use the syncevolution’s master branch]

Are we there yet?

14 thoughts on “Are we there yet?

  1. KenP says:

    In the list of features, Microsoft Exchange is ‘Not Supported’. Is there a chance of it ever being supported in Kontact/Kmail?

      1. Domax says:

        Hi, maybe KenP is thinking of syncing emails on the phone directly with MS Exchange. This is not possible with SyncML, but it will be possible, to sync Kontact with an Exchange server, so you can use Kontact as a bridge between the phone and the mail-server.

      2. KenP says:

        In fact, I am looking at accessing MS Exchange server from Kontact … not via (d)IMAP, which I am doing right now but full sync including contacts and calendar.


  2. Wim De Meester says:

    I tried to compile, but I fail… I first compiled libsynthesis and then followed your instructions to compile syncevolution…

    I get the following error :

    backends/file/.libs/syncfile.a(syncfile_la-FileSyncSource.o): In function `~SyncSourceBlob’:
    /lhome/wim/Downloads/sync/SyncEvolution/build/src/backends/file/../../../../syncevolution/src/backends/file/../../syncevo/SyncSource.h:1707: undefined reference to `sysync::TBlob::~TBlob()’



      1. Hi, Yes I faced this problem too…

        It was because the version picked up from synthesis repo is kind of the old version when compared to the version being used by syncevolution. Thats why i put in “libsynthesis-dev” in the apt-get statement. That way you dont have to compile synthesis manually.

        or here you can get your libsynthesis:

        or incase you alraedy have downloaded a source tarball of syncevolutionn release (>=1) you can find libsynthesis(src/synthesis) in it too.

  3. Luiz says:


    I’m trying to compile your code, but I’m still busy compiling the dependencies. Meanwhile, let me ask you, why did you coded on top of syncevolution instead of creating a gui app that used libsynthesis? Wouldn’t that be better for gui integration?

  4. Luiz says:


    I’m getting this error now:

    ../../syncevolution/src/syncevo-dbus-server.cpp:2184:1: error: invalid use of incomplete type ‘struct SyncEvo::TransportAgent’
    ../../syncevolution/src/syncevo/SyncContext.h:40:7: error: forward declaration of ‘struct SyncEvo::TransportAgent’
    ../../syncevolution/src/syncevo-dbus-server.cpp:2200:5: error: ‘TransportCallback’ does not name a type
    ../../syncevolution/src/syncevo-dbus-server.cpp:2224:13: error: ‘Status’ does not name a type
    ../../syncevolution/src/syncevo-dbus-server.cpp:2225:31: error: ‘TransportCallback’ has not been declared
    ../../syncevolution/src/syncevo-dbus-server.cpp: In member function ‘virtual void DBusTransportAgent::setCallback(int, void*, int)’:
    ../../syncevolution/src/syncevo-dbus-server.cpp:2227:9: error: ‘m_callback’ was not declared in this scope
    ../../syncevolution/src/syncevo-dbus-server.cpp: In member function ‘virtual boost::shared_ptr DBusSync::createTransportAgent()’:
    ../../syncevolution/src/syncevo-dbus-server.cpp:2857:18: error: invalid use of incomplete type ‘struct SyncEvo::TransportAgent’
    ../../syncevolution/src/syncevo/SyncContext.h:40:7: error: forward declaration of ‘struct SyncEvo::TransportAgent’
    ../../syncevolution/src/syncevo-dbus-server.cpp: In member function ‘void Connection::process(const Caller_t&, const std::pair&, const std::string&)’:
    ../../syncevolution/src/syncevo-dbus-server.cpp:3935:40: error: incomplete type ‘SyncEvo::TransportAgent’ used in nested name specifier
    ../../syncevolution/src/syncevo-dbus-server.cpp:3942:41: error: incomplete type ‘SyncEvo::TransportAgent’ used in nested name specifier
    ../../syncevolution/src/syncevo-dbus-server.cpp:4049:74: error: incomplete type ‘SyncEvo::TransportAgent’ used in nested name specifier
    ../../syncevolution/src/syncevo-dbus-server.cpp:4050:40: error: incomplete type ‘SyncEvo::TransportAgent’ used in nested name specifier
    ../../syncevolution/src/syncevo-dbus-server.cpp: In constructor ‘DBusTransportAgent::DBusTransportAgent(GMainLoop*, Session&, boost::weak_ptr)’:
    ../../syncevolution/src/syncevo-dbus-server.cpp:4322:5: error: class ‘DBusTransportAgent’ does not have any field named ‘m_callback’
    ../../syncevolution/src/syncevo-dbus-server.cpp: In member function ‘virtual void DBusTransportAgent::send(const char*, size_t)’:
    ../../syncevolution/src/syncevo-dbus-server.cpp:4341:9: error: ‘TransportException’ was not declared in this scope
    ../../syncevolution/src/syncevo-dbus-server.cpp:4346:9: error: ‘TransportException’ was not declared in this scope
    ../../syncevolution/src/syncevo-dbus-server.cpp:4356:9: error: ‘m_callback’ was not declared in this scope
    ../../syncevolution/src/syncevo-dbus-server.cpp: In member function ‘virtual void DBusTransportAgent::shutdown()’:
    ../../syncevolution/src/syncevo-dbus-server.cpp:4373:9: error: ‘TransportException’ was not declared in this scope
    ../../syncevolution/src/syncevo-dbus-server.cpp: In static member function ‘static gboolean DBusTransportAgent::timeoutCallback(void*)’:
    ../../syncevolution/src/syncevo-dbus-server.cpp:4389:9: error: ‘class DBusTransportAgent’ has no member named ‘m_callback’
    ../../syncevolution/src/syncevo-dbus-server.cpp: At global scope:
    ../../syncevolution/src/syncevo-dbus-server.cpp:4414:1: error: ‘Status’ in class ‘DBusTransportAgent’ does not name a type

    And I’m using the libsynthesis from
    Any ideas?

    1. Hi Luiz, I am sorry for such a delayed reply…. was busy with exams(just done with them), so couldn’t look into the issue….It looks like some library is missing(and this time it’s not libsynthesis) can you tell me what distro are you using?? may be i will look into it and give you the detailed instructions…

    2. Hi Luiz,

      I myself use chakra for development, and i can’t seem to reproduce the same error. I Have tried to compile it on 2 other arch installations in my college, and none of them have gotten this error.
      But that being said, all 3 of our pc’s have many packages already installed, so we might have might have accedintally gotten the missing dependencies.
      My package doesn’t really add any dependencies to that of syncevolution’s exisiting akonadi backend(except for libproxy)…

      so may be installing a copy of syncevolution via. yaourt will first install all the dependencies for you. Then I’m sure you can easily compile my version.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s