Hello list,

please find attached a couple of patches that have been worked on in the
gnome overlay for both gnome 2.32 release (gsettings integration),
better EAPI=3 support - although I believe work is not complete, prefix
feedback would be most welcome - and various cleanups that are long
overdue - although there is more to be done on that front.

Please also find in these patches a proposal of a waf-utils eclass in
order to put waf related build management into an eclass. There is a
couple of ebuilds already in tree all doing things on their own and I
had a prototype laying around that I had to complete in order to have
hamster-applet-2.32.

Unless there is anything big I'd like to commmit everything big sunday
and in the worst case by next sunday.

Thanks for your attention.
-- 
Gilles Dartiguelongue <e...@gentoo.org>
Gentoo
From e6f29a03cab65d2f1d9a491f4b2882e3899bd06f Mon Sep 17 00:00:00 2001
From: Gilles Dartiguelongue <e...@gentoo.org>
Date: Thu, 21 Oct 2010 12:15:04 +0200
Subject: [PATCH 8/8] eclass/gnome2-utils.eclass: add support for EAPI 3

Integrate changes from the prefix overlay and keep backward
compatibility.

diff --git a/eclass/gnome2-utils.eclass b/eclass/gnome2-utils.eclass
index be9f983..c488dd9 100644
--- a/eclass/gnome2-utils.eclass
+++ b/eclass/gnome2-utils.eclass
@@ -11,7 +11,10 @@
 # Maintained by Gentoo's GNOME herd <gn...@gentoo.org>
 #
 
-
+case "${EAPI:-0}" in
+	0|1|2|3) ;;
+	*) die "EAPI=${EAPI} is not supported" ;;
+esac
 
 # Path to gconftool-2
 : ${GCONFTOOL_BIN:="/usr/bin/gconftool-2"}
@@ -37,7 +40,8 @@ DEPEND=">=sys-apps/sed-4"
 # Find the GConf schemas that are about to be installed and save their location
 # in the GNOME2_ECLASS_SCHEMAS environment variable
 gnome2_gconf_savelist() {
-	pushd "${D}" &> /dev/null
+	has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}"
+	pushd "${ED}" &> /dev/null
 	export GNOME2_ECLASS_SCHEMAS=$(find 'etc/gconf/schemas/' -name '*.schemas' 2> /dev/null)
 	popd &> /dev/null
 }
@@ -46,7 +50,8 @@ gnome2_gconf_savelist() {
 # Applies any schema files installed by the current ebuild to Gconf's database
 # using gconftool-2
 gnome2_gconf_install() {
-	local updater="${ROOT}${GCONFTOOL_BIN}"
+	has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}"
+	local updater="${EROOT}${GCONFTOOL_BIN}"
 
 	if [[ ! -x "${updater}" ]]; then
 		debug-print "${updater} is not executable"
@@ -60,15 +65,15 @@ gnome2_gconf_install() {
 
 	# We are ready to install the GCONF Scheme now
 	unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
-	export GCONF_CONFIG_SOURCE="$("${updater}" --get-default-source | sed "s;:/;:${ROOT};")"
+	export GCONF_CONFIG_SOURCE="$("${updater}" --get-default-source | sed "s;:/;:${EROOT};")"
 
 	einfo "Installing GNOME 2 GConf schemas"
 
 	local F
 	for F in ${GNOME2_ECLASS_SCHEMAS}; do
-		if [[ -e "${ROOT}${F}" ]]; then
+		if [[ -e "${EROOT}${F}" ]]; then
 			debug-print "Installing schema: ${F}"
-			"${updater}" --makefile-install-rule "${ROOT}${F}" 1>/dev/null
+			"${updater}" --makefile-install-rule "${EROOT}${F}" 1>/dev/null
 		fi
 	done
 
@@ -85,7 +90,8 @@ gnome2_gconf_install() {
 # Removes schema files previously installed by the current ebuild from Gconf's
 # database.
 gnome2_gconf_uninstall() {
-	local updater="${ROOT}${GCONFTOOL_BIN}"
+	has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}"
+	local updater="${EROOT}${GCONFTOOL_BIN}"
 
 	if [[ ! -x "${updater}" ]]; then
 		debug-print "${updater} is not executable"
@@ -98,15 +104,15 @@ gnome2_gconf_uninstall() {
 	fi
 
 	unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
-	export GCONF_CONFIG_SOURCE="$("${updater}" --get-default-source | sed "s;:/;:${ROOT};")"
+	export GCONF_CONFIG_SOURCE="$("${updater}" --get-default-source | sed "s;:/;:${EROOT};")"
 
 	einfo "Uninstalling GNOME 2 GConf schemas"
 
 	local F
 	for F in ${GNOME2_ECLASS_SCHEMAS}; do
-		if [[ -e "${ROOT}${F}" ]]; then
+		if [[ -e "${EROOT}${F}" ]]; then
 			debug-print "Uninstalling gconf schema: ${F}"
-			"${updater}" --makefile-uninstall-rule "${ROOT}${F}" 1>/dev/null
+			"${updater}" --makefile-uninstall-rule "${EROOT}${F}" 1>/dev/null
 		fi
 	done
 
@@ -124,7 +130,8 @@ gnome2_gconf_uninstall() {
 # in the GNOME2_ECLASS_ICONS environment variable
 # That function should be called from pkg_preinst
 gnome2_icon_savelist() {
-	pushd "${D}" &> /dev/null
+	has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}"
+	pushd "${ED}" &> /dev/null
 	export GNOME2_ECLASS_ICONS=$(find 'usr/share/icons' -maxdepth 1 -mindepth 1 -type d 2> /dev/null)
 	popd &> /dev/null
 }
@@ -133,7 +140,8 @@ gnome2_icon_savelist() {
 # Updates Gtk+ icon cache files under /usr/share/icons if the current ebuild
 # have installed anything under that location.
 gnome2_icon_cache_update() {
-	local updater="${ROOT}${GTK_UPDATE_ICON_CACHE}"
+	has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}"
+	local updater="${EROOT}${GTK_UPDATE_ICON_CACHE}"
 
 	if [[ ! -x "${updater}" ]] ; then
 		debug-print "${updater} is not executable"
@@ -155,14 +163,14 @@ gnome2_icon_cache_update() {
 		if [[ -f "${ROOT}${dir}/index.theme" ]] ; then
 			local rv=0
 
-			"${updater}" -qf "${ROOT}${dir}"
+			"${updater}" -qf "${EROOT}${dir}"
 			rv=$?
 
 			if [[ ! $rv -eq 0 ]] ; then
-				debug-print "Updating cache failed on ${ROOT}${dir}"
+				debug-print "Updating cache failed on ${EROOT}${dir}"
 
 				# Add to the list of failures
-				fails[$(( ${#fai...@]} + 1 ))]="${ROOT}${dir}"
+				fails[$(( ${#fai...@]} + 1 ))]="${EROOT}${dir}"
 
 				retval=2
 			fi
@@ -226,20 +234,23 @@ gnome2_omf_fix() {
 
 # Updates the global scrollkeeper database.
 gnome2_scrollkeeper_update() {
-	if [[ -x "${ROOT}${SCROLLKEEPER_UPDATE_BIN}" ]]; then
+	has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}"
+	if [[ -x "${EROOT}${SCROLLKEEPER_UPDATE_BIN}" ]]; then
 		einfo "Updating scrollkeeper database ..."
-		"${ROOT}${SCROLLKEEPER_UPDATE_BIN}" -q -p "${ROOT}${SCROLLKEEPER_DIR}"
+		"${EROOT}${SCROLLKEEPER_UPDATE_BIN}" -q -p "${EROOT}${SCROLLKEEPER_DIR}"
 	fi
 }
 
 gnome2_schemas_savelist() {
-	pushd "${D}" &>/dev/null
+	has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}"
+	pushd "${ED}" &>/dev/null
 	export GNOME2_ECLASS_GLIB_SCHEMAS=$(find 'usr/share/glib-2.0/schemas' -name '*.gschema.xml' 2>/dev/null)
 	popd &>/dev/null
 }
 
 gnome2_schemas_update() {
-	local updater="${ROOT}${GLIB_COMPILE_SCHEMAS}"
+	has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}"
+	local updater="${EROOT}${GLIB_COMPILE_SCHEMAS}"
 
 	if [[ ! -x ${updater} ]]; then
 		debug-print "${updater} is not executable"
@@ -252,6 +263,6 @@ gnome2_schemas_update() {
 	fi
 
 	ebegin "Updating GSettings schemas"
-	${updater} --allow-any-name "$@" "${ROOT%/}/usr/share/glib-2.0/schemas" &>/dev/null
+	${updater} --allow-any-name "$@" "${EROOT%/}/usr/share/glib-2.0/schemas" &>/dev/null
 	eend $?
 }
-- 
1.7.3.2

From 55e224c4d5c1a28a1ca6971b43fc093a1f2517c7 Mon Sep 17 00:00:00 2001
From: Gilles Dartiguelongue <e...@gentoo.org>
Date: Thu, 21 Oct 2010 12:01:09 +0200
Subject: [PATCH 7/8] eclass/gnome2-utils.eclass: cosmetic fixes


diff --git a/eclass/gnome2-utils.eclass b/eclass/gnome2-utils.eclass
index c893a70..be9f983 100644
--- a/eclass/gnome2-utils.eclass
+++ b/eclass/gnome2-utils.eclass
@@ -47,14 +47,14 @@ gnome2_gconf_savelist() {
 # using gconftool-2
 gnome2_gconf_install() {
 	local updater="${ROOT}${GCONFTOOL_BIN}"
-	local F
 
 	if [[ ! -x "${updater}" ]]; then
+		debug-print "${updater} is not executable"
 		return
 	fi
 
 	if [[ -z "${GNOME2_ECLASS_SCHEMAS}" ]]; then
-		einfo "No GNOME 2 GConf schemas found"
+		debug-print "No GNOME 2 GConf schemas found"
 		return
 	fi
 
@@ -64,9 +64,10 @@ gnome2_gconf_install() {
 
 	einfo "Installing GNOME 2 GConf schemas"
 
+	local F
 	for F in ${GNOME2_ECLASS_SCHEMAS}; do
 		if [[ -e "${ROOT}${F}" ]]; then
-			# echo "DEBUG::gconf install  ${F}"
+			debug-print "Installing schema: ${F}"
 			"${updater}" --makefile-install-rule "${ROOT}${F}" 1>/dev/null
 		fi
 	done
@@ -85,14 +86,14 @@ gnome2_gconf_install() {
 # database.
 gnome2_gconf_uninstall() {
 	local updater="${ROOT}${GCONFTOOL_BIN}"
-	local F
 
 	if [[ ! -x "${updater}" ]]; then
+		debug-print "${updater} is not executable"
 		return
 	fi
 
 	if [[ -z "${GNOME2_ECLASS_SCHEMAS}" ]]; then
-		einfo "No GNOME 2 GConf schemas found"
+		debug-print "No GNOME 2 GConf schemas found"
 		return
 	fi
 
@@ -101,9 +102,10 @@ gnome2_gconf_uninstall() {
 
 	einfo "Uninstalling GNOME 2 GConf schemas"
 
+	local F
 	for F in ${GNOME2_ECLASS_SCHEMAS}; do
 		if [[ -e "${ROOT}${F}" ]]; then
-			# echo "DEBUG::gconf uninstall  ${F}"
+			debug-print "Uninstalling gconf schema: ${F}"
 			"${updater}" --makefile-uninstall-rule "${ROOT}${F}" 1>/dev/null
 		fi
 	done
@@ -139,10 +141,10 @@ gnome2_icon_cache_update() {
 	fi
 
 	if [[ -z "${GNOME2_ECLASS_ICONS}" ]]; then
+		debug-print "No icon cache to update"
 		return
 	fi
 
-
 	ebegin "Updating icons cache"
 
 	local retval=0
@@ -245,7 +247,7 @@ gnome2_schemas_update() {
 	fi
 
 	if [[ -z ${GNOME2_ECLASS_GLIB_SCHEMAS} ]]; then
-		debug-print "no schemas to update"
+		debug-print "No GSettings schemas to update"
 		return
 	fi
 
-- 
1.7.3.2

From 0aea30a028caa689245397452105c91f83bfcaa1 Mon Sep 17 00:00:00 2001
From: Gilles Dartiguelongue <e...@gentoo.org>
Date: Thu, 21 Oct 2010 11:47:58 +0200
Subject: [PATCH 5/8] eclass/gnome2-utils.eclass: replace usage of type -P by variables

There is no reason those binaries would not be at the usual place.

diff --git a/eclass/gnome2-utils.eclass b/eclass/gnome2-utils.eclass
index 4c7d4f3..33a25c9 100644
--- a/eclass/gnome2-utils.eclass
+++ b/eclass/gnome2-utils.eclass
@@ -22,6 +22,12 @@
 # Path to scrollkeeper-update
 : ${SCROLLKEEPER_UPDATE_BIN:="${ROOT}usr/bin/scrollkeeper-update"}
 
+# Path to gtk-update-icon-cache
+: ${GTK_UPDATE_ICON_CACHE:="/usr/bin/gtk-update-icon-cache"}
+
+# Path to glib-compile-schemas
+: ${GLIB_COMPILE_SCHEMAS:="/usr/bin/glib-compile-schemas"}
+
 
 
 DEPEND=">=sys-apps/sed-4"
@@ -123,7 +129,7 @@ gnome2_icon_savelist() {
 # Updates Gtk+ icon cache files under /usr/share/icons if the current ebuild
 # have installed anything under that location.
 gnome2_icon_cache_update() {
-	local updater="$(type -p gtk-update-icon-cache 2> /dev/null)"
+	local updater="${ROOT}${GTK_UPDATE_ICON_CACHE}"
 
 	if [[ ! -x "${updater}" ]] ; then
 		debug-print "${updater} is not executable"
@@ -229,7 +235,7 @@ gnome2_schemas_savelist() {
 }
 
 gnome2_schemas_update() {
-	local updater="$(type -P glib-compile-schemas 2>/dev/null)"
+	local updater="${ROOT}${GLIB_COMPILE_SCHEMAS}"
 
 	if [[ ! -x ${updater} ]]; then
 		debug-print "${updater} is not executable"
-- 
1.7.3.2

From 525b5796bbd59c845e533dfeb052f841f12d3689 Mon Sep 17 00:00:00 2001
From: Gilles Dartiguelongue <e...@gentoo.org>
Date: Thu, 14 Oct 2010 16:43:30 +0200
Subject: [PATCH 4/8] eclass: add prototype waf-utils eclass


 create mode 100644 eclass/waf-utils.eclass

diff --git a/eclass/waf-utils.eclass b/eclass/waf-utils.eclass
new file mode 100644
index 0000000..a36c161
--- /dev/null
+++ b/eclass/waf-utils.eclass
@@ -0,0 +1,74 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+# @ECLASS: waf-utils.eclass
+# @MAINTAINER:
+# ?...@gentoo.org
+#
+# @CODE
+# Original Author: Gilles Dartiguelongue <e...@gentoo.org>
+# @CODE
+# @BLURB: common ebuild functions for waf-based packages
+# @DESCRIPTION:
+# The waf-utils eclass contains functions that make creating ebuild for
+# waf-based packages much easier.
+# Its main features are support of common portage default settings.
+
+inherit base eutils multilib python
+
+case ${EAPI:-0} in
+	3|2) EXPORT_FUNCTIONS pkg_setup src_configure src_compile src_install ;;
+	*) die "EAPI=${EAPI} is not supported" ;;
+esac
+
+# @ECLASS-VARIABLE: DOCS
+# @DESCRIPTION:
+# Documents passed to dodoc command.
+
+# @FUNCTION: waf-utils_src_configure
+# @DESCRIPTION:
+# General function for configuring with waf.
+waf-utils_pkg_setup() {
+	python_set_active_version 2
+}
+
+# @FUNCTION: waf-utils_src_configure
+# @DESCRIPTION:
+# General function for configuring with waf.
+waf-utils_src_configure() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	CCFLAGS="${CFLAGS}" LINKFLAGS="${LDFLAGS}" "${S}"/waf \
+		--prefix=/usr \
+		--libdir=/usr/$(get_libdir) \
+		$@ \
+		configure || die "configure failed"
+}
+
+# @FUNCTION: waf-utils_src_compile
+# @DESCRIPTION:
+# General function for compiling with waf.
+waf-utils_src_compile() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	local jobs=$(sed \
+		-e 's/.*\(\-j[ 0-9]\+\) .*/\1/' \
+		-e 's/--jobs=\?/-j/' \
+		-e 's/-j/--jobs=/' <<< ${MAKEOPTS})
+	"${S}"/waf build ${jobs} || die "build failed"
+}
+
+# @FUNCTION: waf-utils_src_install
+# @DESCRIPTION:
+# Function for installing the package.
+waf-utils_src_install() {
+	debug-print-function ${FUNCNAME} "$@"
+	has ${EAPI:-0} 2 && ! use prefix && ED="${D}"
+
+	"${S}"/waf --destdir="${ED}" install  || die "Make install failed"
+
+	# Manual document installation
+	[[ -n "${DOCS}" ]] && { dodoc ${DOCS} || die "dodoc failed" ; }
+}
+
-- 
1.7.3.2

From 51ad6602827b0566071e19f57b8bf251157a6a17 Mon Sep 17 00:00:00 2001
From: Gilles Dartiguelongue <e...@gentoo.org>
Date: Wed, 13 Oct 2010 13:35:14 +0200
Subject: [PATCH 3/8] eclass/gnome2.eclass: list supported EAPI explicitely

And die on not supported EAPI. This changes stems from last discussion
that was help on gentoo-dev mailing list about autotools-utils eclass
and subsequent changes done to a couple of eclasses, most notably kde4.

diff --git a/eclass/gnome2.eclass b/eclass/gnome2.eclass
index a572511..4740141 100644
--- a/eclass/gnome2.eclass
+++ b/eclass/gnome2.eclass
@@ -18,9 +18,10 @@ case "${EAPI:-0}" in
 	0|1)
 		EXPORT_FUNCTIONS src_unpack src_compile src_install pkg_preinst pkg_postinst pkg_postrm
 		;;
-	*)
+	2|3)
 		EXPORT_FUNCTIONS src_unpack src_prepare src_configure src_compile src_install pkg_preinst pkg_postinst pkg_postrm
 		;;
+	*) die "EAPI=${EAPI} is not supported" ;;
 esac
 
 # Extra configure opts passed to econf
-- 
1.7.3.2

From df486ff332a883b69ccf08c8c9e56794724529e5 Mon Sep 17 00:00:00 2001
From: Jonathan Callen <a...@gentoo.org>
Date: Tue, 22 Jun 2010 23:36:47 -0400
Subject: [PATCH 1/8] eclass: add gsettings support to gnome2.eclass


diff --git a/eclass/gnome2-utils.eclass b/eclass/gnome2-utils.eclass
index 7f9ef89..4c7d4f3 100644
--- a/eclass/gnome2-utils.eclass
+++ b/eclass/gnome2-utils.eclass
@@ -221,3 +221,27 @@ gnome2_scrollkeeper_update() {
 		"${SCROLLKEEPER_UPDATE_BIN}" -q -p "${SCROLLKEEPER_DIR}"
 	fi
 }
+
+gnome2_schemas_savelist() {
+	pushd "${D}" &>/dev/null
+	export GNOME2_ECLASS_GLIB_SCHEMAS=$(find 'usr/share/glib-2.0/schemas' -name '*.gschema.xml' 2>/dev/null)
+	popd &>/dev/null
+}
+
+gnome2_schemas_update() {
+	local updater="$(type -P glib-compile-schemas 2>/dev/null)"
+
+	if [[ ! -x ${updater} ]]; then
+		debug-print "${updater} is not executable"
+		return
+	fi
+
+	if [[ -z ${GNOME2_ECLASS_GLIB_SCHEMAS} ]]; then
+		debug-print "no schemas to update"
+		return
+	fi
+
+	ebegin "Updating GSettings schemas"
+	${updater} --allow-any-name "$@" "${ROOT%/}/usr/share/glib-2.0/schemas" &>/dev/null
+	eend $?
+}
diff --git a/eclass/gnome2.eclass b/eclass/gnome2.eclass
index c67eb84..4a8d147 100644
--- a/eclass/gnome2.eclass
+++ b/eclass/gnome2.eclass
@@ -121,6 +121,7 @@ gnome2_src_install() {
 gnome2_pkg_preinst() {
 	gnome2_gconf_savelist
 	gnome2_icon_savelist
+	gnome2_schemas_savelist
 }
 
 gnome2_pkg_postinst() {
@@ -128,6 +129,7 @@ gnome2_pkg_postinst() {
 	fdo-mime_desktop_database_update
 	fdo-mime_mime_database_update
 	gnome2_icon_cache_update
+	gnome2_schemas_update
 
 	if [[ "${SCROLLKEEPER_UPDATE}" = "1" ]]; then
 		gnome2_scrollkeeper_update
@@ -142,6 +144,7 @@ gnome2_pkg_postrm() {
 	fdo-mime_desktop_database_update
 	fdo-mime_mime_database_update
 	gnome2_icon_cache_update
+	gnome2_schemas_update --uninstall
 
 	if [[ "${SCROLLKEEPER_UPDATE}" = "1" ]]; then
 		gnome2_scrollkeeper_update
-- 
1.7.3.2

From 40b6bd6011bf376b6625f62fdc2b4241d84f3959 Mon Sep 17 00:00:00 2001
From: Gilles Dartiguelongue <e...@gentoo.org>
Date: Thu, 21 Oct 2010 11:54:37 +0200
Subject: [PATCH 6/8] eclass/gnome2-utils.eclass: make sure we refer to $ROOT where needed


diff --git a/eclass/gnome2-utils.eclass b/eclass/gnome2-utils.eclass
index 33a25c9..c893a70 100644
--- a/eclass/gnome2-utils.eclass
+++ b/eclass/gnome2-utils.eclass
@@ -14,13 +14,13 @@
 
 
 # Path to gconftool-2
-: ${GCONFTOOL_BIN:="${ROOT}usr/bin/gconftool-2"}
+: ${GCONFTOOL_BIN:="/usr/bin/gconftool-2"}
 
 # Directory where scrollkeeper-update should do its work
-: ${SCROLLKEEPER_DIR:="${ROOT}var/lib/scrollkeeper"}
+: ${SCROLLKEEPER_DIR:="/var/lib/scrollkeeper"}
 
 # Path to scrollkeeper-update
-: ${SCROLLKEEPER_UPDATE_BIN:="${ROOT}usr/bin/scrollkeeper-update"}
+: ${SCROLLKEEPER_UPDATE_BIN:="/usr/bin/scrollkeeper-update"}
 
 # Path to gtk-update-icon-cache
 : ${GTK_UPDATE_ICON_CACHE:="/usr/bin/gtk-update-icon-cache"}
@@ -46,9 +46,10 @@ gnome2_gconf_savelist() {
 # Applies any schema files installed by the current ebuild to Gconf's database
 # using gconftool-2
 gnome2_gconf_install() {
+	local updater="${ROOT}${GCONFTOOL_BIN}"
 	local F
 
-	if [[ ! -x "${GCONFTOOL_BIN}" ]]; then
+	if [[ ! -x "${updater}" ]]; then
 		return
 	fi
 
@@ -59,14 +60,14 @@ gnome2_gconf_install() {
 
 	# We are ready to install the GCONF Scheme now
 	unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
-	export GCONF_CONFIG_SOURCE="$("${GCONFTOOL_BIN}" --get-default-source | sed "s;:/;:${ROOT};")"
+	export GCONF_CONFIG_SOURCE="$("${updater}" --get-default-source | sed "s;:/;:${ROOT};")"
 
 	einfo "Installing GNOME 2 GConf schemas"
 
 	for F in ${GNOME2_ECLASS_SCHEMAS}; do
 		if [[ -e "${ROOT}${F}" ]]; then
 			# echo "DEBUG::gconf install  ${F}"
-			"${GCONFTOOL_BIN}" --makefile-install-rule "${ROOT}${F}" 1>/dev/null
+			"${updater}" --makefile-install-rule "${ROOT}${F}" 1>/dev/null
 		fi
 	done
 
@@ -83,9 +84,10 @@ gnome2_gconf_install() {
 # Removes schema files previously installed by the current ebuild from Gconf's
 # database.
 gnome2_gconf_uninstall() {
+	local updater="${ROOT}${GCONFTOOL_BIN}"
 	local F
 
-	if [[ ! -x "${GCONFTOOL_BIN}" ]]; then
+	if [[ ! -x "${updater}" ]]; then
 		return
 	fi
 
@@ -95,14 +97,14 @@ gnome2_gconf_uninstall() {
 	fi
 
 	unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
-	export GCONF_CONFIG_SOURCE="$("${GCONFTOOL_BIN}" --get-default-source | sed "s;:/;:${ROOT};")"
+	export GCONF_CONFIG_SOURCE="$("${updater}" --get-default-source | sed "s;:/;:${ROOT};")"
 
 	einfo "Uninstalling GNOME 2 GConf schemas"
 
 	for F in ${GNOME2_ECLASS_SCHEMAS}; do
 		if [[ -e "${ROOT}${F}" ]]; then
 			# echo "DEBUG::gconf uninstall  ${F}"
-			"${GCONFTOOL_BIN}" --makefile-uninstall-rule "${ROOT}${F}" 1>/dev/null
+			"${updater}" --makefile-uninstall-rule "${ROOT}${F}" 1>/dev/null
 		fi
 	done
 
@@ -222,9 +224,9 @@ gnome2_omf_fix() {
 
 # Updates the global scrollkeeper database.
 gnome2_scrollkeeper_update() {
-	if [[ -x "${SCROLLKEEPER_UPDATE_BIN}" ]]; then
+	if [[ -x "${ROOT}${SCROLLKEEPER_UPDATE_BIN}" ]]; then
 		einfo "Updating scrollkeeper database ..."
-		"${SCROLLKEEPER_UPDATE_BIN}" -q -p "${SCROLLKEEPER_DIR}"
+		"${ROOT}${SCROLLKEEPER_UPDATE_BIN}" -q -p "${ROOT}${SCROLLKEEPER_DIR}"
 	fi
 }
 
-- 
1.7.3.2

From e101b45c17ed261c31302d0b4750aa2932ce1f61 Mon Sep 17 00:00:00 2001
From: Gilles Dartiguelongue <e...@gentoo.org>
Date: Wed, 13 Oct 2010 10:34:41 +0200
Subject: [PATCH 2/8] eclass/gnome2.eclass: add die statement to dodir and dodoc


diff --git a/eclass/gnome2.eclass b/eclass/gnome2.eclass
index 4a8d147..a572511 100644
--- a/eclass/gnome2.eclass
+++ b/eclass/gnome2.eclass
@@ -87,7 +87,7 @@ gnome2_src_install() {
 	# if this is not present, scrollkeeper-update may segfault and
 	# create bogus directories in /var/lib/
 	local sk_tmp_dir="/var/lib/scrollkeeper"
-	dodir "${sk_tmp_dir}"
+	dodir "${sk_tmp_dir}" || die "dodir failed"
 
 	# we must delay gconf schema installation due to sandbox
 	export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL="1"
@@ -103,7 +103,9 @@ gnome2_src_install() {
 	unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
 
 	# Manual document installation
-	[[ -n "${DOCS}" ]] && dodoc ${DOCS}
+	if [[ -n "${DOCS}" ]]; then
+		dodoc ${DOCS} || die "dodoc failed"
+	fi
 
 	# Do not keep /var/lib/scrollkeeper because:
 	# 1. The scrollkeeper database is regenerated at pkg_postinst()
-- 
1.7.3.2

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to