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
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
-rw-r--r--dev-libs/libpeas/Manifest3
-rw-r--r--dev-libs/libpeas/files/libpeas-0.5.1-new-gobject-introspection.patch49
-rw-r--r--dev-libs/libpeas/libpeas-0.5.2.ebuild38
-rw-r--r--dev-libs/libunique/Manifest4
-rw-r--r--dev-libs/libunique/files/libunique-2.90.1-fix-introspection.patch15
-rw-r--r--dev-libs/libunique/files/libunique-2.90.1-parallel-docs-install.patch27
-rw-r--r--dev-libs/libunique/libunique-2.90.1.ebuild64
-rw-r--r--dev-libs/seed/Manifest3
-rw-r--r--dev-libs/seed/files/seed-2.31.5-cleanup-autotools.patch585
-rw-r--r--dev-libs/seed/seed-2.31.5.ebuild74
-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
-rw-r--r--gnome-extra/nautilus-dropbox/Manifest1
-rw-r--r--gnome-extra/nautilus-dropbox/nautilus-dropbox-0.6.2-r3.ebuild55
43 files changed, 3503 insertions, 0 deletions
diff --git a/dev-libs/libpeas/Manifest b/dev-libs/libpeas/Manifest
new file mode 100644
index 0000000..ccbd714
--- /dev/null
+++ b/dev-libs/libpeas/Manifest
@@ -0,0 +1,3 @@
+AUX libpeas-0.5.1-new-gobject-introspection.patch 1638 RMD160 3e3985c5746c3ba52dc2f93b40b63563a643eff8 SHA1 1a3a75c41f8c1113ee51a0b8fe72d4f4d8b3e300 SHA256 c50c39349ebb73777f4dc89274bee90770a4e96f7e554601f03885e7eb3d48a0
+DIST libpeas-0.5.2.tar.bz2 410691 RMD160 6ebb82d65c5d37cf5a18da80b80c78f90b0f92a6 SHA1 3605341978e7aa4df678529f708558d64b720022 SHA256 e5b1357920800abda2243ca78d00433676266f495a3146e07bf61aa998db31dc
+EBUILD libpeas-0.5.2.ebuild 816 RMD160 a7644e2a1c75e4c0c650e4db91ccd1f22868cd3b SHA1 5b4f356f480e088d4d60a9bc4a4b79390e51fc0b SHA256 6847c9c0d72775366b5f569b7f8a386bcf4b18240085213cdf93719715e97890
diff --git a/dev-libs/libpeas/files/libpeas-0.5.1-new-gobject-introspection.patch b/dev-libs/libpeas/files/libpeas-0.5.1-new-gobject-introspection.patch
new file mode 100644
index 0000000..f0a3c63
--- /dev/null
+++ b/dev-libs/libpeas/files/libpeas-0.5.1-new-gobject-introspection.patch
@@ -0,0 +1,49 @@
+--- libpeas-0.5.1.orig/libpeas/peas-introspection.c
++++ libpeas-0.5.1/libpeas/peas-introspection.c
+@@ -65,46 +65,12 @@ read_next_argument (GArgument *cur_arg,
+ case GI_TYPE_TAG_UINT64:
+ cur_arg->v_uint64 = va_arg (args, guint64);
+ break;
+- case GI_TYPE_TAG_SHORT:
+- cur_arg->v_short = va_arg (args, int);
+- break;
+- case GI_TYPE_TAG_USHORT:
+- cur_arg->v_ushort = va_arg (args, int);
+- break;
+- case GI_TYPE_TAG_INT:
+- cur_arg->v_int = va_arg (args, gint);
+- break;
+- case GI_TYPE_TAG_UINT:
+- cur_arg->v_uint = va_arg (args, guint);
+- break;
+- case GI_TYPE_TAG_LONG:
+- cur_arg->v_long = va_arg (args, glong);
+- break;
+- case GI_TYPE_TAG_ULONG:
+- cur_arg->v_ulong = va_arg (args, gulong);
+- break;
+- case GI_TYPE_TAG_SSIZE:
+- cur_arg->v_ssize = va_arg (args, gssize);
+- break;
+- case GI_TYPE_TAG_SIZE:
+- cur_arg->v_size = va_arg (args, gsize);
+- break;
+ case GI_TYPE_TAG_FLOAT:
+ cur_arg->v_float = va_arg (args, gdouble);
+ break;
+ case GI_TYPE_TAG_DOUBLE:
+ cur_arg->v_double = va_arg (args, gdouble);
+ break;
+- case GI_TYPE_TAG_TIME_T:
+- /* borrowed from gfield.c in gobject-introspection */
+-#if SIZEOF_TIME_T == 4
+- cur_arg->v_int32 = va_arg (args, time_t);
+-#elif SIZEOF_TIME_T == 8
+- cur_arg->v_int64 = va_arg (args, time_t);
+-#else
+-# error "Unexpected size for time_t: not 4 or 8"
+-#endif
+- break;
+ case GI_TYPE_TAG_GTYPE:
+ /* apparently, GType is meant to be a gsize, from gobject/gtype.h in glib */
+ cur_arg->v_size = va_arg (args, GType);
diff --git a/dev-libs/libpeas/libpeas-0.5.2.ebuild b/dev-libs/libpeas/libpeas-0.5.2.ebuild
new file mode 100644
index 0000000..78b065a
--- /dev/null
+++ b/dev-libs/libpeas/libpeas-0.5.2.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=3
+
+PYTHON_DEPEND="python? 2:2.5"
+inherit python gnome2
+
+DESCRIPTION="A GObject plugins library"
+HOMEPAGE="http://www.gnome.org/"
+
+LICENSE="LGPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+IUSE="gtk python"
+
+RDEPEND=">=dev-libs/glib-2.23.6:2
+ >=dev-libs/gobject-introspection-0.9.0
+ gtk? ( >=x11-libs/gtk+-2.90:3[introspection] )
+ python? ( >=dev-python/pygobject-2.20 )"
+DEPEND="${RDEPEND}
+ >=dev-util/intltool-0.40
+ sys-devel/gettext
+ >=sys-devel/libtool-2.2.6
+ doc? ( >=dev-util/gtk-doc-1.11 )"
+
+DOCS="AUTHORS ChangeLog NEWS README"
+
+pkg_setup() {
+ G2CONF="${G2CONF}
+ $(use_enable gtk libpeasui)
+ $(use_enable python)
+ --disable-maintainer-mode
+ --disable-gtk2-test-build
+ --disable-seed"
+}
diff --git a/dev-libs/libunique/Manifest b/dev-libs/libunique/Manifest
new file mode 100644
index 0000000..3700a08
--- /dev/null
+++ b/dev-libs/libunique/Manifest
@@ -0,0 +1,4 @@
+AUX libunique-2.90.1-fix-introspection.patch 474 RMD160 ff76152aaa81877e3c8f1f542abb445963bb60a0 SHA1 2968a4c4c64422803b286861a11ef4209183b4b7 SHA256 823fe4cb6358e04259c6882d76520c15c0c5eee55c1c7fda0197043effc5c7e3
+AUX libunique-2.90.1-parallel-docs-install.patch 707 RMD160 10d3967819bddd113bb79f2dc6f840c866841bea SHA1 8688e2b38adeec31fea348a96c9bdf2f72781555 SHA256 54b3d954955d29ae6762ba7cccf202241629e6f6d83e324faabc161ac963c91a
+DIST libunique-2.90.1.tar.bz2 344813 RMD160 5b099a40b0380f52da36970bce62518c0192952d SHA1 32ab9849994da70f461fc78c59a2b930d294f8c7 SHA256 94c46006557b9f981b801f90c1ce324dcd5385aa6ded5058cb06f39e32119993
+EBUILD libunique-2.90.1.ebuild 1742 RMD160 868280c1be0d81047976b6d9b51f9aba68acd6c9 SHA1 7278d2e0d175cb626476e90da3084f9eb1214438 SHA256 f336a20d374d9cf5b1b08f34847df7713f14c2cb7e3ce6b9671e8adb06301717
diff --git a/dev-libs/libunique/files/libunique-2.90.1-fix-introspection.patch b/dev-libs/libunique/files/libunique-2.90.1-fix-introspection.patch
new file mode 100644
index 0000000..c31c13f
--- /dev/null
+++ b/dev-libs/libunique/files/libunique-2.90.1-fix-introspection.patch
@@ -0,0 +1,15 @@
+From upstream bug #623482
+
+diff --git a/unique/Makefile.am b/unique/Makefile.am
+index 9a2c17b..6cc1265 100644
+--- a/unique/Makefile.am
++++ b/unique/Makefile.am
+@@ -120,7 +120,7 @@ Unique-3.0.gir: $(INTROSPECTION_SCANNER) libunique-3.0.la
+ $(INCLUDES) $(AM_CPPFLAGS) \
+ --c-include='unique/unique.h' \
+ --include=GObject-2.0 \
+- --include=Gtk-2.0 \
++ --include=Gtk-3.0 \
+ --library=libunique-3.0.la \
+ --libtool="$(top_builddir)/libtool" \
+ --pkg gobject-2.0 \
diff --git a/dev-libs/libunique/files/libunique-2.90.1-parallel-docs-install.patch b/dev-libs/libunique/files/libunique-2.90.1-parallel-docs-install.patch
new file mode 100644
index 0000000..575df33
--- /dev/null
+++ b/dev-libs/libunique/files/libunique-2.90.1-parallel-docs-install.patch
@@ -0,0 +1,27 @@
+Upstream bug #623454
+
+From d6363f5bb5aeb58c19fc12ef5b4049a184115950 Mon Sep 17 00:00:00 2001
+From: Maciej Piechotka <uzytkownik2@gmail.com>
+Date: Sat, 3 Jul 2010 12:16:32 +0200
+Subject: [PATCH] Add correct version of module
+
+---
+ doc/reference/Makefile.am | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/doc/reference/Makefile.am b/doc/reference/Makefile.am
+index eb45dfe..a9d3975 100644
+--- a/doc/reference/Makefile.am
++++ b/doc/reference/Makefile.am
+@@ -8,6 +8,8 @@
+ # The name of the module, e.g. 'glib'.
+ DOC_MODULE = unique
+
++DOC_MODULE_VERSION=3.0
++
+ # The top-level SGML file. You can change this if you want to.
+ DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.xml
+
+--
+1.7.1.1
+
diff --git a/dev-libs/libunique/libunique-2.90.1.ebuild b/dev-libs/libunique/libunique-2.90.1.ebuild
new file mode 100644
index 0000000..109f306
--- /dev/null
+++ b/dev-libs/libunique/libunique-2.90.1.ebuild
@@ -0,0 +1,64 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-libs/libunique/libunique-1.1.6.ebuild,v 1.5 2010/06/20 11:27:08 nirbheek Exp $
+
+EAPI="2"
+WANT_AUTOMAKE="1.11"
+
+inherit gnome2 virtualx autotools
+
+DESCRIPTION="a library for writing single instance application"
+HOMEPAGE="http://live.gnome.org/LibUnique"
+
+LICENSE="LGPL-2.1"
+SLOT="3"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~ia64-linux ~x86-linux ~x86-solaris"
+IUSE="dbus doc +introspection"
+
+# maybe disable dbus-glib completely and just use gdbus? (the default)
+RDEPEND=">=dev-libs/glib-2.25.7
+ >=x11-libs/gtk+-2.90.0:3[introspection?]
+ x11-libs/libX11
+ dbus? ( >=dev-libs/dbus-glib-0.70 )"
+DEPEND="${RDEPEND}
+ sys-devel/gettext
+ >=dev-util/pkgconfig-0.17
+ dev-util/gtk-doc-am
+ doc? ( >=dev-util/gtk-doc-1.6 )
+ introspection? ( >=dev-libs/gobject-introspection-0.6.3 )"
+
+DOCS="AUTHORS NEWS ChangeLog README TODO"
+
+src_prepare() {
+ gnome2_src_prepare
+
+ # Put docs in a versioned directory, from upstream bug #623454
+ epatch "${FILESDIR}"/${P}-parallel-docs-install.patch
+
+ # Use introspection from Gtk-3.0, not -2.0
+ epatch "${FILESDIR}"/${P}-fix-introspection.patch
+
+ eautoreconf
+}
+
+src_test() {
+ cd "${S}/tests"
+
+ # Fix environment variable leakage (due to `su` etc)
+ unset DBUS_SESSION_BUS_ADDRESS
+
+ # Force Xemake to use Xvfb, bug 279840
+ unset XAUTHORITY
+ unset DISPLAY
+
+ cp "${FILESDIR}/run-tests" . || die "Unable to cp \${FILESDIR}/run-tests"
+ Xemake -f run-tests || die "Tests failed"
+}
+
+pkg_setup() {
+ G2CONF="${G2CONF}
+ --disable-static
+ --disable-maintainer-flags
+ $(use_enable introspection)
+ $(use_enable dbus)"
+}
diff --git a/dev-libs/seed/Manifest b/dev-libs/seed/Manifest
new file mode 100644
index 0000000..6c1036a
--- /dev/null
+++ b/dev-libs/seed/Manifest
@@ -0,0 +1,3 @@
+AUX seed-2.31.5-cleanup-autotools.patch 15993 RMD160 e0ff91fd77a81c5fe75468254db3070d32cab4b7 SHA1 be7911e48cf7e8827c98576c87742b6fabdb78ed SHA256 a986cb387379533efa8031c2afc92d051af8b0cf14e1a92a7212a53e1c718b9f
+DIST seed-2.31.5.tar.bz2 761099 RMD160 13e6229c0deac3dd54289e59144184b598ed5c94 SHA1 97fd7f63a9fe90472be3c58aa540fbaa48cab614 SHA256 cd73d1bff503be5d341033a1a67ebd4029848ee6297789f1d40eca2ede77654d
+EBUILD seed-2.31.5.ebuild 1933 RMD160 ebfaa90fd9bb01a009ef13d939c735ece054b0bd SHA1 41bd94309dd78d92c32e5cf49b8bd8b29967c76c SHA256 4f99d69aaaf26b0e741f18ac6ff5b42a54ce34537b69d41305a9ff108559355d
diff --git a/dev-libs/seed/files/seed-2.31.5-cleanup-autotools.patch b/dev-libs/seed/files/seed-2.31.5-cleanup-autotools.patch
new file mode 100644
index 0000000..41e9d83
--- /dev/null
+++ b/dev-libs/seed/files/seed-2.31.5-cleanup-autotools.patch
@@ -0,0 +1,585 @@
+From 4f52b1ef263df971f677f4ad88f9766c26a15a89 Mon Sep 17 00:00:00 2001
+From: Jonathan Callen <abcd@gentoo.org>
+Date: Fri, 16 Jul 2010 04:41:52 -0400
+Subject: [PATCH] Cleanup autotools
+
+---
+ Makefile.am | 2 --
+ configure.ac | 30 +++++++++++++++---------------
+ extensions/Makefile.am | 7 ++++---
+ libseed/Makefile.am | 6 ++++--
+ modules/cairo/Makefile.am | 27 ++++++++++++++-------------
+ modules/canvas/Makefile.am | 8 +++++---
+ modules/dbus/Makefile.am | 24 +++++++++++-------------
+ modules/example/Makefile.am | 6 ++++--
+ modules/ffi/Makefile.am | 8 +++++---
+ modules/gettext/Makefile.am | 6 ++++--
+ modules/gtkbuilder/Makefile.am | 8 +++++---
+ modules/libxml/Makefile.am | 12 ++++++------
+ modules/mpfr/Makefile.am | 11 +++++------
+ modules/multiprocessing/Makefile.am | 6 ++++--
+ modules/os/Makefile.am | 7 ++++---
+ modules/readline/Makefile.am | 8 +++++---
+ modules/sandbox/Makefile.am | 6 ++++--
+ modules/sqlite/Makefile.am | 9 +++++----
+ src/Makefile.am | 8 ++++----
+ tests/c/Makefile.am | 6 ++----
+ 20 files changed, 110 insertions(+), 95 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 5bfb716..2183798 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,7 +1,5 @@
+ ## Process this file with automake to produce Makefile.in
+
+-ACLOCAL_AMFLAGS = -I m4
+-
+ SUBDIRS = po \
+ libseed \
+ src \
+diff --git a/configure.ac b/configure.ac
+index 3bbcccd..fa751a2 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -54,9 +54,9 @@ if test x"$have_ffi_pkgconfig" = xno ; then
+
+ AC_SEARCH_LIBS(ffi_call,ffi,,AC_MSG_ERROR([libffi not found]),$other_LIBS)
+ if test x"$ac_cv_search_ffi_call" = x"none required" ; then
+- FFI_LDFLAGS=$other_LIBS
++ FFI_LIBS=$other_LIBS
+ else
+- FFI_LDFLAGS="$ac_cv_search_ffi_call $other_LIBS"
++ FFI_LIBS="$ac_cv_search_ffi_call $other_LIBS"
+ fi
+ LIBS=$save_LIBS
+ fi
+@@ -69,18 +69,18 @@ if test x"$have_ffi_pkgconfig" = xno ; then
+ AC_MSG_RESULT([$have_ffi_h])
+ fi
+
+-AC_SUBST(FFI_LDFLAGS)
++AC_SUBST(FFI_LIBS)
+ AC_SUBST(FFI_CFLAGS)
+
+ dnl ==============================WebKit=======================================
+ PKG_CHECK_MODULES(WEBKIT, webkitgtk-3.0)
+ AC_SUBST(WEBKIT_CFLAGS)
+-AC_SUBST(WEBKIT_LDFLAGS)
++AC_SUBST(WEBKIT_LIBS)
+
+ dnl =========================Introspection=====================================
+ PKG_CHECK_MODULES(GOBJECT_INTROSPECTION, gobject-introspection-1.0 >= 0.6.14)
+ AC_SUBST(GOBJECT_INTROSPECTION_CFLAGS)
+-AC_SUBST(GOBJECT_INTROSPECTION_LDFLAGS)
++AC_SUBST(GOBJECT_INTROSPECTION_LIBS)
+
+ dnl ========================GNOME-js common====================================
+ PKG_CHECK_MODULES(GNOME_JS, gnome-js-common)
+@@ -97,10 +97,10 @@ AC_ARG_ENABLE(canvas-module,
+ if test x"$want_canvas_module" == x"yes" ; then
+ PKG_CHECK_MODULES(CAIRO, cairo)
+ AC_SUBST(CAIRO_CFLAGS)
+- AC_SUBST(CAIRO_LDFLAGS)
++ AC_SUBST(CAIRO_LIBS)
+ PKG_CHECK_MODULES(GDK, gdk-2.0)
+ AC_SUBST(GDK_CFLAGS)
+- AC_SUBST(GDK_LDFLAGS)
++ AC_SUBST(GDK_LIBS)
+ fi
+
+ AM_CONDITIONAL(BUILD_CANVAS_MODULE, test "x$want_canvas_module" = "xyes")
+@@ -137,7 +137,7 @@ AC_ARG_ENABLE(sqlite-module,
+ if test x"$want_sqlite_module" == x"yes" ; then
+ PKG_CHECK_MODULES(SQLITE, sqlite3)
+ AC_SUBST(SQLITE_CFLAGS)
+- AC_SUBST(SQLITE_LDFLAGS)
++ AC_SUBST(SQLITE_LIBS)
+ fi
+
+ AM_CONDITIONAL(BUILD_SQLITE_MODULE, test "x$want_sqlite_module" = "xyes")
+@@ -165,10 +165,10 @@ AC_SUBST(BUILD_DBUS_MODULE)
+ if test x"$want_dbus_module" == x"yes" ; then
+ PKG_CHECK_MODULES(DBUS, dbus-1)
+ AC_SUBST(DBUS_CFLAGS)
+- AC_SUBST(DBUS_LDFLAGS)
++ AC_SUBST(DBUS_LIBS)
+ PKG_CHECK_MODULES(DBUSGLIB, dbus-glib-1)
+ AC_SUBST(DBUSGLIB_CFLAGS)
+- AC_SUBST(DBUSGLIB_LDFLAGS)
++ AC_SUBST(DBUSGLIB_LIBS)
+ fi
+
+
+@@ -202,7 +202,7 @@ AC_ARG_ENABLE(libxml-module,
+ if test x"$want_libxml_module" == x"yes" ; then
+ PKG_CHECK_MODULES(LIBXML, libxml-2.0)
+ AC_SUBST(LIBXML_CFLAGS)
+- AC_SUBST(LIBXML_LDFLAGS)
++ AC_SUBST(LIBXML_LIBS)
+ fi
+
+ AM_CONDITIONAL(BUILD_LIBXML_MODULE, test "x$want_libxml_module" = "xyes")
+@@ -227,7 +227,7 @@ AC_ARG_ENABLE(gtkbuilder-module,
+ if test x"$want_gtkbuilder_module" == x"yes" ; then
+ PKG_CHECK_MODULES(GTK, gtk+-2.0)
+ AC_SUBST(GTK_CFLAGS)
+- AC_SUBST(GTK_LDFLAGS)
++ AC_SUBST(GTK_LIBS)
+ fi
+
+ AM_CONDITIONAL(BUILD_GTKBUILDER_MODULE, test "x$want_gtkbuilder_module" = "xyes")
+@@ -243,7 +243,7 @@ AC_ARG_ENABLE(cairo-module,
+ if test x"$want_cairo_module" == x"yes" ; then
+ PKG_CHECK_MODULES(CAIRO, cairo)
+ AC_SUBST(CAIRO_CFLAGS)
+- AC_SUBST(CAIRO_LDFLAGS)
++ AC_SUBST(CAIRO_LIBS)
+ fi
+
+ AM_CONDITIONAL(BUILD_CAIRO_MODULE, test "x$want_cairo_module" = "xyes")
+@@ -277,9 +277,9 @@ if test x"$want_mpfr_module" == x"yes" ; then
+
+ AC_SEARCH_LIBS(mpfr_init2,mpfr,,AC_MSG_ERROR([mpfr not found]),$other_LIBS)
+ if test x"$ac_cv_search_mpfr_call" = x"none required" ; then
+- MPFR_LDFLAGS=$other_LIBS
++ MPFR_LIBS=$other_LIBS
+ else
+- MPFR_LDFLAGS="$other_LIBS"
++ MPFR_LIBS="$other_LIBS"
+ fi
+ LIBS=$save_LIBS
+ fi
+diff --git a/extensions/Makefile.am b/extensions/Makefile.am
+index 6f30f2e..fd5dff0 100644
+--- a/extensions/Makefile.am
++++ b/extensions/Makefile.am
+@@ -1,10 +1,11 @@
+-EXTRA_DIST= Gio.js Seed.js.in Gtk.js GObject.js Clutter.js Gst.js repl.js
++EXTRA_DIST= Seed.js.in
+
+ extensiondir=$(datadir)/seed/extensions
+-extension_DATA = Gio.js Seed.js Gtk.js GObject.js Clutter.js Gst.js
++extension_DATA = Seed.js
++dist_extension_DATA = Gio.js Gtk.js GObject.js Clutter.js Gst.js
+
+ repldir=$(datadir)/seed
+-repl_DATA = repl.js
++dist_repl_DATA = repl.js
+
+ Seed.js: Seed.js.in
+ $(AM_V_GEN) $(SED) -e "s|%pkglibdir%|$(pkglibdir)|" -e "s|%pkgdatadir%|$(pkgdatadir)|" -e "s|%gnomejsdir%|$(GNOME_JS_DIR)|" $< > $@
+diff --git a/libseed/Makefile.am b/libseed/Makefile.am
+index 909aa2a..04e263d 100644
+--- a/libseed/Makefile.am
++++ b/libseed/Makefile.am
+@@ -35,12 +35,14 @@ libseed_la_CFLAGS = \
+ $(FFI_CFLAGS)
+
+ libseed_la_LDFLAGS = \
+- -no-undefined \
++ -no-undefined
++
++libseed_la_LIBADD = \
+ $(GOBJECT_INTROSPECTION_LIBS) \
+ $(WEBKIT_LIBS) \
+ $(SEED_PROFILE_LIBS) \
+ $(SEED_OSX_LIBS) \
+- $(FFI_LDFLAGS)
++ $(FFI_LIBS)
+
+ seedheaders_HEADERS = seed.h seed-debug.h seed-module.h
+
+diff --git a/modules/cairo/Makefile.am b/modules/cairo/Makefile.am
+index 139601a..3ea87d5 100644
+--- a/modules/cairo/Makefile.am
++++ b/modules/cairo/Makefile.am
+@@ -1,13 +1,5 @@
+ if BUILD_CAIRO_MODULE
+
+-EXTRA_DIST = seed-cairo-enums.h \
+- seed-cairo.h \
+- seed-cairo-image-surface.h \
+- seed-cairo-matrix.h \
+- seed-cairo-pattern.h \
+- seed-cairo-pdf-surface.h \
+- seed-cairo-surface.h
+-
+ seedlibdir = ${libdir}/seed
+
+ seedlib_LTLIBRARIES = \
+@@ -15,12 +7,19 @@ seedlib_LTLIBRARIES = \
+
+ libseed_cairo_la_SOURCES = \
+ seed-cairo.c \
++ seed-cairo.h \
+ seed-cairo-surface.c \
++ seed-cairo-surface.h \
+ seed-cairo-image-surface.c \
++ seed-cairo-image-surface.h \
+ seed-cairo-pdf-surface.c \
++ seed-cairo-pdf-surface.h \
+ seed-cairo-matrix.c \
++ seed-cairo-matrix.h \
+ seed-cairo-pattern.c \
+- seed-cairo-enums.c
++ seed-cairo-pattern.h
++ seed-cairo-enums.c \
++ seed-cairo-enums.h
+
+ libseed_cairo_la_CFLAGS = \
+ -Wall \
+@@ -32,10 +31,12 @@ libseed_cairo_la_CFLAGS = \
+ $(SEED_PROFILE_CFLAGS)
+
+ libseed_cairo_la_LDFLAGS = \
+- -module -avoid-version \
+- $(GOBJECT_INTROSPECTION_LDFLAGS) \
+- $(GDK_LDFLAGS) \
+- $(CAIRO_LDFLAGS) \
++ -shared -module -avoid-version
++
++libseed_cairo_la_LIBADD = \
++ $(GOBJECT_INTROSPECTION_LIBS) \
++ $(GDK_LIBS) \
++ $(CAIRO_LIBS) \
+ $(SEED_PROFILE_LIBS)
+
+ endif
+diff --git a/modules/canvas/Makefile.am b/modules/canvas/Makefile.am
+index 11a3929..4b28259 100644
+--- a/modules/canvas/Makefile.am
++++ b/modules/canvas/Makefile.am
+@@ -17,9 +17,11 @@ libseed_canvas_la_CFLAGS = \
+ $(SEED_PROFILE_CFLAGS)
+
+ libseed_canvas_la_LDFLAGS = \
+- -module -avoid-version \
+- $(GOBJECT_INTROSPECTION_LDFLAGS) \
+- $(CAIRO_LDFLAGS) \
++ -shared -module -avoid-version
++
++libseed_canvas_la_LIBADD = \
++ $(GOBJECT_INTROSPECTION_LIBS) \
++ $(CAIRO_LIBS) \
+ $(SEED_PROFILE_LIBS)
+
+ endif
+diff --git a/modules/dbus/Makefile.am b/modules/dbus/Makefile.am
+index 9f7fdb3..625e99b 100644
+--- a/modules/dbus/Makefile.am
++++ b/modules/dbus/Makefile.am
+@@ -2,14 +2,10 @@ if BUILD_DBUS_MODULE
+
+ SUBDIRS = util
+
+-EXTRA_DIST = dbus2js.py \
+- dbus.js \
+- dbus-values.h \
+- lang.js \
+- dbus-exports.h
++EXTRA_DIST = dbus2js.py
+
+ moduledir = $(datadir)/seed
+-module_DATA = dbus.js lang.js
++dist_module_DATA = dbus.js lang.js
+
+ seedlibdir = ${libdir}/seed
+
+@@ -22,7 +18,9 @@ libseed_dbusnative_la_SOURCES = \
+ util/dbus-proxy.c \
+ util/dbus-signals.c \
+ dbus-values.c \
+- dbus-exports.c
++ dbus-values.h \
++ dbus-exports.c \
++ dbus-exports.h
+
+
+ libseed_dbusnative_la_CFLAGS = \
+@@ -35,12 +33,12 @@ libseed_dbusnative_la_CFLAGS = \
+
+
+ libseed_dbusnative_la_LDFLAGS = \
+- -module -avoid-version \
+- $(GOBJECT_INTROSPECTION_LDFLAGS) \
+- -L/lib \
+- -ldbus-1 \
+- $(DBUS_LDFLAGS) \
+- -ldbus-glib-1 \
++ -shared -module -avoid-version
++
++libseed_dbusnative_la_LIBADD = \
++ $(GOBJECT_INTROSPECTION_LIBS) \
++ $(DBUS_LIBS) \
++ $(DBUS_GLIB_LIBS) \
+ $(SEED_PROFILE_LIBS)
+
+
+diff --git a/modules/example/Makefile.am b/modules/example/Makefile.am
+index d58f8ec..2524e32 100644
+--- a/modules/example/Makefile.am
++++ b/modules/example/Makefile.am
+@@ -15,8 +15,10 @@ AM_CPPFLAGS = \
+ $(SEED_PROFILE_CFLAGS)
+
+ libseed_example_la_LDFLAGS = \
+- -module -avoid-version \
+- $(GOBJECT_INTROSPECTION_LDFLAGS) \
++ -shared -module -avoid-version
++
++libseed_example_la_LIBADD = \
++ $(GOBJECT_INTROSPECTION_LIBS) \
+ $(SEED_PROFILE_LIBS)
+
+ endif
+diff --git a/modules/ffi/Makefile.am b/modules/ffi/Makefile.am
+index d7e879d..270fb12 100644
+--- a/modules/ffi/Makefile.am
++++ b/modules/ffi/Makefile.am
+@@ -23,10 +23,12 @@ libseed_ffi_la_CFLAGS = \
+ $(FFI_CFLAGS)
+
+ libseed_ffi_la_LDFLAGS = \
+- -module -avoid-version \
+- $(GOBJECT_INTROSPECTION_LDFLAGS) \
++ -shared -module -avoid-version
++
++libseed_ffi_la_LIBADD = \
++ $(GOBJECT_INTROSPECTION_LIBS) \
+ $(SEED_PROFILE_LIBS) \
+- $(FFI_LDFLAGS)
++ $(FFI_LIBS)
+
+ endif
+
+diff --git a/modules/gettext/Makefile.am b/modules/gettext/Makefile.am
+index a182f4f..4c246d8 100644
+--- a/modules/gettext/Makefile.am
++++ b/modules/gettext/Makefile.am
+@@ -15,8 +15,10 @@ AM_CPPFLAGS = \
+ $(SEED_PROFILE_CFLAGS)
+
+ libseed_gettext_la_LDFLAGS = \
+- -module -avoid-version \
+- $(GOBJECT_INTROSPECTION_LDFLAGS) \
++ -shared -module -avoid-version
++
++libseed_gettext_la_LIBADD = \
++ $(GOBJECT_INTROSPECTION_LIBS) \
+ $(SEED_PROFILE_LIBS)
+
+ endif
+diff --git a/modules/gtkbuilder/Makefile.am b/modules/gtkbuilder/Makefile.am
+index 972efdc..3998be4 100644
+--- a/modules/gtkbuilder/Makefile.am
++++ b/modules/gtkbuilder/Makefile.am
+@@ -17,9 +17,11 @@ AM_CPPFLAGS = \
+ $(SEED_PROFILE_CFLAGS)
+
+ libseed_gtkbuilder_la_LDFLAGS = \
+- -module -avoid-version \
+- $(GTK_LDFLAGS) \
+- $(GOBJECT_INTROSPECTION_LDFLAGS) \
++ -shared -module -avoid-version
++
++libseed_gtkbuilder_la_LIBADD = \
++ $(GTK_LIBS) \
++ $(GOBJECT_INTROSPECTION_LIBS) \
+ $(SEED_PROFILE_LIBS)
+
+ endif
+diff --git a/modules/libxml/Makefile.am b/modules/libxml/Makefile.am
+index a1dba7b..cb0e96d 100644
+--- a/modules/libxml/Makefile.am
++++ b/modules/libxml/Makefile.am
+@@ -1,7 +1,5 @@
+ if BUILD_LIBXML_MODULE
+
+-EXTRA_DIST = xml.js
+-
+ seedlibdir = ${libdir}/seed
+
+ seedlib_LTLIBRARIES = \
+@@ -18,13 +16,15 @@ AM_CPPFLAGS = \
+ $(SEED_PROFILE_CFLAGS)
+
+ libseed_libxml_la_LDFLAGS = \
+- -module -avoid-version \
+- $(LIBXML_LDFLAGS) \
+- $(GOBJECT_INTROSPECTION_LDFLAGS) \
++ -shared -module -avoid-version
++
++libseed_libxml_la_LIBADD = \
++ $(LIBXML_LIBS) \
++ $(GOBJECT_INTROSPECTION_LIBS) \
+ $(SEED_PROFILE_LIBS)
+
+ extensionsdir=$(datadir)/seed/extensions
+-extensions_DATA=xml.js
++dist_extensions_DATA=xml.js
+
+ endif
+
+diff --git a/modules/mpfr/Makefile.am b/modules/mpfr/Makefile.am
+index d0497ec..06a6c00 100644
+--- a/modules/mpfr/Makefile.am
++++ b/modules/mpfr/Makefile.am
+@@ -7,6 +7,7 @@ seedlib_LTLIBRARIES = \
+
+ libseed_mpfr_la_SOURCES = \
+ seed-mpfr.c \
++ seed-mpfr.h \
+ seed-mpfr-trig.c \
+ seed-mpfr-arithmetic.c \
+ seed-mpfr-cmp.c
+@@ -18,13 +19,11 @@ AM_CPPFLAGS = \
+ $(SEED_PROFILE_CFLAGS)
+
+ libseed_mpfr_la_LDFLAGS = \
+- -module -avoid-version \
+- $(GOBJECT_INTROSPECTION_LDFLAGS) \
+- $(SEED_PROFILE_LIBS)
+-
+-libseed_mpfr_la_LIBADD = -lmpfr -lgmp
++ -shared -module -avoid-version
+
+-EXTRA_DIST = seed-mpfr.h
++libseed_mpfr_la_LIBADD = -lmpfr -lgmp \
++ $(GOBJECT_INTROSPECTION_LIBS) \
++ $(SEED_PROFILE_LIBS)
+
+ endif
+
+diff --git a/modules/multiprocessing/Makefile.am b/modules/multiprocessing/Makefile.am
+index 1e39007..cb151f9 100644
+--- a/modules/multiprocessing/Makefile.am
++++ b/modules/multiprocessing/Makefile.am
+@@ -17,8 +17,10 @@ libseed_multiprocessing_la_CFLAGS = \
+ $(SEED_PROFILE_CFLAGS)
+
+ libseed_multiprocessing_la_LDFLAGS = \
+- -module -avoid-version \
+- $(GOBJECT_INTROSPECTION_LDFLAGS) \
++ -shared -module -avoid-version
++
++libseed_multiprocessing_la_LIBADD = \
++ $(GOBJECT_INTROSPECTION_LIBS) \
+ $(SEED_PROFILE_LIBS)
+
+ endif
+diff --git a/modules/os/Makefile.am b/modules/os/Makefile.am
+index 0781937..b4bdaf4 100644
+--- a/modules/os/Makefile.am
++++ b/modules/os/Makefile.am
+@@ -15,10 +15,11 @@ libseed_os_la_CFLAGS = \
+ $(SEED_PROFILE_CFLAGS)
+
+ libseed_os_la_LDFLAGS = \
+- -module -avoid-version \
+- $(GOBJECT_INTROSPECTION_LDFLAGS) \
++ -shared -module -avoid-version
++
++libseed_os_la_LIBADD = \
++ $(GOBJECT_INTROSPECTION_LIBS) \
+ -lutil \
+- $(SEED_DEBUG_LDFLAGS) \
+ $(SEED_PROFILE_LIBS)
+
+ endif
+diff --git a/modules/readline/Makefile.am b/modules/readline/Makefile.am
+index 8eff4e8..94965ca 100644
+--- a/modules/readline/Makefile.am
++++ b/modules/readline/Makefile.am
+@@ -16,10 +16,12 @@ libseed_readline_la_CFLAGS = \
+ $(SEED_PROFILE_CFLAGS)
+
+ libseed_readline_la_LDFLAGS = \
+- -module -avoid-version \
++ -shared -module -avoid-version
++
++libseed_readline_la_LIBADD = \
+ -lreadline \
+- $(GOBJECT_INTROSPECTION_LDFLAGS) \
+- $(FFI_LDFLAGS) \
++ $(GOBJECT_INTROSPECTION_LIBS) \
++ $(FFI_LIBS) \
+ $(SEED_PROFILE_LIBS)
+
+ endif
+diff --git a/modules/sandbox/Makefile.am b/modules/sandbox/Makefile.am
+index 8a53221..f79149c 100644
+--- a/modules/sandbox/Makefile.am
++++ b/modules/sandbox/Makefile.am
+@@ -14,8 +14,10 @@ AM_CPPFLAGS = \
+ $(SEED_PROFILE_CFLAGS)
+
+ libseed_sandbox_la_LDFLAGS = \
+- -module -avoid-version \
+- $(GOBJECT_INTROSPECTION_LDFLAGS) \
++ -shared -module -avoid-version
++
++libseed_sandbox_la_LIBADD = \
++ $(GOBJECT_INTROSPECTION_LIBS) \
+ $(SEED_PROFILE_LIBS)
+
+
+diff --git a/modules/sqlite/Makefile.am b/modules/sqlite/Makefile.am
+index deedaba..15fedf4 100644
+--- a/modules/sqlite/Makefile.am
++++ b/modules/sqlite/Makefile.am
+@@ -17,10 +17,11 @@ libseed_sqlite_la_CFLAGS = \
+ $(SEED_PROFILE_CFLAGS)
+
+ libseed_sqlite_la_LDFLAGS = \
+- -module -avoid-version \
+- $(GOBJECT_INTROSPECTION_LDFLAGS) \
+- $(SQLITE_LDFLAGS) \
+- $(SEED_DEBUG_LDFLAGS) \
++ -shared -module -avoid-version
++
++libseed_sqlite_la_LIBS = \
++ $(GOBJECT_INTROSPECTION_LIBS) \
++ $(SQLITE_LIBS) \
+ $(SEED_PROFILE_LIBS)
+
+ endif
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 04ee4c8..82c2efc 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -16,11 +16,11 @@ seed_CFLAGS = \
+ $(GOBJECT_INTROSPECTION_CFLAGS) \
+ $(WEBKIT_CFLAGS)
+
+-seed_LDFLAGS = \
++seed_LDADD = \
+ $(SEED_PROFILE_LIBS) \
+- $(LIBFFI_LDFLAGS) \
+- $(GOBJECT_INTROSPECTION_LDFLAGS) \
+- $(WEBKIT_LDFLAGS)
++ $(LIBFFI_LIBS) \
++ $(GOBJECT_INTROSPECTION_LIBS) \
++ $(WEBKIT_LIBS)
+
+ seed_LDADD = \
+ ../libseed/libseed.la
+diff --git a/tests/c/Makefile.am b/tests/c/Makefile.am
+index cb72d00..48b1bc2 100644
+--- a/tests/c/Makefile.am
++++ b/tests/c/Makefile.am
+@@ -16,9 +16,7 @@ test_CFLAGS = \
+ -Wall \
+ $(GOBJECT_INTROSPECTION_CFLAGS)
+
+-test_LDFLAGS = \
+- $(GOBJECT_INTROSPECTION_LIBS)
+-
+ test_LDADD = \
+- ../../libseed/libseed.la
++ ../../libseed/libseed.la \
++ $(GOBJECT_INTROSPECTION_LIBS)
+
+--
+1.7.1.1
+
diff --git a/dev-libs/seed/seed-2.31.5.ebuild b/dev-libs/seed/seed-2.31.5.ebuild
new file mode 100644
index 0000000..8cad2a2
--- /dev/null
+++ b/dev-libs/seed/seed-2.31.5.ebuild
@@ -0,0 +1,74 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-libs/seed/seed-2.30.0.ebuild,v 1.1 2010/06/29 08:27:36 nirbheek Exp $
+
+EAPI="2"
+WANT_AUTOMAKE="1.11"
+inherit autotools gnome2
+
+DESCRIPTION="Javascript bindings for Webkit-GTK and GNOME libraries"
+HOMEPAGE="http://live.gnome.org/Seed"
+
+LICENSE="LGPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="+dbus debug doc mpfr profile +sqlite test +xml"
+
+RDEPEND="
+ >=dev-libs/gobject-introspection-0.9
+
+ dev-libs/glib
+ virtual/libffi
+ x11-libs/cairo
+ x11-libs/gtk+:2[introspection]
+ net-libs/webkit-gtk:3.0
+ gnome-base/gnome-js-common
+
+ dbus? (
+ sys-apps/dbus
+ dev-libs/dbus-glib )
+ mpfr? ( dev-libs/mpfr )
+ profile? ( sys-devel/gcc )
+ sqlite? ( dev-db/sqlite:3 )
+ xml? ( dev-libs/libxml2:2 )"
+DEPEND="${RDEPEND}
+ sys-devel/gettext
+ >=dev-util/pkgconfig-0.9
+ >=dev-util/intltool-0.35
+ doc? ( >=dev-util/gtk-doc-0.9 )"
+
+DOCS="AUTHORS ChangeLog NEWS README"
+# FIXME: tests need all the feature-USE-flags enabled to complete successfully
+RESTRICT="test"
+
+pkg_setup() {
+ G2CONF="${G2CONF}
+ $(use_enable dbus dbus-module)
+ $(use_enable mpfr mpfr-module)
+ $(use_enable sqlite sqlite-module)
+ $(use_enable xml libxml-module)"
+
+ # configure behaves very strangely and enables profiling if we pass either
+ # --disable-profile or --enable-profile
+ if use profile; then
+ G2CONF="${G2CONF}
+ --enable-profile
+ --enable-profile-modules"
+ if ! use debug; then
+ elog "USE=profile needs debug, auto-enabling..."
+ G2CONF="${G2CONF} --enable-debug"
+ fi
+ fi
+
+ if use profile && has ccache ${FEATURES}; then
+ ewarn "USE=profile behaves very badly with ccache; it tries to create"
+ ewarn "profiling data in CCACHE_DIR. Please disable one of them!"
+ fi
+}
+
+src_prepare() {
+ epatch "${FILESDIR}"/${P}-cleanup-autotools.patch
+
+ intltoolize --automake --copy --force || die "intltoolize failed"
+ eautoreconf
+}
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"
+}
diff --git a/gnome-extra/nautilus-dropbox/Manifest b/gnome-extra/nautilus-dropbox/Manifest
index e0bbeb2..36469bd 100644
--- a/gnome-extra/nautilus-dropbox/Manifest
+++ b/gnome-extra/nautilus-dropbox/Manifest
@@ -3,4 +3,5 @@ DIST dropbox-lnx.x86_64-0.7.110.tar.gz 13913378 RMD160 98abbdcf31bc34bce0d045d48
DIST nautilus-dropbox-0.6.2.tar.bz2 320684 RMD160 fc1744d0c53de9a0d96633e82acab61e9f1b35e4 SHA1 335f81f847c3fb4261ae40bed360e27cfc541ec2 SHA256 8d0f47f9e33a4d35132b9e618d692cf9f950d91f79f12b6f0f88d6a38d921f2d
EBUILD nautilus-dropbox-0.6.2-r1.ebuild 1221 RMD160 018c8537839c6e462781985661fcf800a71c4e58 SHA1 906bec2463c50dee6da8629e8063736eaa224290 SHA256 3829c5f5a90ce28d63856eeea20d3881695b1e824936c2d0f55c2830ebb898d3
EBUILD nautilus-dropbox-0.6.2-r2.ebuild 1128 RMD160 ccd65fa6e7b3e244c01bc7084b1148797512e534 SHA1 a0c4bc367943d318b7f136ca19ecd45274adc94f SHA256 db7c19d578fcf09e1b0d065bfcf08880851ae92bc0f127db3a69ce9ce752a50c
+EBUILD nautilus-dropbox-0.6.2-r3.ebuild 1128 RMD160 374f6a1a9b519f706233b915b1519f3ba3cf2c50 SHA1 493127398bb69005baa7ec8debec7c2836b70137 SHA256 cdb110e4427a42ce1419763d640b1ceed68005037ab8decc3984e30d81560f28
EBUILD nautilus-dropbox-0.6.2.ebuild 1199 RMD160 1d266dd0cb09548d2810fa420dfdaaaa2a052458 SHA1 5f978ccabd6ad282825b4aeef7d2b8b31675c3cc SHA256 146116f33179382cfbddbce57c56fb3a61f06714875048bf74794200538aef93
diff --git a/gnome-extra/nautilus-dropbox/nautilus-dropbox-0.6.2-r3.ebuild b/gnome-extra/nautilus-dropbox/nautilus-dropbox-0.6.2-r3.ebuild
new file mode 100644
index 0000000..84d612d
--- /dev/null
+++ b/gnome-extra/nautilus-dropbox/nautilus-dropbox-0.6.2-r3.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="2"
+
+inherit eutils gnome2
+
+DESCRIPTION="Dropbox client"
+HOMEPAGE="http://www.dropbox.com"
+SRC_URI="https://www.dropbox.com/download?dl=packages/${PN}-${PV}.tar.bz2
+ x86? ( http://dl-web.dropbox.com/u/17/dropbox-lnx.x86-0.7.110.tar.gz )
+ amd64? ( http://dl-web.dropbox.com/u/17/dropbox-lnx.x86_64-0.7.110.tar.gz )"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ~x86"
+
+
+RDEPEND="x11-libs/gtk+:3
+ x11-libs/libnotify
+ gnome-base/nautilus
+ dev-libs/dbus-glib
+ x11-libs/libSM"
+
+DEPEND="${RDEPEND}
+ dev-python/docutils"
+
+src_compile() {
+ gnome2_src_prepare
+}
+
+pkg_setup() {
+ arch=${ARCH}
+ use amd64 && arch="x86_64"
+}
+
+src_unpack() {
+ unpack dropbox-lnx.${arch}-0.7.110.tar.gz
+ mv ${WORKDIR}/.dropbox-dist ${WORKDIR}/dropbox
+ unpack ${PN}-${PV}.tar.bz2
+}
+
+src_install() {
+ gnome2_src_install
+
+ rm ${D}/usr/bin/dropbox
+ insinto /opt
+ doins -r ../dropbox || die
+ chmod +x ${D}/opt/dropbox/dropboxd
+ chmod +x ${D}/opt/dropbox/dropbox
+ dosym /opt/dropbox/dropboxd /usr/bin
+ dosym /opt/dropbox/dropbox /usr/bin
+}
+