Make the ESourceRegistryServer modules relocatable like addressbook & calendar
authorTristan Van Berkom <tristanvb@openismus.com>
Mon, 25 Feb 2013 10:26:45 +0000 (19:26 +0900)
committerTristan Van Berkom <tristanvb@openismus.com>
Mon, 25 Feb 2013 10:37:00 +0000 (19:37 +0900)
This simply adds an environment variable allowing us to load registry modules
from a relocated location in the case we run 'make check' without installing
(also ensuring that we test the not-yet-installed environment properly).

libebackend/e-source-registry-server.c
libebackend/e-source-registry-server.h

index c91b77b..eea48b3 100644 (file)
@@ -1253,6 +1253,13 @@ e_source_registry_server_class_init (ESourceRegistryServerClass *class)
        EDBusServerClass *dbus_server_class;
        EDataFactoryClass *data_factory_class;
        GType backend_factory_type;
+       const gchar *modules_directory = MODULE_DIRECTORY;
+       const gchar *modules_directory_env;
+
+       modules_directory_env = g_getenv (EDS_REGISTRY_MODULES);
+       if (modules_directory_env &&
+           g_file_test (modules_directory_env, G_FILE_TEST_IS_DIR))
+               modules_directory = g_strdup (modules_directory_env);
 
        g_type_class_add_private (class, sizeof (ESourceRegistryServerPrivate));
 
@@ -1262,7 +1269,7 @@ e_source_registry_server_class_init (ESourceRegistryServerClass *class)
 
        dbus_server_class = E_DBUS_SERVER_CLASS (class);
        dbus_server_class->bus_name = SOURCES_DBUS_SERVICE_NAME;
-       dbus_server_class->module_directory = MODULE_DIRECTORY;
+       dbus_server_class->module_directory = modules_directory;
        dbus_server_class->bus_acquired = source_registry_server_bus_acquired;
        dbus_server_class->quit_server = source_registry_server_quit_server;
 
index add0b7c..8f10af1 100644 (file)
 #define E_SOURCE_REGISTRY_SERVER_OBJECT_PATH \
        "/org/gnome/evolution/dataserver/SourceManager"
 
+/**
+ * EDS_REGISTRY_MODULES:
+ *
+ * This environment variable configures where the registry
+ * server loads it's backend modules from.
+ */
+#define EDS_REGISTRY_MODULES    "EDS_REGISTRY_MODULES"
+
 G_BEGIN_DECLS
 
 typedef struct _ESourceRegistryServer ESourceRegistryServer;