[SyncEvolution] Build fails with libical 2.0.0

Patrick Ohly patrick.ohly at intel.com
Tue Jan 19 12:49:17 UTC 2016


On Tue, 2016-01-19 at 11:25 +0100, Milan Crha wrote:
> 	Hello,
> I just realized that the syncevolution fails to build against
> libical 2.0.0. The problem is synevolution's extract of
> icaltz-util.c/.h, referencing extern const char *ical_tzid_prefix;
> This variable had been made private and there is no way to get to it
> from the outside of libical (the added icaltimezone_tzid_prefix() is
> not exported in the libical library).
> 
> I do not know the rationale with the icaltz-util extract in the
> syncevolution, but I'd say it's time to get rid of it when new-enough
> libical is used for the build. What do you think?

Does the libical 2.0 return "simple" VTIMEZONE definitions again, i.e.
ones with RRULEs for summer and winter time?

The reason for icaltz-util.c is this:

commit 9d13210d0bc5eba1e280fde7742a198e5631974f
Author: Patrick Ohly <patrick.ohly at intel.com>
Date:   Wed Mar 19 13:13:50 2014 +0100

    ical: workaround for libical 1.0 builtin timezone change
    
    libical 1.0 started to return VTIMEZONE definitions with multiple
    absolute transition times instead of RRULEs. This causes problems when
    exchanging data with peers (see
    https://sourceforge.net/p/freeassociation/bugs/95/).
    
    In SyncEvolution, this affected sending an event using New Zealand
    time in vCalendar 1.0 format to a phone, because the internal,
    out-dated definition of the time zone in libsynthesis was used as
    fallback when loading RRULE-based timezone definitions from libical
    failed (see "[SyncEvolution] Some events showing wrong time on
    phone"). It might also affect exchanging data with CalDAV peers (not
    tested).
    
    The workaround is to include the original code from libical from
    before the change in SyncEvolution and override
    icaltimezone_get_component() with a version that uses the original
    timezone loading code. This does not fix cases where other code causes
    libical itself to load a timezone, but for libsynthesis it is good
    enough because it does the loading early when no other code should
    have used libical.
[...]

I don't remember whether ical_tzid_prefix absolutely has to be the one
from libical or whether it can also be something else. I've not tested
with libical 2.0 yet.

I started testing, but ran out of time and patience. This whole "let's
break the ABI, people will recompile anyway" is making it harder and
harder to provide pre-compiled SyncEvolution binaries.

-- 
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.






More information about the SyncEvolution mailing list