From 16e9dd766f3db36a42528536f3a0eda175e29cea Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Nov 21 2012 19:16:38 +0000 Subject: Might add also the patch file... --- diff --git a/evolution-3.6.2-restore.patch b/evolution-3.6.2-restore.patch new file mode 100644 index 0000000..894c0cb --- /dev/null +++ b/evolution-3.6.2-restore.patch @@ -0,0 +1,136 @@ +diff --git a/modules/backup-restore/Makefile.am b/modules/backup-restore/Makefile.am +index 4d23edf..7d952e7 100644 +--- a/modules/backup-restore/Makefile.am ++++ b/modules/backup-restore/Makefile.am +@@ -53,6 +53,7 @@ evolution_backup_CPPFLAGS = \ + -DSYSCONFDIR=\""$(sysconfdir)"\" \ + -DDATADIR=\""$(datadir)"\" \ + -DLIBDIR=\""$(libdir)"\" \ ++ -DDBUS_SERVICES_DIR=\"'${datadir}'/dbus-1/services\" \ + $(EVOLUTION_DATA_SERVER_CFLAGS) \ + $(GNOME_PLATFORM_CFLAGS) \ + $(NULL) +diff --git a/modules/backup-restore/evolution-backup-tool.c b/modules/backup-restore/evolution-backup-tool.c +index bc6ee27..f02680f 100644 +--- a/modules/backup-restore/evolution-backup-tool.c ++++ b/modules/backup-restore/evolution-backup-tool.c +@@ -53,6 +53,7 @@ + #define EVOLUTION "evolution" + #define EVOLUTION_DIR "$DATADIR/" + #define EVOLUTION_DIR_FILE EVOLUTION ".dir" ++#define DBUS_SOURCE_REGISTRY_SERVICE_FILE "$DBUSDATADIR/org.gnome.evolution.dataserver.Sources.service" + + #define ANCIENT_GCONF_DUMP_FILE "backup-restore-gconf.xml" + +@@ -178,6 +179,7 @@ replace_variables (const gchar *str) + repl ("$CONFIGDIR", e_get_user_config_dir ()); + repl ("$STRIPDATADIR", strip_datadir); + repl ("$STRIPCONFIGDIR", strip_configdir); ++ repl ("$DBUSDATADIR", DBUS_SERVICES_DIR); + + #undef repl + +@@ -445,6 +447,46 @@ get_dir_level (const gchar *dir) + return res; + } + ++static gchar * ++get_source_manager_reload_command (void) ++{ ++ GString *tmp; ++ gchar *command; ++ ++ tmp = replace_variables (DBUS_SOURCE_REGISTRY_SERVICE_FILE); ++ if (tmp) { ++ GKeyFile *key_file; ++ gchar *str = NULL; ++ ++ key_file = g_key_file_new (); ++ if (g_key_file_load_from_file (key_file, tmp->str, G_KEY_FILE_NONE, NULL)) { ++ str = g_key_file_get_string (key_file, "D-BUS Service", "Name", NULL); ++ } ++ g_key_file_free (key_file); ++ ++ if (str && *str) { ++ g_string_assign (tmp, str); ++ } else { ++ g_string_free (tmp, TRUE); ++ tmp = NULL; ++ } ++ ++ g_free (str); ++ } ++ ++ if (!tmp) ++ tmp = g_string_new ("org.gnome.evolution.dataserver.Sources0"); ++ ++ command = g_strdup_printf ("gdbus call --session --dest %s " ++ "--object-path /org/gnome/evolution/dataserver/SourceManager " ++ "--method org.gnome.evolution.dataserver.SourceManager.Reload", ++ tmp->str); ++ ++ g_string_free (tmp, TRUE); ++ ++ return command; ++} ++ + static void + restore (const gchar *filename, + GCancellable *cancellable) +@@ -578,6 +620,10 @@ restore (const gchar *filename, + EVOLUTION_DIR ANCIENT_GCONF_DUMP_FILE, + EVOUSERDATADIR_MAGIC, e_get_user_data_dir ()); + run_cmd ("gconftool-2 --load " EVOLUTION_DIR ANCIENT_GCONF_DUMP_FILE); ++ ++ /* give a chance to GConf to save what was loaded into a disk */ ++ g_usleep (G_USEC_PER_SEC * 5); ++ + /* do not forget to convert GConf keys into GSettings */ + run_cmd ("gsettings-data-convert"); + run_cmd ("rm " EVOLUTION_DIR ANCIENT_GCONF_DUMP_FILE); +@@ -613,6 +659,9 @@ restore (const gchar *filename, + run_cmd (command); + g_free (command); + ++ /* give a chance to GConf to save what was loaded into a disk */ ++ g_usleep (G_USEC_PER_SEC * 5); ++ + /* do not forget to convert GConf keys into GSettings */ + run_cmd ("gsettings-data-convert"); + +@@ -640,16 +689,13 @@ restore (const gchar *filename, + + txt = _("Reloading registry service"); + +- /* This runs migration routines on the newly-restored data. +- * +- * XXX Hard-coding the whole command like this is not ideal +- * because the "SourcesX" interface name will occasionally +- * change and I guarantee we'll forget to update this. */ +- run_cmd ( +- "gdbus call --session " +- "--dest org.gnome.evolution.dataserver.Sources0 " +- "--object-path /org/gnome/evolution/dataserver/SourceManager " +- "--method org.gnome.evolution.dataserver.SourceManager.Reload"); ++ /* wait few seconds, till changes settle */ ++ g_usleep (G_USEC_PER_SEC * 5); ++ ++ command = get_source_manager_reload_command (); ++ /* This runs migration routines on the newly-restored data. */ ++ run_cmd (command); ++ g_free (command); + + end: + if (restart_arg) { +@@ -657,6 +703,11 @@ end: + return; + + txt = _("Restarting Evolution"); ++ ++ /* wait 5 seconds before restarting evolution, thus any ++ changes being done are updated in source registry too */ ++ g_usleep (G_USEC_PER_SEC * 5); ++ + run_evolution_no_wait (); + } + }