[packages/evolution-mapi] Rel 2
arekm
arekm at pld-linux.org
Sun Aug 23 02:17:24 CEST 2026
commit 49e6ded6dfdf12745e51003aa3834e291680a14f
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Sun Aug 23 02:17:13 2026 +0200
Rel 2
evolution-mapi-camel-3.60.patch | 523 ++++++++++++++++++++++++++++++++++++++++
evolution-mapi-eds-3.60.patch | 59 +++++
evolution-mapi-libical4.patch | 49 ++++
evolution-mapi.spec | 15 +-
4 files changed, 641 insertions(+), 5 deletions(-)
---
diff --git a/evolution-mapi.spec b/evolution-mapi.spec
index c00e626..0ee8dde 100644
--- a/evolution-mapi.spec
+++ b/evolution-mapi.spec
@@ -2,22 +2,24 @@ Summary: Evolution extension for Exchange MAPI
Summary(pl.UTF-8): Rozszerzenie Evolution dla Exchange MAPI
Name: evolution-mapi
Version: 3.56.0
-Release: 1
+Release: 2
License: LGPL v2+
Group: X11/Applications/Mail
Source0: https://download.gnome.org/sources/evolution-mapi/3.56/%{name}-%{version}.tar.xz
# Source0-md5: f05922ad90ded7efaf89c020a51fa833
+Patch0: %{name}-libical4.patch
+Patch1: %{name}-eds-3.60.patch
+Patch2: %{name}-camel-3.60.patch
URL: https://gitlab.gnome.org/GNOME/evolution/-/wikis/home
BuildRequires: cmake >= 3.15
-BuildRequires: evolution-data-server-devel >= %{version}
-BuildRequires: evolution-data-server-gtk3-devel >= %{version}
+BuildRequires: evolution-data-server-devel >= 3.60
+BuildRequires: evolution-data-server-gtk3-devel >= 3.60
BuildRequires: evolution-devel >= %{version}
BuildRequires: gettext-tools
BuildRequires: glib2-devel >= 1:2.46
BuildRequires: gtk+3-devel >= 3.10
-BuildRequires: gtk-doc >= 1.9
BuildRequires: intltool >= 0.35.5
-BuildRequires: libical-devel
+BuildRequires: libical-glib-devel
BuildRequires: openchange-devel >= 2.3
BuildRequires: pkgconfig
BuildRequires: rpmbuild(macros) >= 1.605
@@ -43,6 +45,9 @@ MAPI.
%prep
%setup -q
+%patch -P0 -p1
+%patch -P1 -p1
+%patch -P2 -p1
%build
%cmake -B build \
diff --git a/evolution-mapi-camel-3.60.patch b/evolution-mapi-camel-3.60.patch
new file mode 100644
index 0000000..c155531
--- /dev/null
+++ b/evolution-mapi-camel-3.60.patch
@@ -0,0 +1,523 @@
+--- evolution-mapi-3.56.0.orig/src/camel/camel-mapi-folder.h 2025-03-14 08:30:39.000000000 +0100
++++ evolution-mapi-3.56.0/src/camel/camel-mapi-folder.h 2026-08-22 23:18:15.838836893 +0200
+@@ -62,8 +62,6 @@ struct _CamelMapiFolder {
+
+ mapi_id_t folder_id;
+
+- CamelFolderSearch *search;
+-
+ CamelDataCache *cache;
+
+ /* copied from CamelMapiStoreInfo */
+--- evolution-mapi-3.56.0.orig/src/camel/camel-mapi-folder.c 2025-03-14 08:30:39.000000000 +0100
++++ evolution-mapi-3.56.0/src/camel/camel-mapi-folder.c 2026-08-22 23:18:41.319635644 +0200
+@@ -43,14 +43,7 @@
+ #define SUMMARY_FETCH_BATCH_COUNT 150
+ #define d(x)
+
+-#define CAMEL_MAPI_FOLDER_LOCK(f, l) \
+- (g_mutex_lock(&((CamelMapiFolder *)f)->priv->l))
+-#define CAMEL_MAPI_FOLDER_UNLOCK(f, l) \
+- (g_mutex_unlock(&((CamelMapiFolder *)f)->priv->l))
+-
+ struct _CamelMapiFolderPrivate {
+- GMutex search_lock; /* for locking the search object */
+-
+ gchar *foreign_username;
+ };
+
+@@ -103,44 +96,6 @@ static gboolean mapi_folder_synchronize
+
+ G_DEFINE_TYPE_WITH_PRIVATE (CamelMapiFolder, camel_mapi_folder, CAMEL_TYPE_OFFLINE_FOLDER)
+
+-static GPtrArray *
+-mapi_folder_search_by_expression (CamelFolder *folder,
+- const gchar *expression,
+- GCancellable *cancellable,
+- GError **error)
+-{
+- CamelMapiFolder *mapi_folder = CAMEL_MAPI_FOLDER(folder);
+- GPtrArray *matches;
+-
+- CAMEL_MAPI_FOLDER_LOCK(mapi_folder, search_lock);
+- camel_folder_search_set_folder (mapi_folder->search, folder);
+- matches = camel_folder_search_search(mapi_folder->search, expression, NULL, cancellable, error);
+- CAMEL_MAPI_FOLDER_UNLOCK(mapi_folder, search_lock);
+-
+- return matches;
+-}
+-
+-static GPtrArray *
+-mapi_folder_search_by_uids (CamelFolder *folder,
+- const gchar *expression,
+- GPtrArray *uids,
+- GCancellable *cancellable,
+- GError **error)
+-{
+- GPtrArray *matches;
+- CamelMapiFolder *mapi_folder = CAMEL_MAPI_FOLDER (folder);
+-
+- if (uids->len == 0)
+- return g_ptr_array_new ();
+-
+- CAMEL_MAPI_FOLDER_LOCK (mapi_folder, search_lock);
+- camel_folder_search_set_folder (mapi_folder->search, folder);
+- matches = camel_folder_search_search (mapi_folder->search, expression, uids, cancellable, error);
+- CAMEL_MAPI_FOLDER_UNLOCK (mapi_folder, search_lock);
+-
+- return matches;
+-}
+-
+ static void
+ mapi_set_message_id (CamelMessageInfo *mi,
+ const gchar *message_id)
+@@ -811,7 +766,7 @@ camel_mapi_folder_fetch_summary (CamelFo
+ camel_folder_summary_prepare_fetch_all (camel_folder_get_folder_summary (folder), NULL);
+
+ gco.removed_uids = g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify) camel_pstring_free, NULL);
+- known_uids = camel_folder_summary_get_array (camel_folder_get_folder_summary (folder));
++ known_uids = camel_folder_summary_dup_uids (camel_folder_get_folder_summary (folder));
+ if (known_uids) {
+ gint ii;
+
+@@ -819,7 +774,7 @@ camel_mapi_folder_fetch_summary (CamelFo
+ g_hash_table_insert (gco.removed_uids, (gpointer) camel_pstring_strdup (g_ptr_array_index (known_uids, ii)), GINT_TO_POINTER (1));
+ }
+
+- camel_folder_summary_free_array (known_uids);
++ g_ptr_array_unref (known_uids);
+ }
+ }
+
+@@ -973,21 +928,6 @@ end1:
+ return success;
+ }
+
+-static void
+-mapi_folder_search_free (CamelFolder *folder, GPtrArray *uids)
+-{
+- CamelMapiFolder *mapi_folder = CAMEL_MAPI_FOLDER(folder);
+-
+- g_return_if_fail (mapi_folder->search);
+-
+- CAMEL_MAPI_FOLDER_LOCK(mapi_folder, search_lock);
+-
+- camel_folder_search_free_result (mapi_folder->search, uids);
+-
+- CAMEL_MAPI_FOLDER_UNLOCK(mapi_folder, search_lock);
+-
+-}
+-
+ static guint32
+ mapi_folder_get_permanent_flags (CamelFolder *folder)
+ {
+@@ -1040,11 +980,6 @@ mapi_folder_dispose (GObject *object)
+ mapi_folder->cache = NULL;
+ }
+
+- if (mapi_folder->search) {
+- g_object_unref (mapi_folder->search);
+- mapi_folder->search = NULL;
+- }
+-
+ parent_store = camel_folder_get_parent_store (CAMEL_FOLDER (mapi_folder));
+ if (parent_store) {
+ camel_store_summary_disconnect_folder_summary (
+@@ -1057,17 +992,6 @@ mapi_folder_dispose (GObject *object)
+ }
+
+ static void
+-mapi_folder_finalize (GObject *object)
+-{
+- CamelMapiFolder *mapi_folder = CAMEL_MAPI_FOLDER (object);
+-
+- g_mutex_clear (&mapi_folder->priv->search_lock);
+-
+- /* Chain up to parent's finalize() method. */
+- G_OBJECT_CLASS (camel_mapi_folder_parent_class)->finalize (object);
+-}
+-
+-static void
+ mapi_folder_constructed (GObject *object)
+ {
+ CamelNetworkSettings *network_settings;
+@@ -1267,7 +1191,7 @@ mapi_folder_expunge_sync (CamelFolder *f
+
+ mf = CAMEL_MAPI_FOLDER (opened_folder);
+ if (mf && (mf->camel_folder_flags & CAMEL_FOLDER_TYPE_MASK) != CAMEL_FOLDER_TYPE_TRASH) {
+- if (camel_folder_get_deleted_message_count (opened_folder) > 0)
++ if (camel_folder_summary_get_deleted_count (camel_folder_get_folder_summary (opened_folder)) > 0)
+ camel_folder_synchronize_sync (opened_folder, TRUE, cancellable, NULL);
+ }
+
+@@ -1305,7 +1229,7 @@ mapi_folder_expunge_sync (CamelFolder *f
+
+ changes = camel_folder_change_info_new ();
+ folder_summary = camel_folder_get_folder_summary (folder);
+- known_uids = camel_folder_summary_get_array (folder_summary);
++ known_uids = camel_folder_summary_dup_uids (folder_summary);
+
+ /*Collect UIDs of deleted messages.*/
+ for (i = 0; known_uids && i < known_uids->len; i++) {
+@@ -1329,7 +1253,7 @@ mapi_folder_expunge_sync (CamelFolder *f
+ g_clear_object (&info);
+ }
+
+- camel_folder_summary_free_array (known_uids);
++ g_ptr_array_unref (known_uids);
+
+ deleted_items_uid_head = deleted_items_uid;
+
+@@ -1628,7 +1552,7 @@ mapi_folder_synchronize_sync (CamelFolde
+ camel_folder_summary_lock (folder_summary);
+ camel_folder_summary_prepare_fetch_all (folder_summary, NULL);
+
+- known_uids = camel_folder_summary_get_array (folder_summary);
++ known_uids = camel_folder_summary_dup_uids (folder_summary);
+ for (i = 0; known_uids && i < known_uids->len; i++) {
+ info = camel_folder_summary_get (folder_summary, g_ptr_array_index (known_uids, i));
+
+@@ -1687,7 +1611,7 @@ mapi_folder_synchronize_sync (CamelFolde
+ g_clear_object (&info);
+ }
+
+- camel_folder_summary_free_array (known_uids);
++ g_ptr_array_unref (known_uids);
+ camel_folder_summary_unlock (folder_summary);
+
+ /*
+@@ -1973,16 +1897,12 @@ camel_mapi_folder_class_init (CamelMapiF
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->dispose = mapi_folder_dispose;
+- object_class->finalize = mapi_folder_finalize;
+ object_class->constructed = mapi_folder_constructed;
+
+ folder_class = CAMEL_FOLDER_CLASS (class);
+ folder_class->get_permanent_flags = mapi_folder_get_permanent_flags;
+ folder_class->rename = mapi_folder_rename;
+- folder_class->search_by_expression = mapi_folder_search_by_expression;
+ folder_class->cmp_uids = mapi_cmp_uids;
+- folder_class->search_by_uids = mapi_folder_search_by_uids;
+- folder_class->search_free = mapi_folder_search_free;
+ folder_class->append_message_sync = mapi_folder_append_message_sync;
+ folder_class->expunge_sync = mapi_folder_expunge_sync;
+ folder_class->get_message_sync = mapi_folder_get_message_sync;
+@@ -2002,8 +1922,6 @@ camel_mapi_folder_init (CamelMapiFolder
+
+ camel_folder_set_flags (folder, CAMEL_FOLDER_HAS_SUMMARY_CAPABILITY);
+
+- g_mutex_init (&mapi_folder->priv->search_lock);
+-
+ mapi_folder->need_rescan = TRUE;
+ }
+
+@@ -2072,9 +1990,8 @@ camel_mapi_folder_new (CamelStore *store
+
+ /* set/load persistent state */
+ state_file = g_build_filename (folder_dir, short_name, "cmeta", NULL);
+- camel_object_set_state_filename (CAMEL_OBJECT (folder), state_file);
+- g_free(state_file);
+- camel_object_state_read (CAMEL_OBJECT (folder));
++ camel_folder_take_state_filename (folder, g_steal_pointer (&state_file));
++ camel_folder_load_state (folder);
+
+ state_file = g_build_filename (folder_dir, short_name, NULL);
+ mapi_folder->cache = camel_data_cache_new (state_file, error);
+@@ -2120,12 +2037,6 @@ camel_mapi_folder_new (CamelStore *store
+ }
+ }
+
+- mapi_folder->search = camel_folder_search_new ();
+- if (!mapi_folder->search) {
+- g_object_unref (folder);
+- return NULL;
+- }
+-
+ si = camel_store_summary_path (mapi_store->summary, folder_name);
+ if (si) {
+ CamelMapiStoreInfo *msi = (CamelMapiStoreInfo *) si;
+--- evolution-mapi-3.56.0.orig/src/camel/camel-mapi-folder-summary.c 2025-03-14 08:30:39.000000000 +0100
++++ evolution-mapi-3.56.0/src/camel/camel-mapi-folder-summary.c 2026-08-22 23:19:09.826629781 +0200
+@@ -35,8 +35,8 @@
+ #define CAMEL_MAPI_FOLDER_SUMMARY_VERSION (1)
+
+ /*Prototypes*/
+-static CamelFIRecord *mapi_summary_header_save (CamelFolderSummary *, GError **error);
+-static gboolean mapi_summary_header_load (CamelFolderSummary *, CamelFIRecord *fir);
++static gboolean mapi_summary_header_save (CamelFolderSummary *, CamelStoreDBFolderRecord *inout_record, GError **error);
++static gboolean mapi_summary_header_load (CamelFolderSummary *, CamelStoreDBFolderRecord *record);
+
+ /*End of Prototypes*/
+
+@@ -88,7 +88,7 @@ camel_mapi_folder_summary_new (CamelFold
+ }
+
+ static gboolean
+-mapi_summary_header_load (CamelFolderSummary *summary, CamelFIRecord *fir)
++mapi_summary_header_load (CamelFolderSummary *summary, CamelStoreDBFolderRecord *record)
+ {
+ CamelMapiFolderSummary *mapi_summary = CAMEL_MAPI_FOLDER_SUMMARY (summary);
+ CamelFolderSummaryClass *folder_summary_class;
+@@ -97,10 +97,10 @@ mapi_summary_header_load (CamelFolderSum
+ folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (
+ camel_mapi_folder_summary_parent_class);
+
+- if (!folder_summary_class->summary_header_load (summary, fir))
++ if (!folder_summary_class->summary_header_load (summary, record))
+ return FALSE;
+
+- part = fir->bdata;
++ part = record->bdata;
+
+ if (part)
+ mapi_summary->version = camel_util_bdata_get_number (&part, 0);
+@@ -108,22 +108,19 @@ mapi_summary_header_load (CamelFolderSum
+ return TRUE;
+ }
+
+-static CamelFIRecord *
+-mapi_summary_header_save (CamelFolderSummary *summary, GError **error)
++static gboolean
++mapi_summary_header_save (CamelFolderSummary *summary, CamelStoreDBFolderRecord *inout_record, GError **error)
+ {
+ CamelFolderSummaryClass *folder_summary_class;
+- struct _CamelFIRecord *fir;
+
+ folder_summary_class = CAMEL_FOLDER_SUMMARY_CLASS (camel_mapi_folder_summary_parent_class);
+
+- fir = folder_summary_class->summary_header_save (summary, error);
+-
+- if (!fir)
+- return NULL;
++ if (!folder_summary_class->summary_header_save (summary, inout_record, error))
++ return FALSE;
+
+- fir->bdata = g_strdup_printf ("%d", CAMEL_MAPI_FOLDER_SUMMARY_VERSION);
++ inout_record->bdata = g_strdup_printf ("%d", CAMEL_MAPI_FOLDER_SUMMARY_VERSION);
+
+- return fir;
++ return TRUE;
+ }
+
+ void
+@@ -136,7 +133,7 @@ mapi_summary_clear (CamelFolderSummary *
+ GPtrArray *known_uids;
+
+ changes = camel_folder_change_info_new ();
+- known_uids = camel_folder_summary_get_array (summary);
++ known_uids = camel_folder_summary_dup_uids (summary);
+ for (i = 0; known_uids && i < known_uids->len; i++) {
+ if (!(info = camel_folder_summary_get (summary, g_ptr_array_index (known_uids, i))))
+ continue;
+@@ -147,7 +144,7 @@ mapi_summary_clear (CamelFolderSummary *
+ g_clear_object (&info);
+ }
+
+- camel_folder_summary_free_array (known_uids);
++ g_ptr_array_unref (known_uids);
+ camel_folder_summary_clear (summary, NULL);
+
+ if (camel_folder_change_info_changed (changes))
+--- evolution-mapi-3.56.0.orig/src/camel/camel-mapi-message-info.c 2025-03-14 08:30:39.000000000 +0100
++++ evolution-mapi-3.56.0/src/camel/camel-mapi-message-info.c 2026-08-22 23:19:27.883164488 +0200
+@@ -70,7 +70,7 @@ mapi_message_info_clone (const CamelMess
+
+ static gboolean
+ mapi_message_info_load (CamelMessageInfo *mi,
+- const CamelMIRecord *record,
++ const CamelStoreDBMessageRecord *record,
+ /* const */ gchar **bdata_ptr)
+ {
+ CamelMapiMessageInfo *mmi;
+@@ -93,7 +93,7 @@ mapi_message_info_load (CamelMessageInfo
+
+ static gboolean
+ mapi_message_info_save (const CamelMessageInfo *mi,
+- CamelMIRecord *record,
++ CamelStoreDBMessageRecord *record,
+ GString *bdata_str)
+ {
+ CamelMapiMessageInfo *mmi;
+--- evolution-mapi-3.56.0.orig/src/camel/camel-mapi-provider.c 2025-03-14 08:30:39.000000000 +0100
++++ evolution-mapi-3.56.0/src/camel/camel-mapi-provider.c 2026-08-22 23:20:17.924083268 +0200
+@@ -32,11 +32,6 @@
+ #include "camel-mapi-store.h"
+ #include "camel-mapi-transport.h"
+
+-static void add_hash (guint *, gchar *);
+-static guint mapi_url_hash (gconstpointer);
+-static gint check_equal (gchar *, gchar *);
+-static gint mapi_url_equal (gconstpointer, gconstpointer);
+-
+ static CamelProviderConfEntry mapi_conf_entries[] = {
+ { CAMEL_PROVIDER_CONF_SECTION_START, "mailcheck", NULL,
+ N_("Checking for new mail") },
+@@ -89,24 +84,12 @@ CamelServiceAuthType camel_mapi_password
+ TRUE
+ };
+
+-static gint
+-mapi_auto_detect_cb(CamelURL *url, GHashTable **auto_detected, GError **error)
+-{
+- *auto_detected = g_hash_table_new (g_str_hash, g_str_equal);
+- g_hash_table_insert (*auto_detected, g_strdup ("poa"), g_strdup (url->host));
+-
+- return 0;
+-}
+-
+ void
+ camel_provider_module_init(void)
+ {
+ mapi_provider.name = "Exchange MAPI";
+ mapi_provider.translation_domain = (gchar *) GETTEXT_PACKAGE;
+- mapi_provider.auto_detect = mapi_auto_detect_cb;
+ mapi_provider.authtypes = g_list_prepend (mapi_provider.authtypes, &camel_mapi_password_authtype);
+- mapi_provider.url_hash = mapi_url_hash;
+- mapi_provider.url_equal = mapi_url_equal;
+ mapi_provider.object_types[CAMEL_PROVIDER_STORE] = camel_mapi_store_get_type();
+ mapi_provider.object_types[CAMEL_PROVIDER_TRANSPORT] = camel_mapi_transport_get_type();
+
+@@ -118,55 +101,3 @@ camel_provider_module_init(void)
+
+ camel_provider_register (&mapi_provider);
+ }
+-
+-static void
+-add_hash(guint *hash, gchar *s)
+-{
+- if (s) {
+- *hash ^= g_str_hash(s);
+- }
+-}
+-
+-static guint
+-mapi_url_hash(gconstpointer key)
+-{
+- const CamelURL *u = (CamelURL *)key;
+- guint hash = 0;
+-
+- add_hash (&hash, u->user);
+- add_hash (&hash, u->authmech);
+- add_hash (&hash, u->host);
+- hash ^= u->port;
+-
+- return hash;
+-}
+-
+-static gint
+-check_equal(gchar *s1, gchar *s2)
+-{
+- if (s1 == NULL) {
+- if (s2 == NULL) {
+- return TRUE;
+- } else {
+- return FALSE;
+- }
+- }
+- if (s2 == NULL) {
+- return FALSE;
+- }
+-
+- return strcmp (s1, s2) == 0;
+-}
+-
+-static gint
+-mapi_url_equal (gconstpointer a, gconstpointer b)
+-{
+- const CamelURL *u1 = a;
+- const CamelURL *u2 = b;
+-
+- return check_equal (u1->protocol, u2->protocol)
+- && check_equal (u1->user, u2->user)
+- && check_equal (u1->authmech, u2->authmech)
+- && check_equal (u1->host, u2->host)
+- && u1->port == u2->port;
+-}
+--- evolution-mapi-3.56.0.orig/src/camel/camel-mapi-store.c 2025-03-14 08:30:39.000000000 +0100
++++ evolution-mapi-3.56.0/src/camel/camel-mapi-store.c 2026-08-22 23:18:50.291519360 +0200
+@@ -518,7 +518,7 @@ mapi_folders_sync (CamelMapiStore *store
+ (msi->mapi_folder_flags & CAMEL_STORE_INFO_FOLDER_SUBSCRIBED) == 0))
+ g_hash_table_insert (old_cache_folders, g_strdup (camel_store_info_get_path ((CamelStoreInfo *) msi)), GINT_TO_POINTER (1));
+ }
+- camel_store_summary_array_free (store->summary, array);
++ g_ptr_array_unref (array);
+
+ subscription_list = (flags & CAMEL_STORE_FOLDER_INFO_SUBSCRIPTION_LIST);
+ if (subscription_list) {
+@@ -846,7 +846,7 @@ mapi_get_folder_info_offline (CamelStore
+ }
+ }
+
+- camel_store_summary_array_free (mapi_store->summary, array);
++ g_ptr_array_unref (array);
+
+ if (!subscription_list && !*top) {
+ if (has_public_folders) {
+@@ -970,7 +970,7 @@ mapi_rename_folder_infos (CamelMapiStore
+ }
+ }
+
+- camel_store_summary_array_free (mapi_store->summary, array);
++ g_ptr_array_unref (array);
+ }
+
+ static void
+@@ -2049,7 +2049,7 @@ mapi_store_unsubscribe_subfolders (Camel
+ FALSE, cancellable, error);
+ }
+
+- camel_store_summary_array_free (mapi_store->summary, array);
++ g_ptr_array_unref (array);
+ g_slist_free (subfolders);
+
+ return res;
+@@ -2956,7 +2956,7 @@ mapi_store_update_foreign_subfolders_thr
+ }
+ }
+
+- camel_store_summary_array_free (mapi_store->summary, array);
++ g_ptr_array_unref (array);
+ g_hash_table_destroy (processed_fids);
+ g_object_unref (connection);
+ }
+@@ -3043,7 +3043,7 @@ mapi_authenticate_sync (CamelService *se
+ }
+ }
+
+- camel_store_summary_array_free (store->summary, array);
++ g_ptr_array_unref (array);
+ } else if (!krb_error && (
+ g_error_matches (mapi_error, E_MAPI_ERROR, MAPI_E_LOGON_FAILED) ||
+ g_error_matches (mapi_error, E_MAPI_ERROR, ecRpcFailed))) {
+@@ -3234,7 +3234,7 @@ mapi_folders_update_hash_tables_from_cac
+ g_free (pid);
+ }
+
+- camel_store_summary_array_free (store->summary, array);
++ g_ptr_array_unref (array);
+ }
+
+ /* static const gchar * */
+--- evolution-mapi-3.56.0.orig/src/camel/camel-mapi-store-summary.c 2025-03-14 08:30:39.000000000 +0100
++++ evolution-mapi-3.56.0/src/camel/camel-mapi-store-summary.c 2026-08-22 23:18:50.291855753 +0200
+@@ -285,7 +285,7 @@ camel_mapi_store_summary_get_folder_id (
+ }
+ }
+
+- camel_store_summary_array_free (s, array);
++ g_ptr_array_unref (array);
+
+ return adept;
+ }
+--- evolution-mapi-3.56.0.orig/src/configuration/e-mapi-subscribe-foreign-folder.c 2025-03-14 08:30:39.000000000 +0100
++++ evolution-mapi-3.56.0/src/configuration/e-mapi-subscribe-foreign-folder.c 2026-08-22 23:18:57.909262132 +0200
+@@ -106,7 +106,7 @@ add_foreign_folder_to_camel (CamelMapiSt
+ }
+ }
+
+- camel_store_summary_array_free (mapi_store->summary, array);
++ g_ptr_array_unref (array);
+
+ if (res) {
+ gchar *path;
diff --git a/evolution-mapi-eds-3.60.patch b/evolution-mapi-eds-3.60.patch
new file mode 100644
index 0000000..0273949
--- /dev/null
+++ b/evolution-mapi-eds-3.60.patch
@@ -0,0 +1,59 @@
+--- evolution-mapi-3.56.0.orig/src/libexchangemapi/e-mapi-book-utils.c 2025-03-14 08:30:39.000000000 +0100
++++ evolution-mapi-3.56.0/src/libexchangemapi/e-mapi-book-utils.c 2026-08-22 23:14:04.475173291 +0200
+@@ -480,7 +480,7 @@ e_mapi_book_utils_contact_to_object (ECo
+ member_values = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+ member_ids = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+
+- local = e_contact_get_attributes (old_contact, E_CONTACT_EMAIL);
++ local = e_vcard_get_attributes_by_name (E_VCARD (old_contact), e_contact_vcard_attribute (E_CONTACT_EMAIL));
+ for (l = local; l; l = l->next) {
+ EVCardAttribute *attr = l->data;
+ GList *param;
+@@ -499,7 +499,7 @@ e_mapi_book_utils_contact_to_object (ECo
+ }
+ }
+
+- g_list_free_full (local, (GDestroyNotify) e_vcard_attribute_free);
++ g_list_free (local);
+ }
+
+ set_value (PidTagMessageClass, IPM_DISTLIST);
+@@ -510,7 +510,7 @@ e_mapi_book_utils_contact_to_object (ECo
+ set_con_value (PidTagDisplayName, E_CONTACT_FILE_AS);
+ set_con_value (PidTagNormalizedSubject, E_CONTACT_FILE_AS);
+
+- local = e_contact_get_attributes (contact, E_CONTACT_EMAIL);
++ local = e_vcard_get_attributes_by_name (E_VCARD (contact), e_contact_vcard_attribute (E_CONTACT_EMAIL));
+ if (member_ids)
+ local = g_list_sort_with_data (local, cmp_member_id, member_ids);
+
+@@ -564,7 +564,6 @@ e_mapi_book_utils_contact_to_object (ECo
+ g_hash_table_destroy (member_values);
+ if (member_ids)
+ g_hash_table_destroy (member_ids);
+- g_list_foreach (local, (GFunc)e_vcard_attribute_free, NULL);
+ g_list_free (local);
+
+ set_value (PidLidDistributionListOneOffMembers, oneoff_members);
+--- evolution-mapi-3.56.0.orig/src/libexchangemapi/e-mapi-mail-utils.c 2025-03-14 08:30:39.000000000 +0100
++++ evolution-mapi-3.56.0/src/libexchangemapi/e-mapi-mail-utils.c 2026-08-22 23:14:09.303067003 +0200
+@@ -565,7 +565,7 @@ classify_attachments (EMapiConnection *c
+ if (!e_contact_get_const (contact, E_CONTACT_UID))
+ e_contact_set (contact, E_CONTACT_UID, "");
+
+- str = e_vcard_to_string (E_VCARD (contact), EVC_FORMAT_VCARD_30);
++ str = e_vcard_convert_to_string (E_VCARD (contact), E_VCARD_VERSION_30);
+ if (str) {
+ camel_mime_part_set_content (part, str, strlen (str), "text/x-vcard");
+
+--- evolution-mapi-3.56.0.orig/src/addressbook/e-book-backend-mapi.c 2025-03-14 08:30:39.000000000 +0100
++++ evolution-mapi-3.56.0/src/addressbook/e-book-backend-mapi.c 2026-08-22 23:14:39.664046528 +0200
+@@ -573,7 +573,7 @@ ebb_mapi_preload_infos_sync (EBookBacken
+ EBookMetaBackendInfo *nfo = g_hash_table_lookup (infos, e_contact_get_const (contact, E_CONTACT_UID));
+
+ if (nfo && !nfo->object)
+- nfo->object = e_vcard_to_string (E_VCARD (contact), EVC_FORMAT_VCARD_30);
++ nfo->object = e_vcard_convert_to_string (E_VCARD (contact), E_VCARD_VERSION_30);
+ }
+ }
+ }
diff --git a/evolution-mapi-libical4.patch b/evolution-mapi-libical4.patch
new file mode 100644
index 0000000..deaca94
--- /dev/null
+++ b/evolution-mapi-libical4.patch
@@ -0,0 +1,49 @@
+--- evolution-mapi-3.56.0.orig/src/libexchangemapi/e-mapi-cal-utils.c 2025-03-14 08:30:39.000000000 +0100
++++ evolution-mapi-3.56.0/src/libexchangemapi/e-mapi-cal-utils.c 2026-08-22 23:13:50.890486900 +0200
+@@ -168,7 +168,7 @@ get_prop_from_taskstatus (ICalPropertySt
+ }
+ }
+
+-static ICalProperty_Class
++static ICalPropertyClassenum
+ get_class_from_prop (uint32_t prop)
+ {
+ /* FIXME: is this mapping correct ? */
+@@ -185,7 +185,7 @@ get_class_from_prop (uint32_t prop)
+ }
+
+ static uint32_t
+-get_prop_from_class (ICalProperty_Class classif)
++get_prop_from_class (ICalPropertyClassenum classif)
+ {
+ /* FIXME: is this mapping correct ? */
+ switch (classif) {
+@@ -1247,7 +1247,7 @@ e_mapi_cal_util_object_to_comp (EMapiCon
+
+ itt1 = i_cal_time_new_from_timet_with_zone (displaytime.tv_sec, 0, NULL);
+ itt2 = i_cal_time_new_from_timet_with_zone (start.tv_sec, 0, NULL);
+- duration = i_cal_time_subtract (itt1, itt2);
++ duration = i_cal_duration_from_times (itt1, itt2);
+ g_clear_object (&itt1);
+ g_clear_object (&itt2);
+
+@@ -1851,7 +1851,7 @@ e_mapi_cal_utils_comp_to_object (EMapiCo
+ trigger = e_cal_component_alarm_get_trigger (alarm);
+ switch (e_cal_component_alarm_trigger_get_kind (trigger)) {
+ case E_CAL_COMPONENT_ALARM_TRIGGER_RELATIVE_START:
+- dur_int = (i_cal_duration_as_int (e_cal_component_alarm_trigger_get_duration (trigger))) / SECS_IN_MINUTE;
++ dur_int = (i_cal_duration_as_seconds (e_cal_component_alarm_trigger_get_duration (trigger))) / SECS_IN_MINUTE;
+ /* we cannot set an alarm to popup after the start of an appointment on Exchange */
+ flag32 = (dur_int < 0) ? -(dur_int) : 0;
+ break;
+@@ -2002,8 +2002,8 @@ e_mapi_cal_utils_comp_to_object (EMapiCo
+ }
+
+ /* Duration */
+- duration = i_cal_time_subtract (dtend, dtstart);
+- flag32 = i_cal_duration_as_int (duration);
++ duration = i_cal_duration_from_times (dtend, dtstart);
++ flag32 = i_cal_duration_as_seconds (duration);
+ flag32 /= MINUTES_IN_HOUR;
+ set_value (PidLidAppointmentDuration, &flag32);
+ g_clear_object (&duration);
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/evolution-mapi.git/commitdiff/49e6ded6dfdf12745e51003aa3834e291680a14f
More information about the pld-cvs-commit
mailing list