diff --git a/desktop/gnome/base/gconf/files/gconf-3.2.6-gsettings-data-convert-paths.patch b/desktop/gnome/base/gconf/files/gconf-3.2.6-gsettings-data-convert-paths.patch new file mode 100644 index 0000000000..dc6c66b1c6 --- /dev/null +++ b/desktop/gnome/base/gconf/files/gconf-3.2.6-gsettings-data-convert-paths.patch @@ -0,0 +1,41 @@ +From 405f865c07261a95c8c9a09a84ab679c6dd0a330 Mon Sep 17 00:00:00 2001 +From: Colin Walters +Date: Thu, 24 Oct 2013 16:27:24 -0400 +Subject: gsettings-data-convert: Warn (and fix) invalid schema paths + +See https://bugzilla.gnome.org/show_bug.cgi?id=704802 + +https://bugzilla.gnome.org/show_bug.cgi?id=710836 + +diff --git a/gsettings/gsettings-data-convert.c b/gsettings/gsettings-data-convert.c +index 9b2d1d0..160ed41 100644 +--- a/gsettings/gsettings-data-convert.c ++++ b/gsettings/gsettings-data-convert.c +@@ -182,7 +182,23 @@ handle_file (const gchar *filename) + } + + if (schema_path[1] != NULL) +- settings = g_settings_new_with_path (schema_path[0], schema_path[1]); ++ { ++ char *compat_path_alloced = NULL; ++ char *compat_path; ++ /* Work around broken .convert files: ++ https://bugzilla.gnome.org/show_bug.cgi?id=704802 ++ */ ++ if (!g_str_has_suffix (schema_path[1], "/")) ++ { ++ g_warning ("Schema file '%s' has missing trailing / in '%s'", ++ filename, schema_path[1]); ++ compat_path = compat_path_alloced = g_strconcat (schema_path[1], "/", NULL); ++ } ++ else ++ compat_path = schema_path[1]; ++ settings = g_settings_new_with_path (schema_path[0], compat_path); ++ g_free (compat_path_alloced); ++ } + else + settings = g_settings_new (schema_path[0]); + +-- +cgit v0.10.1 + diff --git a/desktop/gnome/base/gconf/files/gconf-3.2.6-mconvert-crasher.patch b/desktop/gnome/base/gconf/files/gconf-3.2.6-mconvert-crasher.patch new file mode 100644 index 0000000000..54681bcb0e --- /dev/null +++ b/desktop/gnome/base/gconf/files/gconf-3.2.6-mconvert-crasher.patch @@ -0,0 +1,45 @@ +From 98ff7acca7595f508b094506195aeffaf2e8b74c Mon Sep 17 00:00:00 2001 +From: Stefan Sauer +Date: Wed, 23 Jan 2013 08:11:18 +0100 +Subject: mconvert: enable recursive scheme lookup and fix a crasher + +The recursive scheme lookup is needed to scan the whole settings path. The crash +would happen in the case of a misconfiguration (e.g. building gconf from source +and running uninstalled while the configure settings don't match the one used to +create the installed package). + +diff --git a/gsettings/gsettings-data-convert.c b/gsettings/gsettings-data-convert.c +index a8af942..9b2d1d0 100644 +--- a/gsettings/gsettings-data-convert.c ++++ b/gsettings/gsettings-data-convert.c +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -90,6 +91,10 @@ get_writable_client (void) + GSList *addresses; + + addresses = get_writable_source_path (); ++ if (!addresses) { ++ g_printf("No writable gconf locations found\n"); ++ exit (1); ++ } + engine = gconf_engine_get_local_for_addresses (addresses, NULL); + gconf_address_list_free (addresses); + +@@ -155,7 +160,7 @@ handle_file (const gchar *filename) + + schema_path = g_strsplit (groups[i], ":", 2); + +- schema = g_settings_schema_source_lookup (source, schema_path[0], FALSE); ++ schema = g_settings_schema_source_lookup (source, schema_path[0], TRUE); + if (schema == NULL) + { + if (verbose) +-- +cgit v0.10.1 + diff --git a/desktop/gnome/base/gconf/files/gconf-3.2.6-spew-console-error.patch b/desktop/gnome/base/gconf/files/gconf-3.2.6-spew-console-error.patch new file mode 100644 index 0000000000..26503f7216 --- /dev/null +++ b/desktop/gnome/base/gconf/files/gconf-3.2.6-spew-console-error.patch @@ -0,0 +1,83 @@ +From b0895e1998ebc83ab030ec0f17c0685439f5b404 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Mon, 15 Apr 2013 09:57:34 -0400 +Subject: dbus: Don't spew to console when unable to connect to dbus daemon + +Instead pass the error up for the caller to decide what to do. + +This prevent untrappable warning messages from showing up at the +console if gconftool --makefile-install-rule is called. + +diff --git a/gconf/gconf-dbus.c b/gconf/gconf-dbus.c +index 5610fcf..048e3ea 100644 +--- a/gconf/gconf-dbus.c ++++ b/gconf/gconf-dbus.c +@@ -105,7 +105,7 @@ static GHashTable *engines_by_db = NULL; + static GHashTable *engines_by_address = NULL; + static gboolean dbus_disconnected = FALSE; + +-static gboolean ensure_dbus_connection (void); ++static gboolean ensure_dbus_connection (GError **error); + static gboolean ensure_service (gboolean start_if_not_found, + GError **err); + static gboolean ensure_database (GConfEngine *conf, +@@ -383,7 +383,7 @@ gconf_engine_detach (GConfEngine *conf) + } + + static gboolean +-ensure_dbus_connection (void) ++ensure_dbus_connection (GError **err) + { + DBusError error; + +@@ -392,7 +392,9 @@ ensure_dbus_connection (void) + + if (dbus_disconnected) + { +- g_warning ("The connection to DBus was broken. Can't reinitialize it."); ++ g_set_error (err, GCONF_ERROR, ++ GCONF_ERROR_NO_SERVER, ++ "The connection to DBus was broken. Can't reinitialize it."); + return FALSE; + } + +@@ -402,7 +404,10 @@ ensure_dbus_connection (void) + + if (!global_conn) + { +- g_warning ("Client failed to connect to the D-BUS daemon:\n%s", error.message); ++ g_set_error (err, GCONF_ERROR, ++ GCONF_ERROR_NO_SERVER, ++ "Client failed to connect to the D-BUS daemon:\n%s", ++ error.message); + + dbus_error_free (&error); + return FALSE; +@@ -431,13 +436,8 @@ ensure_service (gboolean start_if_not_found, + + if (global_conn == NULL) + { +- if (!ensure_dbus_connection ()) +- { +- g_set_error (err, GCONF_ERROR, +- GCONF_ERROR_NO_SERVER, +- _("No D-BUS daemon running\n")); +- return FALSE; +- } ++ if (!ensure_dbus_connection (err)) ++ return FALSE; + + g_assert (global_conn != NULL); + } +@@ -2512,7 +2512,7 @@ gconf_ping_daemon (void) + { + if (global_conn == NULL) + { +- if (!ensure_dbus_connection ()) ++ if (!ensure_dbus_connection (NULL)) + { + return FALSE; + } +-- +cgit v0.10.1 + diff --git a/desktop/gnome/base/gconf/pspec.xml b/desktop/gnome/base/gconf/pspec.xml index 90450d3587..6c3d1596aa 100755 --- a/desktop/gnome/base/gconf/pspec.xml +++ b/desktop/gnome/base/gconf/pspec.xml @@ -31,6 +31,9 @@ 01_xml-gettext-domain.patch gconf-reload.patch + gconf-3.2.6-gsettings-data-convert-paths.patch + gconf-3.2.6-mconvert-crasher.patch + gconf-3.2.6-spew-console-error.patch