Might add also the patch file...
This commit is contained in:
parent
3e335954dc
commit
16e9dd766f
1 changed files with 136 additions and 0 deletions
136
evolution-3.6.2-restore.patch
Normal file
136
evolution-3.6.2-restore.patch
Normal file
|
|
@ -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 ();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue