summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'eclass/gnome2.eclass')
-rw-r--r--eclass/gnome2.eclass180
1 files changed, 135 insertions, 45 deletions
diff --git a/eclass/gnome2.eclass b/eclass/gnome2.eclass
index f206fc1..f3c3d72 100644
--- a/eclass/gnome2.eclass
+++ b/eclass/gnome2.eclass
@@ -1,16 +1,14 @@
-# Copyright 1999-2006 Gentoo Foundation
+# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/eclass/gnome2.eclass,v 1.87 2010/04/26 19:37:25 abcd Exp $
+# $Header: $
-#
-# gnome2.eclass
-#
+# @ECLASS: gnome2.eclass
+# @MAINTAINER:
+# gnome@gentoo.org
+# @BLURB:
+# @DESCRIPTION:
# Exports portage base functions used by ebuilds written for packages using the
# GNOME framework. For additional functions, see gnome2-utils.eclass.
-#
-# Maintained by Gentoo's GNOME herd <gnome@gentoo.org>
-#
-
inherit fdo-mime libtool gnome.org gnome2-utils
@@ -18,28 +16,74 @@ case "${EAPI:-0}" in
0|1)
EXPORT_FUNCTIONS src_unpack src_compile src_install pkg_preinst pkg_postinst pkg_postrm
;;
- 2|3)
+ 2|3|4)
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
+#if [[ "${I_WANT_GNOME_3_3_X}" != "yes" ]]; then
+# die "
+#
+#The GNOME overlay is switching to GNOME 3.3.x prerelease packages.
+#These are unstable, potentially incompatible with 3.2, and may well
+#break your system in intriguing ways.
+#
+#If you enabled the GNOME overlay to get GNOME 3.2, please disable
+#it now, since GNOME 3.2 is already in portage and unmasked.
+#
+#If you really do want experimental GNOME 3.3.x, please add
+#I_WANT_GNOME_3_3_X=yes
+#to your /etc/make.conf and continue.
+#
+#"
+#fi
+
+# @ECLASS-VARIABLE: G2CONF
+# @DEFAULT-UNSET
+# @DESCRIPTION:
# Extra configure opts passed to econf
G2CONF=${G2CONF:-""}
+# @ECLASS-VARIABLE: GNOME2_LA_PUNT
+# @DESCRIPTION:
# Should we delete all the .la files?
-# Do NOT use without due consideration
+# NOT to be used without due consideration.
GNOME2_LA_PUNT=${GNOME2_LA_PUNT:-"no"}
+# @ECLASS-VARIABLE: ELTCONF
+# @DEFAULT-UNSET
+# @DESCRIPTION:
# Extra options passed to elibtoolize
ELTCONF=${ELTCONF:-""}
+# @ECLASS-VARIABLE: USE_EINSTALL
+# @DEFAULT-UNSET
+# @DEPRECATED
+# @DESCRIPTION:
# Should we use EINSTALL instead of DESTDIR
USE_EINSTALL=${USE_EINSTALL:-""}
-# Run scrollkeeper for this package?
+# @ECLASS-VARIABLE: SCROLLKEEPER_UPDATE
+# @DEPRECATED
+# @DESCRIPTION:
+# Whether to run scrollkeeper for this package or not.
SCROLLKEEPER_UPDATE=${SCROLLKEEPER_UPDATE:-"1"}
+# @ECLASS-VARIABLE: DOCS
+# @DEFAULT-UNSET
+# @DESCRIPTION:
+# String containing documents passed to dodoc command.
+
+# @ECLASS-VARIABLE: GCONF_DEBUG
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Whether to handle debug or not.
+# Some gnome applications support various levels of debugging (yes, no, minimum,
+# etc), but using --disable-debug also removes g_assert which makes debugging
+# harder. This variable should be set to yes for such packages for the eclass
+# to handle it properly. It will enable minimal debug with USE=-debug.
+# Note that this is most commonly found in configure.ac as GNOME_DEBUG_CHECK.
if [[ ${GCONF_DEBUG} != "no" ]]; then
@@ -47,25 +91,50 @@ if [[ ${GCONF_DEBUG} != "no" ]]; then
fi
-
+# @FUNCTION: gnome2_src_unpack
+# @DESCRIPTION:
+# Stub function for old EAPI.
gnome2_src_unpack() {
unpack ${A}
cd "${S}"
has ${EAPI:-0} 0 1 && gnome2_src_prepare
}
+# @FUNCTION: gnome2_src_prepare
+# @DESCRIPTION:
+# Prepare environment for build, fix build of scrollkeeper documentation,
+# run elibtoolize.
gnome2_src_prepare() {
- # Don't use the session bus address inherited via the environment
- # causes test and introspection-building failures
+ # Reset various variables inherited via the environment.
+ # Causes test failures, introspection-build failures, and access violations
+ # FIXME: seems to have no effect for exported variables, at least with
+ # portage-2.2.0_alpha74
unset DBUS_SESSION_BUS_ADDRESS
+ unset DISPLAY
+ unset GNOME_KEYRING_CONTROL
+ unset GNOME_KEYRING_PID
+ unset XAUTHORITY
+ unset XDG_SESSION_COOKIE
+
+ # Prevent assorted access violations and test failures
+ gnome2_environment_reset
# Prevent scrollkeeper access violations
gnome2_omf_fix
# Run libtoolize
- elibtoolize ${ELTCONF}
+ if has ${EAPI:-0} 0 1 2 3; then
+ elibtoolize ${ELTCONF}
+ else
+ # Everything is fatal EAPI 4 onwards
+ nonfatal elibtoolize ${ELTCONF}
+ fi
+
}
+# @FUNCTION: gnome2_src_configure
+# @DESCRIPTION:
+# Gnome specific configure handling
gnome2_src_configure() {
# Update the GNOME configuration options
if [[ ${GCONF_DEBUG} != 'no' ]] ; then
@@ -75,31 +144,38 @@ gnome2_src_configure() {
fi
# Prevent a QA warning
- if hasq doc ${IUSE} ; then
+ if has doc ${IUSE} ; then
G2CONF="${G2CONF} $(use_enable doc gtk-doc)"
fi
- # Avoid sandbox violations caused by misbehaving packages (bug #128289)
- addwrite "/root/.gnome2"
+ # Pass --disable-maintainer-mode when needed
+ if grep -q "^[[:space:]]*AM_MAINTAINER_MODE(\[enable\])" configure.*; then
+ G2CONF="${G2CONF} --disable-maintainer-mode"
+ fi
+
+ # Pass --disable-scrollkeeper when possible
+ if grep -q "disable-scrollkeeper" configure; then
+ G2CONF="${G2CONF} --disable-scrollkeeper"
+ fi
+
+ # Avoid sandbox violations caused by gnome-vfs (bug #128289 and #345659)
+ addwrite "$(unset HOME; echo ~)/.gnome2"
- # GST_REGISTRY is to work around gst-inspect trying to read/write /root
- GST_REGISTRY="${S}/registry.xml" econf "$@" ${G2CONF} || die "configure failed"
+ econf "$@" ${G2CONF}
}
+# @FUNCTION: gnome2_src_compile
+# @DESCRIPTION:
+# Stub function for old EAPI.
gnome2_src_compile() {
has ${EAPI:-0} 0 1 && gnome2_src_configure "$@"
-
- # Whenever new API is added to glib/cairo/libxml2 etc, gobject-introspection
- # needs to be rebuilt so that the typelibs/girs contain the new API data
- if has introspection ${IUSE} && use introspection; then
- ewarn "If you get a compilation failure related to introspection, try"
- ewarn "rebuilding dev-libs/gobject-introspection so that it's updated"
- ewarn "for any new glib, cairo, etc APIs"
- fi
-
emake || die "compile failure"
}
+# @FUNCTION: gnome2_src_install
+# @DESCRIPTION:
+# Gnome specific install. Handles typical GConf and scrollkeeper setup
+# in packages and removal of .la files if requested
gnome2_src_install() {
has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}"
# if this is not present, scrollkeeper-update may segfault and
@@ -129,10 +205,9 @@ gnome2_src_install() {
# 1. The scrollkeeper database is regenerated at pkg_postinst()
# 2. ${ED}/var/lib/scrollkeeper contains only indexes for the current pkg
# thus it makes no sense if pkg_postinst ISN'T run for some reason.
- if [[ -z "$(find "${D}" -name '*.omf')" ]]; then
- export SCROLLKEEPER_UPDATE="0"
- fi
rm -rf "${ED}${sk_tmp_dir}"
+ rmdir "${ED}/var/lib" 2>/dev/null
+ rmdir "${ED}/var" 2>/dev/null
# Make sure this one doesn't get in the portage db
rm -fr "${ED}/usr/share/applications/mimeinfo.cache"
@@ -140,42 +215,57 @@ gnome2_src_install() {
# Delete all .la files
if [[ "${GNOME2_LA_PUNT}" != "no" ]]; then
ebegin "Removing .la files"
- find "${D}" -name '*.la' -exec rm -f '{}' + || die
+ if ! { has static-libs ${IUSE//+} && use static-libs; }; then
+ find "${D}" -name '*.la' -exec rm -f {} + || die "la file removal failed"
+ fi
eend
fi
}
+# @FUNCTION: gnome2_pkg_preinst
+# @DESCRIPTION:
+# Finds Icons, GConf and GSettings schemas for later handling in pkg_postinst
gnome2_pkg_preinst() {
gnome2_gconf_savelist
gnome2_icon_savelist
gnome2_schemas_savelist
+ gnome2_scrollkeeper_savelist
}
+# @FUNCTION: gnome2_pkg_postinst
+# @DESCRIPTION:
+# Handle scrollkeeper, GConf, GSettings, Icons, desktop and mime
+# database updates.
gnome2_pkg_postinst() {
gnome2_gconf_install
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
- fi
+ gnome2_scrollkeeper_update
+
+ # This should only be in the overlay
+ ewarn "**************************************************************"
+ ewarn "This is the *experimental* Gentoo GNOME Overlay"
+ ewarn "Please report bugs at #gentoo-desktop @ FreeNode"
+ ewarn "Do NOT go to upstream with bugs without checking with us first"
+ ewarn "**************************************************************"
}
+# @#FUNCTION: gnome2_pkg_prerm
+# @#DESCRIPTION:
+# # FIXME Handle GConf schemas removal
#gnome2_pkg_prerm() {
# gnome2_gconf_uninstall
#}
+# @FUNCTION: gnome2_pkg_postrm
+# @DESCRIPTION:
+# Handle scrollkeeper, GSettings, Icons, desktop and mime database updates.
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
- fi
+ gnome2_schemas_update
+ gnome2_scrollkeeper_update
}
-
-# pkg_prerm