summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Rostovtsev <tetromino@gentoo.org>2012-04-11 06:24:50 +0000
committerAlexandre Rostovtsev <tetromino@gentoo.org>2012-04-11 06:24:50 +0000
commit85a329a3ee3eafe3905b310eea891cd5bebe0d14 (patch)
treeea1fd360968c358d71bdf8816a054e2b7b4879fc /gnome-base/gconf
parentadd patch from Debian to work around resizing bug (bug #411539) (diff)
downloadgentoo-2-85a329a3ee3eafe3905b310eea891cd5bebe0d14.tar.gz
gentoo-2-85a329a3ee3eafe3905b310eea891cd5bebe0d14.tar.bz2
gentoo-2-85a329a3ee3eafe3905b310eea891cd5bebe0d14.zip
Have USE=-orbit by default to work around bug #411237 (enormously overgrown ~/.gconfd/saved_state). Fix a crash when USE=-orbit.
(Portage version: 2.2.0_alpha99/cvs/Linux x86_64)
Diffstat (limited to 'gnome-base/gconf')
-rw-r--r--gnome-base/gconf/ChangeLog11
-rw-r--r--gnome-base/gconf/files/gconf-3.2.3-shutdown-crash.patch52
-rw-r--r--gnome-base/gconf/gconf-3.2.3-r1.ebuild100
3 files changed, 161 insertions, 2 deletions
diff --git a/gnome-base/gconf/ChangeLog b/gnome-base/gconf/ChangeLog
index a18ad8feaf6c..b7a968e4568a 100644
--- a/gnome-base/gconf/ChangeLog
+++ b/gnome-base/gconf/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for gnome-base/gconf
-# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/gnome-base/gconf/ChangeLog,v 1.262 2011/11/07 01:11:55 tetromino Exp $
+# Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/gconf/ChangeLog,v 1.263 2012/04/11 06:24:50 tetromino Exp $
+
+*gconf-3.2.3-r1 (11 Apr 2012)
+
+ 11 Apr 2012; Alexandre Rostovtsev <tetromino@gentoo.org>
+ +gconf-3.2.3-r1.ebuild, +files/gconf-3.2.3-shutdown-crash.patch:
+ Have USE=-orbit by default to work around bug #411237 (enormously overgrown
+ ~/.gconfd/saved_state). Fix a crash when USE=-orbit.
*gconf-3.2.3 (07 Nov 2011)
diff --git a/gnome-base/gconf/files/gconf-3.2.3-shutdown-crash.patch b/gnome-base/gconf/files/gconf-3.2.3-shutdown-crash.patch
new file mode 100644
index 000000000000..6f36ee9e5c74
--- /dev/null
+++ b/gnome-base/gconf/files/gconf-3.2.3-shutdown-crash.patch
@@ -0,0 +1,52 @@
+From 6f3e127330cb0820a373be77be3cb2cacd0b352e Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Mon, 13 Feb 2012 23:35:06 -0500
+Subject: [PATCH] gconf-dbus: don't crash during sync if gconfd shutting down
+
+The gconfd shuts down after a bit of inactivity. When that
+happens there's a window where it refuses requests from the
+client library with an error. The library is resposible for
+gracefully handling this condition and reacting appropriately.
+
+There are many places in the code where the client library has
+this idiom:
+
+db = gconf_engine_get_database (conf, TRUE, err);
+
+if (db == NULL)
+ {
+ g_return_if_fail(err == NULL || *err != NULL);
+
+ return;
+ }
+
+In the event gconfd is shutting down, db will be NULL, and the
+code will return early from whatever (non-critical) operation
+it was doing.
+
+gconf_engine_suggest_sync has a similiar chunk of code, but it
+neglected the "return;" and then promptly crashed since it wasn't
+expecting db to be NULL.
+
+This commit adds the return;
+
+https://bugzilla.gnome.org/show_bug.cgi?id=670033
+---
+ gconf/gconf-dbus.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/gconf/gconf-dbus.c b/gconf/gconf-dbus.c
+index 9f92125..442a94b 100644
+--- a/gconf/gconf-dbus.c
++++ b/gconf/gconf-dbus.c
+@@ -2029,6 +2029,7 @@ gconf_engine_suggest_sync(GConfEngine* conf, GError** err)
+ if (db == NULL)
+ {
+ g_return_if_fail (err == NULL || *err != NULL);
++ return;
+ }
+
+ message = dbus_message_new_method_call (GCONF_DBUS_SERVICE,
+--
+1.7.8.5
+
diff --git a/gnome-base/gconf/gconf-3.2.3-r1.ebuild b/gnome-base/gconf/gconf-3.2.3-r1.ebuild
new file mode 100644
index 000000000000..41e3024cd52c
--- /dev/null
+++ b/gnome-base/gconf/gconf-3.2.3-r1.ebuild
@@ -0,0 +1,100 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/gconf/gconf-3.2.3-r1.ebuild,v 1.1 2012/04/11 06:24:50 tetromino Exp $
+
+EAPI="4"
+GCONF_DEBUG="yes"
+GNOME_ORG_MODULE="GConf"
+GNOME2_LA_PUNT="yes"
+
+inherit eutils gnome2
+
+DESCRIPTION="Gnome Configuration System and Daemon"
+HOMEPAGE="http://projects.gnome.org/gconf/"
+
+LICENSE="LGPL-2"
+SLOT="2"
+KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd"
+IUSE="debug doc +introspection ldap orbit policykit"
+
+RDEPEND=">=dev-libs/glib-2.25.9:2
+ >=x11-libs/gtk+-2.90:3
+ >=dev-libs/dbus-glib-0.74
+ >=sys-apps/dbus-1
+ >=dev-libs/libxml2-2:2
+ introspection? ( >=dev-libs/gobject-introspection-0.9.5 )
+ ldap? ( net-nds/openldap )
+ orbit? ( >=gnome-base/orbit-2.4:2 )
+ policykit? ( sys-auth/polkit )"
+DEPEND="${RDEPEND}
+ >=dev-util/intltool-0.35
+ >=dev-util/pkgconfig-0.9
+ doc? ( >=dev-util/gtk-doc-1 )"
+
+pkg_setup() {
+ DOCS="AUTHORS ChangeLog NEWS README TODO"
+ G2CONF="${G2CONF}
+ --enable-gtk
+ --disable-static
+ --enable-gsettings-backend
+ --with-gtk=3.0
+ $(use_enable introspection)
+ $(use_with ldap openldap)
+ $(use_enable orbit)
+ $(use_enable policykit defaults-service)
+ ORBIT_IDL=$(type -P orbit-idl-2)"
+ # Need host's IDL compiler for cross or native build, bug #262747
+ kill_gconf
+}
+
+src_prepare() {
+ gnome2_src_prepare
+
+ # Do not start gconfd when installing schemas, fix bug #238276, upstream #631983
+ epatch "${FILESDIR}/${PN}-2.24.0-no-gconfd.patch"
+
+ # Do not crash in gconf_entry_set_value() when entry pointer is NULL, upstream #631985
+ epatch "${FILESDIR}/${PN}-2.28.0-entry-set-value-sigsegv.patch"
+
+ # Fixes "D-BUS error: The GConf daemon is currently shutting down." error
+ epatch "${FILESDIR}/${P}-shutdown-crash.patch"
+}
+
+src_install() {
+ gnome2_src_install
+
+ keepdir /etc/gconf/gconf.xml.mandatory
+ keepdir /etc/gconf/gconf.xml.defaults
+ # Make sure this directory exists, bug #268070, upstream #572027
+ keepdir /etc/gconf/gconf.xml.system
+
+ echo 'CONFIG_PROTECT_MASK="/etc/gconf"' > 50gconf
+ echo 'GSETTINGS_BACKEND="gconf"' >> 50gconf
+ doenvd 50gconf || die "doenv failed"
+ dodir /root/.gconfd || die
+}
+
+pkg_preinst() {
+ kill_gconf
+}
+
+pkg_postinst() {
+ kill_gconf
+
+ # change the permissions to avoid some gconf bugs
+ einfo "changing permissions for gconf dirs"
+ find /etc/gconf/ -type d -exec chmod ugo+rx "{}" \;
+
+ einfo "changing permissions for gconf files"
+ find /etc/gconf/ -type f -exec chmod ugo+r "{}" \;
+}
+
+kill_gconf() {
+ # This function will kill all running gconfd-2 that could be causing troubles
+ if [ -x /usr/bin/gconftool-2 ]
+ then
+ /usr/bin/gconftool-2 --shutdown
+ fi
+
+ return 0
+}