diff options
author | Alexandre Rostovtsev <tetromino@gentoo.org> | 2012-04-11 06:24:50 +0000 |
---|---|---|
committer | Alexandre Rostovtsev <tetromino@gentoo.org> | 2012-04-11 06:24:50 +0000 |
commit | 85a329a3ee3eafe3905b310eea891cd5bebe0d14 (patch) | |
tree | ea1fd360968c358d71bdf8816a054e2b7b4879fc /gnome-base/gconf | |
parent | add patch from Debian to work around resizing bug (bug #411539) (diff) | |
download | gentoo-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/ChangeLog | 11 | ||||
-rw-r--r-- | gnome-base/gconf/files/gconf-3.2.3-shutdown-crash.patch | 52 | ||||
-rw-r--r-- | gnome-base/gconf/gconf-3.2.3-r1.ebuild | 100 |
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 +} |