[evolution-couchdb] Rebuild against newer evolution-data-server

Milan Crha mcrha at fedoraproject.org
Mon Nov 28 10:42:30 UTC 2011


commit 5a8e0ac3f6e95b8d7098ce3667939673fd06a30d
Author: Milan Crha <mcrha at redhat.com>
Date:   Mon Nov 28 11:42:21 2011 +0100

    Rebuild against newer evolution-data-server

 evolution-couchdb-0.5.91-new-eds-api.patch |  418 ++++++++++++++++++++++++++++
 evolution-couchdb.spec                     |    7 +-
 2 files changed, 424 insertions(+), 1 deletions(-)
---
diff --git a/evolution-couchdb-0.5.91-new-eds-api.patch b/evolution-couchdb-0.5.91-new-eds-api.patch
new file mode 100644
index 0000000..59a7923
--- /dev/null
+++ b/evolution-couchdb-0.5.91-new-eds-api.patch
@@ -0,0 +1,418 @@
+diff -up evolution-couchdb-0.5.91/addressbook/e-book-backend-couchdb.c.new-eds-api evolution-couchdb-0.5.91/addressbook/e-book-backend-couchdb.c
+--- evolution-couchdb-0.5.91/addressbook/e-book-backend-couchdb.c.new-eds-api	2011-11-28 11:22:45.747349045 +0100
++++ evolution-couchdb-0.5.91/addressbook/e-book-backend-couchdb.c	2011-11-28 11:23:54.480135159 +0100
+@@ -25,6 +25,7 @@
+ #include <glib/gi18n-lib.h>
+ #include "e-book-backend-couchdb.h"
+ #include <libedataserver/eds-version.h>
++#include <libedataserver/e-data-server-util.h>
+ #include <libedata-book/e-book-backend-sexp.h>
+ #include <libedata-book/e-data-book.h>
+ #include <libedata-book/e-data-book-view.h>
+@@ -1067,7 +1068,9 @@ e_book_backend_couchdb_load_source (EBoo
+ 	GSList *doc_list, *sl;
+ 	const gchar *db_name;
+ 	EBookBackendCouchDB *couchdb_backend = E_BOOK_BACKEND_COUCHDB (backend);
+-#if EDS_CHECK_VERSION(3, 1, 2)
++#if EDS_CHECK_VERSION(3, 3, 1)
++	ESource *source = e_backend_get_source (E_BACKEND (backend));
++#elif EDS_CHECK_VERSION(3, 1, 2)
+ 	ESource *source = e_book_backend_get_source (backend);
+ #endif
+ 
+@@ -1308,26 +1311,49 @@ e_book_backend_couchdb_create_contact (E
+ #if EDS_CHECK_VERSION(3, 1, 2)
+ 				       GCancellable *cancellable,
+ #endif
+-				       const char *vcard)
++#if EDS_CHECK_VERSION(3, 3, 1)
++				       const GSList *vcards
++#else
++				       const gchar *vcard
++#endif
++					)
+ {
+ 	EContact *contact, *new_contact;
+ 	CouchdbDocument *document;
+ 	GError *error = NULL;
+ 	EBookBackendCouchDB *couchdb_backend = E_BOOK_BACKEND_COUCHDB (backend);
++#if EDS_CHECK_VERSION(3, 3, 1)
++	const gchar *vcard = vcards->data;
++
++	if (vcards->next) {
++		e_data_book_respond_create_contacts (book, opid,
++		                                     e_data_book_create_error (E_DATA_BOOK_STATUS_NOT_SUPPORTED, _("The backend does not support bulk additions")),
++		                                     NULL);
++		return;
++	}
++#endif
+ 
+ 	contact = e_contact_new_from_vcard (vcard);
+ 	document = couch_document_from_contact (couchdb_backend, contact);
+ 
+ 	/* save the contact into the DB */
+ 	if ((new_contact = put_document (couchdb_backend, document, &error)) != NULL) {
+-#if EDS_CHECK_VERSION(2, 31, 0)
++#if EDS_CHECK_VERSION(3, 3, 1)
++		GSList *added_contacts;
++
++		added_contacts = g_slist_append (NULL, new_contact);
++		e_data_book_respond_create_contacts (book, opid, NULL, added_contacts);
++		e_util_free_object_slist (added_contacts);
++#elif EDS_CHECK_VERSION(2, 31, 0)
+ 		e_data_book_respond_create (book, opid, NULL, new_contact);
+ #else
+ 		e_data_book_respond_create (book, opid, GNOME_Evolution_Addressbook_Success, new_contact);
+ #endif
+ 		g_object_unref (new_contact);
+ 	} else {
+-#if EDS_CHECK_VERSION(2, 31, 0)
++#if EDS_CHECK_VERSION(3, 3, 1)
++		e_data_book_respond_create_contacts (book, opid, error, NULL);
++#elif EDS_CHECK_VERSION(2, 31, 0)
+ 		e_data_book_respond_create (book, opid, error, NULL);
+ #else
+ 		e_data_book_respond_create (book, opid, GNOME_Evolution_Addressbook_OtherError, NULL);
+@@ -1467,26 +1493,49 @@ e_book_backend_couchdb_modify_contact (E
+ #if EDS_CHECK_VERSION(3, 1, 2)
+ 				       GCancellable *cancellable,
+ #endif
+-				       const char *vcard)
++#if EDS_CHECK_VERSION(3, 3, 1)
++				       const GSList *vcards
++#else
++				       const gchar *vcard
++#endif
++					)
+ {
+ 	EContact *contact, *new_contact;
+ 	CouchdbDocument *document;
+ 	GError *error = NULL;
+ 	EBookBackendCouchDB *couchdb_backend = E_BOOK_BACKEND_COUCHDB (backend);
++#if EDS_CHECK_VERSION(3, 3, 1)
++	const gchar *vcard = vcards->data;
++
++	if (vcards->next != NULL) {
++		e_data_book_respond_modify_contacts (book, opid,
++		                                     e_data_book_create_error (E_DATA_BOOK_STATUS_NOT_SUPPORTED, _("The backend does not support bulk modifications")),
++		                                     NULL);
++		return;
++	}
++#endif
+ 
+ 	contact = e_contact_new_from_vcard (vcard);
+ 	document = couch_document_from_contact (couchdb_backend, contact);
+ 
+ 	/* save the contact into the DB */
+ 	if ((new_contact = put_document (couchdb_backend, document, &error)) != NULL) {
+-#if EDS_CHECK_VERSION(2, 31, 0)
++#if EDS_CHECK_VERSION(3, 3, 1)
++		GSList *modified_contacts;
++
++		modified_contacts = g_slist_append (NULL, new_contact);
++		e_data_book_respond_modify_contacts (book, opid, NULL, modified_contacts);
++		e_util_free_object_slist (modified_contacts);
++#elif EDS_CHECK_VERSION(2, 31, 0)
+ 		e_data_book_respond_modify (book, opid, NULL, new_contact);
+ #else
+ 		e_data_book_respond_modify (book, opid, GNOME_Evolution_Addressbook_Success, new_contact);
+ #endif
+ 		g_object_unref (new_contact);
+ 	} else {
+-#if EDS_CHECK_VERSION(2, 31, 0)
++#if EDS_CHECK_VERSION(3, 3, 1)
++		e_data_book_respond_modify_contacts (book, opid, error, NULL);
++#elif EDS_CHECK_VERSION(2, 31, 0)
+ 		e_data_book_respond_modify (book, opid, error, NULL);
+ #else
+ 		e_data_book_respond_modify (book, opid, GNOME_Evolution_Addressbook_OtherError, NULL);
+@@ -1608,7 +1657,11 @@ e_book_backend_couchdb_start_book_view (
+ 		if (!vcard)
+ 			continue;
+ 
++#if EDS_CHECK_VERSION(3, 3, 1)
++		e_data_book_view_notify_update_vcard (book_view, e_contact_get_const (contact, E_CONTACT_UID), vcard);
++#else
+ 		e_data_book_view_notify_update_vcard (book_view, vcard);
++#endif
+ 
+ 		doc_list = g_list_remove (doc_list, contact);
+ 		g_object_unref (G_OBJECT (contact));
+@@ -1672,10 +1725,12 @@ e_book_backend_couchdb_get_backend_prope
+ 	}
+ }
+ 
++#if !EDS_CHECK_VERSION(3, 3, 1)
+ static void
+ e_book_backend_couchdb_set_online (EBookBackend *backend, gboolean is_online)
+ {
+ }
++#endif
+ 
+ #else /* EDS_CHECK_VERSION(3, 1, 2) */
+ static char *
+@@ -1837,7 +1892,9 @@ e_book_backend_couchdb_class_init (EBook
+ #if EDS_CHECK_VERSION(3, 1, 2)
+ 	parent_class->open                    = e_book_backend_couchdb_open;
+ 	parent_class->get_backend_property    = e_book_backend_couchdb_get_backend_property;
++	#if !EDS_CHECK_VERSION(3, 3, 1)
+ 	parent_class->set_online              = e_book_backend_couchdb_set_online;
++	#endif
+ #else
+ 	parent_class->load_source             = e_book_backend_couchdb_load_source;
+ 	parent_class->get_static_capabilities = e_book_backend_couchdb_get_static_capabilities;
+@@ -1848,9 +1905,14 @@ e_book_backend_couchdb_class_init (EBook
+ 	parent_class->cancel_operation        = e_book_backend_couchdb_cancel_operation;
+ 	parent_class->set_mode                = e_book_backend_couchdb_set_mode;
+ #endif
++#if EDS_CHECK_VERSION(3, 3, 1)
++	parent_class->create_contacts         = e_book_backend_couchdb_create_contact;
++	parent_class->modify_contacts         = e_book_backend_couchdb_modify_contact;
++#else
+ 	parent_class->create_contact          = e_book_backend_couchdb_create_contact;
+-	parent_class->remove_contacts         = e_book_backend_couchdb_remove_contacts;
+ 	parent_class->modify_contact          = e_book_backend_couchdb_modify_contact;
++#endif
++	parent_class->remove_contacts         = e_book_backend_couchdb_remove_contacts;
+ 	parent_class->get_contact             = e_book_backend_couchdb_get_contact;
+ 	parent_class->get_contact_list        = e_book_backend_couchdb_get_contact_list;
+ 	parent_class->start_book_view         = e_book_backend_couchdb_start_book_view;
+diff -up evolution-couchdb-0.5.91/addressbook/e-book-backend-couchdb-factory.c.new-eds-api evolution-couchdb-0.5.91/addressbook/e-book-backend-couchdb-factory.c
+--- evolution-couchdb-0.5.91/addressbook/e-book-backend-couchdb-factory.c.new-eds-api	2011-11-28 11:22:34.930223498 +0100
++++ evolution-couchdb-0.5.91/addressbook/e-book-backend-couchdb-factory.c	2011-11-28 11:23:54.477135086 +0100
+@@ -20,11 +20,65 @@
+  * Authors: Rodrigo Moya <rodrigo.moya at canonical.com>
+  */
+ 
+-#include <libebackend/e-data-server-module.h>
+-#include <libedata-book/e-book-backend-factory.h>
+ #include <dbus/dbus.h>
++
++#include <libedataserver/eds-version.h>
++#include <libedata-book/e-book-backend-factory.h>
++
+ #include "e-book-backend-couchdb.h"
+ 
++#if EDS_CHECK_VERSION (3,3,1)
++
++typedef EBookBackendFactory EBookBackendCouchDBFactory;
++typedef EBookBackendFactoryClass EBookBackendCouchDBFactoryClass;
++
++/* Module Entry Points */
++void e_module_load (GTypeModule *type_module);
++void e_module_unload (GTypeModule *type_module);
++
++/* Forward Declarations */
++GType e_book_backend_couchdb_factory_get_type (void);
++
++G_DEFINE_DYNAMIC_TYPE (
++	EBookBackendCouchDBFactory,
++	e_book_backend_couchdb_factory,
++	E_TYPE_BOOK_BACKEND_FACTORY)
++
++static void
++e_book_backend_couchdb_factory_class_init (EBookBackendFactoryClass *klass)
++{
++	klass->factory_name = "couchdb";
++	klass->backend_type = E_TYPE_BOOK_BACKEND_COUCHDB;
++}
++
++static void
++e_book_backend_couchdb_factory_class_finalize (EBookBackendFactoryClass *klass)
++{
++}
++
++static void
++e_book_backend_couchdb_factory_init (EBookBackendFactory *factory)
++{
++}
++
++G_MODULE_EXPORT void
++e_module_load (GTypeModule *type_module)
++{
++	/* FIXME: this is a hack to avoid crashes when calling gnome-keyring
++	   from desktopcouch_session_new */
++	dbus_threads_init_default ();
++
++	e_book_backend_couchdb_factory_register_type (type_module);
++}
++
++G_MODULE_EXPORT void
++e_module_unload (GTypeModule *type_module)
++{
++}
++
++#else /* EDS_CHECK_VERSION */
++#include <libebackend/e-data-server-module.h>
++
+ E_BOOK_BACKEND_FACTORY_SIMPLE (couchdb, CouchDB, e_book_backend_couchdb_new)
+ 
+ static GType couchdb_type;
+@@ -49,3 +103,5 @@ eds_module_list_types (const GType **typ
+ 	*types = &couchdb_type;
+ 	*num_types = 1;
+ }
++
++#endif /* EDS_CHECK_VERSION */
+diff -up evolution-couchdb-0.5.91/calendar/e-cal-backend-couchdb.c.new-eds-api evolution-couchdb-0.5.91/calendar/e-cal-backend-couchdb.c
+--- evolution-couchdb-0.5.91/calendar/e-cal-backend-couchdb.c.new-eds-api	2011-11-28 11:23:21.011750842 +0100
++++ evolution-couchdb-0.5.91/calendar/e-cal-backend-couchdb.c	2011-11-28 11:23:54.518135647 +0100
+@@ -196,8 +196,11 @@ e_cal_backend_couchdb_open (ECalBackend
+ 	ECalBackendCouchDB *couchdb_backend = E_CAL_BACKEND_COUCHDB (backend);
+ 	ESource *source;
+ 
+-
++#if EDS_CHECK_VERSION(3, 3, 1)
++	source = e_backend_get_source (E_BACKEND (backend));
++#else
+ 	source = e_cal_backend_get_source (backend);
++#endif
+ 	if (!(E_IS_CAL_BACKEND_COUCHDB (couchdb_backend))) {
+ #if EDS_CHECK_VERSION(3, 1, 0)
+ 		e_data_cal_respond_open (cal, opid, e_data_cal_create_error (ObjectNotFound, "Invalid CouchDB backend"));
+@@ -806,7 +809,11 @@ e_cal_backend_couchdb_start_view (ECalBa
+ 	ECalBackendCouchDB *couchdb_backend = E_CAL_BACKEND_COUCHDB (backend);
+ 	ECalBackendSExp *sexp;
+ 
++#if EDS_CHECK_VERSION(3, 3, 1)
++	e_cal_backend_add_view (backend, query);
++#else
+ 	e_cal_backend_add_query (backend, query);
++#endif
+ 	sexp = e_data_cal_view_get_object_sexp (query);
+ 
+ 	// Get the list of documents from cache
+diff -up evolution-couchdb-0.5.91/calendar/e-cal-backend-couchdb-factory.c.new-eds-api evolution-couchdb-0.5.91/calendar/e-cal-backend-couchdb-factory.c
+--- evolution-couchdb-0.5.91/calendar/e-cal-backend-couchdb-factory.c.new-eds-api	2011-11-28 11:22:57.563482210 +0100
++++ evolution-couchdb-0.5.91/calendar/e-cal-backend-couchdb-factory.c	2011-11-28 11:23:54.480135160 +0100
+@@ -26,11 +26,61 @@
+ 
+ #include <string.h>
+ 
+-#include <libebackend/e-data-server-module.h>
++#include <libedataserver/eds-version.h>
+ #include <libedata-cal/e-cal-backend-factory.h>
+-#include "e-cal-backend-couchdb-factory.h"
++
+ #include "e-cal-backend-couchdb.h"
+ 
++#if EDS_CHECK_VERSION (3,3,1)
++
++typedef ECalBackendFactory ECalBackendCouchDBTodosFactory;
++typedef ECalBackendFactoryClass ECalBackendCouchDBTodosFactoryClass;
++
++/* Module Entry Points */
++void e_module_load (GTypeModule *type_module);
++void e_module_unload (GTypeModule *type_module);
++
++/* Forward Declarations */
++GType e_cal_backend_couchdb_todos_factory_get_type (void);
++
++G_DEFINE_DYNAMIC_TYPE (
++	ECalBackendCouchDBTodosFactory,
++	e_cal_backend_couchdb_todos_factory,
++	E_TYPE_CAL_BACKEND_FACTORY)
++
++static void
++e_cal_backend_couchdb_todos_factory_class_init (ECalBackendFactoryClass *klass)
++{
++	klass->factory_name = "couchdb";
++	klass->component_kind = ICAL_VTODO_COMPONENT;
++	klass->backend_type = E_TYPE_CAL_BACKEND_COUCHDB;
++}
++
++static void
++e_cal_backend_couchdb_todos_factory_class_finalize (ECalBackendFactoryClass *klass)
++{
++}
++
++static void
++e_cal_backend_couchdb_todos_factory_init (ECalBackendFactory *factory)
++{
++}
++
++G_MODULE_EXPORT void
++e_module_load (GTypeModule *type_module)
++{
++	e_cal_backend_couchdb_todos_factory_register_type (type_module);
++}
++
++G_MODULE_EXPORT void
++e_module_unload (GTypeModule *type_module)
++{
++}
++
++#else /* EDS_CHECK_VERSION */
++#include <libebackend/e-data-server-module.h>
++#include "e-cal-backend-couchdb-factory.h"
++
+ typedef ECalBackendFactory      ECalBackendCouchDBTodosFactory;
+ typedef ECalBackendFactoryClass ECalBackendCouchDBTodosFactoryClass;
+ 
+@@ -102,3 +152,5 @@ eds_module_list_types (const GType **typ
+ 	*types = couchdb_types;
+ 	*num_types = G_N_ELEMENTS (couchdb_types);
+ }
++
++#endif /* EDS_CHECK_VERSION */
+diff -up evolution-couchdb-0.5.91/calendar/e-cal-backend-couchdb-factory.h.new-eds-api evolution-couchdb-0.5.91/calendar/e-cal-backend-couchdb-factory.h
+--- evolution-couchdb-0.5.91/calendar/e-cal-backend-couchdb-factory.h.new-eds-api	2011-11-28 11:23:11.123639455 +0100
++++ evolution-couchdb-0.5.91/calendar/e-cal-backend-couchdb-factory.h	2011-11-28 11:23:54.517135634 +0100
+@@ -22,6 +22,8 @@
+ #ifndef _E_CAL_BACKEND_COUCHDB_FACTORY_H
+ #define _E_CAL_BACKEND_COUCHDB_FACTORY_H
+ 
++#if !EDS_CHECK_VERSION (3,3,1)
++
+ #include <glib.h>
+ #include <libedata-cal/e-cal-backend-factory.h>
+ 
+@@ -33,5 +35,7 @@ void eds_module_list_types (const GType
+ 
+ G_END_DECLS
+ 
++#endif /* EDS_CHECK_VERSION */
++
+ #endif
+ 
+diff -up evolution-couchdb-0.5.91/plugins/couchdb-sources.c.new-eds-api evolution-couchdb-0.5.91/plugins/couchdb-sources.c
+--- evolution-couchdb-0.5.91/plugins/couchdb-sources.c.new-eds-api	2011-11-28 11:23:30.219856284 +0100
++++ evolution-couchdb-0.5.91/plugins/couchdb-sources.c	2011-11-28 11:23:54.520135666 +0100
+@@ -24,7 +24,15 @@
+ #include <libedataserver/eds-version.h>
+ #include <libedataserver/e-source.h>
+ #include <libedataserver/e-source-list.h>
++
++#if EDS_CHECK_VERSION(3, 2, 0)
++#include <libecal/e-cal-client.h>
++#include <libebook/e-book-client.h>
++#else
+ #include <libecal/e-cal.h>
++#include <libebook/e-book.h>
++#endif
++
+ #include "couchdb-sources.h"
+ 
+ typedef struct {
+@@ -229,13 +237,21 @@ e_plugin_lib_enable (EPluginLib *ep, gin
+ {
+ 	ESourceList *book_sources, *task_sources;
+ 
++#if EDS_CHECK_VERSION(3, 2, 0)
++	e_book_client_get_sources (&book_sources, NULL);
++	e_cal_client_get_sources (&task_sources, E_CAL_CLIENT_SOURCE_TYPE_TASKS, NULL);
++#else
+ 	e_book_get_addressbooks (&book_sources, NULL);
+ 	e_cal_get_sources (&task_sources, E_CAL_SOURCE_TYPE_TODO, NULL);
++#endif
+ 
+ 	if (enable)
+ 		ensure_source_group (book_sources);
+ 	else
+ 		remove_source_group (book_sources);
+ 
++	g_object_unref (book_sources);
++	g_object_unref (task_sources);
++
+ 	return 0;
+ }
diff --git a/evolution-couchdb.spec b/evolution-couchdb.spec
index 563c806..6a36535 100644
--- a/evolution-couchdb.spec
+++ b/evolution-couchdb.spec
@@ -1,12 +1,13 @@
 Name:          evolution-couchdb
 Version:       0.5.91
-Release:       5%{?dist}
+Release:       6%{?dist}
 Summary:       An evolution backend to CouchDBs for PIM information
 
 Group:         System Environment/Libraries
 License:       GPLv3+
 URL:           http://www.gnome.org/
 Source0:       ftp://ftp.gnome.org/pub/gnome/sources/%{name}/0.5/%{name}-%{version}.tar.xz
+Patch01:       evolution-couchdb-0.5.91-new-eds-api.patch
 
 BuildRequires: couchdb-glib-devel
 BuildRequires: dbus-glib-devel
@@ -27,6 +28,7 @@ stored in a CouchDB.
 
 %prep
 %setup -q
+%patch01 -p1 -b .new-eds-api
 
 %build
 %configure --disable-static
@@ -59,6 +61,9 @@ done
 %{_libdir}/evolution/*/plugins/*couchdb*
 
 %changelog
+* Mon Nov 28 2011 Milan Crha <mcrha at redhat.com> 0.5.91-6
+- Rebuild against newer evolution-data-server
+
 * Sun Oct 30 2011 Bruno Wolff III <bruno at wolff.to> - 0.5.91-5
 - Rebuild against newer evolution-data-server
 


More information about the scm-commits mailing list