diff --git a/.dconf.metadata b/.dconf.metadata index f57b4b5..9ce0c2f 100644 --- a/.dconf.metadata +++ b/.dconf.metadata @@ -1 +1 @@ -4845e185a63297830c49a1889a72290337968b22 SOURCES/dconf-0.16.0.tar.xz +d1a03938451b19a53f0d2fd09b6c737542fdd4c4 SOURCES/dconf-0.22.0.tar.xz diff --git a/.gitignore b/.gitignore index 14973cc..bf28c19 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/dconf-0.16.0.tar.xz +SOURCES/dconf-0.22.0.tar.xz diff --git a/SOURCES/0001-DConfChangeset-expose-concept-of-sealing.patch b/SOURCES/0001-DConfChangeset-expose-concept-of-sealing.patch deleted file mode 100644 index 76b6557..0000000 --- a/SOURCES/0001-DConfChangeset-expose-concept-of-sealing.patch +++ /dev/null @@ -1,136 +0,0 @@ -From 40f887db43dc89e546ecef9c2d2f31a61858badc Mon Sep 17 00:00:00 2001 -From: Ryan Lortie -Date: Tue, 25 Jun 2013 14:39:26 -0400 -Subject: [PATCH 1/2] DConfChangeset: expose concept of "sealing" - -DConfChangeset is a partially threadsafe type. - -when first created, it is mutable and can only be used from one thread. -After it is filled in, the intention is that it can be shared between -threads as long as it isn't changed. - -Previously, this transition was made when dconf_changeset_describe() was -called. After that, it was not possible to make any more changes. - -Formalise and document this concept and add an explicit call for it: -dconf_changeset_seal(). - -https://bugzilla.gnome.org/show_bug.cgi?id=703073 ---- - common/dconf-changeset.c | 49 ++++++++++++++++++++++++++++++++++++++++++------ - common/dconf-changeset.h | 2 ++ - 2 files changed, 45 insertions(+), 6 deletions(-) - -diff --git a/common/dconf-changeset.c b/common/dconf-changeset.c -index d9b9f41..54be719 100644 ---- a/common/dconf-changeset.c -+++ b/common/dconf-changeset.c -@@ -54,7 +54,8 @@ - struct _DConfChangeset - { - GHashTable *table; -- gboolean is_database; -+ guint is_database : 1; -+ guint is_sealed : 1; - gint ref_count; - - gchar *prefix; -@@ -195,7 +196,7 @@ dconf_changeset_set (DConfChangeset *changeset, - const gchar *path, - GVariant *value) - { -- g_return_if_fail (changeset->prefix == NULL); -+ g_return_if_fail (!changeset->is_sealed); - g_return_if_fail (dconf_is_path (path, NULL)); - - /* Check if we are performing a path reset */ -@@ -366,12 +367,44 @@ dconf_changeset_string_ptr_compare (gconstpointer a_p, - return strcmp (*a, *b); - } - --static void --dconf_changeset_build_description (DConfChangeset *changeset) -+/** -+ * dconf_changeset_seal: -+ * @changeset: a #DConfChangeset -+ * -+ * Seals @changeset. -+ * -+ * When a #DConfChangeset is first created, it is mutable and -+ * non-threadsafe. Once the changeset is populated with the required -+ * changes, it can be shared between multiple threads, but only by -+ * making it immutable by "sealing" it. -+ * -+ * After the changeset is sealed, you cannot call dconf_changeset_set() -+ * or any other functions that would modify it. It is safe, however, to -+ * share it between multiple threads. -+ * -+ * All changesets are unsealed on creation, including those that are -+ * made by copying changesets that are sealed. -+ * dconf_changeset_describe() will implicitly seal a changeset. -+ * -+ * This function is idempotent. -+ * -+ * Since: 0.18 -+ **/ -+void -+dconf_changeset_seal (DConfChangeset *changeset) - { - gsize prefix_length; - gint n_items; - -+ if (changeset->is_sealed) -+ return; -+ -+ changeset->is_sealed = TRUE; -+ -+ /* This function used to be called dconf_changeset_build_description() -+ * because that's basically what sealing is... -+ */ -+ - n_items = g_hash_table_size (changeset->table); - - /* If there are no items then what is there to describe? */ -@@ -501,6 +534,9 @@ dconf_changeset_build_description (DConfChangeset *changeset) - * The @paths array is returned in an order such that dir will always - * come before keys contained within those dirs. - * -+ * If @changeset is not already sealed then this call will implicitly -+ * seal it. See dconf_changeset_seal(). -+ * - * Returns: the number of changes (the length of @changes and @values). - **/ - guint -@@ -513,8 +549,7 @@ dconf_changeset_describe (DConfChangeset *changeset, - - n_items = g_hash_table_size (changeset->table); - -- if (n_items && !changeset->prefix) -- dconf_changeset_build_description (changeset); -+ dconf_changeset_seal (changeset); - - if (prefix) - *prefix = changeset->prefix; -@@ -664,6 +699,8 @@ dconf_changeset_change (DConfChangeset *changeset, - gsize prefix_len; - gint i; - -+ g_return_if_fail (!changeset->is_sealed); -+ - /* Handling resets is a little bit tricky... - * - * Consider the case that we have @changeset containing a key /a/b and -diff --git a/common/dconf-changeset.h b/common/dconf-changeset.h -index 7228105..8a9cb48 100644 ---- a/common/dconf-changeset.h -+++ b/common/dconf-changeset.h -@@ -70,4 +70,6 @@ void dconf_changeset_change (DConfCh - DConfChangeset * dconf_changeset_diff (DConfChangeset *from, - DConfChangeset *to); - -+void dconf_changeset_seal (DConfChangeset *changeset); -+ - #endif /* __dconf_changeset_h__ */ --- -1.8.3.1 - diff --git a/SOURCES/0002-engine-seal-changesets-on-changes.patch b/SOURCES/0002-engine-seal-changesets-on-changes.patch deleted file mode 100644 index e1b2cb7..0000000 --- a/SOURCES/0002-engine-seal-changesets-on-changes.patch +++ /dev/null @@ -1,42 +0,0 @@ -From ba512dc4225a043b94ef13718f1cbe8a806f5b55 Mon Sep 17 00:00:00 2001 -From: Ryan Lortie -Date: Tue, 25 Jun 2013 14:43:58 -0400 -Subject: [PATCH 2/2] engine: seal changesets on changes - -When we do change operations, make sure we seal our DConfChangeset -before sharing it between threads. - -This will ensure it gets sealed in only one thread instead of being -implicitly sealed in two different threads at the same time when each of -them calls dconf_changeset_describe(). - -https://bugzilla.gnome.org/show_bug.cgi?id=703073 ---- - engine/dconf-engine.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/engine/dconf-engine.c b/engine/dconf-engine.c -index 446619e..7beff95 100644 ---- a/engine/dconf-engine.c -+++ b/engine/dconf-engine.c -@@ -1035,6 +1035,8 @@ dconf_engine_change_fast (DConfEngine *engine, - if (!dconf_engine_changeset_changes_only_writable_keys (engine, changeset, error)) - return FALSE; - -+ dconf_changeset_seal (changeset); -+ - /* Check for duplicates in the pending queue. - * - * Note: order doesn't really matter here since "similarity" is an -@@ -1105,6 +1107,8 @@ dconf_engine_change_sync (DConfEngine *engine, - if (!dconf_engine_changeset_changes_only_writable_keys (engine, changeset, error)) - return FALSE; - -+ dconf_changeset_seal (changeset); -+ - /* we know that we have at least one source because we checked writability */ - reply = dconf_engine_dbus_call_sync_func (engine->sources[0]->bus_type, - engine->sources[0]->bus_name, --- -1.8.3.1 - diff --git a/SOURCES/dconf-shutdown-hang.patch b/SOURCES/dconf-shutdown-hang.patch deleted file mode 100644 index f675c45..0000000 --- a/SOURCES/dconf-shutdown-hang.patch +++ /dev/null @@ -1,26 +0,0 @@ ---- a/service/dconf-service.c -+++ b/service/dconf-service.c -@@ -39,6 +39,8 @@ typedef struct - DConfBlame *blame; - GHashTable *writers; - GArray *subtree_ids; -+ -+ gboolean signalled; - } DConfService; - - G_DEFINE_TYPE (DConfService, dconf_service, G_TYPE_APPLICATION) -@@ -48,7 +50,10 @@ dconf_service_signalled (gpointer user_data) - { - DConfService *service = user_data; - -- g_application_release (G_APPLICATION (service)); -+ if (!service->signalled) -+ g_application_release (G_APPLICATION (service)); -+ -+ service->signalled = TRUE; - - return G_SOURCE_REMOVE; - } --- -1.8.5.3 - diff --git a/SPECS/dconf.spec b/SPECS/dconf.spec index 1f5afc6..637bfdf 100644 --- a/SPECS/dconf.spec +++ b/SPECS/dconf.spec @@ -1,21 +1,16 @@ -%define glib2_version 2.27.2 -%define vala_version 0.11.7 +%define glib2_version 2.39.1 +%define vala_version 0.18.0 Name: dconf -Version: 0.16.0 -Release: 6%{?dist} +Version: 0.22.0 +Release: 2%{?dist} Summary: A configuration system Group: System Environment/Base License: LGPLv2+ and GPLv2+ and GPLv3+ URL: http://live.gnome.org/dconf #VCS: git:git://git.gnome.org/dconf -Source0: http://download.gnome.org/sources/dconf/0.16/dconf-%{version}.tar.xz - -# upstream fixes -Patch0: 0001-DConfChangeset-expose-concept-of-sealing.patch -Patch1: 0002-engine-seal-changesets-on-changes.patch -Patch2: dconf-shutdown-hang.patch +Source0: http://download.gnome.org/sources/dconf/0.22/dconf-%{version}.tar.xz BuildRequires: glib2-devel >= %{glib2_version} BuildRequires: gtk3-devel @@ -26,6 +21,7 @@ BuildRequires: gtk-doc BuildRequires: intltool Requires: dbus +Requires: glib2%{?_isa} >= %{glib2_version} %description dconf is a low-level configuration system. Its main purpose is to provide a @@ -51,13 +47,10 @@ dconf-editor allows you to browse and modify dconf databases. %prep %setup -q -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 %build %configure --disable-static -make %{?_smp_mflags} +make V=1 %{?_smp_mflags} %install @@ -100,6 +93,8 @@ done %postun editor if [ $1 -eq 0 ] ; then + glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || : + for d in hicolor HighContrast ; do touch --no-create %{_datadir}/icons/$d &>/dev/null || : gtk-update-icon-cache %{_datadir}/icons/$d &>/dev/null || : @@ -107,6 +102,8 @@ if [ $1 -eq 0 ] ; then fi %posttrans editor +glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || : + for d in hicolor HighContrast ; do gtk-update-icon-cache %{_datadir}/icons/$d &>/dev/null || : done @@ -114,6 +111,9 @@ done %files -f dconf.lang %doc COPYING +%dir %{_sysconfdir}/dconf +%dir %{_sysconfdir}/dconf/db +%dir %{_sysconfdir}/dconf/profile %{_libdir}/gio/modules/libdconfsettings.so %{_libexecdir}/dconf-service %{_datadir}/dbus-1/services/ca.desrt.dconf.service @@ -121,7 +121,6 @@ done %{_libdir}/libdconf.so.* %{_libdir}/libdconf-dbus-1.so.* %{_datadir}/bash-completion/completions/dconf -%{_datadir}/glib-2.0/schemas/ca.desrt.dconf-editor.gschema.xml %{_mandir}/man1/dconf-service.1.gz %{_mandir}/man1/dconf.1.gz %{_mandir}/man7/dconf.7.gz @@ -148,15 +147,23 @@ done %files editor %{_bindir}/dconf-editor -%{_datadir}/applications/dconf-editor.desktop -%dir %{_datadir}/dconf-editor -%{_datadir}/dconf-editor/dconf-editor.ui -%{_datadir}/dconf-editor/dconf-editor-menu.ui +%{_datadir}/appdata/ca.desrt.dconf-editor.appdata.xml +%{_datadir}/applications/ca.desrt.dconf-editor.desktop +%{_datadir}/dbus-1/services/ca.desrt.dconf-editor.service +%{_datadir}/glib-2.0/schemas/ca.desrt.dconf-editor.gschema.xml %{_datadir}/icons/hicolor/*/apps/dconf-editor.png %{_datadir}/icons/HighContrast/*/apps/dconf-editor.png %{_mandir}/man1/dconf-editor.1.gz %changelog +* Tue Mar 24 2015 Marek Kasik - 0.22.0-2 +- Remove unused patches +- Resolves: #1174448 + +* Fri Sep 19 2014 Kalev Lember - 0.22.0-1 +- Update to 0.22.0 +- Resolves: #1174448 + * Fri Apr 4 2014 Marek Kasik - 0.16.0-6 - Don't hang shutdown - Resolves: #1082994