summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuben Bressler <ruben.bressler@cerpamid.co.cu>2010-07-19 18:53:21 -0400
committerRuben Bressler <ruben.bressler@cerpamid.co.cu>2010-07-19 18:53:21 -0400
commita19de861c2072c3690ab09c891624c96d5630f3e (patch)
tree47ea230f617f0518d6f778bee9f4b335bcc8aedd /gnome-base
parentadicionando ultima versión de x11-libs (diff)
downloadrubenqba-a19de861c2072c3690ab09c891624c96d5630f3e.tar.gz
rubenqba-a19de861c2072c3690ab09c891624c96d5630f3e.tar.bz2
rubenqba-a19de861c2072c3690ab09c891624c96d5630f3e.zip
adicionando ultima versión de gnome-shell
Diffstat (limited to 'gnome-base')
-rw-r--r--gnome-base/dconf/Manifest2
-rw-r--r--gnome-base/dconf/dconf-0.4.2.ebuild29
-rw-r--r--gnome-base/gnome-applets/Manifest2
-rw-r--r--gnome-base/gnome-applets/gnome-applets-2.31.5.ebuild141
-rw-r--r--gnome-base/gnome-control-center/Manifest2
-rw-r--r--gnome-base/gnome-control-center/gnome-control-center-2.31.5.ebuild82
-rw-r--r--gnome-base/gnome-desktop/Manifest3
-rw-r--r--gnome-base/gnome-desktop/files/gnome-desktop-2.90.4-remove-shared-data.patch69
-rw-r--r--gnome-base/gnome-desktop/gnome-desktop-2.90.4.ebuild57
-rw-r--r--gnome-base/gnome-js-common/Manifest2
-rw-r--r--gnome-base/gnome-js-common/gnome-js-common-0.1.1.ebuild29
-rw-r--r--gnome-base/gnome-keyring/Manifest2
-rw-r--r--gnome-base/gnome-keyring/gnome-keyring-2.31.4.ebuild60
-rw-r--r--gnome-base/gnome-session/Manifest7
-rw-r--r--gnome-base/gnome-session/files/Gnome111
-rw-r--r--gnome-base/gnome-session/files/gnome-session-2.26.2-shutdown.patch123
-rw-r--r--gnome-base/gnome-session/files/gnome-session-2.27.91-gentoo-branding.patch14
-rw-r--r--gnome-base/gnome-session/files/gnome-session-2.30.0-session-saving-button.patch535
-rw-r--r--gnome-base/gnome-session/gnome-session-2.31.2.ebuild94
-rw-r--r--gnome-base/gnome-settings-daemon/Manifest3
-rw-r--r--gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-2.30.0-gst-vol-control-support.patch856
-rw-r--r--gnome-base/gnome-settings-daemon/gnome-settings-daemon-2.31.5.1.ebuild87
-rw-r--r--gnome-base/gnome-shell/Manifest2
-rw-r--r--gnome-base/gnome-shell/gnome-shell-2.31.5.ebuild51
-rw-r--r--gnome-base/libgnomekbd/Manifest2
-rw-r--r--gnome-base/libgnomekbd/libgnomekbd-2.31.5.ebuild39
-rw-r--r--gnome-base/librsvg/Manifest2
-rw-r--r--gnome-base/librsvg/librsvg-2.31.0.ebuild51
-rw-r--r--gnome-base/nautilus/Manifest3
-rw-r--r--gnome-base/nautilus/files/nautilus-2.27.4-change-reg-desktop-file-with-no-desktop.patch33
-rw-r--r--gnome-base/nautilus/nautilus-2.31.5.ebuild92
31 files changed, 2585 insertions, 0 deletions
diff --git a/gnome-base/dconf/Manifest b/gnome-base/dconf/Manifest
index d3a22fc..12f17f1 100644
--- a/gnome-base/dconf/Manifest
+++ b/gnome-base/dconf/Manifest
@@ -1,2 +1,4 @@
+DIST dconf-0.4.2.tar.bz2 322396 RMD160 f698dc341b1cb7fd8745b31c16037748a7e265b9 SHA1 8089244cf75ab07b0c111bd541fea3fdcb60bbbc SHA256 81ad18eff80eea5ad3e612e3164d42a5a9989c499a61a5536197107d0b05afa1
DIST dconf-0.5.tar.bz2 310788 RMD160 360083afecdc90fd6c362551faa9e695881b2db2 SHA1 ea1b4b490afe20f8d9619224d047d3230d187db3 SHA256 838a2f9a824e307042da7f367a7c249e6c9165bea2df6d87f48ec0c692214425
+EBUILD dconf-0.4.2.ebuild 620 RMD160 569e9876abaff2c937b978462ca461dc7bb6d4b9 SHA1 fa060f73d4a782f3d4226d095037c86005fb8a58 SHA256 09bf9c66f47aa1baac499e7fbfd313eaab20ca841a051a8bba4c86a9c826ce96
EBUILD dconf-0.5.ebuild 620 RMD160 74a6b3b1e0b81e144699df56ee9059e7e874cad9 SHA1 6b971337ec1723a6016fc3f08e418037082ff87b SHA256 0ff80bedd4ac0e8424b2f46703109b5c37090f713246f71419f51d956b6506ec
diff --git a/gnome-base/dconf/dconf-0.4.2.ebuild b/gnome-base/dconf/dconf-0.4.2.ebuild
new file mode 100644
index 0000000..394fc71
--- /dev/null
+++ b/gnome-base/dconf/dconf-0.4.2.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=3
+
+inherit gnome2
+
+DESCRIPTION="Simple low-level configuration system"
+HOMEPAGE="http://live.gnome.org/dconf"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="doc +introspection"
+
+RDEPEND=">=dev-libs/glib-2.25.10
+ >=dev-libs/libgee-0.5.1
+ >=dev-libs/libxml2-2.7.7
+ x11-libs/gtk+:2
+ introspection? ( >=dev-libs/gobject-introspection-0.6.7 )"
+DEPEND="${RDEPEND}
+ >=dev-lang/vala-0.9.2
+ doc? ( >=dev-util/gtk-doc-1.14 )"
+
+pkg_setup() {
+ G2CONF="${G2CONF}
+ $(use_enable introspection)"
+}
diff --git a/gnome-base/gnome-applets/Manifest b/gnome-base/gnome-applets/Manifest
new file mode 100644
index 0000000..c543fca
--- /dev/null
+++ b/gnome-base/gnome-applets/Manifest
@@ -0,0 +1,2 @@
+DIST gnome-applets-2.31.5.tar.bz2 10020371 RMD160 77e37750e90cc01a7f3ba3f8f5c0c6f44f4b8f0e SHA1 bba21eeed9555930af6724340e6baa2226dd786d SHA256 b91d4f86194c70de1c42e7ceb111227e13f0f799bd4f130674b6de9c8dbb1b83
+EBUILD gnome-applets-2.31.5.ebuild 3813 RMD160 aec33bea4e6bb92ca3b0c066f9d942faeedca4b9 SHA1 9b441aa2ab7bc9f1efbb79dfeefab7a04588a6fb SHA256 9ba7150c3bfe616983b8a932654e6cb5e1e1d624c49628ecccbb55a274b51820
diff --git a/gnome-base/gnome-applets/gnome-applets-2.31.5.ebuild b/gnome-base/gnome-applets/gnome-applets-2.31.5.ebuild
new file mode 100644
index 0000000..c06da10
--- /dev/null
+++ b/gnome-base/gnome-applets/gnome-applets-2.31.5.ebuild
@@ -0,0 +1,141 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/gnome-applets/gnome-applets-2.30.0.ebuild,v 1.1 2010/06/13 18:55:04 pacho Exp $
+
+EAPI=2
+
+PYTHON_DEPEND="2"
+inherit eutils gnome2 python
+
+DESCRIPTION="Applets for the GNOME Desktop and Panel"
+HOMEPAGE="http://www.gnome.org/"
+
+LICENSE="GPL-2 FDL-1.1 LGPL-2"
+SLOT="2"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux"
+IUSE="acpi apm doc gnome gstreamer hal ipv6 networkmanager policykit"
+
+# TODO: configure says python stuff is optional
+# my secret script says cpufrequtils might be needed in RDEPEND
+
+HALDEPEND=" hal? ( >=sys-apps/hal-0.5.3 ) "
+RDEPEND=">=x11-libs/gtk+-2.20:2
+ >=dev-libs/glib-2.22.0
+ >=gnome-base/gconf-2.8
+ >=gnome-base/gnome-panel-2.13.4
+ >=x11-libs/libxklavier-4.0
+ >=x11-libs/libwnck-2.9.3
+ >=gnome-base/gnome-desktop-2.11.1
+ >=x11-libs/libnotify-0.3.2
+ >=sys-apps/dbus-1.1.2
+ >=dev-libs/dbus-glib-0.74
+ >=dev-libs/libxml2-2.5.0
+ >=x11-themes/gnome-icon-theme-2.15.91
+ >=dev-libs/libgweather-2.22.1
+ x11-libs/libX11
+
+ apm? ( sys-apps/apmd $HALDEPEND )
+ acpi? ( $HALDEPEND )
+ gnome? (
+ >=gnome-base/libgnomekbd-2.21.4.1
+ gnome-base/gnome-settings-daemon
+
+ >=gnome-extra/gucharmap-2.23
+ >=gnome-base/libgtop-2.11.92
+
+ >=dev-python/pygobject-2.6
+ >=dev-python/pygtk-2.6
+ >=dev-python/libgnome-python-2.10
+ >=dev-python/gconf-python-2.10
+ >=dev-python/gnome-applets-python-2.10 )
+ gstreamer? (
+ >=media-libs/gstreamer-0.10.2
+ >=media-libs/gst-plugins-base-0.10.14
+ || (
+ >=media-plugins/gst-plugins-alsa-0.10.14
+ >=media-plugins/gst-plugins-oss-0.10.14 ) )
+ networkmanager? ( >=net-misc/networkmanager-0.7.0 )
+ policykit? ( >=sys-auth/polkit-0.92 )"
+
+DEPEND="${RDEPEND}
+ >=app-text/scrollkeeper-0.1.4
+ >=app-text/gnome-doc-utils-0.3.2
+ >=dev-util/pkgconfig-0.19
+ >=dev-util/intltool-0.35
+ dev-libs/libxslt
+ ~app-text/docbook-xml-dtd-4.3
+ doc? ( app-text/docbook-sgml-utils )"
+
+DOCS="AUTHORS ChangeLog NEWS README"
+
+src_prepare() {
+ gnome2_src_prepare
+
+ # disable pyc compiling
+ mv py-compile py-compile.orig
+ ln -s $(type -P true) py-compile
+
+ # Invest applet tests need gconf/proxy/...
+ sed 's/^TESTS.*/TESTS=/g' -i invest-applet/invest/Makefile.am \
+ invest-applet/invest/Makefile.in || die "disabling invest tests failed"
+}
+
+pkg_setup() {
+ G2CONF="${G2CONF}
+ --disable-scrollkeeper
+ --disable-schemas-install
+ $(use_enable gstreamer mixer-applet)
+ $(use_with hal)
+ $(use_enable ipv6)
+ $(use_enable networkmanager)
+ $(use_enable policykit polkit)"
+
+ if ! use ppc && ! use apm && ! use acpi; then
+ G2CONF="${G2CONF} --disable-battstat"
+ fi
+
+ if use ppc && ! use apm; then
+ G2CONF="${G2CONF} --disable-battstat"
+ fi
+}
+
+src_test() {
+ unset DBUS_SESSION_BUS_ADDRESS
+ emake check || die "emake check failed"
+}
+
+src_install() {
+ gnome2_src_install
+
+ local APPLETS="accessx-status battstat charpick cpufreq drivemount geyes
+ gkb-new gswitchit gweather invest-applet mini-commander
+ mixer modemlights multiload null_applet stickynotes trashapplet"
+
+ # modemlights is out because it needs system-tools-backends-1
+
+ for applet in ${APPLETS} ; do
+ docinto ${applet}
+
+ for d in AUTHORS ChangeLog NEWS README README.themes TODO ; do
+ [ -s ${applet}/${d} ] && dodoc ${applet}/${d}
+ done
+ done
+}
+
+pkg_postinst() {
+ gnome2_pkg_postinst
+
+ if use acpi && ! use hal ; then
+ elog "It is highly recommended that you install acpid if you use the"
+ elog "battstat applet to prevent any issues with other applications"
+ elog "trying to read acpi information."
+ fi
+
+ # check for new python modules on bumps
+ python_mod_optimize $(python_get_sitedir)/invest
+}
+
+pkg_postrm() {
+ gnome2_pkg_postrm
+ python_mod_cleanup /usr/$(get_libdir)/python*/site-packages/invest
+}
diff --git a/gnome-base/gnome-control-center/Manifest b/gnome-base/gnome-control-center/Manifest
new file mode 100644
index 0000000..a0cae49
--- /dev/null
+++ b/gnome-base/gnome-control-center/Manifest
@@ -0,0 +1,2 @@
+DIST gnome-control-center-2.31.5.tar.bz2 3359955 RMD160 aa2b9baee064fb65f1c5dbcea0002b061e0a81eb SHA1 26d06f69990c8a8699336e1b845bcb67d055aefc SHA256 6a0cb7a4af261608618ad7646304561526bad7339f1b1de3d37cc82a14d94759
+EBUILD gnome-control-center-2.31.5.ebuild 1993 RMD160 1674871a7be2bc0d1be16470aa1252b939bfe7d5 SHA1 53eb435babd94d8fe9b868906d41cdf9eb1b7e6e SHA256 a825c4d303e7b5a8fc6c7cab8da6c57d8376d0c499985c5e112c394e587baaaa
diff --git a/gnome-base/gnome-control-center/gnome-control-center-2.31.5.ebuild b/gnome-base/gnome-control-center/gnome-control-center-2.31.5.ebuild
new file mode 100644
index 0000000..09811bb
--- /dev/null
+++ b/gnome-base/gnome-control-center/gnome-control-center-2.31.5.ebuild
@@ -0,0 +1,82 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/gnome-control-center/gnome-control-center-2.30.1.ebuild,v 1.1 2010/06/13 19:46:46 pacho Exp $
+
+EAPI="2"
+
+inherit gnome2
+
+DESCRIPTION="The gnome2 Desktop configuration tool"
+HOMEPAGE="http://www.gnome.org/"
+
+LICENSE="GPL-2"
+SLOT="2"
+KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux ~x86-solaris"
+IUSE="eds"
+
+RDEPEND="x11-libs/libXft
+ >=x11-libs/libXi-1.2
+ >=x11-libs/gtk+-2.90.0:3
+ >=dev-libs/glib-2.17.4
+ >=gnome-base/gconf-2.0
+ >=gnome-base/librsvg-2.0
+ >=gnome-base/nautilus-2.6
+ >=media-libs/fontconfig-1
+ >=dev-libs/dbus-glib-0.73
+ >=x11-libs/libxklavier-4.0
+ >=x11-wm/metacity-2.23.1
+ >=gnome-base/libgnomekbd-2.31.2
+ >=gnome-base/gnome-desktop-2.29.4:3
+ >=gnome-base/gnome-menus-2.11.1
+ gnome-base/gnome-settings-daemon
+
+ dev-libs/libunique
+ x11-libs/pango
+ dev-libs/libxml2
+ media-libs/freetype
+ >=media-libs/libcanberra-0.4[gtk3]
+
+ eds? ( >=gnome-extra/evolution-data-server-1.7.90 )
+
+ x11-apps/xmodmap
+ x11-libs/libXScrnSaver
+ x11-libs/libXext
+ x11-libs/libX11
+ x11-libs/libXxf86misc
+ x11-libs/libXrandr
+ x11-libs/libXrender
+ x11-libs/libXcursor"
+DEPEND="${RDEPEND}
+ x11-proto/scrnsaverproto
+ x11-proto/xextproto
+ x11-proto/xproto
+ x11-proto/xf86miscproto
+ x11-proto/kbproto
+ x11-proto/randrproto
+ x11-proto/renderproto
+
+ sys-devel/gettext
+ >=dev-util/intltool-0.40
+ >=dev-util/pkgconfig-0.19
+ dev-util/desktop-file-utils
+
+ app-text/scrollkeeper
+ >=app-text/gnome-doc-utils-0.10.1"
+# Needed for autoreconf
+# gnome-base/gnome-common
+
+DOCS="AUTHORS ChangeLog NEWS README TODO"
+
+pkg_setup() {
+ G2CONF="${G2CONF}
+ --disable-update-mimedb
+ --disable-static
+ $(use_enable eds aboutme)"
+}
+
+src_install() {
+ gnome2_src_install
+ # gmodule is used to load plugins
+ # (on POSIX systems gmodule uses dlopen)
+ find "${D}" -name "*.la" -delete || die "remove of la files failed"
+}
diff --git a/gnome-base/gnome-desktop/Manifest b/gnome-base/gnome-desktop/Manifest
new file mode 100644
index 0000000..27652bd
--- /dev/null
+++ b/gnome-base/gnome-desktop/Manifest
@@ -0,0 +1,3 @@
+AUX gnome-desktop-2.90.4-remove-shared-data.patch 1698 RMD160 526035a41d48768adad36898b22f158f9abb36a1 SHA1 0b0f4bc3b937bf7b3d1438a521df985400ade355 SHA256 77a41afbad9d030ebc9eb939da0919b4b7f647b53a4e0e8d06f49937ea94f3ea
+DIST gnome-desktop-2.90.4.tar.bz2 1671103 RMD160 f2eb189a5c11142d97c12b5f62184b09f5cd6265 SHA1 3f0ac4099542c0d4b7d10acdfb62ae97d11e6d95 SHA256 f116cd1e64f150580476a977dfbab8b5e960b543eef5cbf38cfd8e70ec5ab927
+EBUILD gnome-desktop-2.90.4.ebuild 1735 RMD160 f5ef09e3a872cd61f9c4db41b125b2b67d6a7349 SHA1 9ddab235cad4cc7bedf5ba0d0939c8e4b7d50721 SHA256 5f684671389b3a17061e8ce5925b3c99e787ea521bcce4bc6f86e40208b3bc54
diff --git a/gnome-base/gnome-desktop/files/gnome-desktop-2.90.4-remove-shared-data.patch b/gnome-base/gnome-desktop/files/gnome-desktop-2.90.4-remove-shared-data.patch
new file mode 100644
index 0000000..b23c263
--- /dev/null
+++ b/gnome-base/gnome-desktop/files/gnome-desktop-2.90.4-remove-shared-data.patch
@@ -0,0 +1,69 @@
+--- gnome-desktop-2.90.4.orig/configure.in
++++ gnome-desktop-2.90.4/configure.in
+@@ -176,9 +176,6 @@ AC_SUBST(RANDR_PACKAGE)
+ dnl pkg-config dependency checks
+
+ PKG_CHECK_MODULES(GNOME_DESKTOP, gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-3.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED gio-2.0 >= $GLIB_REQUIRED gconf-2.0 >= $GCONF_REQUIRED $STARTUP_NOTIFICATION_PACKAGE $RANDR_PACKAGE)
+-
+-dnl for gnome-about
+-AM_PATH_PYTHON
+
+ dnl gnome-doc-utils stuff
+
+@@ -215,9 +212,6 @@ GTK_DOC_CHECK([1.4])
+
+ AC_CONFIG_FILES([
+ Makefile
+-gnome-about/Makefile
+-gnome-about/gnome-about.desktop.in
+-gnome-about/headers/Makefile
+ libgnome-desktop/Makefile
+ libgnome-desktop/libgnome/Makefile
+ libgnome-desktop/libgnomeui/Makefile
+@@ -226,14 +220,7 @@ libgnome-desktop/gnome-desktop-3.0-unins
+ docs/Makefile
+ docs/reference/Makefile
+ docs/reference/gnome-desktop3/Makefile
+-gnome-version.xml.in
+ po/Makefile.in
+-pixmaps/Makefile
+-desktop-docs/Makefile
+-desktop-docs/fdl/Makefile
+-desktop-docs/gpl/Makefile
+-desktop-docs/lgpl/Makefile
+-man/Makefile
+ ])
+
+ AC_OUTPUT
+--- gnome-desktop-2.90.4.orig/Makefile.am
++++ gnome-desktop-2.90.4/Makefile.am
+@@ -3,28 +3,17 @@ ACLOCAL_AMFLAGS = -I m4
+ SUBDIRS = \
+ po \
+ libgnome-desktop \
+- gnome-about \
+- pixmaps \
+- desktop-docs \
+- docs \
+- man
++ docs
+
+ EXTRA_DIST = \
+ MAINTAINERS \
+ ChangeLog.pre-git \
+- gnome-version.xml.in.in \
+- gnome-version.xml \
+ COPYING-DOCS \
+ HACKING \
+ gnome-doc-utils.make
+
+-versiondir=$(datadir)/gnome-about
+-version_DATA=gnome-version.xml
+-@INTLTOOL_XML_RULE@
+-
+ DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --disable-scrollkeeper
+
+-CLEANFILES = $(version_DATA)
+ DISTCLEANFILES = \
+ gnome-doc-utils.make
+
diff --git a/gnome-base/gnome-desktop/gnome-desktop-2.90.4.ebuild b/gnome-base/gnome-desktop/gnome-desktop-2.90.4.ebuild
new file mode 100644
index 0000000..12e97d9
--- /dev/null
+++ b/gnome-base/gnome-desktop/gnome-desktop-2.90.4.ebuild
@@ -0,0 +1,57 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="2"
+inherit gnome2 autotools eutils
+
+DESCRIPTION="Libraries for the gnome desktop that are not part of the UI"
+HOMEPAGE="http://www.gnome.org/"
+
+LICENSE="GPL-2 FDL-1.1 LGPL-2"
+SLOT="3"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd ~x86-interix ~amd64-linux ~x86-linux ~x86-solaris"
+IUSE="doc"
+
+RDEPEND=">=x11-libs/gtk+-2.90.2:3
+ >=dev-libs/glib-2.19.1
+ >=x11-libs/libXrandr-1.2
+ >=gnome-base/gconf-2
+ >=x11-libs/startup-notification-0.5
+ x11-libs/libX11"
+DEPEND="${RDEPEND}
+ sys-devel/gettext
+ >=dev-util/intltool-0.40
+ >=dev-util/pkgconfig-0.9
+ >=app-text/gnome-doc-utils-0.3.2
+ doc? ( >=dev-util/gtk-doc-1.4 )
+ ~app-text/docbook-xml-dtd-4.1.2
+ x11-proto/xproto
+ >=x11-proto/randrproto-1.2"
+# Temporarily require the 2.31 version to ensure the proper pixmaps, gnome-about,
+# etc. are installed. Switch to doing things the other way around once
+# gnome-about no longer uses pygtk 2
+PDEPEND=">=gnome-base/gnome-desktop-2.31:0"
+
+# Includes X11/Xatom.h in libgnome-desktop/gnome-bg.c which comes from xproto
+# Includes X11/extensions/Xrandr.h that includes randr.h from randrproto (and
+# eventually libXrandr shouldn't RDEPEND on randrproto)
+
+DOCS="AUTHORS ChangeLog HACKING NEWS README"
+
+pkg_setup() {
+ G2CONF="${G2CONF}
+ --with-gnome-distributor=Gentoo
+ --disable-scrollkeeper
+ --disable-static
+ --with-pnp-ids-path=/usr/share/libgnome-desktop/pnp.ids"
+}
+
+src_prepare() {
+ epatch "${FILESDIR}"/${P}-remove-shared-data.patch
+
+ rm -rf desktop-docs gnome-about gnome-version.xml* man pixmaps
+
+ intltoolize --force --copy --automake || die "intltoolize failed"
+ eautoreconf
+}
diff --git a/gnome-base/gnome-js-common/Manifest b/gnome-base/gnome-js-common/Manifest
new file mode 100644
index 0000000..1a975ee
--- /dev/null
+++ b/gnome-base/gnome-js-common/Manifest
@@ -0,0 +1,2 @@
+DIST gnome-js-common-0.1.1.tar.bz2 274010 RMD160 11608b34c66b077b6ccf0b8042721cbb8155627d SHA1 0297b768f5a91b8d9e4bbc6e7b9c73f3e7f915ba SHA256 6cad015cda5abfd2bccd6b95714ca39c83ca69ca7e6f7326dc75763a758dc8db
+EBUILD gnome-js-common-0.1.1.ebuild 526 RMD160 30803a74991ebff658f24d882377238cb3d24213 SHA1 21a2cf69b1ec48075c2d5967e9d9c343edc55867 SHA256 fbef3bdc5c6bbc1f2a3882ea0cd79ea32d8e56c1e44ee529292038f066474b77
diff --git a/gnome-base/gnome-js-common/gnome-js-common-0.1.1.ebuild b/gnome-base/gnome-js-common/gnome-js-common-0.1.1.ebuild
new file mode 100644
index 0000000..c28fe69
--- /dev/null
+++ b/gnome-base/gnome-js-common/gnome-js-common-0.1.1.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="3"
+GCONF_DEBUG="no"
+inherit gnome2
+
+DESCRIPTION="GNOME JavaScript common modules and tests"
+HOMEPAGE="http://gnome.org/"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE=""
+
+RDEPEND=""
+DEPEND="sys-devel/gettext
+ >=dev-util/pkgconfig-0.9
+ >=dev-util/intltool-0.35"
+DOCS="ChangeLog"
+
+G2CONF="${G2CONF} --disable-seed --disable-gjs"
+
+src_install() {
+ gnome2_src_install
+
+ rm -rf "${ED}"/usr/doc
+}
diff --git a/gnome-base/gnome-keyring/Manifest b/gnome-base/gnome-keyring/Manifest
new file mode 100644
index 0000000..797fbdb
--- /dev/null
+++ b/gnome-base/gnome-keyring/Manifest
@@ -0,0 +1,2 @@
+DIST gnome-keyring-2.31.4.tar.bz2 1600311 RMD160 ba528e39d5904ad6f71cc9ab39004685c6b9f062 SHA1 9f98a3a9fa09f6322df752628b01c23c4e66ad75 SHA256 c5c22ff83cfeba1e2db2145f54c71edf8c341d01748be9096062312d05da73e8
+EBUILD gnome-keyring-2.31.4.ebuild 1336 RMD160 8e697867b70482b4467f31332ca07b8abad82fca SHA1 f84f4628fad56966d77ddcfa9a31318161253481 SHA256 289a1144b5925596303228a8686083a3e0aa1a7d9eca7d89b7be70c4c5a7e584
diff --git a/gnome-base/gnome-keyring/gnome-keyring-2.31.4.ebuild b/gnome-base/gnome-keyring/gnome-keyring-2.31.4.ebuild
new file mode 100644
index 0000000..456ad5e
--- /dev/null
+++ b/gnome-base/gnome-keyring/gnome-keyring-2.31.4.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="2"
+
+inherit gnome2 pam virtualx autotools
+
+DESCRIPTION="Password and keyring managing daemon"
+HOMEPAGE="http://www.gnome.org/"
+
+LICENSE="GPL-2 LGPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~x86"
+IUSE="debug doc pam test"
+# USE=valgrind is probably not a good idea for the tree
+
+RDEPEND=">=dev-libs/glib-2.16
+ >=x11-libs/gtk+-2.20:2
+ gnome-base/gconf
+ >=sys-apps/dbus-1.0
+ pam? ( virtual/pam )
+ >=dev-libs/libgcrypt-1.2.2
+ >=dev-libs/libtasn1-1"
+# valgrind? ( dev-util/valgrind )"
+DEPEND="${RDEPEND}
+ sys-devel/gettext
+ >=dev-util/intltool-0.35
+ >=dev-util/pkgconfig-0.9
+ doc? ( >=dev-util/gtk-doc-1.9 )"
+PDEPEND="gnome-base/libgnome-keyring"
+
+DOCS="AUTHORS ChangeLog NEWS README"
+
+pkg_setup() {
+ G2CONF="${G2CONF}
+ $(use_enable debug)
+ $(use_enable test tests)
+ $(use_enable pam)
+ $(use_with pam pam-dir $(getpam_mod_dir))
+ --with-root-certs=/usr/share/ca-certificates/
+ --enable-acl-prompts
+ --enable-ssh-agent"
+# $(use_enable valgrind)
+}
+
+src_prepare() {
+ gnome2_src_prepare
+
+ # Remove silly CFLAGS
+ sed 's:CFLAGS="$CFLAGS -Werror:CFLAGS="$CFLAGS:' \
+ -i configure.in configure || die "sed failed"
+
+ eautoreconf
+}
+
+src_test() {
+ unset DBUS_SESSION_BUS_ADDRESS
+ Xemake check || die "emake check failed!"
+}
diff --git a/gnome-base/gnome-session/Manifest b/gnome-base/gnome-session/Manifest
new file mode 100644
index 0000000..03ad269
--- /dev/null
+++ b/gnome-base/gnome-session/Manifest
@@ -0,0 +1,7 @@
+AUX Gnome 2404 RMD160 48ab5c98ac1cda3593c99f6996f72a61b63b87c7 SHA1 eb7422e38600214911075bffae52fbb348a1ba44 SHA256 259c067c3293fccb587daba38fae888119250330a624687674e140e31c75d297
+AUX gnome-session-2.26.2-shutdown.patch 4512 RMD160 aa6a5fc66959e099ea7734e1f13af39890a37a9b SHA1 07461b0ed9587e0911cf57d2a8c2eaa74fde2f17 SHA256 2539c04941ac75e5003bddf4e4398ba19cbcbaae7f62277974b061737e4d8859
+AUX gnome-session-2.27.91-gentoo-branding.patch 702 RMD160 6727c2e3dbd8fd29461e1224a160b88e027e1cfc SHA1 3223e8cdda47d006b4b7a8e8428509d7d9e417f1 SHA256 c72c26b77dbe89ca4ec6c36eece99dbf3c5cdc099d563fd8a78d68c7d2a197b4
+AUX gnome-session-2.30.0-session-saving-button.patch 21746 RMD160 f32556cd91edd3904135e4819bfa00621a552f31 SHA1 01a9be032f5d81e7f42d399b5031e1a8b61b41e8 SHA256 e6e283721b556535eef485352c67c68962cd6464b900d601306ed3d5bc0a59ab
+DIST gentoo-splash.png 78064 RMD160 e75052892920e1c919aae1f6e53853c27b2e063f SHA1 e93c5f77389a5351af9948f7677c5592355cf860 SHA256 24fa48bc26db0d446e0098b3e94fd3cdec4610faca0b3282da0bec79bedbc179
+DIST gnome-session-2.31.2.tar.bz2 817738 RMD160 5f022f7ead5e06e0ef5b833c26a71dc07f28b423 SHA1 0a55f46041a6a3830990b2c3eb5b98a00d2828e0 SHA256 49c07f4f9a76fba29fae4e5a6c9542ad06de06ef25a7c469ae51d2bb7110dc82
+EBUILD gnome-session-2.31.2.ebuild 2610 RMD160 86c8f0ffcc4fe1ca287cb71deb269a78845f1c9f SHA1 f35bd2c9b7a8e5700b2b5305bea93253aac5b03c SHA256 46cf0e830b526617e5740019c9ce974b35044bb9cd378f8d6411de47039448f4
diff --git a/gnome-base/gnome-session/files/Gnome b/gnome-base/gnome-session/files/Gnome
new file mode 100644
index 0000000..d068dae
--- /dev/null
+++ b/gnome-base/gnome-session/files/Gnome
@@ -0,0 +1,111 @@
+#!/bin/sh
+
+# Great new Gnome2 feature, AA
+# We enable this by default
+
+export GDK_USE_XFT=1
+
+if [ -f /etc/xdg/menus/gnome-applications.menu ] ; then
+ export XDG_MENU_PREFIX=gnome-
+fi
+
+for errfile in "$HOME/.gnomerc-errors" "${TMPDIR-/tmp}/gnomerc-$USER" "/tmp/gnomerc-$USER"
+do
+ if ( cp /dev/null "$errfile" 2> /dev/null )
+ then
+ chmod 600 "$errfile"
+ exec > "$errfile" 2>&1
+ break
+ fi
+done
+#
+# Distributors:
+# You should modify the paths here to fit your distro
+# If you need to do so, send me (jirka@5z.com) a patch
+# and I'll try to make the script detect the distro stuff
+#
+
+userresources=$HOME/.Xresources
+usermodmap=$HOME/.Xmodmap
+userxkbmap=$HOME/.Xkbmap
+
+sysresources=/etc/X11/Xresources
+sysmodmap=/etc/X11/Xmodmap
+sysxkbmap=/etc/X11/Xkbmap
+
+rh6sysresources=/etc/X11/xinit/Xresources
+rh6sysmodmap=/etc/X11/xinit/Xmodmap
+
+if [ -x "$HOME/.gnomerc" ]; then
+ command="$HOME/.gnomerc"
+elif [ -x /etc/X11/gdm/gnomerc ]; then
+ command="/etc/X11/gdm/gnomerc"
+else
+ # as fallback in case the config is screwed
+ command=`which gnome-session`
+fi
+
+# merge in defaults
+if [ -f "$rh6sysresources" ]; then
+ xrdb -merge "$rh6sysresources"
+fi
+
+if [ -f "$sysresources" ]; then
+ xrdb -merge "$sysresources"
+fi
+
+if [ -f "$userresources" ]; then
+ xrdb -merge "$userresources"
+fi
+
+# merge in keymaps
+if [ -f "$sysxkbmap" ]; then
+ setxkbmap `cat "$sysxkbmap"`
+ XKB_IN_USE=yes
+fi
+
+if [ -f "$userxkbmap" ]; then
+ setxkbmap `cat "$userxkbmap"`
+ XKB_IN_USE=yes
+fi
+
+#
+# Eeek, this seems like too much magic here
+#
+if [ -z "$XKB_IN_USE" ] && [ ! -L /etc/X11/X ]; then
+ if grep '^exec.*/Xsun' /etc/X11/X > /dev/null 2>&1 && [ -f /etc/X11/XF86Config ]; then
+ xkbsymbols=`sed -n -e 's/^[ ]*XkbSymbols[ ]*"\(.*\)".*$/\1/p' /etc/X11/XF86Config`
+ if [ -n "$xkbsymbols" ]; then
+ setxkbmap -symbols "$xkbsymbols"
+ XKB_IN_USE=yes
+ fi
+ fi
+fi
+
+# xkb and xmodmap don't play nice together
+if [ -z "$XKB_IN_USE" ]; then
+ if [ -f "$rh6sysmodmap" ]; then
+ xmodmap "$rh6sysmodmap"
+ fi
+
+ if [ -f "$sysmodmap" ]; then
+ xmodmap "$sysmodmap"
+ fi
+
+ if [ -f "$usermodmap" ]; then
+ xmodmap "$usermodmap"
+ fi
+fi
+
+unset XKB_IN_USE
+
+# run all system xinitrc shell scripts.
+if [ -d /etc/X11/xinit/xinitrc.d ]; then
+ for i in /etc/X11/xinit/xinitrc.d/* ; do
+ if [ -x "$i" ]; then
+ . "$i"
+ fi
+ done
+fi
+
+exec $command
diff --git a/gnome-base/gnome-session/files/gnome-session-2.26.2-shutdown.patch b/gnome-base/gnome-session/files/gnome-session-2.26.2-shutdown.patch
new file mode 100644
index 0000000..29cc569
--- /dev/null
+++ b/gnome-base/gnome-session/files/gnome-session-2.26.2-shutdown.patch
@@ -0,0 +1,123 @@
+From 281e67308b9828a35ad863c39bd09e595c5e8771 Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Sun, 19 Apr 2009 16:45:29 +0200
+Subject: [PATCH 1/2] Allow shutdown without PolicyKit.
+
+ Straight forward fix to allow shutdown on systems not using policykit.
+
+ If the system really doesn't have policykit, it will make things work
+ as in 2.22.
+
+ If pk is in gsm but not in ck, it'll still work as in 2.22.
+
+ If pk is present in both, you just have to fix the logic to make
+ gsm ask pk if the user has the permission to shutdown _before_ showing
+ buttons and in case this is not possible, just damn fix pk.
+
+ reported as http://bugzilla.gnome.org/show_bug.cgi?id=549150
+---
+ gnome-session/gsm-consolekit.c | 38 ++++++++++++++++++++++----------------
+ 1 files changed, 22 insertions(+), 16 deletions(-)
+
+diff --git a/gnome-session/gsm-consolekit.c b/gnome-session/gsm-consolekit.c
+index 5541006..28f4cb7 100644
+--- a/gnome-session/gsm-consolekit.c
++++ b/gnome-session/gsm-consolekit.c
+@@ -541,7 +541,7 @@ request_restart_priv (GsmConsolekit *manager,
+ g_free (error_message);
+ }
+ #else
+- g_assert_not_reached ();
++ g_warning ("Failed to restart and Policykit support not enabled");
+ #endif /* HAVE POLKIT */
+ }
+
+@@ -581,7 +581,7 @@ request_stop_priv (GsmConsolekit *manager,
+ }
+ }
+ #else
+- g_assert_not_reached ();
++ g_warning ("Failed to shutdown and Policykit support not enabled");
+ #endif /* HAVE POLKIT */
+ }
+
+@@ -979,6 +979,15 @@ gsm_consolekit_can_do_action (GsmConsolekit *manager,
+
+ return result != POLKIT_RESULT_NO && result != POLKIT_RESULT_UNKNOWN;
+ }
++#else
++static gboolean
++gsm_consolekit_can_do_action (GsmConsolekit *manager,
++ const char *action_id)
++{
++ /* if we got here, res was true */
++ return TRUE;
++}
++#endif
+
+ static gboolean
+ gsm_consolekit_is_session_for_other_user (GsmConsolekit *manager,
+@@ -1096,6 +1105,7 @@ gsm_consolekit_is_single_user (GsmConsolekit *manager)
+ return single;
+ }
+
++#ifdef HAVE_POLKIT_GNOME
+ static void
+ obtain_privileges_cb (PolKitAction *action,
+ gboolean gained_privilege,
+@@ -1207,8 +1217,11 @@ gsm_consolekit_get_restart_privileges (GsmConsolekit *manager)
+ "org.freedesktop.consolekit.system.restart",
+ "org.freedesktop.consolekit.system.restart-multiple-users");
+ #else
+- g_debug ("GsmConsolekit: built without PolicyKit-gnome support");
+- return FALSE;
++ g_signal_emit (G_OBJECT (manager),
++ signals [PRIVILEGES_COMPLETED],
++ 0, TRUE, FALSE, FALSE);
++ g_debug ("GsmConsolekit: built without PolicyKit-gnome support, granting anyway");
++ return TRUE;
+ #endif
+ }
+
+@@ -1220,33 +1233,26 @@ gsm_consolekit_get_stop_privileges (GsmConsolekit *manager)
+ "org.freedesktop.consolekit.system.stop",
+ "org.freedesktop.consolekit.system.stop-multiple-users");
+ #else
+- g_debug ("GsmConsolekit: built without PolicyKit-gnome support");
+- return FALSE;
++ g_signal_emit (G_OBJECT (manager),
++ signals [PRIVILEGES_COMPLETED],
++ 0, TRUE, FALSE, FALSE);
++ g_debug ("GsmConsolekit: built without PolicyKit-gnome support, granting anyway");
++ return TRUE;
+ #endif
+ }
+
+ gboolean
+ gsm_consolekit_can_restart (GsmConsolekit *manager)
+ {
+-#ifdef HAVE_POLKIT_GNOME
+ return gsm_consolekit_can_do_action (manager, "org.freedesktop.consolekit.system.restart") ||
+ gsm_consolekit_can_do_action (manager, "org.freedesktop.consolekit.system.restart-multiple-users");
+-#else
+- g_debug ("GsmConsolekit: built without PolicyKit-gnome support - cannot restart system");
+- return FALSE;
+-#endif
+ }
+
+ gboolean
+ gsm_consolekit_can_stop (GsmConsolekit *manager)
+ {
+-#ifdef HAVE_POLKIT_GNOME
+ return gsm_consolekit_can_do_action (manager, "org.freedesktop.consolekit.system.stop") ||
+ gsm_consolekit_can_do_action (manager, "org.freedesktop.consolekit.system.stop-multiple-users");
+-#else
+- g_debug ("GsmConsolekit: built without PolicyKit-gnome support - cannot stop system");
+- return FALSE;
+-#endif
+ }
+
+ gchar *
+--
+1.6.3.3
+
diff --git a/gnome-base/gnome-session/files/gnome-session-2.27.91-gentoo-branding.patch b/gnome-base/gnome-session/files/gnome-session-2.27.91-gentoo-branding.patch
new file mode 100644
index 0000000..60e7dbb
--- /dev/null
+++ b/gnome-base/gnome-session/files/gnome-session-2.27.91-gentoo-branding.patch
@@ -0,0 +1,14 @@
+Our own splash for world domination (updated for 2.27.91)
+
+---
+--- data/gnome-session.schemas.in.in
++++ data/gnome-session.schemas.in.in
+@@ -40,7 +40,7 @@
+ <applyto>/apps/gnome-session/options/splash_image</applyto>
+ <owner>gnome</owner>
+ <type>string</type>
+- <default>splash/gnome-splash.png</default>
++ <default>splash/gentoo-splash.png</default>
+ <locale name="C">
+ <short>Preferred Image to use for login splash screen</short>
+ <long>This is a relative path value based off the $datadir/pixmaps/ directory. Sub-directories and image names are valid values. Changing this value will effect the next session login.</long>
diff --git a/gnome-base/gnome-session/files/gnome-session-2.30.0-session-saving-button.patch b/gnome-base/gnome-session/files/gnome-session-2.30.0-session-saving-button.patch
new file mode 100644
index 0000000..b6a4f4e
--- /dev/null
+++ b/gnome-base/gnome-session/files/gnome-session-2.30.0-session-saving-button.patch
@@ -0,0 +1,535 @@
+Based on the patch in GNOME #575544
+Index: gnome-session-2.28.0/gnome-session/gsm-manager.c
+===================================================================
+--- gnome-session-2.28.0.orig/gnome-session/gsm-manager.c 2009-09-18 18:36:04.000000000 +0200
++++ gnome-session-2.28.0/gnome-session/gsm-manager.c 2009-10-24 12:43:56.861770100 +0200
+@@ -68,6 +68,7 @@
+ #define GSM_MANAGER_DBUS_NAME "org.gnome.SessionManager"
+
+ #define GSM_MANAGER_PHASE_TIMEOUT 10 /* seconds */
++#define GSM_MANAGER_SAVE_SESSION_TIMEOUT 2
+
+ #define GDM_FLEXISERVER_COMMAND "gdmflexiserver"
+ #define GDM_FLEXISERVER_ARGS "--startnew Standard"
+@@ -1147,6 +1148,69 @@ query_end_session_complete (GsmManager *
+
+ }
+
++static gboolean
++_client_request_save (GsmClient *client,
++ ClientEndSessionData *data)
++{
++ gboolean ret;
++ GError *error;
++
++ error = NULL;
++ ret = gsm_client_request_save (client, data->flags, &error);
++ if (ret) {
++ g_debug ("GsmManager: adding client to query clients: %s", gsm_client_peek_id (client));
++ data->manager->priv->query_clients = g_slist_prepend (data->manager->priv->query_clients,
++ client);
++ } else if (error) {
++ g_debug ("GsmManager: unable to query client: %s", error->message);
++ g_error_free (error);
++ }
++
++ return FALSE;
++}
++
++static gboolean
++_client_request_save_helper (const char *id,
++ GsmClient *client,
++ ClientEndSessionData *data)
++{
++ return _client_request_save (client, data);
++}
++
++static void
++query_save_session_complete (GsmManager *manager)
++{
++ GError *error = NULL;
++
++ if (g_slist_length (manager->priv->next_query_clients) > 0) {
++ ClientEndSessionData data;
++
++ data.manager = manager;
++ data.flags = GSM_CLIENT_END_SESSION_FLAG_LAST;
++
++ g_slist_foreach (manager->priv->next_query_clients,
++ (GFunc)_client_request_save,
++ &data);
++
++ g_slist_free (manager->priv->next_query_clients);
++ manager->priv->next_query_clients = NULL;
++
++ return;
++ }
++
++ if (manager->priv->query_timeout_id > 0) {
++ g_source_remove (manager->priv->query_timeout_id);
++ manager->priv->query_timeout_id = 0;
++ }
++
++ gsm_session_save (manager->priv->clients, &error);
++
++ if (error) {
++ g_warning ("Error saving session: %s", error->message);
++ g_error_free (error);
++ }
++}
++
+ static guint32
+ generate_cookie (void)
+ {
+@@ -1221,6 +1285,21 @@ _on_query_end_session_timeout (GsmManage
+ return FALSE;
+ }
+
++static gboolean
++_on_query_save_session_timeout (GsmManager *manager)
++{
++ manager->priv->query_timeout_id = 0;
++
++ g_debug ("GsmManager: query to save session timed out");
++
++ g_slist_free (manager->priv->query_clients);
++ manager->priv->query_clients = NULL;
++
++ query_save_session_complete (manager);
++
++ return FALSE;
++}
++
+ static void
+ do_phase_query_end_session (GsmManager *manager)
+ {
+@@ -1857,13 +1936,32 @@ on_client_end_session_response (GsmClien
+ const char *reason,
+ GsmManager *manager)
+ {
+- /* just ignore if received outside of shutdown */
+- if (manager->priv->phase < GSM_MANAGER_PHASE_QUERY_END_SESSION) {
++ /* just ignore if we are not yet running */
++ if (manager->priv->phase < GSM_MANAGER_PHASE_RUNNING) {
+ return;
+ }
+
+ g_debug ("GsmManager: Response from end session request: is-ok=%d do-last=%d cancel=%d reason=%s", is_ok, do_last, cancel, reason ? reason :"");
+
++ if (manager->priv->phase == GSM_MANAGER_PHASE_RUNNING) {
++ /* Ignore responses when no requests were sent */
++ if (manager->priv->query_clients == NULL) {
++ return;
++ }
++
++ manager->priv->query_clients = g_slist_remove (manager->priv->query_clients, client);
++
++ if (do_last) {
++ manager->priv->next_query_clients = g_slist_prepend (manager->priv->next_query_clients,
++ client);
++ }
++
++ if (manager->priv->query_clients == NULL) {
++ query_save_session_complete (manager);
++ }
++ return;
++ }
++
+ if (cancel) {
+ cancel_end_session (manager);
+ return;
+@@ -1962,6 +2060,15 @@ on_xsmp_client_logout_request (GsmXSMPCl
+ }
+
+ static void
++on_xsmp_client_save_request (GsmXSMPClient *client,
++ gboolean show_dialog,
++ GsmManager *manager)
++{
++ g_debug ("GsmManager: save_request");
++ gsm_manager_save_session (manager, NULL);
++}
++
++static void
+ on_store_client_added (GsmStore *store,
+ const char *id,
+ GsmManager *manager)
+@@ -1982,6 +2089,10 @@ on_store_client_added (GsmStore *store
+ "logout-request",
+ G_CALLBACK (on_xsmp_client_logout_request),
+ manager);
++ g_signal_connect (client,
++ "save-request",
++ G_CALLBACK (on_xsmp_client_save_request),
++ manager);
+ }
+
+ g_signal_connect (client,
+@@ -2939,6 +3050,41 @@ gsm_manager_shutdown (GsmManager *manage
+ }
+
+ gboolean
++gsm_manager_save_session (GsmManager *manager,
++ GError **error)
++{
++ ClientEndSessionData data;
++
++ g_debug ("GsmManager: SaveSession called");
++
++ g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE);
++
++ if (manager->priv->phase != GSM_MANAGER_PHASE_RUNNING) {
++ g_set_error (error,
++ GSM_MANAGER_ERROR,
++ GSM_MANAGER_ERROR_NOT_IN_RUNNING,
++ "SaveSession interface is only available during the Running phase");
++ return FALSE;
++ }
++
++ data.manager = manager;
++ data.flags = 0;
++ gsm_store_foreach (manager->priv->clients,
++ (GsmStoreFunc)_client_request_save_helper,
++ &data);
++
++ if (manager->priv->query_clients) {
++ manager->priv->query_timeout_id = g_timeout_add_seconds (GSM_MANAGER_SAVE_SESSION_TIMEOUT,
++ (GSourceFunc)_on_query_save_session_timeout,
++ manager);
++ return TRUE;
++ } else {
++ g_debug ("GsmManager: Nothing to save");
++ return FALSE;
++ }
++}
++
++gboolean
+ gsm_manager_can_shutdown (GsmManager *manager,
+ gboolean *shutdown_available,
+ GError **error)
+Index: gnome-session-2.28.0/gnome-session/gsm-manager.h
+===================================================================
+--- gnome-session-2.28.0.orig/gnome-session/gsm-manager.h 2009-04-19 20:26:52.000000000 +0200
++++ gnome-session-2.28.0/gnome-session/gsm-manager.h 2009-10-24 12:43:56.861770100 +0200
+@@ -152,6 +152,9 @@ gboolean gsm_manager_is_inhib
+ gboolean gsm_manager_shutdown (GsmManager *manager,
+ GError **error);
+
++gboolean gsm_manager_save_session (GsmManager *manager,
++ GError **error);
++
+ gboolean gsm_manager_can_shutdown (GsmManager *manager,
+ gboolean *shutdown_available,
+ GError **error);
+Index: gnome-session-2.28.0/gnome-session/gsm-xsmp-client.c
+===================================================================
+--- gnome-session-2.28.0.orig/gnome-session/gsm-xsmp-client.c 2009-07-29 02:36:08.000000000 +0200
++++ gnome-session-2.28.0/gnome-session/gsm-xsmp-client.c 2009-10-24 12:43:56.861770100 +0200
+@@ -70,6 +70,7 @@ enum {
+ enum {
+ REGISTER_REQUEST,
+ LOGOUT_REQUEST,
++ SAVE_REQUEST,
+ LAST_SIGNAL
+ };
+
+@@ -523,6 +524,30 @@ xsmp_cancel_end_session (GsmClient *clie
+ return TRUE;
+ }
+
++static gboolean
++xsmp_request_save (GsmClient *client,
++ guint flags,
++ GError **error)
++{
++ GsmXSMPClient *xsmp = (GsmXSMPClient *) client;
++
++ g_debug ("GsmXSMPClient: xsmp_request_save ('%s')", xsmp->priv->description);
++
++ if (xsmp->priv->conn == NULL) {
++ g_set_error (error,
++ GSM_CLIENT_ERROR,
++ GSM_CLIENT_ERROR_NOT_REGISTERED,
++ "Client is not registered");
++ return FALSE;
++ }
++
++ if (flags & GSM_CLIENT_END_SESSION_FLAG_LAST)
++ xsmp_save_yourself_phase2 (client);
++ else
++ do_save_yourself (xsmp, SmSaveLocal, FALSE);
++
++ return TRUE;
++}
+ static char *
+ get_desktop_file_path (GsmXSMPClient *client)
+ {
+@@ -993,6 +1018,7 @@ gsm_xsmp_client_class_init (GsmXSMPClien
+ object_class->get_property = gsm_xsmp_client_get_property;
+ object_class->set_property = gsm_xsmp_client_set_property;
+
++ client_class->impl_request_save = xsmp_request_save;
+ client_class->impl_save = xsmp_save;
+ client_class->impl_stop = xsmp_stop;
+ client_class->impl_query_end_session = xsmp_query_end_session;
+@@ -1023,6 +1049,17 @@ gsm_xsmp_client_class_init (GsmXSMPClien
+ G_TYPE_NONE,
+ 1, G_TYPE_BOOLEAN);
+
++ signals[SAVE_REQUEST] =
++ g_signal_new ("save-request",
++ G_OBJECT_CLASS_TYPE (object_class),
++ G_SIGNAL_RUN_LAST,
++ G_STRUCT_OFFSET (GsmXSMPClientClass, save_request),
++ NULL,
++ NULL,
++ g_cclosure_marshal_VOID__BOOLEAN,
++ G_TYPE_NONE,
++ 1, G_TYPE_BOOLEAN);
++
+ g_object_class_install_property (object_class,
+ PROP_ICE_CONNECTION,
+ g_param_spec_pointer ("ice-connection",
+Index: gnome-session-2.28.0/gnome-session/gsm-xsmp-client.h
+===================================================================
+--- gnome-session-2.28.0.orig/gnome-session/gsm-xsmp-client.h 2009-04-19 20:26:52.000000000 +0200
++++ gnome-session-2.28.0/gnome-session/gsm-xsmp-client.h 2009-10-24 12:43:56.861770100 +0200
+@@ -54,7 +54,8 @@ struct _GsmXSMPClientClass
+ char **client_id);
+ gboolean (*logout_request) (GsmXSMPClient *client,
+ gboolean prompt);
+-
++ gboolean (*save_request) (GsmXSMPClient *client,
++ gboolean prompt);
+
+ void (*saved_state) (GsmXSMPClient *client);
+
+Index: gnome-session-2.28.0/gnome-session/org.gnome.SessionManager.xml
+===================================================================
+--- gnome-session-2.28.0.orig/gnome-session/org.gnome.SessionManager.xml 2009-04-19 20:26:52.000000000 +0200
++++ gnome-session-2.28.0/gnome-session/org.gnome.SessionManager.xml 2009-10-24 12:43:56.865763345 +0200
+@@ -256,6 +256,14 @@
+ </doc:doc>
+ </method>
+
++ <method name="SaveSession">
++ <doc:doc>
++ <doc:description>
++ <doc:para>Request to save session</doc:para>
++ </doc:description>
++ </doc:doc>
++ </method>
++
+ <method name="CanShutdown">
+ <arg name="is_available" direction="out" type="b">
+ <doc:doc>
+Index: gnome-session-2.28.0/capplet/gsm-properties-dialog.c
+===================================================================
+--- gnome-session-2.28.0.orig/capplet/gsm-properties-dialog.c 2009-08-25 10:03:42.000000000 +0200
++++ gnome-session-2.28.0/capplet/gsm-properties-dialog.c 2009-10-24 13:21:57.910268989 +0200
+@@ -35,6 +35,12 @@
+ #include "gsm-util.h"
+ #include "gsp-app.h"
+ #include "gsp-app-manager.h"
++#include <dbus/dbus-glib.h>
++#include <dbus/dbus-glib-lowlevel.h>
++
++#define GSM_SERVICE_DBUS "org.gnome.SessionManager"
++#define GSM_PATH_DBUS "/org/gnome/SessionManager"
++#define GSM_INTERFACE_DBUS "org.gnome.SessionManager"
+
+ #define GSM_PROPERTIES_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_PROPERTIES_DIALOG, GsmPropertiesDialogPrivate))
+
+@@ -50,6 +56,7 @@
+ #define CAPPLET_DELETE_WIDGET_NAME "session_properties_delete_button"
+ #define CAPPLET_EDIT_WIDGET_NAME "session_properties_edit_button"
+ #define CAPPLET_SAVE_WIDGET_NAME "session_properties_save_button"
++#define CAPPLET_SESSION_SAVED_WIDGET_NAME "session_properties_session_saved_label"
+ #define CAPPLET_REMEMBER_WIDGET_NAME "session_properties_remember_toggle"
+
+ #define STARTUP_APP_ICON "system-run"
+@@ -493,10 +500,64 @@ on_autosave_value_toggled (GtkToggleButt
+ }
+
+ static void
++session_saved_message (GsmPropertiesDialog *dialog,
++ const char *msg,
++ gboolean is_error)
++{
++ GtkLabel *label;
++ gchar *markup;
++ label = GTK_LABEL (gtk_builder_get_object (dialog->priv->xml, CAPPLET_SESSION_SAVED_WIDGET_NAME));
++ if (is_error)
++ markup = g_markup_printf_escaped ("<span foreground=\"red\">%s</span>", msg);
++ else
++ markup = g_markup_escape_text (msg, -1);
++ gtk_label_set_markup (label, markup);
++ g_free (markup);
++}
++
++static void
++session_saved_cb (DBusGProxy *proxy,
++ DBusGProxyCall *call_id,
++ void *user_data)
++{
++ gboolean res;
++ GsmPropertiesDialog *dialog = user_data;
++
++ res = dbus_g_proxy_end_call (proxy, call_id, NULL, G_TYPE_INVALID);
++ if (res)
++ session_saved_message (dialog, _("Your session has been saved."), FALSE);
++ else
++ session_saved_message (dialog, _("Failed to save session"), TRUE);
++
++ g_object_unref (proxy);
++}
++
++static void
+ on_save_session_clicked (GtkWidget *widget,
+ GsmPropertiesDialog *dialog)
+ {
+- g_debug ("Session saving is not implemented yet!");
++ DBusGConnection *conn;
++ DBusGProxy *proxy;
++ DBusGProxyCall *call;
++
++ conn = dbus_g_bus_get (DBUS_BUS_SESSION, NULL);
++ if (conn == NULL) {
++ session_saved_message (dialog, _("Could not connect to the session bus"), TRUE);
++ return;
++ }
++
++ proxy = dbus_g_proxy_new_for_name (conn, GSM_SERVICE_DBUS, GSM_PATH_DBUS, GSM_INTERFACE_DBUS);
++ if (proxy == NULL) {
++ session_saved_message (dialog, _("Could not connect to the session manager"), TRUE);
++ return;
++ }
++
++ call = dbus_g_proxy_begin_call (proxy, "SaveSession", session_saved_cb, dialog, NULL, G_TYPE_INVALID);
++ if (call == NULL) {
++ session_saved_message (dialog, _("Failed to save session"), TRUE);
++ g_object_unref (proxy);
++ return;
++ }
+ }
+
+ static void
+Index: gnome-session-2.28.0/configure.in
+===================================================================
+--- gnome-session-2.28.0.orig/configure.in 2009-09-09 02:21:06.000000000 +0200
++++ gnome-session-2.28.0/configure.in 2009-10-24 12:46:15.021757805 +0200
+@@ -59,6 +59,7 @@ PKG_CHECK_MODULES(GNOME_SESSION,
+ PKG_CHECK_MODULES(SESSION_PROPERTIES,
+ glib-2.0 >= $GLIB_REQUIRED
+ gtk+-2.0 >= $GTK_REQUIRED
++ dbus-glib-1 >= $DBUS_GLIB_REQUIRED
+ )
+
+ PKG_CHECK_MODULES(SPLASH,
+Index: gnome-session-2.28.0/gnome-session/gsm-client.h
+===================================================================
+--- gnome-session-2.28.0.orig/gnome-session/gsm-client.h 2009-04-19 20:26:52.000000000 +0200
++++ gnome-session-2.28.0/gnome-session/gsm-client.h 2009-10-24 12:43:56.873765479 +0200
+@@ -92,6 +92,9 @@ struct _GsmClientClass
+ GError **error);
+ gboolean (*impl_stop) (GsmClient *client,
+ GError **error);
++ gboolean (*impl_request_save) (GsmClient *client,
++ guint flags,
++ GError **error);
+ GKeyFile * (*impl_save) (GsmClient *client,
+ GError **error);
+ };
+@@ -137,6 +140,9 @@ gboolean gsm_client_cancel_
+
+ void gsm_client_disconnected (GsmClient *client);
+
++gboolean gsm_client_request_save (GsmClient *client,
++ guint flags,
++ GError **error);
+ GKeyFile *gsm_client_save (GsmClient *client,
+ GError **error);
+ /* exported to bus */
+Index: gnome-session-2.28.0/gnome-session/gsm-dbus-client.c
+===================================================================
+--- gnome-session-2.28.0.orig/gnome-session/gsm-dbus-client.c 2009-04-19 20:26:52.000000000 +0200
++++ gnome-session-2.28.0/gnome-session/gsm-dbus-client.c 2009-10-24 12:43:56.873765479 +0200
+@@ -413,6 +413,19 @@ gsm_dbus_client_finalize (GObject *objec
+ G_OBJECT_CLASS (gsm_dbus_client_parent_class)->finalize (object);
+ }
+
++static gboolean
++dbus_client_request_save (GsmClient *client,
++ guint flags,
++ GError **error)
++{
++ g_debug ("GsmDBusClient: sending save request to client with id %s",
++ gsm_client_peek_id (client));
++
++ /* FIXME: The protocol does not support this */
++
++ return FALSE;
++}
++
+ static GKeyFile *
+ dbus_client_save (GsmClient *client,
+ GError **error)
+@@ -665,6 +678,7 @@ gsm_dbus_client_class_init (GsmDBusClien
+ object_class->set_property = gsm_dbus_client_set_property;
+ object_class->dispose = gsm_dbus_client_dispose;
+
++ client_class->impl_request_save = dbus_client_request_save;
+ client_class->impl_save = dbus_client_save;
+ client_class->impl_stop = dbus_client_stop;
+ client_class->impl_query_end_session = dbus_client_query_end_session;
+Index: gnome-session-2.28.0/gnome-session/gsm-client.c
+===================================================================
+--- gnome-session-2.28.0.orig/gnome-session/gsm-client.c 2009-04-19 20:26:52.000000000 +0200
++++ gnome-session-2.28.0/gnome-session/gsm-client.c 2009-10-24 12:43:56.877763612 +0200
+@@ -510,6 +510,16 @@ gsm_client_disconnected (GsmClient *clie
+ g_signal_emit (client, signals[DISCONNECTED], 0);
+ }
+
++gboolean
++gsm_client_request_save (GsmClient *client,
++ guint flags,
++ GError **error)
++{
++ g_return_val_if_fail (GSM_IS_CLIENT (client), FALSE);
++
++ return GSM_CLIENT_GET_CLASS (client)->impl_request_save (client, flags, error);
++}
++
+ GKeyFile *
+ gsm_client_save (GsmClient *client,
+ GError **error)
+Index: gnome-session-2.28.0/data/session-properties.ui
+===================================================================
+--- gnome-session-2.28.0.orig/data/session-properties.ui 2009-10-24 12:55:01.946268673 +0200
++++ gnome-session-2.28.0/data/session-properties.ui 2009-10-24 12:54:11.638268279 +0200
+@@ -148,6 +148,7 @@
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkButton" id="session_properties_save_button">
++ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <child>
+@@ -191,6 +192,17 @@
+ <property name="position">1</property>
+ </packing>
+ </child>
++ <child>
++ <object class="GtkLabel" id="session_properties_session_saved_label">
++ <property name="visible">True</property>
++ <property name="wrap">True</property>
++ </object>
++ <packing>
++ <property name="expand">False</property>
++ <property name="fill">False</property>
++ <property name="position">2</property>
++ </packing>
++ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
diff --git a/gnome-base/gnome-session/gnome-session-2.31.2.ebuild b/gnome-base/gnome-session/gnome-session-2.31.2.ebuild
new file mode 100644
index 0000000..8020f60
--- /dev/null
+++ b/gnome-base/gnome-session/gnome-session-2.31.2.ebuild
@@ -0,0 +1,94 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/gnome-session/gnome-session-2.30.0-r1.ebuild,v 1.1 2010/06/13 18:13:42 pacho Exp $
+
+EAPI="3"
+
+inherit eutils gnome2
+
+DESCRIPTION="Gnome session manager"
+HOMEPAGE="http://www.gnome.org/"
+SRC_URI="${SRC_URI}
+ branding? ( mirror://gentoo/gentoo-splash.png )"
+
+LICENSE="GPL-2 LGPL-2 FDL-1.1"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~ia64 ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux ~x86-solaris"
+
+IUSE="branding doc ipv6 +splash elibc_FreeBSD"
+
+RDEPEND=">=dev-libs/glib-2.16
+ >=x11-libs/gtk+-2.14.0:2
+ >=dev-libs/dbus-glib-0.76
+ >=gnome-base/gconf-2
+ >=x11-libs/startup-notification-0.10
+ || ( sys-power/upower >=sys-apps/devicekit-power-008 )
+ elibc_FreeBSD? ( dev-libs/libexecinfo )
+
+ x11-libs/libSM
+ x11-libs/libICE
+ x11-libs/libX11
+ x11-libs/libXau
+ x11-libs/libXext
+ x11-libs/libXrender
+ x11-libs/libXtst
+ x11-apps/xdpyinfo"
+DEPEND="${RDEPEND}
+ >=dev-lang/perl-5
+ >=sys-devel/gettext-0.10.40
+ >=dev-util/pkgconfig-0.17
+ >=dev-util/intltool-0.40
+ !<gnome-base/gdm-2.20.4
+ doc? (
+ app-text/xmlto
+ dev-libs/libxslt )"
+# gnome-base/gdm does not provide gnome.desktop anymore
+
+DOCS="AUTHORS ChangeLog NEWS README"
+
+pkg_setup() {
+ # TODO: convert libnotify to a configure option
+ G2CONF="${G2CONF}
+ --docdir=${EPREFIX}/usr/share/doc/${PF}
+ --with-default-wm=gnome-wm
+ $(use_enable splash)
+ $(use_enable doc docbook-docs)
+ $(use_enable ipv6)"
+
+ if use branding && ! use splash; then
+ ewarn "You have disabled splash but enabled branding support"
+ ewarn "splash support has been auto-enabled for branding"
+ G2CONF="${G2CONF} --enable-splash"
+ fi
+}
+
+src_prepare() {
+ gnome2_src_prepare
+
+ # Patch for Gentoo Branding (bug #42687)
+ use branding && epatch "${FILESDIR}/${PN}-2.27.91-gentoo-branding.patch"
+
+ # Fix shutdown/restart capability, upstream bug #549150
+ # FIXME: Needs updating for 2.27.91 (package is currently masked)
+ #epatch "${FILESDIR}/${PN}-2.26.2-shutdown.patch"
+
+ # Add "session saving" button back, upstream bug #575544
+ epatch "${FILESDIR}/${PN}-2.30.0-session-saving-button.patch"
+
+ # Fix intltoolize broken file, see upstream #577133
+ sed "s:'\^\$\$lang\$\$':\^\$\$lang\$\$:g" -i po/Makefile.in.in || die "sed failed"
+}
+
+src_install() {
+ gnome2_src_install
+
+ dodir /etc/X11/Sessions
+ exeinto /etc/X11/Sessions
+ doexe "${FILESDIR}/Gnome" || die "doexe failed"
+
+ # Our own splash for world domination
+ if use branding; then
+ insinto /usr/share/pixmaps/splash/
+ doins "${DISTDIR}/gentoo-splash.png" || die "doins failed"
+ fi
+}
diff --git a/gnome-base/gnome-settings-daemon/Manifest b/gnome-base/gnome-settings-daemon/Manifest
new file mode 100644
index 0000000..81cd7cb
--- /dev/null
+++ b/gnome-base/gnome-settings-daemon/Manifest
@@ -0,0 +1,3 @@
+AUX gnome-settings-daemon-2.30.0-gst-vol-control-support.patch 27189 RMD160 77e44583894977b6255fba168d565c5948481401 SHA1 8db1dde75b1866619d6589e989ed27fc45050c50 SHA256 0858e7fdb97086f7f0a284d535d642c23f06fb7d9fc71d9f7477dc856439a158
+DIST gnome-settings-daemon-2.31.5.1.tar.bz2 1300231 RMD160 e38eb64e07c8900145f3d13ba13b5efd127d3d6b SHA1 86c007ea665c584565a5b559c5510dce74b401cf SHA256 5d186da08f0312ca33d55bfce1d627adf85595039a63c5cdd52c5966f25ddb2a
+EBUILD gnome-settings-daemon-2.31.5.1.ebuild 2279 RMD160 ab23ee3e252f8fb367e967176aa6677e5989825d SHA1 e6b5d8deb6b33f0d8dedf15d486c9a1a5bb18a3f SHA256 e5e4e4353b724a8e3fc4912119beb45f282ceb82627d49fadc9f1406ab76f3eb
diff --git a/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-2.30.0-gst-vol-control-support.patch b/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-2.30.0-gst-vol-control-support.patch
new file mode 100644
index 0000000..57bb633
--- /dev/null
+++ b/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-2.30.0-gst-vol-control-support.patch
@@ -0,0 +1,856 @@
+From 32a79f1b04c352dc9b9c28c4bdd3d772eeff974d Mon Sep 17 00:00:00 2001
+From: Priit Laes <plaes@plaes.org>
+Date: Wed, 31 Mar 2010 20:53:05 +0300
+Subject: [PATCH] GStreamer support in the volume applet; powered by the Gentoo GNOME team.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=571145
+---
+ configure.ac | 43 ++
+ plugins/media-keys/Makefile.am | 15 +-
+ plugins/media-keys/cut-n-paste/Makefile.am | 34 ++-
+ .../cut-n-paste/gvc-gstreamer-acme-vol.c | 402 ++++++++++++++++++++
+ .../cut-n-paste/gvc-gstreamer-acme-vol.h | 56 +++
+ plugins/media-keys/gsd-media-keys-manager.c | 64 +++-
+ 6 files changed, 589 insertions(+), 25 deletions(-)
+ create mode 100644 plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.c
+ create mode 100644 plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.h
+
+diff --git a/configure.ac b/configure.ac
+index 92f20c8..723a0cf 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -251,6 +251,48 @@ AM_CONDITIONAL(HAVE_PULSE, test "x$have_pulse" = "xtrue")
+ AC_SUBST(PULSE_CFLAGS)
+ AC_SUBST(PULSE_LIBS)
+
++dnl ==============================================
++dnl GStreamer section
++dnl ==============================================
++GST_MAJORMINOR=auto
++
++AC_ARG_ENABLE(gstreamer,
++AC_HELP_STRING([--enable-gstreamer],[use gstreamer if available (and optionally specify a version)]),
++[case "${enableval}" in
++ yes) ENABLE_GSTREAMER=yes ;;
++ 0.10) ENABLE_GSTREAMER=yes && GST_MAJORMINOR=0.10 ;;
++ no) ENABLE_GSTREAMER=no ;;
++ *) AC_MSG_ERROR([
++ *** Bad value ${enableval} for --enable-gstreamer
++ *** Please use one of the following:
++ *** --enable-gstreamer=0.10
++ ]) ;;
++esac],
++[ENABLE_GSTREAMER=yes]) dnl Default value
++
++have_gstreamer=no
++if test "x$ENABLE_GSTREAMER" = "xyes"; then
++ GST_REQS=0.10.1.2
++ PKGS="gstreamer-0.10 >= $GST_REQS gstreamer-plugins-base-0.10 >= $GST_REQS"
++
++ PKG_CHECK_MODULES(GST, $PKGS, have_gstreamer=yes,
++ AC_MSG_RESULT([no]))
++
++ if test "x$have_pulse" = "xtrue"; then
++ AC_MSG_ERROR([*** GStreamer & Pulseaudio both are selected ***])
++ fi
++
++ if test "x$have_gstreamer" = "xyes"; then
++ GST_LIBS="$GST_LIBS -lgstinterfaces-0.10 -lgstaudio-0.10"
++ AC_DEFINE(HAVE_GSTREAMER,1,[enable gstreamer])
++ fi
++else
++ AC_MSG_NOTICE([*** GStreamer support disabled ***])
++fi
++AM_CONDITIONAL(HAVE_GSTREAMER, test "x$have_gstreamer" = "xyes")
++AC_SUBST(GST_LIBS)
++AC_SUBST(GST_CFLAGS)
++
+ # ---------------------------------------------------------------------------
+ # Enable Profiling
+ # ---------------------------------------------------------------------------
+@@ -389,6 +431,7 @@ echo "
+ dbus-1 system.d dir: ${DBUS_SYS_DIR}
+
+ Libnotify support: ${have_libnotify}
++ GStreamer support: ${have_gstreamer}
+ PulseAudio support: ${have_pulse}
+ Profiling support: ${enable_profiling}
+ "
+diff --git a/plugins/media-keys/Makefile.am b/plugins/media-keys/Makefile.am
+index f9a71cd..92b19f4 100644
+--- a/plugins/media-keys/Makefile.am
++++ b/plugins/media-keys/Makefile.am
+@@ -3,13 +3,8 @@ context = actions
+
+ NULL =
+
+-SUBDIRS =
+-plugin_LTLIBRARIES =
+-
+-if HAVE_PULSE
+-SUBDIRS += cut-n-paste
+-plugin_LTLIBRARIES += libmedia-keys.la
+-endif
++SUBDIRS = cut-n-paste
++plugin_LTLIBRARIES = libmedia-keys.la
+
+ BUILT_SOURCES = \
+ gsd-media-keys-manager-glue.h \
+@@ -100,7 +95,7 @@ libmedia_keys_la_LDFLAGS = \
+
+ libmedia_keys_la_LIBADD = \
+ $(top_builddir)/plugins/common/libcommon.la \
+- $(top_builddir)/plugins/media-keys/cut-n-paste/libgvc.la \
++ $(top_builddir)/plugins/media-keys/cut-n-paste/libgvc.la \
+ $(SETTINGS_PLUGIN_LIBS) \
+ $(XF86MISC_LIBS) \
+ -lm
+@@ -108,9 +103,7 @@ libmedia_keys_la_LIBADD = \
+ plugin_in_files = \
+ media-keys.gnome-settings-plugin.in
+
+-if HAVE_PULSE
+ plugin_DATA = $(plugin_in_files:.gnome-settings-plugin.in=.gnome-settings-plugin)
+-endif
+
+ noinst_PROGRAMS = \
+ test-media-keys \
+@@ -176,9 +169,7 @@ test_media_keys_LDADD = \
+ $(GST_LIBS) \
+ -lm
+
+-if HAVE_PULSE
+ test_media_keys_LDADD += $(top_builddir)/plugins/media-keys/cut-n-paste/libgvc.la
+-endif
+
+ gtkbuilderdir = $(pkgdatadir)
+ gtkbuilder_DATA = \
+diff --git a/plugins/media-keys/cut-n-paste/Makefile.am b/plugins/media-keys/cut-n-paste/Makefile.am
+index bc59a10..6486ac0 100644
+--- a/plugins/media-keys/cut-n-paste/Makefile.am
++++ b/plugins/media-keys/cut-n-paste/Makefile.am
+@@ -4,16 +4,24 @@ noinst_LTLIBRARIES = libgvc.la
+
+ INCLUDES = \
+ $(WARN_CFLAGS) \
+- $(VOLUME_CONTROL_CFLAGS) \
+- $(PULSE_CFLAGS) \
+ $(NULL)
+
+ libgvc_la_LIBADD = \
+- $(VOLUME_CONTROL_LIBS) \
+- $(PULSE_LIBS) \
+ $(NULL)
+
+ libgvc_la_SOURCES = \
++ $(NULL)
++
++if HAVE_PULSE
++INCLUDES += \
++ $(VOLUME_CONTROL_CFLAGS) \
++ $(PULSE_CFLAGS)
++
++libgvc_la_LIBADD += \
++ $(VOLUME_CONTROL_LIBS) \
++ $(PULSE_LIBS)
++
++libgvc_la_SOURCES += \
+ gvc-mixer-stream.h \
+ gvc-mixer-stream.c \
+ gvc-channel-map.h \
+@@ -31,8 +39,22 @@ libgvc_la_SOURCES = \
+ gvc-mixer-event-role.h \
+ gvc-mixer-event-role.c \
+ gvc-mixer-control.h \
+- gvc-mixer-control.c \
+- $(NULL)
++ gvc-mixer-control.c
++endif
++
++if HAVE_GSTREAMER
++INCLUDES += \
++ $(SETTINGS_PLUGIN_CFLAGS) \
++ $(AM_CFLAGS) \
++ $(GST_CFLAGS)
++
++libgvc_la_LIBADD += \
++ $(GST_LIBS)
++
++libgvc_la_SOURCES += \
++ gvc-gstreamer-acme-vol.c \
++ gvc-gstreamer-acme-vol.h
++endif
+
+ MAINTAINERCLEANFILES = \
+ *~ \
+diff --git a/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.c b/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.c
+new file mode 100644
+index 0000000..8948480
+--- /dev/null
++++ b/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.c
+@@ -0,0 +1,402 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
++
++/* acme-volume.c
++
++ Copyright (C) 2002, 2003 Bastien Nocera
++ Copyright (C) 2004 Novell, Inc.
++ Copyright (C) 2009 PERIER Romain <mrpouet@tuxfamily.org>
++
++ The Gnome Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Library General Public License as
++ published by the Free Software Foundation; either version 2 of the
++ License, or (at your option) any later version.
++
++ The Gnome Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Library General Public License for more details.
++
++ You should have received a copy of the GNU Library General Public
++ License along with the Gnome Library; see the file COPYING.LIB. If not,
++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA.
++
++ Author: Bastien Nocera <hadess@hadess.net>
++ Jon Trowbridge <trow@ximian.com>
++*/
++
++#include "config.h"
++#include "gvc-gstreamer-acme-vol.h"
++
++#include <gst/gst.h>
++#include <gst/audio/mixerutils.h>
++#include <gst/interfaces/mixer.h>
++#include <gst/interfaces/propertyprobe.h>
++
++#include <gconf/gconf-client.h>
++
++#include <string.h>
++
++#define TIMEOUT 4
++
++#define DEFAULT_MIXER_DEVICE_KEY "/desktop/gnome/sound/default_mixer_device"
++#define DEFAULT_MIXER_TRACKS_KEY "/desktop/gnome/sound/default_mixer_tracks"
++
++#define ACME_VOLUME_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), ACME_TYPE_VOLUME, AcmeVolumePrivate))
++
++struct AcmeVolumePrivate {
++ GstMixer *mixer;
++ GList *mixer_tracks;
++ guint timer_id;
++ gdouble volume;
++ gboolean mute;
++ GConfClient *gconf_client;
++};
++
++G_DEFINE_TYPE (AcmeVolume, acme_volume, G_TYPE_OBJECT)
++
++static gboolean acme_volume_open (AcmeVolume *acme);
++static void acme_volume_close (AcmeVolume *acme);
++static gboolean acme_volume_close_real (AcmeVolume *self);
++
++static gpointer acme_volume_object = NULL;
++
++static void
++acme_volume_finalize (GObject *object)
++{
++ AcmeVolume *self;
++
++ g_return_if_fail (object != NULL);
++ g_return_if_fail (ACME_IS_VOLUME (object));
++
++ self = ACME_VOLUME (object);
++
++ if (self->_priv->timer_id != 0)
++ g_source_remove (self->_priv->timer_id);
++ acme_volume_close_real (self);
++
++ if (self->_priv->gconf_client != NULL) {
++ g_object_unref (self->_priv->gconf_client);
++ self->_priv->gconf_client = NULL;
++ }
++
++ G_OBJECT_CLASS (acme_volume_parent_class)->finalize (object);
++}
++
++void
++acme_volume_set_mute (AcmeVolume *self, gboolean val)
++{
++ GList *t;
++
++ g_return_if_fail(ACME_IS_VOLUME(self));
++ g_return_if_fail(acme_volume_open(self));
++
++ for (t = self->_priv->mixer_tracks; t != NULL; t = t->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (t->data);
++ gst_mixer_set_mute (self->_priv->mixer, track, val);
++ }
++ self->_priv->mute = val;
++ acme_volume_close (self);
++}
++
++static void
++update_state (AcmeVolume * self)
++{
++ gint *volumes, n;
++ gdouble vol = 0;
++ GstMixerTrack *track = GST_MIXER_TRACK (self->_priv->mixer_tracks->data);
++
++ /* update mixer by getting volume */
++ volumes = g_new0 (gint, track->num_channels);
++ gst_mixer_get_volume (self->_priv->mixer, track, volumes);
++ for (n = 0; n < track->num_channels; n++)
++ vol += volumes[n];
++ g_free (volumes);
++ vol /= track->num_channels;
++ vol = 100 * vol / (track->max_volume - track->min_volume);
++
++ /* update mute flag, and volume if not muted */
++ if (GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_MUTE))
++ self->_priv->mute = TRUE;
++ self->_priv->volume = vol;
++}
++
++gboolean
++acme_volume_get_mute (AcmeVolume *self)
++{
++ g_return_val_if_fail(acme_volume_open(self), FALSE);
++
++ update_state (self);
++ acme_volume_close (self);
++
++ return self->_priv->mute;
++}
++
++gint
++acme_volume_get_volume (AcmeVolume *self)
++{
++
++ g_return_val_if_fail(acme_volume_open(self), 0);
++
++ update_state (self);
++
++ acme_volume_close (self);
++
++ return (gint) (self->_priv->volume + 0.5);
++}
++
++void
++acme_volume_set_volume (AcmeVolume *self, gint val)
++{
++ GList *t;
++
++ g_return_if_fail(acme_volume_open(self));
++
++ val = CLAMP (val, 0, 100);
++
++ for (t = self->_priv->mixer_tracks; t != NULL; t = t->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (t->data);
++ gint *volumes, n;
++ gdouble scale = (track->max_volume - track->min_volume) / 100.0;
++ gint vol = (gint) (val * scale + track->min_volume + 0.5);
++
++ volumes = g_new (gint, track->num_channels);
++ for (n = 0; n < track->num_channels; n++)
++ volumes[n] = vol;
++ gst_mixer_set_volume (self->_priv->mixer, track, volumes);
++ g_free (volumes);
++ }
++
++ /* update state */
++ self->_priv->volume = val;
++
++ acme_volume_close (self);
++}
++
++void
++acme_volume_mute_toggle (AcmeVolume *self)
++{
++ gboolean muted;
++
++ g_return_if_fail (self != NULL);
++ g_return_if_fail (ACME_IS_VOLUME(self));
++
++ muted = acme_volume_get_mute(self);
++ acme_volume_set_mute(self, !muted);
++}
++
++gint
++acme_volume_get_threshold (AcmeVolume *self)
++{
++ GList *t;
++ gint steps = 101;
++
++ g_return_val_if_fail(acme_volume_open(self), 1);
++
++ for (t = self->_priv->mixer_tracks; t != NULL; t = t->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (t->data);
++ gint track_steps = track->max_volume - track->min_volume;
++ if (track_steps > 0 && track_steps < steps)
++ steps = track_steps;
++ }
++
++ acme_volume_close (self);
++
++ return 100 / steps + 1;
++}
++
++static gboolean
++acme_volume_close_real (AcmeVolume *self)
++{
++ if (self->_priv->mixer != NULL)
++ {
++ gst_element_set_state (GST_ELEMENT (self->_priv->mixer), GST_STATE_NULL);
++ gst_object_unref (GST_OBJECT (self->_priv->mixer));
++ g_list_foreach (self->_priv->mixer_tracks, (GFunc) g_object_unref, NULL);
++ g_list_free (self->_priv->mixer_tracks);
++ self->_priv->mixer = NULL;
++ self->_priv->mixer_tracks = NULL;
++ }
++
++ self->_priv->timer_id = 0;
++ return FALSE;
++}
++
++/*
++ * _acme_set_mixer
++ * @mixer A pointer to mixer element
++ * @data A pointer to user data (AcmeVolume instance to be modified)
++ * @return A gboolean indicating success if Master track was found, failed otherwises.
++ */
++static gboolean
++_acme_set_mixer(GstMixer *mixer, gpointer user_data)
++{
++ const GList *tracks;
++
++ for (tracks = gst_mixer_list_tracks (mixer); tracks != NULL; tracks = tracks->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (tracks->data);
++
++ if (GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_MASTER)) {
++ AcmeVolume *self;
++
++ self = ACME_VOLUME (user_data);
++
++ self->_priv->mixer = mixer;
++ self->_priv->mixer_tracks = g_list_append (self->_priv->mixer_tracks, g_object_ref (track));
++ return TRUE;
++ }
++
++ continue;
++ }
++
++ return FALSE;
++}
++
++/* This is a modified version of code from gnome-media's gst-mixer */
++static gboolean
++acme_volume_open (AcmeVolume *self)
++{
++ gchar *mixer_device, **factory_and_device = NULL;
++ GList *mixer_list;
++
++ if (self->_priv->timer_id != 0) {
++ g_source_remove (self->_priv->timer_id);
++ self->_priv->timer_id = 0;
++ return TRUE;
++ }
++
++ mixer_device = gconf_client_get_string (self->_priv->gconf_client, DEFAULT_MIXER_DEVICE_KEY, NULL);
++ if (mixer_device != NULL)
++ factory_and_device = g_strsplit (mixer_device, ":", 2);
++
++ if (factory_and_device != NULL && factory_and_device[0] != NULL) {
++ GstElement *element;
++
++ element = gst_element_factory_make (factory_and_device[0], NULL);
++
++ if (element != NULL) {
++ if (factory_and_device[1] != NULL &&
++ g_object_class_find_property (G_OBJECT_GET_CLASS (element), "device"))
++ g_object_set (G_OBJECT (element), "device", factory_and_device[1], NULL);
++ gst_element_set_state (element, GST_STATE_READY);
++
++ if (GST_IS_MIXER (element))
++ self->_priv->mixer = GST_MIXER (element);
++ else {
++ gst_element_set_state (element, GST_STATE_NULL);
++ gst_object_unref (element);
++ }
++ }
++ }
++
++ g_free (mixer_device);
++ g_strfreev (factory_and_device);
++
++ if (self->_priv->mixer != NULL) {
++ const GList *m;
++ GSList *tracks, *t;
++ GError *error = NULL;
++
++ /* Try to use tracks saved in GConf
++ Note: errors need to be treated , for example if the user set a non type list for this key
++ or if the elements type_list are not "matched" */
++ tracks = gconf_client_get_list (self->_priv->gconf_client, DEFAULT_MIXER_TRACKS_KEY,
++ GCONF_VALUE_STRING, &error);
++
++ if (error) {
++ g_warning("ERROR: %s\n", error->message);
++ g_error_free(error);
++ }
++
++ /* We use these tracks ONLY if they are supported on the system with the following mixer */
++ for (m = gst_mixer_list_tracks (self->_priv->mixer); m != NULL; m = m->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (m->data);
++
++ for (t = tracks; t != NULL; t = t->next)
++ if (!strcmp (t->data, track->label))
++ self->_priv->mixer_tracks = g_list_append (self->_priv->mixer_tracks, g_object_ref (track));
++
++ }
++
++ g_slist_foreach (tracks, (GFunc)g_free, NULL);
++ g_slist_free (tracks);
++
++ /* If no track stored in GConf is avaiable try to use Master track */
++ if (self->_priv->mixer_tracks == NULL) {
++ for (m = gst_mixer_list_tracks (self->_priv->mixer); m != NULL; m = m->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (m->data);
++
++ if (GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_MASTER)) {
++ self->_priv->mixer_tracks = g_list_append (self->_priv->mixer_tracks, g_object_ref (track));
++ break;
++ }
++ }
++ }
++
++ if (self->_priv->mixer_tracks != NULL)
++ return TRUE;
++ else {
++ gst_element_set_state (GST_ELEMENT (self->_priv->mixer), GST_STATE_NULL);
++ gst_object_unref (self->_priv->mixer);
++ }
++ }
++
++ /* Go through all elements of a certain class and check whether
++ * they implement a mixer. If so, walk through the tracks and look
++ * for first one named "volume".
++ *
++ * We should probably do something intelligent if we don't find an
++ * appropriate mixer/track. But now we do something stupid...
++ * everything just becomes a no-op.
++ */
++ mixer_list = gst_audio_default_registry_mixer_filter (_acme_set_mixer,
++ TRUE,
++ self);
++
++ if (mixer_list == NULL)
++ return FALSE;
++
++ /* do not unref the mixer as we keep the ref for self->priv->mixer */
++ g_list_free (mixer_list);
++
++ return TRUE;
++}
++
++static void
++acme_volume_close (AcmeVolume *self)
++{
++ self->_priv->timer_id = g_timeout_add_seconds (TIMEOUT,
++ (GSourceFunc) acme_volume_close_real, self);
++}
++
++static void
++acme_volume_init (AcmeVolume *self)
++{
++ self->_priv = ACME_VOLUME_GET_PRIVATE (self);
++ self->_priv->gconf_client = gconf_client_get_default ();
++}
++
++static void
++acme_volume_class_init (AcmeVolumeClass *klass)
++{
++ G_OBJECT_CLASS (klass)->finalize = acme_volume_finalize;
++
++ gst_init (NULL, NULL);
++
++ g_type_class_add_private (klass, sizeof (AcmeVolumePrivate));
++}
++
++/* acme_volume_new
++ * @return A singleton instance of type AcmeVolume
++ */
++AcmeVolume *
++acme_volume_new (void)
++{
++ if (acme_volume_object == NULL) {
++ acme_volume_object = g_object_new (ACME_TYPE_VOLUME, NULL);
++ return ACME_VOLUME(acme_volume_object);
++ }
++ g_object_ref(acme_volume_object);
++ return ACME_VOLUME(acme_volume_object);
++}
++
+diff --git a/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.h b/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.h
+new file mode 100644
+index 0000000..c14ebc8
+--- /dev/null
++++ b/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.h
+@@ -0,0 +1,56 @@
++/* acme-volume.h
++
++ Copyright (C) 2002, 2003 Bastien Nocera
++ Copyright (C) 2004 Novell, Inc.
++ Copyright (C) 2009 PERIER Romain <mrpouet@tuxfamily.org>
++
++ The Gnome Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Library General Public License as
++ published by the Free Software Foundation; either version 2 of the
++ License, or (at your option) any later version.
++
++ The Gnome Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Library General Public License for more details.
++
++ You should have received a copy of the GNU Library General Public
++ License along with the Gnome Library; see the file COPYING.LIB. If not,
++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA.
++
++ Author: Bastien Nocera <hadess@hadess.net>
++ Jon Trowbridge <trow@ximian.com>
++ */
++
++#include <glib-object.h>
++
++#define ACME_TYPE_VOLUME (acme_volume_get_type ())
++#define ACME_VOLUME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ACME_TYPE_VOLUME, AcmeVolume))
++#define ACME_VOLUME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ACME_TYPE_VOLUME, AcmeVolumeClass))
++#define ACME_IS_VOLUME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ACME_TYPE_VOLUME))
++#define ACME_VOLUME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ACME_TYPE_VOLUME, AcmeVolumeClass))
++
++typedef struct AcmeVolume AcmeVolume;
++typedef struct AcmeVolumeClass AcmeVolumeClass;
++typedef struct AcmeVolumePrivate AcmeVolumePrivate;
++
++struct AcmeVolume {
++ GObject parent;
++ AcmeVolumePrivate *_priv;
++};
++
++struct AcmeVolumeClass {
++ GObjectClass parent;
++};
++
++GType acme_volume_get_type (void);
++AcmeVolume *acme_volume_new (void);
++void acme_volume_set_mute (AcmeVolume *self, gboolean val);
++void acme_volume_mute_toggle (AcmeVolume *self);
++gboolean acme_volume_get_mute (AcmeVolume *self);
++void acme_volume_set_volume (AcmeVolume *self, gint val);
++gint acme_volume_get_volume (AcmeVolume *self);
++gint acme_volume_get_threshold (AcmeVolume *self);
++
++
+diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c
+index b563f73..64893b5 100644
+--- a/plugins/media-keys/gsd-media-keys-manager.c
++++ b/plugins/media-keys/gsd-media-keys-manager.c
+@@ -53,6 +53,8 @@
+ #ifdef HAVE_PULSE
+ #include <canberra-gtk.h>
+ #include "gvc-mixer-control.h"
++#elif defined(HAVE_GSTREAMER)
++#include "gvc-gstreamer-acme-vol.h"
+ #endif /* HAVE_PULSE */
+
+ #define GSD_DBUS_PATH "/org/gnome/SettingsDaemon"
+@@ -78,6 +80,8 @@ struct GsdMediaKeysManagerPrivate
+ /* Volume bits */
+ GvcMixerControl *volume;
+ GvcMixerStream *stream;
++#elif defined(HAVE_GSTREAMER)
++ AcmeVolume *volume;
+ #endif /* HAVE_PULSE */
+ GtkWidget *dialog;
+ GConfClient *conf_client;
+@@ -650,14 +654,16 @@ do_touchpad_action (GsdMediaKeysManager *manager)
+ gconf_client_set_bool (client, TOUCHPAD_ENABLED_KEY, !state, NULL);
+ }
+
+-#ifdef HAVE_PULSE
++#if defined(HAVE_PULSE) || defined(HAVE_GSTREAMER)
+ static void
+ update_dialog (GsdMediaKeysManager *manager,
+ guint vol,
+ gboolean muted,
+ gboolean sound_changed)
+ {
++#ifdef HAVE_PULSE
+ vol = (int) (100 * (double) vol / PA_VOLUME_NORM);
++#endif
+ vol = CLAMP (vol, 0, 100);
+
+ dialog_init (manager);
+@@ -668,12 +674,14 @@ update_dialog (GsdMediaKeysManager *manager,
+ GSD_MEDIA_KEYS_WINDOW_ACTION_VOLUME);
+ dialog_show (manager);
+
++#ifdef HAVE_PULSE
+ if (sound_changed != FALSE && muted == FALSE)
+ ca_gtk_play_for_widget (manager->priv->dialog, 0,
+ CA_PROP_EVENT_ID, "audio-volume-change",
+ CA_PROP_EVENT_DESCRIPTION, "volume changed through key press",
+ CA_PROP_APPLICATION_ID, "org.gnome.VolumeControl",
+ NULL);
++#endif
+ }
+
+ static void
+@@ -685,7 +693,11 @@ do_sound_action (GsdMediaKeysManager *manager,
+ int vol_step;
+ gboolean sound_changed;
+
++#ifdef HAVE_PULSE
+ if (manager->priv->stream == NULL)
++#else
++ if (manager->priv->volume == NULL)
++#endif
+ return;
+
+ vol_step = gconf_client_get_int (manager->priv->conf_client,
+@@ -695,20 +707,35 @@ do_sound_action (GsdMediaKeysManager *manager,
+ if (vol_step <= 0 || vol_step > 100)
+ vol_step = VOLUME_STEP;
+
++ sound_changed = FALSE;
++#ifdef HAVE_PULSE
+ norm_vol_step = PA_VOLUME_NORM * vol_step / 100;
+
+ /* FIXME: this is racy */
+ vol = gvc_mixer_stream_get_volume (manager->priv->stream);
+ muted = gvc_mixer_stream_get_is_muted (manager->priv->stream);
+- sound_changed = FALSE;
+-
++#else
++ if (vol_step > 0) {
++ gint threshold = acme_volume_get_threshold (manager->priv->volume);
++ if (vol_step < threshold)
++ vol_step = threshold;
++ g_debug ("Using volume step of %d", vol_step);
++ }
++ vol = acme_volume_get_volume (manager->priv->volume);
++ muted = acme_volume_get_mute (manager->priv->volume);
++#endif
+ switch (type) {
+ case MUTE_KEY:
+ muted = !muted;
+- gvc_mixer_stream_change_is_muted (manager->priv->stream, muted);
+ sound_changed = TRUE;
++#ifdef HAVE_PULSE
++ gvc_mixer_stream_change_is_muted (manager->priv->stream, muted);
++#else
++ acme_volume_mute_toggle (manager->priv->volume);
++#endif
+ break;
+ case VOLUME_DOWN_KEY:
++#ifdef HAVE_PULSE
+ if (!muted && (vol <= norm_vol_step)) {
+ muted = !muted;
+ vol = 0;
+@@ -724,11 +751,17 @@ do_sound_action (GsdMediaKeysManager *manager,
+ sound_changed = TRUE;
+ }
+ }
++#else
++ if (!muted && (vol <= vol_step))
++ acme_volume_mute_toggle (manager->priv->volume);
++ acme_volume_set_volume (manager->priv->volume, vol - vol_step);
++#endif
+ break;
+ case VOLUME_UP_KEY:
+ if (muted) {
+ muted = !muted;
+ if (vol == 0) {
++#ifdef HAVE_PULSE
+ vol = vol + norm_vol_step;
+ gvc_mixer_stream_change_is_muted (manager->priv->stream, muted);
+ if (gvc_mixer_stream_set_volume (manager->priv->stream, vol) != FALSE) {
+@@ -739,7 +772,15 @@ do_sound_action (GsdMediaKeysManager *manager,
+ gvc_mixer_stream_change_is_muted (manager->priv->stream, muted);
+ sound_changed = TRUE;
+ }
++#else
++ /* We need to unmute otherwise vol is blocked (and muted) */
++ acme_volume_set_mute (manager->priv->volume, FALSE);
++ }
++ acme_volume_set_volume (manager->priv->volume, vol + vol_step);
++
++#endif
+ } else {
++#ifdef HAVE_PULSE
+ if (vol < MAX_VOLUME) {
+ if (vol + norm_vol_step >= MAX_VOLUME) {
+ vol = MAX_VOLUME;
+@@ -751,13 +792,18 @@ do_sound_action (GsdMediaKeysManager *manager,
+ sound_changed = TRUE;
+ }
+ }
++#else
++ acme_volume_set_volume (manager->priv->volume, vol + vol_step);
++#endif /* HAVE_PULSE */
+ }
+ break;
+ }
+
+ update_dialog (manager, vol, muted, sound_changed);
+ }
++#endif /* defined(HAVE_PULSE) || defined(HAVE_GSTREAMER) */
+
++#ifdef HAVE_PULSE
+ static void
+ update_default_sink (GsdMediaKeysManager *manager)
+ {
+@@ -793,7 +839,6 @@ on_control_default_sink_changed (GvcMixerControl *control,
+ {
+ update_default_sink (manager);
+ }
+-
+ #endif /* HAVE_PULSE */
+
+ static gint
+@@ -919,9 +964,9 @@ do_action (GsdMediaKeysManager *manager,
+ case MUTE_KEY:
+ case VOLUME_DOWN_KEY:
+ case VOLUME_UP_KEY:
+-#ifdef HAVE_PULSE
++#if defined(HAVE_PULSE) || defined(HAVE_GSTREAMER)
+ do_sound_action (manager, type);
+-#endif /* HAVE_PULSE */
++#endif /* HAVE_PULSE || HAVE_GSTREAMER */
+ break;
+ case POWER_KEY:
+ do_exit_action (manager);
+@@ -1122,6 +1167,10 @@ gsd_media_keys_manager_start (GsdMediaKeysManager *manager,
+ gvc_mixer_control_open (manager->priv->volume);
+
+ gnome_settings_profile_end ("gvc_mixer_control_new");
++#elif defined(HAVE_GSTREAMER)
++ gnome_settings_profile_start ("acme_volume_new");
++ manager->priv->volume = acme_volume_new ();
++ gnome_settings_profile_end ("acme_volume_new");
+ #endif /* HAVE_PULSE */
+ g_idle_add ((GSourceFunc) start_media_keys_idle_cb, manager);
+
+@@ -1199,6 +1248,7 @@ gsd_media_keys_manager_stop (GsdMediaKeysManager *manager)
+ g_object_unref (priv->stream);
+ priv->stream = NULL;
+ }
++#elif defined(HAVE_GSTREAMER)
+
+ if (priv->volume) {
+ g_object_unref (priv->volume);
+--
+1.7.0.3
+
diff --git a/gnome-base/gnome-settings-daemon/gnome-settings-daemon-2.31.5.1.ebuild b/gnome-base/gnome-settings-daemon/gnome-settings-daemon-2.31.5.1.ebuild
new file mode 100644
index 0000000..5666168
--- /dev/null
+++ b/gnome-base/gnome-settings-daemon/gnome-settings-daemon-2.31.5.1.ebuild
@@ -0,0 +1,87 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/gnome-settings-daemon/gnome-settings-daemon-2.30.1-r1.ebuild,v 1.1 2010/06/14 12:08:28 pacho Exp $
+
+EAPI="2"
+
+inherit autotools eutils gnome2
+
+DESCRIPTION="Gnome Settings Daemon"
+HOMEPAGE="http://www.gnome.org"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux ~x86-solaris"
+IUSE="debug libnotify policykit pulseaudio"
+
+RDEPEND=">=dev-libs/dbus-glib-0.74
+ >=dev-libs/glib-2.18.0
+ >=x11-libs/gtk+-2.90:3
+ >=gnome-base/gconf-2.6.1
+ >=gnome-base/libgnomekbd-2.31.2
+ >=gnome-base/gnome-desktop-2.29.92:3
+
+ x11-libs/libX11
+ x11-libs/libXi
+ x11-libs/libXrandr
+ x11-libs/libXext
+ x11-libs/libXxf86misc
+ >=x11-libs/libxklavier-5.0
+ media-libs/fontconfig
+
+ libnotify? ( >=x11-libs/libnotify-0.4.3 )
+ policykit? (
+ >=sys-auth/polkit-0.91
+ >=dev-libs/dbus-glib-0.71
+ >=sys-apps/dbus-1.1.2 )
+ pulseaudio? (
+ >=media-sound/pulseaudio-0.9.15
+ media-libs/libcanberra[gtk] )
+ !pulseaudio? (
+ >=media-libs/gstreamer-0.10.1.2
+ >=media-libs/gst-plugins-base-0.10.1.2 )"
+DEPEND="${RDEPEND}
+ !<gnome-base/gnome-control-center-2.22
+ sys-devel/gettext
+ >=dev-util/intltool-0.40
+ >=dev-util/pkgconfig-0.19
+ x11-proto/inputproto
+ x11-proto/xproto"
+
+# README is empty
+DOCS="AUTHORS NEWS ChangeLog MAINTAINERS"
+
+pkg_setup() {
+ G2CONF="${G2CONF}
+ --disable-static
+ $(use_enable debug)
+ $(use_with libnotify)
+ $(use_enable policykit polkit)
+ $(use_enable pulseaudio pulse)
+ $(use_enable !pulseaudio gstreamer)"
+
+ if use pulseaudio; then
+ elog "Building volume media keys using Pulseaudio"
+ else
+ elog "Building volume media keys using GStreamer"
+ fi
+}
+
+src_prepare() {
+ gnome2_src_prepare
+
+ # Restore gstreamer volume control support, upstream bug #571145
+ epatch "${FILESDIR}/${PN}-2.30.0-gst-vol-control-support.patch"
+
+ intltoolize --force --copy --automake || die "intltoolize failed"
+ eautoreconf
+}
+
+pkg_postinst() {
+ gnome2_pkg_postinst
+
+ if ! use pulseaudio; then
+ elog "GStreamer volume control support is a feature powered by Gentoo GNOME Team"
+ elog "PLEASE DO NOT report bugs upstream, report on https://bugs.gentoo.org instead"
+ fi
+}
diff --git a/gnome-base/gnome-shell/Manifest b/gnome-base/gnome-shell/Manifest
index 8251db1..aac33dc 100644
--- a/gnome-base/gnome-shell/Manifest
+++ b/gnome-base/gnome-shell/Manifest
@@ -1,2 +1,4 @@
DIST gnome-shell-2.29.1.tar.bz2 669050 RMD160 4045a4bbc54dd2a49880e5de7e60b5230bed9596 SHA1 4420e050d284bd565ef5f573318b03361db472c8 SHA256 710b863c0beea45543f8057d31b028ec85e19efeedda2b964d784d6fc1729c0b
+DIST gnome-shell-2.31.5.tar.bz2 720054 RMD160 24de2c5213229cccad382a28d219e6244dcc8d59 SHA1 ad86873f324ed1d434c42796c2ed7fb5c6ef4aa9 SHA256 f0193c51d0f934f26193f7522adbbb09e01da6eab977580f6f255bbeecb3a6d0
EBUILD gnome-shell-2.29.1.ebuild 1119 RMD160 e96e6d1b874b9ea4d4a98b0c476448c3b1470c9e SHA1 fea248fe526239879662d07595c868ef4e23dba6 SHA256 af172d91c61b68a1b12bb87ffc599d9145b7a8fc611268101cf0db5cf5caa705
+EBUILD gnome-shell-2.31.5.ebuild 1122 RMD160 85c2c3db8bebe469c113a3eb4ec3c8673dd5aec2 SHA1 7089017d9b4be4cdbf3cc3a1a4e6bc6b9014af5f SHA256 996335479238d8c6116128570dcd7aff43842aca118bf8e121ac9dfcc2d7688c
diff --git a/gnome-base/gnome-shell/gnome-shell-2.31.5.ebuild b/gnome-base/gnome-shell/gnome-shell-2.31.5.ebuild
new file mode 100644
index 0000000..77111c7
--- /dev/null
+++ b/gnome-base/gnome-shell/gnome-shell-2.31.5.ebuild
@@ -0,0 +1,51 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="2"
+GCONF_DEBUG="no"
+
+inherit gnome2
+
+DESCRIPTION="Provides core UI functions for the GNOME 3 desktop"
+HOMEPAGE="http://live.gnome.org/GnomeShell"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE=""
+
+RDEPEND=">=dev-libs/glib-2.25.9
+ >=x11-libs/gtk+-2.90.4:3[introspection]
+ >=media-libs/gstreamer-0.10.16
+ >=media-libs/gst-plugins-base-0.10.16
+ >=gnome-base/gnome-desktop-2.90:3
+ >=dev-libs/gobject-introspection-0.6.11
+
+ dev-libs/dbus-glib
+ >=dev-libs/gjs-0.7
+ x11-libs/pango[introspection]
+ >=media-libs/clutter-1.2.8[introspection]
+ dev-libs/libcroco:0.6
+
+ >=gnome-base/dconf-0.4.1
+ gnome-base/gconf[introspection]
+ gnome-base/gnome-menus
+ gnome-base/librsvg
+
+ x11-libs/startup-notification
+ x11-libs/libXfixes
+ >=x11-wm/mutter-2.31.5[introspection]
+ x11-apps/mesa-progs
+
+ dev-python/dbus-python
+"
+DEPEND="${RDEPEND}
+ >=sys-devel/libtool-2.2.6
+ >=dev-lang/python-2.5
+ sys-devel/gettext
+ >=dev-util/pkgconfig-0.22
+ >=dev-util/intltool-0.26
+ gnome-base/gnome-common
+"
+DOCS="AUTHORS README"
diff --git a/gnome-base/libgnomekbd/Manifest b/gnome-base/libgnomekbd/Manifest
new file mode 100644
index 0000000..e39fede
--- /dev/null
+++ b/gnome-base/libgnomekbd/Manifest
@@ -0,0 +1,2 @@
+DIST libgnomekbd-2.31.5.tar.bz2 409510 RMD160 18a4095a86b21708a954c620ead4994d5572545d SHA1 fb3bebc174986996859265fa119060e6db852601 SHA256 3a93b6af0f98e6754d6348a35f4059baa73067b8e7f87b6ddbc11aec990d04a8
+EBUILD libgnomekbd-2.31.5.ebuild 1086 RMD160 17b39e9e12e914efffea65d36ff1dad76ffecf99 SHA1 9762a2f617798a928440f8423af77568b1b27576 SHA256 24ff98b46cc8047021d13e777dc94b29e351c4e4101d7b9169c413d0a69b6a8b
diff --git a/gnome-base/libgnomekbd/libgnomekbd-2.31.5.ebuild b/gnome-base/libgnomekbd/libgnomekbd-2.31.5.ebuild
new file mode 100644
index 0000000..f7d3112
--- /dev/null
+++ b/gnome-base/libgnomekbd/libgnomekbd-2.31.5.ebuild
@@ -0,0 +1,39 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/libgnomekbd/libgnomekbd-2.30.1.ebuild,v 1.1 2010/06/13 16:47:46 pacho Exp $
+
+EAPI="2"
+GCONF_DEBUG="no"
+
+inherit eutils gnome2 multilib
+
+DESCRIPTION="Gnome keyboard configuration library"
+HOMEPAGE="http://www.gnome.org"
+
+LICENSE="LGPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~x86-solaris"
+IUSE=""
+
+RDEPEND=">=dev-libs/glib-2.18
+ >=sys-apps/dbus-0.92
+ >=dev-libs/dbus-glib-0.34
+ >=gnome-base/gconf-2.14
+ >=x11-libs/gtk+-2.18:2
+ >=x11-libs/libxklavier-5.0"
+DEPEND="${RDEPEND}
+ >=dev-util/intltool-0.35
+ >=dev-util/pkgconfig-0.19"
+
+DOCS="AUTHORS ChangeLog NEWS README"
+
+pkg_setup() {
+ # Only user interaction required graphical tests at the time of 2.22.0 - not useful for us
+ G2CONF="${G2CONF} --disable-tests --disable-static"
+}
+
+src_compile() {
+ # FreeBSD doesn't like -j, upstream? bug #????
+ use x86-fbsd && MAKEOPTS="${MAKEOPTS} -j1"
+ gnome2_src_compile
+}
diff --git a/gnome-base/librsvg/Manifest b/gnome-base/librsvg/Manifest
new file mode 100644
index 0000000..ff2d089
--- /dev/null
+++ b/gnome-base/librsvg/Manifest
@@ -0,0 +1,2 @@
+DIST librsvg-2.31.0.tar.bz2 514232 RMD160 c155e68855d7582e53f6b5d4183a6dd26023a994 SHA1 e95fde763313bef0f235c87d76975d190f348044 SHA256 320b61ef5e6d65624f3733a83134df012a4156ed7f7ae38a6ed19febe1bfa732
+EBUILD librsvg-2.31.0.ebuild 1534 RMD160 730b476a6b1ac89ba96bb9750de1f82c940d27bf SHA1 cd9cca8589f07f59f5b07d34a8476d4c302d02dc SHA256 2e08da9012e9bed3f4013fc7202745db2811fe515f7a4a0ce4047ee473eeebb9
diff --git a/gnome-base/librsvg/librsvg-2.31.0.ebuild b/gnome-base/librsvg/librsvg-2.31.0.ebuild
new file mode 100644
index 0000000..0215bd0
--- /dev/null
+++ b/gnome-base/librsvg/librsvg-2.31.0.ebuild
@@ -0,0 +1,51 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/librsvg/librsvg-2.26.3.ebuild,v 1.3 2010/05/24 23:07:59 abcd Exp $
+
+EAPI="3"
+GCONF_DEBUG="no"
+
+inherit gnome2 multilib
+
+DESCRIPTION="Scalable Vector Graphics (SVG) rendering library"
+HOMEPAGE="http://librsvg.sourceforge.net/"
+
+LICENSE="LGPL-2"
+SLOT="2"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris"
+IUSE="doc tools"
+
+# Forcing both gtk+2 and gtk+3 until automagic deps can be fixed
+RDEPEND=">=media-libs/fontconfig-1.0.1
+ >=media-libs/freetype-2
+ >=x11-libs/gtk+-2.16:2
+ >=x11-libs/gtk+-2.90:3
+ >=dev-libs/glib-2.24
+ >=x11-libs/cairo-1.2
+ >=x11-libs/pango-1.10
+ >=dev-libs/libxml2-2.4.7
+ >=dev-libs/libcroco-0.6.1"
+DEPEND="${RDEPEND}
+ >=dev-util/pkgconfig-0.12
+ doc? ( >=dev-util/gtk-doc-1 )"
+# >=dev-util/gtk-doc-am-1.13 needed by eautoreconf, feel free to drop it when not run it
+
+DOCS="AUTHORS ChangeLog README NEWS TODO"
+
+pkg_setup() {
+ # croco is forced on to respect SVG specification
+ G2CONF="${G2CONF}
+ --disable-static
+ $(use_enable tools)
+ --with-croco
+ --enable-pixbuf-loader
+ --enable-gtk-theme"
+}
+
+pkg_postinst() {
+ gdk-pixbuf-query-loaders > "${EROOT}/usr/$(get_libdir)/gdk-pixbuf-2.0/2.10.0/loaders.cache"
+}
+
+pkg_postrm() {
+ gdk-pixbuf-query-loaders > "${EROOT}/usr/$(get_libdir)/gdk-pixbuf-2.0/2.10.0/loaders.cache"
+}
diff --git a/gnome-base/nautilus/Manifest b/gnome-base/nautilus/Manifest
new file mode 100644
index 0000000..3894534
--- /dev/null
+++ b/gnome-base/nautilus/Manifest
@@ -0,0 +1,3 @@
+AUX nautilus-2.27.4-change-reg-desktop-file-with-no-desktop.patch 1396 RMD160 7efbc47c5f4ac647a15a56a26f80898e8ec896d0 SHA1 24f5281406066fc7fd5ffda23a061144c3667fe1 SHA256 ae9f91dddbbe2d562f5f21786daec6468b8788ece48419cce438d13201eef251
+DIST nautilus-2.31.5.tar.bz2 6047804 RMD160 c741fbb86965bd3365c606a119cd1f9c3441500e SHA1 6def090e0b2a9ae3dc41cd3667965e10294ff002 SHA256 8a2a343376148fa7da92a0962078eb47ed377db9fde0b71c1ef5b561853cfbf8
+EBUILD nautilus-2.31.5.ebuild 2509 RMD160 c568bf2affb999e2bb3807bac607d1976928ad9a SHA1 6664df4f5c49d801ab4b6636e85910aa243b752b SHA256 9159f7e2ffc9bc9b7fdcc0bf63d46019aeeb8fb8e9811f41d7c9234b87237086
diff --git a/gnome-base/nautilus/files/nautilus-2.27.4-change-reg-desktop-file-with-no-desktop.patch b/gnome-base/nautilus/files/nautilus-2.27.4-change-reg-desktop-file-with-no-desktop.patch
new file mode 100644
index 0000000..6bd3dee
--- /dev/null
+++ b/gnome-base/nautilus/files/nautilus-2.27.4-change-reg-desktop-file-with-no-desktop.patch
@@ -0,0 +1,33 @@
+Gentoo bug 266398
+GNOME #580793 and #571417
+
+Index: nautilus-2.26.2/src/nautilus-main.c
+===================================================================
+--- nautilus-2.26.2.orig/src/nautilus-main.c 2009-04-29 17:02:32.709364982 +0200
++++ nautilus-2.26.2/src/nautilus-main.c 2009-04-29 17:39:36.529860872 +0200
+@@ -391,9 +391,6 @@ main (int argc, char *argv[])
+
+ g_set_prgname ("nautilus");
+
+- if (g_file_test (DATADIR "/applications/nautilus.desktop", G_FILE_TEST_EXISTS)) {
+- egg_set_desktop_file (DATADIR "/applications/nautilus.desktop");
+- }
+
+ context = g_option_context_new (_("\n\nBrowse the file system with the file manager"));
+ g_option_context_add_main_entries (context, options, NULL);
+@@ -464,6 +461,15 @@ main (int argc, char *argv[])
+ (NAUTILUS_PREFERENCES_DESKTOP_IS_HOME_DIR, TRUE);
+ }
+
++ /* Which .desktop file contains the relevant session management
++ information? */
++ if ((no_desktop || !eel_preferences_get_boolean (NAUTILUS_PREFERENCES_SHOW_DESKTOP))
++ && g_file_test (DATADIR "/applications/nautilus-home.desktop", G_FILE_TEST_EXISTS)) {
++ egg_set_desktop_file (DATADIR "/applications/nautilus-home.desktop");
++ } else if (g_file_test (DATADIR "/applications/nautilus.desktop", G_FILE_TEST_EXISTS)) {
++ egg_set_desktop_file (DATADIR "/applications/nautilus.desktop");
++ }
++
+ application = NULL;
+
+ /* Do either the self-check or the real work. */
diff --git a/gnome-base/nautilus/nautilus-2.31.5.ebuild b/gnome-base/nautilus/nautilus-2.31.5.ebuild
new file mode 100644
index 0000000..1436cee
--- /dev/null
+++ b/gnome-base/nautilus/nautilus-2.31.5.ebuild
@@ -0,0 +1,92 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/nautilus/nautilus-2.30.1-r1.ebuild,v 1.1 2010/06/13 17:44:02 pacho Exp $
+
+EAPI="2"
+GCONF_DEBUG="no"
+
+inherit eutils gnome2 virtualx
+
+DESCRIPTION="A file manager for the GNOME desktop"
+HOMEPAGE="http://www.gnome.org/projects/nautilus/"
+
+LICENSE="GPL-2 LGPL-2 FDL-1.1"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd ~x86-interix ~amd64-linux ~x86-linux"
+IUSE="doc gnome introspection xmp"
+
+RDEPEND=">=dev-libs/glib-2.25.9
+ gnome-base/gnome-desktop:3
+ >=x11-libs/pango-1.1.2
+ >=x11-libs/gtk+-2.90.5:3[introspection?]
+ >=dev-libs/libxml2-2.4.7
+ >=media-libs/libexif-0.5.12
+ >=gnome-base/gconf-2.0[introspection?]
+ x11-libs/libXext
+ x11-libs/libXrender
+ introspection? ( >=dev-libs/gobject-introspection-0.6.4 )
+ xmp? ( >=media-libs/exempi-2 )"
+
+DEPEND="${RDEPEND}
+ >=dev-lang/perl-5
+ sys-devel/gettext
+ >=dev-util/pkgconfig-0.9
+ >=dev-util/intltool-0.40.1
+ doc? ( >=dev-util/gtk-doc-1.4 )"
+# For eautoreconf
+# gnome-base/gnome-common
+# dev-util/gtk-doc-am"
+
+PDEPEND="gnome? ( >=x11-themes/gnome-icon-theme-1.1.91 )
+ >=gnome-base/gvfs-0.1.2"
+
+DOCS="AUTHORS ChangeLog* HACKING MAINTAINERS NEWS README THANKS TODO"
+
+pkg_setup() {
+ G2CONF="${G2CONF}
+ --disable-update-mimedb
+ --disable-packagekit
+ $(use_enable introspection)
+ $(use_enable xmp)"
+}
+
+src_prepare() {
+ gnome2_src_prepare
+
+ # FIXME: tarball generated with broken gtk-doc, revisit me.
+ if use doc; then
+ sed "/^TARGET_DIR/i \GTKDOC_REBASE=/usr/bin/gtkdoc-rebase" \
+ -i gtk-doc.make || die "sed 1 failed"
+ else
+ sed "/^TARGET_DIR/i \GTKDOC_REBASE=/bin/true" \
+ -i gtk-doc.make || die "sed 2 failed"
+ fi
+
+ # Remove crazy CFLAGS
+ sed 's:-DG.*DISABLE_DEPRECATED::g' -i configure.in configure \
+ || die "sed 4 failed"
+
+ # Fix nautilus flipping-out with --no-desktop -- bug 266398
+ epatch "${FILESDIR}/${PN}-2.27.4-change-reg-desktop-file-with-no-desktop.patch"
+}
+
+src_test() {
+ addwrite "/root/.gnome2_private"
+ unset SESSION_MANAGER
+ unset ORBIT_SOCKETDIR
+ unset DBUS_SESSION_BUS_ADDRESS
+ Xemake check || die "Test phase failed"
+}
+
+src_install() {
+ gnome2_src_install
+ find "${D}" -name "*.la" -delete || die "remove of la files failed"
+}
+
+pkg_postinst() {
+ gnome2_pkg_postinst
+
+ elog "nautilus can use gstreamer to preview audio files. Just make sure"
+ elog "to have the necessary plugins available to play the media type you"
+ elog "want to preview"
+}