diff --git a/.evolution-mapi.metadata b/.evolution-mapi.metadata index 934d290..5f175a5 100644 --- a/.evolution-mapi.metadata +++ b/.evolution-mapi.metadata @@ -1 +1 @@ -d263b53f800d890491db733e3fe9473e9ccb5c10 SOURCES/evolution-mapi-3.8.5.tar.xz +6ea62f365e1e7f1c78649a8b8c0e08f545182e33 SOURCES/evolution-mapi-3.12.10.tar.xz diff --git a/.gitignore b/.gitignore index 5b038af..5769c61 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/evolution-mapi-3.8.5.tar.xz +SOURCES/evolution-mapi-3.12.10.tar.xz diff --git a/SOURCES/evolution-mapi-3.8.5-message-attachment-read.patch b/SOURCES/evolution-mapi-3.8.5-message-attachment-read.patch deleted file mode 100644 index a38afe4..0000000 --- a/SOURCES/evolution-mapi-3.8.5-message-attachment-read.patch +++ /dev/null @@ -1,37 +0,0 @@ -diff -up evolution-mapi-3.8.5/src/libexchangemapi/e-mapi-mail-utils.c.message-attachment-read evolution-mapi-3.8.5/src/libexchangemapi/e-mapi-mail-utils.c ---- evolution-mapi-3.8.5/src/libexchangemapi/e-mapi-mail-utils.c.message-attachment-read 2013-08-06 11:36:04.000000000 +0200 -+++ evolution-mapi-3.8.5/src/libexchangemapi/e-mapi-mail-utils.c 2013-09-13 15:25:35.174418025 +0200 -@@ -382,7 +382,7 @@ classify_attachments (EMapiConnection *c - const uint32_t *ui32; - uint64_t data_cb = 0; - const uint8_t *data_lpb = NULL; -- gboolean is_apple; -+ gboolean is_apple, is_message; - guint32 apple_data_len = 0, apple_resource_len = 0; - - if (!e_mapi_attachment_get_bin_prop (attach, PidTagAttachDataBinary, &data_cb, &data_lpb) && !attach->embedded_object) { -@@ -394,12 +394,14 @@ classify_attachments (EMapiConnection *c - - /* Content-Type */ - ui32 = e_mapi_util_find_array_propval (&attach->properties, PidTagAttachMethod); -- if (ui32 && *ui32 == ATTACH_EMBEDDED_MSG) { -+ is_message = ui32 && *ui32 == ATTACH_EMBEDDED_MSG; -+ if (is_message) { - mime_type = "message/rfc822"; - } else { - mime_type = e_mapi_util_find_array_propval (&attach->properties, PidTagAttachMimeTag); - if (!mime_type) - mime_type = "application/octet-stream"; -+ is_message = g_ascii_strcasecmp (mime_type, "message/rfc822") == 0; - } - - if (is_apple) { -@@ -584,7 +586,7 @@ classify_attachments (EMapiConnection *c - content_type = camel_mime_part_get_content_type (part); - if (content_type && camel_content_type_is (content_type, "text", "*")) - camel_mime_part_set_encoding (part, CAMEL_TRANSFER_ENCODING_QUOTEDPRINTABLE); -- else if (!ui32 || *ui32 != ATTACH_EMBEDDED_MSG) -+ else if (!is_message) - camel_mime_part_set_encoding (part, CAMEL_TRANSFER_ENCODING_BASE64); - } - diff --git a/SOURCES/evolution-mapi-3.8.5-show-events-owa.patch b/SOURCES/evolution-mapi-3.8.5-show-events-owa.patch deleted file mode 100644 index 65fd507..0000000 --- a/SOURCES/evolution-mapi-3.8.5-show-events-owa.patch +++ /dev/null @@ -1,337 +0,0 @@ -Contains upstream commits: - 2369060328d96211a9dbe1ebaffeff7d5140e6be - Recurring events not shown on Exchange 2010 servers - - ec03f046acabdb440dd44e8ddbe841453adbb55c - Fix a copy&paste error, found by a Coverity Scan - -diff -up evolution-mapi-3.8.5/src/libexchangemapi/e-mapi-cal-recur-utils.c.show-events-owa evolution-mapi-3.8.5/src/libexchangemapi/e-mapi-cal-recur-utils.c ---- evolution-mapi-3.8.5/src/libexchangemapi/e-mapi-cal-recur-utils.c.show-events-owa 2012-10-15 10:29:54.000000000 +0200 -+++ evolution-mapi-3.8.5/src/libexchangemapi/e-mapi-cal-recur-utils.c 2013-10-17 12:30:35.290075062 +0200 -@@ -181,7 +181,7 @@ rp_to_gba(const struct ema_RecurrencePat - sizeof (guint32) * rp->DeletedInstanceCount); - } - GBA_APPEND_LVAL(gba, rp->ModifiedInstanceCount); -- if ( rp->DeletedInstanceCount ) { -+ if ( rp->ModifiedInstanceCount ) { - GBA_APPEND (gba, rp->ModifiedInstanceDates, - sizeof (guint32) * rp->ModifiedInstanceCount); - } -@@ -296,6 +296,10 @@ arp_to_gba(const struct ema_AppointmentR - for (i = 0; i < arp->ExceptionCount; ++i) { - ee_to_gba (&arp->ExtendedException[i], arp, i, gba); - } -+ GBA_APPEND_LVAL (gba, arp->ReservedBlock2Size); -+ if (arp->ReservedBlock2Size) { -+ GBA_APPEND (gba, arp->ReservedBlock2, arp->ReservedBlock2Size); -+ } - } - - static gboolean -@@ -501,6 +505,13 @@ gba_to_arp(const GByteArray *gba, ptrdif - } - } - -+ GBA_DEREF_OFFSET (gba, *off, arp->ReservedBlock2Size, guint32); -+ if (arp->ReservedBlock2Size) { -+ arp->ReservedBlock2 = g_new (gchar, arp->ReservedBlock2Size); -+ GBA_MEMCPY_OFFSET (gba, *off, arp->ReservedBlock2, -+ arp->ReservedBlock2Size); -+ } -+ - return TRUE; - } - -diff -up evolution-mapi-3.8.5/src/libexchangemapi/e-mapi-cal-tz-utils.c.show-events-owa evolution-mapi-3.8.5/src/libexchangemapi/e-mapi-cal-tz-utils.c ---- evolution-mapi-3.8.5/src/libexchangemapi/e-mapi-cal-tz-utils.c.show-events-owa 2013-03-25 10:17:54.000000000 +0100 -+++ evolution-mapi-3.8.5/src/libexchangemapi/e-mapi-cal-tz-utils.c 2013-10-17 12:30:05.858075342 +0200 -@@ -374,6 +374,195 @@ e_mapi_cal_tz_util_dump (void) - g_rec_mutex_unlock(&mutex); - } - -+static void -+write_icaltime_as_systemtime (GByteArray *ba, -+ struct icaltimetype icaltime) -+{ -+ guint16 flag16; -+ -+ /* wYear */ -+ flag16 = icaltime.year; -+ g_byte_array_append (ba, (const guint8 *) &flag16, sizeof (guint16)); -+ -+ /* wMonth */ -+ flag16 = icaltime.month; -+ g_byte_array_append (ba, (const guint8 *) &flag16, sizeof (guint16)); -+ -+ /* wDayOfWeek */ -+ flag16 = icaltime.year == 0 ? 0 : icaltime_day_of_week (icaltime); -+ g_byte_array_append (ba, (const guint8 *) &flag16, sizeof (guint16)); -+ -+ /* wDay */ -+ flag16 = icaltime.day; -+ g_byte_array_append (ba, (const guint8 *) &flag16, sizeof (guint16)); -+ -+ /* wHour */ -+ flag16 = icaltime.hour; -+ g_byte_array_append (ba, (const guint8 *) &flag16, sizeof (guint16)); -+ -+ /* wMinute */ -+ flag16 = icaltime.minute; -+ g_byte_array_append (ba, (const guint8 *) &flag16, sizeof (guint16)); -+ -+ /* wSecond */ -+ flag16 = icaltime.second; -+ g_byte_array_append (ba, (const guint8 *) &flag16, sizeof (guint16)); -+ -+ /* wMilliseconds */ -+ flag16 = 0; -+ g_byte_array_append (ba, (const guint8 *) &flag16, sizeof (guint16)); -+} -+ -+static void -+write_tz_rule (GByteArray *ba, -+ gboolean is_recur, -+ guint32 bias, -+ guint32 standard_bias, -+ guint32 daylight_bias, -+ struct icaltimetype standard_date, -+ struct icaltimetype daylight_date) -+{ -+ guint8 flag8; -+ guint16 flag16; -+ -+ g_return_if_fail (ba != NULL); -+ -+ /* Major version */ -+ flag8 = 0x02; -+ g_byte_array_append (ba, (const guint8 *) &flag8, sizeof (guint8)); -+ -+ /* Minor version */ -+ flag8 = 0x01; -+ g_byte_array_append (ba, (const guint8 *) &flag8, sizeof (guint8)); -+ -+ /* Reserved */ -+ flag16 = 0x003e; -+ g_byte_array_append (ba, (const guint8 *) &flag16, sizeof (guint16)); -+ -+ /* TZRule flags */ -+ flag16 = 0; -+ if (is_recur) -+ flag16 |= 1; -+ g_byte_array_append (ba, (const guint8 *) &flag16, sizeof (guint16)); -+ -+ /* wYear */ -+ flag16 = standard_date.year; -+ g_byte_array_append (ba, (const guint8 *) &flag16, sizeof (guint16)); -+ -+ /* X - 14 times 0x00 */ -+ flag8 = 0x00; -+ for (flag16 = 0; flag16 < 14; flag16++) { -+ g_byte_array_append (ba, (const guint8 *) &flag8, sizeof (guint8)); -+ } -+ -+ /* lBias */ -+ g_byte_array_append (ba, (const guint8 *) &bias, sizeof (guint32)); -+ -+ /* lStandardBias */ -+ g_byte_array_append (ba, (const guint8 *) &standard_bias, sizeof (guint32)); -+ -+ /* lDaylightBias */ -+ g_byte_array_append (ba, (const guint8 *) &daylight_bias, sizeof (guint32)); -+ -+ /* stStandardDate */ -+ write_icaltime_as_systemtime (ba, standard_date); -+ -+ /* stDaylightDate */ -+ write_icaltime_as_systemtime (ba, daylight_date); -+} -+ -+static void -+extract_bias_and_date (icalcomponent *comp, -+ guint32 *bias, -+ struct icaltimetype *start) -+{ -+ icalproperty *prop; -+ gint tzoffset; -+ -+ g_return_if_fail (comp != NULL); -+ g_return_if_fail (bias != NULL); -+ g_return_if_fail (start != NULL); -+ -+ prop = icalcomponent_get_first_property (comp, ICAL_TZOFFSETTO_PROPERTY); -+ if (prop) -+ tzoffset = icalproperty_get_tzoffsetto (prop); -+ else -+ tzoffset = 0; -+ -+ *bias = tzoffset / 60; -+ *start = icalcomponent_get_dtstart (comp); -+} -+ -+static void -+write_tz_rule_comps (GByteArray *ba, -+ gboolean is_recur, -+ icalcomponent *standardcomp, -+ icalcomponent *daylightcomp, -+ icaltimezone *zone) -+{ -+ struct icaltimetype standard_date, daylight_date, current_time; -+ guint32 bias, standard_bias, daylight_bias; -+ -+ g_return_if_fail (ba != NULL); -+ g_return_if_fail (standardcomp != NULL); -+ g_return_if_fail (daylightcomp != NULL); -+ -+ extract_bias_and_date (standardcomp, &standard_bias, &standard_date); -+ extract_bias_and_date (daylightcomp, &daylight_bias, &daylight_date); -+ -+ current_time = icaltime_current_time_with_zone (zone); -+ bias = current_time.is_daylight ? daylight_bias : standard_bias; -+ -+ write_tz_rule (ba, is_recur, bias, standard_bias, daylight_bias, standard_date, daylight_date); -+} -+ -+static void -+add_timezone_rules (GByteArray *ba, -+ gboolean is_recur, -+ icalcomponent *vtimezone, -+ icaltimezone *zone) -+{ -+ gboolean any_added = FALSE; -+ -+ g_return_if_fail (ba != NULL); -+ -+ if (vtimezone) { -+ icalcomponent *subcomp, *standardcomp = NULL, *daylightcomp = NULL; -+ -+ for (subcomp = icalcomponent_get_first_component (vtimezone, ICAL_ANY_COMPONENT); -+ subcomp; -+ subcomp = icalcomponent_get_next_component (vtimezone, ICAL_ANY_COMPONENT)) { -+ if (icalcomponent_isa (subcomp) == ICAL_XSTANDARD_COMPONENT) -+ standardcomp = subcomp; -+ if (icalcomponent_isa (subcomp) == ICAL_XDAYLIGHT_COMPONENT) -+ daylightcomp = subcomp; -+ if (standardcomp && daylightcomp) { -+ write_tz_rule_comps (ba, is_recur, standardcomp, daylightcomp, zone); -+ -+ any_added = TRUE; -+ standardcomp = NULL; -+ daylightcomp = NULL; -+ } -+ } -+ -+ if (standardcomp || daylightcomp) { -+ if (!standardcomp) -+ standardcomp = daylightcomp; -+ write_tz_rule_comps (ba, is_recur, standardcomp, daylightcomp, zone); -+ any_added = TRUE; -+ } -+ } -+ -+ /* at least one should be always added, make it UTC */ -+ if (!any_added) { -+ struct icaltimetype fake_utc; -+ -+ memset (&fake_utc, 0, sizeof (struct icaltimetype)); -+ -+ write_tz_rule (ba, is_recur, 0, 0, 0, fake_utc, fake_utc); -+ } -+} -+ - #define TZDEFINITION_FLAG_VALID_GUID 0x0001 // the guid is valid - #define TZDEFINITION_FLAG_VALID_KEYNAME 0x0002 // the keyname is valid - #define TZ_MAX_RULES 1024 -@@ -383,13 +572,29 @@ e_mapi_cal_tz_util_dump (void) - void - e_mapi_cal_util_mapi_tz_to_bin (const gchar *mapi_tzid, - struct SBinary_short *bin, -- TALLOC_CTX *mem_ctx) -+ TALLOC_CTX *mem_ctx, -+ gboolean is_recur) - { - GByteArray *ba; - guint8 flag8; - guint16 flag16; - gunichar2 *buf; - glong items_written; -+ icaltimezone *zone = NULL; -+ icalcomponent *vtimezone; -+ gint rules = 0; -+ const gchar *ical_location = e_mapi_cal_tz_util_get_ical_equivalent (mapi_tzid); -+ -+ if (ical_location && *ical_location) -+ zone = icaltimezone_get_builtin_timezone (ical_location); -+ if (!zone) -+ zone = icaltimezone_get_utc_timezone (); -+ vtimezone = icaltimezone_get_component (zone); -+ if (vtimezone) -+ rules = (icalcomponent_count_components (vtimezone, ICAL_XSTANDARD_COMPONENT) + -+ icalcomponent_count_components (vtimezone, ICAL_XDAYLIGHT_COMPONENT)) / 2; -+ if (!rules) -+ rules = 1; - - ba = g_byte_array_new (); - -@@ -401,8 +606,8 @@ e_mapi_cal_util_mapi_tz_to_bin (const gc - ba = g_byte_array_append (ba, (const guint8 *)buf, (sizeof (gunichar2) * items_written)); - g_free (buf); - -- /* number of rules *//* FIXME: Need to support rules */ -- flag16 = 0x0000; -+ /* number of rules */ -+ flag16 = rules; - ba = g_byte_array_append (ba, (const guint8 *)&flag16, sizeof (guint16)); - - /* wFlags: we know only keyname based names */ -@@ -421,7 +626,8 @@ e_mapi_cal_util_mapi_tz_to_bin (const gc - flag8 = TZ_BIN_VERSION_MAJOR; - ba = g_byte_array_prepend (ba, (const guint8 *)&flag8, sizeof (guint8)); - -- /* Rules may now be appended here */ -+ /* Rules */ -+ add_timezone_rules (ba, is_recur, vtimezone, zone); - - bin->cb = ba->len; - bin->lpb = talloc_memdup (mem_ctx, ba->data, ba->len); -diff -up evolution-mapi-3.8.5/src/libexchangemapi/e-mapi-cal-tz-utils.h.show-events-owa evolution-mapi-3.8.5/src/libexchangemapi/e-mapi-cal-tz-utils.h ---- evolution-mapi-3.8.5/src/libexchangemapi/e-mapi-cal-tz-utils.h.show-events-owa 2012-03-26 10:17:12.000000000 +0200 -+++ evolution-mapi-3.8.5/src/libexchangemapi/e-mapi-cal-tz-utils.h 2013-10-17 12:30:05.858075342 +0200 -@@ -39,7 +39,8 @@ void e_mapi_cal_tz_util_destroy (void) - void e_mapi_cal_tz_util_dump (void); - void e_mapi_cal_util_mapi_tz_to_bin (const gchar *mapi_tzid, - struct SBinary_short *bin, -- TALLOC_CTX *mem_ctx); -+ TALLOC_CTX *mem_ctx, -+ gboolean is_recur); - int e_mapi_cal_util_mapi_tz_pidlidtimezone (icaltimezone *ictz); - gchar * e_mapi_cal_util_bin_to_mapi_tz (const guint8 *lpb, guint32 cb); - -diff -up evolution-mapi-3.8.5/src/libexchangemapi/e-mapi-cal-utils.c.show-events-owa evolution-mapi-3.8.5/src/libexchangemapi/e-mapi-cal-utils.c ---- evolution-mapi-3.8.5/src/libexchangemapi/e-mapi-cal-utils.c.show-events-owa 2013-01-15 14:03:36.000000000 +0100 -+++ evolution-mapi-3.8.5/src/libexchangemapi/e-mapi-cal-utils.c 2013-10-17 12:30:05.859075342 +0200 -@@ -1859,8 +1859,15 @@ e_mapi_cal_utils_comp_to_object (EMapiCo - /* Start TZ */ - mapi_tzid = e_mapi_cal_tz_util_get_mapi_equivalent ((dtstart_tz_location && *dtstart_tz_location) ? dtstart_tz_location : "UTC"); - if (mapi_tzid && *mapi_tzid) { -- e_mapi_cal_util_mapi_tz_to_bin (mapi_tzid, &start_tz, object); -+ e_mapi_cal_util_mapi_tz_to_bin (mapi_tzid, &start_tz, object, FALSE); - set_value (PidLidAppointmentTimeZoneDefinitionStartDisplay, &start_tz); -+ -+ if (e_cal_component_has_recurrences (comp)) { -+ struct SBinary_short recur_tz; -+ -+ e_mapi_cal_util_mapi_tz_to_bin (mapi_tzid, &recur_tz, object, TRUE); -+ set_value (PidLidAppointmentTimeZoneDefinitionRecur, &recur_tz); -+ } - } - set_value (PidLidTimeZoneDescription, mapi_tzid ? mapi_tzid : ""); - -@@ -1873,7 +1880,7 @@ e_mapi_cal_utils_comp_to_object (EMapiCo - /* End TZ */ - mapi_tzid = e_mapi_cal_tz_util_get_mapi_equivalent ((dtend_tz_location && *dtend_tz_location) ? dtend_tz_location : "UTC"); - if (mapi_tzid && *mapi_tzid) { -- e_mapi_cal_util_mapi_tz_to_bin (mapi_tzid, &end_tz, object); -+ e_mapi_cal_util_mapi_tz_to_bin (mapi_tzid, &end_tz, object, FALSE); - set_value (PidLidAppointmentTimeZoneDefinitionEndDisplay, &end_tz); - } - diff --git a/SPECS/evolution-mapi.spec b/SPECS/evolution-mapi.spec index 7f052b3..72af402 100644 --- a/SPECS/evolution-mapi.spec +++ b/SPECS/evolution-mapi.spec @@ -1,28 +1,22 @@ %define openchange_version 2.0 %define intltool_version 0.35.5 -%define evo_base_version 3.8 +%define evo_base_version 3.12 %define strict_build_settings 0 ### Abstract ### Name: evolution-mapi -Version: 3.8.5 -Release: 6%{?dist} +Version: 3.12.10 +Release: 3%{?dist} Group: Applications/Productivity Summary: Evolution extension for MS Exchange 2007 servers License: LGPLv2+ -URL: http://projects.gnome.org/evolution -Source: http://ftp.gnome.org/pub/gnome/sources/evolution-mapi/3.8/evolution-mapi-%{version}.tar.xz +URL: https://wiki.gnome.org/Apps/Evolution +Source: http://ftp.gnome.org/pub/gnome/sources/evolution-mapi/3.12/evolution-mapi-%{version}.tar.xz BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) -# RH bug #619842 -Patch01: evolution-mapi-3.8.5-message-attachment-read.patch - -# RH bug #1019910 -Patch02: evolution-mapi-3.8.5-show-events-owa.patch - ### Dependencies ### Requires: evolution >= %{version} @@ -32,15 +26,24 @@ Requires: evolution-data-server >= %{version} BuildRequires: autoconf BuildRequires: automake -BuildRequires: evolution-data-server-devel >= %{version} -BuildRequires: evolution-devel >= %{version} BuildRequires: gettext BuildRequires: gnome-common BuildRequires: intltool >= %{intltool_version} -BuildRequires: libtalloc-devel BuildRequires: libtool >= 1.5 -BuildRequires: openchange-devel >= %{openchange_version} -BuildRequires: samba4-devel + +BuildRequires: pkgconfig(camel-1.2) >= %{version} +BuildRequires: pkgconfig(evolution-data-server-1.2) >= %{version} +BuildRequires: pkgconfig(evolution-mail-3.0) >= %{version} +BuildRequires: pkgconfig(evolution-shell-3.0) >= %{version} +BuildRequires: pkgconfig(glib-2.0) +BuildRequires: pkgconfig(gtk+-3.0) +BuildRequires: pkgconfig(libebackend-1.2) >= %{version} +BuildRequires: pkgconfig(libebook-1.2) >= %{version} +BuildRequires: pkgconfig(libecal-1.2) >= %{version} +BuildRequires: pkgconfig(libedata-book-1.2) >= %{version} +BuildRequires: pkgconfig(libedata-cal-1.2) >= %{version} +BuildRequires: pkgconfig(libemail-engine) >= %{version} +BuildRequires: pkgconfig(libmapi) >= %{openchange_version} %description This package allows Evolution to interact with MS Exchange 2007 servers. @@ -49,20 +52,28 @@ This package allows Evolution to interact with MS Exchange 2007 servers. Summary: Development files for building against %{name} Group: Development/Libraries Requires: %{name} = %{version}-%{release} -Requires: evolution-data-server-devel >= %{version} -Requires: evolution-devel >= %{version} -Requires: openchange-devel >= %{openchange_version} +Requires: pkgconfig(camel-1.2) >= %{version} +Requires: pkgconfig(evolution-data-server-1.2) >= %{version} +Requires: pkgconfig(evolution-mail-3.0) >= %{version} +Requires: pkgconfig(evolution-shell-3.0) >= %{version} +Requires: pkgconfig(libebackend-1.2) >= %{version} +Requires: pkgconfig(libebook-1.2) >= %{version} +Requires: pkgconfig(libecal-1.2) >= %{version} +Requires: pkgconfig(libedata-book-1.2) >= %{version} +Requires: pkgconfig(libedata-cal-1.2) >= %{version} +Requires: pkgconfig(libemail-engine) >= %{version} +Requires: pkgconfig(libmapi) >= %{openchange_version} %description devel Development files needed for building things which link against %{name}. %prep %setup -q -%patch01 -p1 -b .message-attachment-read -%patch02 -p1 -b .show-events-owa %build +CFLAGS="$RPM_OPT_FLAGS" + # Add stricter build settings here as the source code gets cleaned up. # We want to make sure things like compiler warnings and avoiding deprecated # functions in the GNOME/GTK+ libraries stay fixed. @@ -82,6 +93,8 @@ CFLAGS="$CFLAGS \ -Werror-implicit-function-declaration" %endif +export CFLAGS="$CFLAGS -Wno-deprecated-declarations" + # Regenerate configure to pick up changes autoreconf --force --install @@ -110,6 +123,7 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/evolution-data-server/calendar-backends/libecalbackendmapi.so %{_libdir}/evolution-data-server/registry-modules/module-mapi-backend.so %{_libdir}/evolution/%{evo_base_version}/modules/module-mapi-configuration.so +%{_datadir}/appdata/evolution-mapi.metainfo.xml %{_datadir}/evolution-data-server/mapi %files devel @@ -119,6 +133,15 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/pkgconfig/libexchangemapi-1.0.pc %changelog +* Wed Jul 08 2015 Milan Crha - 3.12.10-3 +- Rebuild against updated libical + +* Wed Jul 08 2015 Milan Crha - 3.12.10-2 +- Rebuild against updated libical + +* Mon May 04 2015 Milan Crha - 3.12.10-1 +- Update to 3.12.10 + * Fri Jan 24 2014 Daniel Mach - 3.8.5-6 - Mass rebuild 2014-01-24