[SyncEvolution] SyncEvolution 1.2.1 released

2011-11-28 Thread Patrick Ohly
SyncEvolution 1.2.1
===

Maintenance release with various bug fixes.

* GTK UI + config: fix custom server setup (BMC #13511)

  When the default config template (= ScheduleWorld) was downgraded to
  not consumer ready in SyncEvolution 1.1.0.99.1, setting up a custom
  SyncML service in the GTK UI stopped working because the UI wouldn't
  show the not consumer ready config.

  The problem described above is deterministic and fixed now.
  Initially the problem seemed to be random. So perhaps there is
  also another, related issue.

* phone sync: delete-delete conflict + phone calendar+todo sync (BMC #23744)

  When deleting an item on phone and locally, the next sync failed with
  ERROR messages about object not found. Retrying the sync then worked.

* Nokia: prevent accidental usage of calendar or todo sources

  Nokia phones use a combined calendar+todo source for syncing. The
  calendar and todo sources also exist because that is where local
  databases are configured.

  In such a setup, syncing always has to use calendar+todo. For example,
  to refresh from the Linux desktop to the phone, use:
   --sync refresh-from-server config calendar+todo

  To work with items (restore, show local content), use the underlying sources,
  as in:
   --print-items config calendar

  It was possible to accidentally sync with the calendar. This commit
  prevents that by adding an invalid URI setting to the calendar and
  todo sources in the Nokia and Ovi templates. Existing configs are not
  touched, so beware when you already have configured your Nokia phone.

* vCard: X- chat extensions were limited to one instance per kind

  For example, only one Jabber account could be synchronized. This
  was caused by an incomplete definition of the conversion to and from
  vCard.

* syncevo-dbus-server + phone sync: catch SIGPIPE to avoid premature exit

  Frederik Elwert reported that running a local sync with a phone via
  Bluetooth caused the syncevo-dbus-server to shut down during a sync.
  Explicitly telling the process to ignore the SIGPIPE signal solved that
  problem.

* syncevo-http-server: support chained SSL certificates

  So far, the file pointed to by --certificate-file had to
  contain the server certificated (signed by a CA known to the client)
  and (optionally) a client certificate. Now the file may also contain
  additional intermediate certificates which will be sent to the client
  (chained certificates).

* documentation: added glossary and command line conventions sections,
  improved listing of properties, embedd property definitions in man page,
  README and README.html

* EDS compatibility: fixed inconsistency in libecal check

  The check for the _r variants in libical still used an older max
  version. This might have prevented using them (if not found) or
  could have led to a mixture of old and new libecal in the same
  process (probably crashed).

* glib: avoid including glib/*.h headers directly

  Recent glib deprecates the direct inclusion of some of its headers,
  in favor of including glib.h. Doing that here whenever possible, so
  perhaps it now compiles on Fedora 17 (untested).


Upgrading from releases before 1.2
==

Old configurations can still be read. But writing, as it happens
during a sync, must migrate the configuration first. Release 1.2
automatically migrates configurations. The old configurations
will still be available (see syncevolution --print-configs) but must
be renamed manually to use them again under their original names with
older SyncEvolution releases.


Source, Installation, Further information
=

http://syncevolution.org/blogs/pohly/2011/syncevolution-121-released

Source snapshots are in
  http://downloads.syncevolution.org/syncevolution/sources

i386, lpia and amd64 binaries for Debian-based distributions are
available via the stable syncevolution.org repository. Add the
following entry to your /apt/source.list, then install
syncevolution-evolution:
  deb http://downloads.syncevolution.org/apt unstable main

These binaries include the sync-ui GTK GUI and were compiled for
Ubuntu 8.04 LTS (Hardy). Older distributions like Debian 4.0 (Etch) can
no longer be supported with precompiled binaries because of missing
libraries, but the source still compiles when not enabling the GUI (the
default).

The same binaries are also available as .tar.gz and .rpm archives in
http://downloads.syncevolution.org/syncevolution/evolution. In contrast
to 0.8.x archives, the 1.x .tar.gz archives have to be unpacked and the
content must be moved to /usr, because several files would not be found
otherwise.

After installation, follow the
http://syncevolution.org/documentation/getting-started steps.

-- 
Patrick Ohly, on behalf of everyone who has helped
to make SyncEvolution possible:
http://syncevolution.org/about/contributors


___
SyncEvolution mailing 

Re: [SyncEvolution] Update on work to port syncevo-dbus-server to GIO GDBus

2011-11-28 Thread Chris Kühl
On Wed, Nov 16, 2011 at 2:52 PM, Patrick Ohly patrick.o...@intel.com wrote:
 On Mi, 2011-11-16 at 11:58 +0100, Patrick Ohly wrote:
 On Mi, 2011-11-16 at 11:10 +0100, Chris Kühl wrote:
  On Mon, Nov 14, 2011 at 4:49 PM, Chris Kühl blix...@gmail.com wrote:
   On Mon, Nov 14, 2011 at 2:31 PM, Patrick Ohly patrick.o...@intel.com 
   wrote:
   Ok. We should be close to requesting a merge. Only 2 failures to fix
   before we've reached parity on our machines.
  
 
  After fixing those remaining issues, we ran the server under valgrind
  and fixed up a few memory leaks we found. I've now created a
  for-master/gio-gdbus branch, squashed the commits and pushed.

 I've started a test run.

 There seems to be a regression in the D-Bus testing.

 On Ubuntu Lucid, startup of the syncevo-dbus-server without GIO GDBus
 fails:
 http://syncev.meego.com/2011-11-16-10-54_dist/lucid-amd64/6-dbus/output.txt


So, I finally got the issue in Debian Stable and Ubuntu LTS fixed.
Turned out to be that I'd inadvertently set the server's main
connection to shared instead of private. I'm not sure why this was
only causing issues on these distros. That initially sent me searching
for the issue in all the wrong places.

Along the way I was also able to fix the --enable-notify flag which
was broken. You can now actually disable notifications.

This will all be in for-master/gio-gdbus within the next hour or so.

 The same binary runs on Debian Testing, albeit with regressions in
 TestSessionAPIsReal.testSync and
 TestSessionAPIsReal.testSyncSecondSession :
 http://syncev.meego.com/2011-11-16-10-54_dist/prebuilt-amd64/6-dbus/output.txt

 The nightly.html doesn't properly report the individual D-Bus errors,
 only the overall failure is correctly reported - I will investigate
 that.

 For comparison, this used to work in the previous test run:
 http://syncev.meego.com/2011-11-12-12-51_all/lucid-amd64/nightly.html

 Linking on Debian Testing fails because some library symbol is used
 without directly linking against that library (the binutils on that
 platform are more demanding and check for this):
 http://syncev.meego.com/2011-11-16-10-54_dist/gcc-4.6-amd64/3-compile/output.txt

 It should be fairly easy for me to fix these issues, while it is harder
 for you unless you have access to the right platforms or know what the
 issue is. Just let me know if you want me to lend a hand.


Can you try these again, I'm not running into these issues on Debian Testing.

Cheers,
Chris

 --
 Best Regards, Patrick Ohly

 The content of this message is my personal opinion only and although
 I am an employee of Intel, the statements I make here in no way
 represent Intel's position on the issue, nor am I authorized to speak
 on behalf of Intel on this matter.


___
SyncEvolution mailing list
SyncEvolution@syncevolution.org
http://lists.syncevolution.org/listinfo/syncevolution


Re: [SyncEvolution] syncevo-dbus-server + forking processes

2011-11-28 Thread Chris Kühl
On Wed, Nov 16, 2011 at 2:39 PM, Patrick Ohly patrick.o...@intel.com wrote:
 On Mi, 2011-11-16 at 13:55 +0100, Chris Kühl wrote:
 On Wed, Nov 16, 2011 at 12:22 PM, Patrick Ohly patrick.o...@intel.com 
 wrote:
  Here are some requirements for sync in forked process:
       * should be disabled when running outside of the D-Bus daemon
         (syncevolution command line in non-daemon mode, client-test
         testing)
       * interactive password requests through D-Bus must continue to
         work
       * abort/suspend requests via D-Bus must work
       * the forked process should shut down cleanly, so that valgrind
         --follow-child=yes --leak-check=yes provides sane results (the
         forked process in a local sync currently fails to do that,
         because it is forked in a less controlled environment and
         therefore just calls _exit())
       * logging:
               * the main syncevo-dbus-server process should use syslog
                 logging for its own messages, without redirecting
                 stdout/stderr
               * the forked process should start redirecting
                 stdout/stderr into the normal logging mechanism (so that
                 library error messages are visible when running the
                 syncevolution command line as client of the D-Bus server
                 and, later, they appear in log files) and switch to a
                 session log when the session is ready
 

 Thanks for the list of requirements.  I'll take these into
 consideration. Some in there that we hadn't talked about before.

 I know, that's why I'd rather discuss this upfront. Some of these
 requirements are implied by change must not cause
 regressions (interactive passwords, abort/suspend), others are open
 questions (startup/shutdown of the forked process, logging).

  Somewhat related to this work is support for push sync. I suspect that
  this will also use forked processes to monitor remote and local
  databases without interfering with the main process. It would be good if
  the mechanism for forking and communication between process was generic
  and not tied to syncing alone.
 

 I'm not really well informed on the plans for push sync other that
 what I found in [1],

 There are no more specific plans yet.

  but the idea that I had in mind was for the
 forking process to initiate a d-bus peer-to-peer (one-to-one in the
 d-bus spec) connection by forking the process with the d-bus address
 as a command line argument. The client then uses that for
 communication. This seems pretty generic to me. The only differences
 would be the d-bus interface used. ...but maybe I'm misunderstanding
 what you mean.

 No, that's what I was looking for. When you say command line argument,
 does that mean that there will be an exec() involved? Would that start
 the same binary or something else?


Yes this was going to be my proposal.

 The advantage of the exec() is that the new process is much cleaner. The
 downside is that it is harder to implement (How does the forking process
 find the right executable?

I believe the place for the helper sync binary would be in the
libexec directory: /usr/libexec/syncevolution/sync-session for
example.

How does injecting valgrind into the new
 binary work?)

Valgrind can follow child processes with --trace-children=yes and
create a log-file per process by inserting %p in the log-file name.

and a bit more expensive (must load all libraries again).


This will definitely require a small bit more resources to be used and
take a few microseconds longer to start but these are resources that
will be mostly loaded from memory (and probably cache) after the first
sync session is started and be freed when the process disappears.
Also, the time a fork-exec pair takes over just a fork is
insignificant compared to how long a sync session takes.

 It might be easier to avoid the exec() and instead return to main() of
 the syncevo-dbus-server in the forked process (including freeing of all
 parent process resources, which must be done anyway),

The potential problem I see is that some of the resources we may not
be able to free because they are not under our control: libraries,
etc.

then go down a
 different path as if the binary had just been started.


This is how I originally intended to implement this till I started
looking into it a little more and asking around. To me, the potential
problems seem to outweigh the advantages.

Cheers,
Chris
___
SyncEvolution mailing list
SyncEvolution@syncevolution.org
http://lists.syncevolution.org/listinfo/syncevolution