+(NEWS blurb for 2.91.5. Put this above the bug fixes and such.)
+
+Address book and calendar backend modules are now split into different
+installation directories so the D-Bus factory processes will only load
+relevant backend modules.
+
+This changes some pkg-config details for third-party backend modules.
+
+Instead of querying the backend directory with:
+
+ pkg-config --variable=extensiondir evolution-data-server-1.2
+
+you must query the directory for address book backends with:
+
+ pkg-config --variable=backenddir libedata-book-1.2
+
+and the directory for calendar backends with:
+
+ pkg-config --variable=backenddir libedata-cal-1.2
+
+
Evolution-Data-Server 2.91.4 2010-12-20
---------------------------------------
-extension_LTLIBRARIES = libebookbackendfile.la
+ebook_backend_LTLIBRARIES = libebookbackendfile.la
libebookbackendfile_la_CPPFLAGS = \
$(AM_CPPFLAGS) \
-extension_LTLIBRARIES = libebookbackendgoogle.la
+ebook_backend_LTLIBRARIES = libebookbackendgoogle.la
libebookbackendgoogle_la_CPPFLAGS = \
$(AM_CPPFLAGS) \
-extension_LTLIBRARIES = libebookbackendgroupwise.la
+ebook_backend_LTLIBRARIES = libebookbackendgroupwise.la
libebookbackendgroupwise_la_CPPFLAGS = \
$(AM_CPPFLAGS) \
-extension_LTLIBRARIES = libebookbackendldap.la
+ebook_backend_LTLIBRARIES = libebookbackendldap.la
libebookbackendldap_la_CPPFLAGS = \
$(AM_CPPFLAGS) \
-extension_LTLIBRARIES = libebookbackendvcf.la
+ebook_backend_LTLIBRARIES = libebookbackendvcf.la
libebookbackendvcf_la_CPPFLAGS = \
$(AM_CPPFLAGS) \
-extension_LTLIBRARIES = libebookbackendwebdav.la
+ebook_backend_LTLIBRARIES = libebookbackendwebdav.la
libebookbackendwebdav_la_CPPFLAGS = \
$(AM_CPPFLAGS) \
$(EVOLUTION_ADDRESSBOOK_CFLAGS) \
-DG_LOG_DOMAIN=\"libedata-book\" \
-DE_PRGNAME=\"e-addressbook-factory\" \
+ -DBACKENDDIR=\"$(ebook_backenddir)\" \
-I$(top_srcdir) \
-I$(top_srcdir)/addressbook \
-I$(top_srcdir)/addressbook/libegdbus \
static void
e_data_book_factory_init (EDataBookFactory *factory)
{
+ GError *error = NULL;
+
factory->priv = E_DATA_BOOK_FACTORY_GET_PRIVATE (factory);
factory->priv->gdbus_object = e_gdbus_book_factory_stub_new ();
(GDestroyNotify) g_free,
(GDestroyNotify) NULL);
- e_data_server_module_init ();
+ if (!e_data_server_module_init (BACKENDDIR, &error))
+ g_error ("%s", error->message);
+
e_data_book_factory_register_backends (factory);
}
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
+backenddir=@ebook_backenddir@
datarootdir=@datarootdir@
datadir=@datadir@
-extension_LTLIBRARIES = libecalbackendcaldav.la
+ecal_backend_LTLIBRARIES = libecalbackendcaldav.la
libecalbackendcaldav_la_CPPFLAGS = \
$(AM_CPPFLAGS) \
-extension_LTLIBRARIES = libecalbackendcontacts.la
+ecal_backend_LTLIBRARIES = libecalbackendcontacts.la
libecalbackendcontacts_la_CPPFLAGS = \
$(AM_CPPFLAGS) \
-extension_LTLIBRARIES = libecalbackendfile.la
+ecal_backend_LTLIBRARIES = libecalbackendfile.la
libecalbackendfile_la_CPPFLAGS = \
$(AM_CPPFLAGS) \
-extension_LTLIBRARIES = libecalbackendgroupwise.la
+ecal_backend_LTLIBRARIES = libecalbackendgroupwise.la
libecalbackendgroupwise_la_CPPFLAGS = \
$(AM_CPPFLAGS) \
-extension_LTLIBRARIES = libecalbackendhttp.la
+ecal_backend_LTLIBRARIES = libecalbackendhttp.la
libecalbackendhttp_la_CPPFLAGS = \
$(AM_CPPFLAGS) \
-extension_LTLIBRARIES = libecalbackendweather.la
+ecal_backend_LTLIBRARIES = libecalbackendweather.la
libecalbackendweather_la_CPPFLAGS = \
$(AM_CPPFLAGS) \
$(AM_CPPFLAGS) \
-DG_LOG_DOMAIN=\"libedata-cal\" \
-DE_PRGNAME=\"e-calendar-factory\" \
+ -DBACKENDDIR=\"$(ecal_backenddir)\" \
-DLOCALEDIR=\"$(localedir)\" \
-I$(top_srcdir) \
-I$(top_srcdir)/calendar \
static void
e_data_cal_factory_init (EDataCalFactory *factory)
{
+ GError *error = NULL;
+
factory->priv = E_DATA_CAL_FACTORY_GET_PRIVATE (factory);
factory->priv->gdbus_object = e_gdbus_cal_factory_stub_new ();
(GDestroyNotify) g_free,
(GDestroyNotify) NULL);
- e_data_server_module_init ();
+ if (!e_data_server_module_init (BACKENDDIR, &error))
+ g_error ("%s", error->message);
+
e_data_cal_factory_register_backends (factory);
}
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
+backenddir=@ecal_backenddir@
datarootdir=@datarootdir@
datadir=@datadir@
LIBECAL_REVISION=2
LIBECAL_AGE=2
-LIBEDATACAL_CURRENT=10
+LIBEDATACAL_CURRENT=11
LIBEDATACAL_REVISION=0
LIBEDATACAL_AGE=0
-LIBEDATABOOK_CURRENT=8
+LIBEDATABOOK_CURRENT=9
LIBEDATABOOK_REVISION=0
LIBEDATABOOK_AGE=0
LIBEGROUPWISE_REVISION=1
LIBEGROUPWISE_AGE=0
-LIBCAMEL_CURRENT=21
+LIBCAMEL_CURRENT=22
LIBCAMEL_REVISION=0
LIBCAMEL_AGE=0
-LIBEBACKEND_CURRENT=0
-LIBEBACKEND_REVISION=1
+LIBEBACKEND_CURRENT=1
+LIBEBACKEND_REVISION=0
LIBEBACKEND_AGE=0
AC_SUBST(EDS_MAJOR_VERSION)
imagesdir='${datadir}'/pixmaps/evolution-data-server
AC_SUBST(imagesdir)
-extensiondir='${libdir}'/evolution-data-server-$API_VERSION/extensions
-AC_SUBST(extensiondir)
+ebook_backenddir='${libdir}'/evolution-data-server/addressbook-backends
+AC_SUBST(ebook_backenddir)
+
+ecal_backenddir='${libdir}'/evolution-data-server/calendar-backends
+AC_SUBST(ecal_backenddir)
if test "x$use_gweather" = "xyes"; then
weatherdatadir="$privdatadir/weather"
fi
dnl separate camel from e-d-s? or should it be under the same spot? same for now.
-camel_providerdir='${libdir}'/evolution-data-server-$API_VERSION/camel-providers
+camel_providerdir='${libdir}'/evolution-data-server/camel-providers
AC_SUBST(camel_providerdir)
dnl ******************************
</para>
-@void:
+@module_path:
+@error:
+@Returns:
<!-- ##### FUNCTION e_data_server_get_extensions_for_type ##### -->
libdir=@libdir@
includedir=@includedir@
privlibdir=@privlibdir@
-extensiondir=@extensiondir@
datarootdir=@datarootdir@
datadir=@datadir@
privdatadir=@privdatadir@
$(AM_CPPFLAGS) \
-I$(top_srcdir) \
-DG_LOG_DOMAIN=\"e-data-server\" \
- -DE_DATA_SERVER_EXTENSIONDIR=\"$(extensiondir)\" \
$(DB_CFLAGS) \
$(E_BACKEND_CFLAGS)
}
}
-static void
-load_module_dir (const gchar *dirname)
+gboolean
+e_data_server_module_init (const gchar *module_path,
+ GError **error)
{
+ static gboolean initialized = FALSE;
+ const gchar *name;
GDir *dir;
- dir = g_dir_open (dirname, 0, NULL);
+ if (initialized)
+ return TRUE;
+
+ g_return_val_if_fail (module_path != NULL, FALSE);
- if (dir) {
- const gchar *name;
+ dir = g_dir_open (module_path, 0, error);
+ if (dir == NULL)
+ return FALSE;
- while ((name = g_dir_read_name (dir))) {
- if (g_str_has_suffix (name, "." G_MODULE_SUFFIX)) {
- gchar *filename;
+ while ((name = g_dir_read_name (dir))) {
+ if (g_str_has_suffix (name, "." G_MODULE_SUFFIX)) {
+ gchar *filename;
- filename = g_build_filename (dirname,
- name,
- NULL);
- e_data_server_module_load_file (filename);
- g_free (filename);
- }
+ filename = g_build_filename (module_path, name, NULL);
+ e_data_server_module_load_file (filename);
+ g_free (filename);
}
-
- g_dir_close (dir);
}
-}
-void
-e_data_server_module_init (void)
-{
- static gboolean initialized = FALSE;
+ g_dir_close (dir);
- if (!initialized) {
- initialized = TRUE;
+ initialized = TRUE;
- load_module_dir (E_DATA_SERVER_EXTENSIONDIR);
- }
+ return TRUE;
}
GList *
G_BEGIN_DECLS
-void e_data_server_module_init (void);
-GList *e_data_server_get_extensions_for_type (GType type);
-void e_data_server_extension_list_free (GList *list);
-void e_data_server_module_remove_unused (void);
+gboolean e_data_server_module_init (const gchar *module_path,
+ GError **error);
+GList * e_data_server_get_extensions_for_type
+ (GType type);
+void e_data_server_extension_list_free
+ (GList *list);
+void e_data_server_module_remove_unused
+ (void);
/* Add a type to the module interface - allows EDS to add its own modules
* without putting them in separate shared libraries */
-void e_data_server_module_add_type (GType type);
+void e_data_server_module_add_type (GType type);
/* The following three functions should exist in modules that are
written to be dynamically loaded */
-void eds_module_initialize (GTypeModule *module);
-void eds_module_shutdown (void);
-void eds_module_list_types (const GType **types, gint *num_types);
+void eds_module_initialize (GTypeModule *module);
+void eds_module_shutdown (void);
+void eds_module_list_types (const GType **types,
+ gint *num_types);
G_END_DECLS