Fix segfault with recent python, bug #318333. Clean up old revisions.
authorGilles Dartiguelongue <eva@gentoo.org>
Wed, 5 May 2010 22:50:31 +0000 (22:50 +0000)
committerGilles Dartiguelongue <eva@gentoo.org>
Wed, 5 May 2010 22:50:31 +0000 (22:50 +0000)
Package-Manager: portage-2.2_rc67/cvs/Linux x86_64

media-sound/rhythmbox/ChangeLog
media-sound/rhythmbox/Manifest
media-sound/rhythmbox/files/rhythmbox-0.12-python-initialization.patch [new file with mode: 0644]
media-sound/rhythmbox/files/rhythmbox-0.12.5-fix-daap-plugin-linking.patch [deleted file]
media-sound/rhythmbox/rhythmbox-0.12.6-r1.ebuild [moved from media-sound/rhythmbox/rhythmbox-0.12.5-r2.ebuild with 84% similarity]
media-sound/rhythmbox/rhythmbox-0.12.8-r1.ebuild [new file with mode: 0644]

index 054c5c203ec95045c75ef3feef4908cc06cc060a..9645eea514035872e9f73cf080faefc08f6e2a5e 100644 (file)
@@ -1,6 +1,16 @@
 # ChangeLog for media-sound/rhythmbox
 # Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-sound/rhythmbox/ChangeLog,v 1.182 2010/04/21 18:02:44 fauli Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-sound/rhythmbox/ChangeLog,v 1.183 2010/05/05 22:50:30 eva Exp $
+
+*rhythmbox-0.12.8-r1 (05 May 2010)
+*rhythmbox-0.12.6-r1 (05 May 2010)
+
+  05 May 2010; Gilles Dartiguelongue <eva@gentoo.org>
+  -rhythmbox-0.12.5-r2.ebuild,
+  -files/rhythmbox-0.12.5-fix-daap-plugin-linking.patch,
+  +rhythmbox-0.12.6-r1.ebuild, +rhythmbox-0.12.8-r1.ebuild,
+  +files/rhythmbox-0.12-python-initialization.patch:
+  Fix segfault with recent python, bug #318333. Clean up old revisions.
 
   21 Apr 2010; Christian Faulhammer <fauli@gentoo.org>
   rhythmbox-0.12.8.ebuild:
index d3f98244d90d4222462fe36bbe90954326072f6f..13f4e156587f09b44c7970c3cd96b3effb1ad249 100644 (file)
@@ -1,19 +1,19 @@
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
-AUX rhythmbox-0.12.5-fix-daap-plugin-linking.patch 714 RMD160 f41f995764b8ac60172b8e8e6c1a9face9d3e408 SHA1 2ebd320ef650c9fe6dd06531afc697399a071ed6 SHA256 4617073fc7e275680b8ad3334009dbcf707725294f499df4912be83c6abbb2cd
-DIST rhythmbox-0.12.5.tar.bz2 5123204 RMD160 5286cda2e457d21627a8fe2392c85504bcd254b7 SHA1 b41bbb4e7e8f2dc64122ff6a0b334478a0cef42b SHA256 b26c45a715502d3b4d47bf532078bdf3dbed68c1cb68c61d8995a349dd488cd1
+AUX rhythmbox-0.12-python-initialization.patch 5167 RMD160 cacae6274841d595a0d55ed92c42815793081176 SHA1 0b306455b027f8f9c73e185acdbbb1d041ce882d SHA256 54f3f492d4c3204b93a1fed3886ca76aa42d36737e66c6424426fc0116b25d3e
 DIST rhythmbox-0.12.6.tar.bz2 5202025 RMD160 cf860b1a42975d4dfea09b5c265bda297d18a7b9 SHA1 f1ba375329471ec47475a4b0ce3e8bba430a537b SHA256 ddffa5b7e0e0fe81044354998fd91a58d4ff526746b17a6b638e0e8ea1ac9684
 DIST rhythmbox-0.12.8.tar.bz2 5358950 RMD160 072d4fa06408ebc181b40147db1575d0ef4c99fe SHA1 5d27923cc29b81d7bfbc73d867d7976a5295f964 SHA256 1752fab135808aa78a9afde78448e992020c58c07701f43c989fbabfc6352213
-EBUILD rhythmbox-0.12.5-r2.ebuild 4811 RMD160 552c4c989441bbb0b91bbe90ceb070d4309a226f SHA1 9e53e7bf34459b064bc8a3e06ca221445262f086 SHA256 7fb752710dd1adb756800c7147f637761a00ad9949e7e92fb13847c484a76cf4
+EBUILD rhythmbox-0.12.6-r1.ebuild 4794 RMD160 74eb78faea1182d2eccac6c4f2e1a8e7e7ee4a74 SHA1 a752be3ffa2899b61c242ae6aca3a23817b28cbd SHA256 e6e048344883d390ede9c8a2a4af5cb2a183c44b2f5ecdd149ec01b83d755273
 EBUILD rhythmbox-0.12.6.ebuild 4535 RMD160 3ca2e90496ec7979cf0d578bcf1f156a40fd4261 SHA1 e7fa7615f17d426b37c4fb8f6e507cbe6208267b SHA256 6e1d2e68dbaf0991050ef9abfb24a6488e9aabe144c768fdf3e4b90f192bc259
+EBUILD rhythmbox-0.12.8-r1.ebuild 5165 RMD160 0d8d1d8a4915e6983689b08da9a1f631b4da92b6 SHA1 54663f001f08f7525c5d19f6953dd8d939f38ff9 SHA256 cfb61a15ededfcff3beb635efe6cb79cb6141314481f56f142253c9a76446d78
 EBUILD rhythmbox-0.12.8.ebuild 5051 RMD160 59f830255cf73bf5d6f2ac63ec438f751a328248 SHA1 b918d2650ae3828eaec5825e39571186fc3cc81a SHA256 3b5ddc1dd337bcbe70286f9fa9b9ce885471c8e53679ee542e0dbfcf2ae4a992
-MISC ChangeLog 28078 RMD160 6fee98bcb5e0a69cba0740eff8abf9747ba1da83 SHA1 2e2b2257828241964cfc2ac4416d11980cc03e59 SHA256 7b458c724dba1f13d279040210ac047868e04893f35b139d9a90af5f5397d6ed
+MISC ChangeLog 28475 RMD160 9ad820c86f6a837bf88ae363e1f0c4c1dac41ca9 SHA1 a9769a3b5f65f037f433b3912270605e9a4b5813 SHA256 de9799188bfb91d947b971b1a45af6a602a827a8356190075712f316164dfdef
 MISC metadata.xml 693 RMD160 1694899b1ecffa452a210fa7ee7f40d49bb1dc09 SHA1 2fecdcf02f751b816f6e853d6f7f15b7b3e6c9fe SHA256 e38fecefcfb59ecb89e3cd9c0c1c1b3af2d810de058860f41edcd9d6994788c3
 -----BEGIN PGP SIGNATURE-----
-Version: GnuPG v2.0.14 (GNU/Linux)
+Version: GnuPG v2.0.15 (GNU/Linux)
 
-iEYEARECAAYFAkvPPckACgkQNQqtfCuFneOFIACgkqqAAwXphor1dQk+50ubB8wH
-kTMAnR3/YGT3VUvgx365SKHOMLqglgP7
-=Z/8e
+iEYEARECAAYFAkvh9jwACgkQ1fmVwcYIWAYD/gCdFOdbdd82HEHfJD18XHCwoiXb
+IIgAn1Loo50FBQXrwIyYlp0biyZXgMus
+=rFuC
 -----END PGP SIGNATURE-----
diff --git a/media-sound/rhythmbox/files/rhythmbox-0.12-python-initialization.patch b/media-sound/rhythmbox/files/rhythmbox-0.12-python-initialization.patch
new file mode 100644 (file)
index 0000000..deb34c0
--- /dev/null
@@ -0,0 +1,171 @@
+From 4394826f36fad0ad36ea773b6d4525dfcfcd389b Mon Sep 17 00:00:00 2001
+From: Jonathan Matthew <jonathan@d14n.org>
+Date: Wed, 05 May 2010 12:58:26 +0000
+Subject: python: fix a number of python initialization problems (bug #617587)
+
+- pygtk.require("2.8") doesn't work - it's only after a major version,
+  so we should pass in "2.0" instead
+- init_pygobject() is deprecated, use pygobject_init (and pass in the
+  version we require) instead
+- init_pygtk() is a macro that returns from the current function on
+  error, so we need to call it from a separate function for our error
+  handling to work
+- if some aspect of python initialization failed, we were still using
+  the pygobject GIL macros, which were crashing
+---
+diff --git a/shell/main.c b/shell/main.c
+index 1f27fee..a4dd50a 100644
+--- a/shell/main.c
++++ b/shell/main.c
+@@ -35,6 +35,7 @@
+ #define NO_IMPORT_PYGOBJECT
+ #define NO_IMPORT_PYGTK
+ #include <pygobject.h>
++#include "rb-python-module.h"
+ 
+ /* make sure it's defined somehow */
+ #ifndef _XOPEN_SOURCE
+@@ -327,11 +328,15 @@ main (int argc, char **argv)
+ 
+               rb_profile_start ("mainloop");
+ #ifdef ENABLE_PYTHON
+-              pyg_begin_allow_threads;
+-#endif
++              if (rb_python_init_successful ()) {
++                      pyg_begin_allow_threads;
++                      gtk_main ();
++                      pyg_end_allow_threads;
++              } else {
++                      gtk_main ();
++              }
++#else
+               gtk_main ();
+-#ifdef ENABLE_PYTHON
+-              pyg_end_allow_threads;
+ #endif
+               rb_profile_end ("mainloop");
+ 
+diff --git a/shell/rb-python-module.c b/shell/rb-python-module.c
+index 9e14731..1995a42 100644
+--- a/shell/rb-python-module.c
++++ b/shell/rb-python-module.c
+@@ -84,8 +84,16 @@ extern PyMethodDef pyrb_functions[];
+ /* We retreive this to check for correct class hierarchy */
+ static PyTypeObject *PyRBPlugin_Type;
+ 
++static gboolean python_init_successful;
++
+ G_DEFINE_TYPE (RBPythonModule, rb_python_module, G_TYPE_TYPE_MODULE);
+ 
++static void
++actually_init_pygtk (void)
++{
++      init_pygtk ();
++}
++
+ void
+ rb_python_module_init_python (void)
+ {
+@@ -98,6 +106,7 @@ rb_python_module_init_python (void)
+       char *argv[] = { "rb", "rhythmdb", NULL };
+       GList *paths;
+ 
++      python_init_successful = FALSE;
+       if (Py_IsInitialized ()) {
+               g_warning ("Python Should only be initialized once, since it's in class_init");
+               g_return_if_reached ();
+@@ -130,7 +139,7 @@ rb_python_module_init_python (void)
+ 
+       PySys_SetArgv (1, argv);
+ 
+-      /* pygtk.require("2.8") */
++      /* pygtk.require("2.0") */
+       pygtk = PyImport_ImportModule ("pygtk");
+       if (pygtk == NULL) {
+               g_warning ("Could not import pygtk");
+@@ -140,11 +149,15 @@ rb_python_module_init_python (void)
+ 
+       mdict = PyModule_GetDict (pygtk);
+       require = PyDict_GetItemString (mdict, "require");
+-      PyObject_CallObject (require, Py_BuildValue ("(S)", PyString_FromString ("2.8")));
++      PyObject_CallObject (require, Py_BuildValue ("(S)", PyString_FromString ("2.0")));
++      if (PyErr_Occurred ()) {
++              g_warning ("pygtk.require(2.0) failed");
++              PyErr_Print();
++              return;
++      }
+ 
+       /* import gobject */
+-      init_pygobject ();
+-      if (PyErr_Occurred ()) {
++      if (pygobject_init (2, 16, 0) == NULL) {
+               g_warning ("Could not initialize pygobject");
+               PyErr_Print();
+               return;
+@@ -154,7 +167,7 @@ rb_python_module_init_python (void)
+       pyg_disable_warning_redirections ();
+ 
+       /* import gtk */
+-      init_pygtk ();
++      actually_init_pygtk ();
+       if (PyErr_Occurred ()) {
+               g_warning ("Could not initialize pygtk");
+               PyErr_Print();
+@@ -172,7 +185,7 @@ rb_python_module_init_python (void)
+ 
+       mdict = PyModule_GetDict (gtk);
+       pygtk_version = PyDict_GetItemString (mdict, "pygtk_version");
+-      pygtk_required_version = Py_BuildValue ("(iii)", 2, 4, 0);
++      pygtk_required_version = Py_BuildValue ("(iii)", 2, 8, 0);
+       if (PyObject_Compare (pygtk_version, pygtk_required_version) == -1) {
+               g_warning("PyGTK %s required, but %s found.",
+                                 PyString_AsString (PyObject_Repr (pygtk_required_version)),
+@@ -264,6 +277,8 @@ rb_python_module_init_python (void)
+       gettext_args = Py_BuildValue ("ss", GETTEXT_PACKAGE, GNOMELOCALEDIR);
+       PyObject_CallObject (install, gettext_args);
+       Py_DECREF (gettext_args);
++
++      python_init_successful = TRUE;
+ }
+ 
+ static gboolean
+@@ -329,6 +344,11 @@ rb_python_module_load_with_gil (GTypeModule *module)
+       PyGILState_STATE state;
+       gboolean ret;
+ 
++      if (python_init_successful == FALSE) {
++              g_warning ("unable to load module as python runtime could not be initialized");
++              return FALSE;
++      }
++
+       state = pyg_gil_state_ensure ();
+       ret = rb_python_module_load (module);
+       pyg_gil_state_release (state);
+@@ -485,6 +505,12 @@ rb_python_module_new (const gchar *path,
+       return result;
+ }
+ 
++gboolean
++rb_python_init_successful (void)
++{
++      return python_init_successful;
++}
++
+ /* --- these are not module methods, they are here out of convenience --- */
+ 
+ #if 0
+diff --git a/shell/rb-python-module.h b/shell/rb-python-module.h
+index 5b2c152..30c1200 100644
+--- a/shell/rb-python-module.h
++++ b/shell/rb-python-module.h
+@@ -60,6 +60,8 @@ GObject                      *rb_python_module_new_object            (RBPythonModule *module);
+ 
+ void                  rb_python_module_init_python            (void);
+ 
++gboolean              rb_python_init_successful               (void);
++
+ void                  rb_python_garbage_collect               (void);
+ 
+ void                  rb_python_shutdown                      (void);
+--
+cgit v0.8.3.1
diff --git a/media-sound/rhythmbox/files/rhythmbox-0.12.5-fix-daap-plugin-linking.patch b/media-sound/rhythmbox/files/rhythmbox-0.12.5-fix-daap-plugin-linking.patch
deleted file mode 100644 (file)
index 644615c..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-From 3bf2e8b95d5a2c8000a7e46b73f0b92c5319e927 Mon Sep 17 00:00:00 2001
-From: Christophe Fergeau <cfergeau@mandriva.com>
-Date: Sat, 10 Oct 2009 12:16:35 +0000
-Subject: link daap plugin with RHYTHMBOX_LIBS (bug #597899)
-
-The DAAP plugin uses libsoup, so it needs to link with libsoup which is
-part of RHYTHMBOX_LIBS.
----
-diff --git a/plugins/daap/Makefile.am b/plugins/daap/Makefile.am
-index 90935ee..dfc1058 100644
---- a/plugins/daap/Makefile.am
-+++ b/plugins/daap/Makefile.am
-@@ -35,6 +35,7 @@ libdaap_la_LIBTOOLFLAGS = --tag=disable-static
- libdaap_la_LIBADD =                                   \
-       $(top_builddir)/shell/librhythmbox-core.la      \
-       $(DBUS_LIBS)                                    \
-+      $(RHYTHMBOX_LIBS)                               \
-       $(MDNS_LIBS)
- 
- INCLUDES =                                            \
---
-cgit v0.8.2
similarity index 84%
rename from media-sound/rhythmbox/rhythmbox-0.12.5-r2.ebuild
rename to media-sound/rhythmbox/rhythmbox-0.12.6-r1.ebuild
index a076d04c30bf160f9f146d4c3cfd3eb7c4671f0c..c826d6c531240ddf42f3fa57848459662d3bcc76 100644 (file)
@@ -1,16 +1,15 @@
 # Copyright 1999-2010 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-sound/rhythmbox/rhythmbox-0.12.5-r2.ebuild,v 1.8 2010/02/17 22:58:40 eva Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-sound/rhythmbox/rhythmbox-0.12.6-r1.ebuild,v 1.1 2010/05/05 22:50:30 eva Exp $
 
 EAPI="2"
-WANT_AUTOMAKE="1.10"
 
-inherit autotools eutils gnome2 python multilib virtualx
+inherit eutils gnome2 python multilib virtualx
 
 DESCRIPTION="Music management and playback software for GNOME"
 HOMEPAGE="http://www.rhythmbox.org/"
 LICENSE="GPL-2"
-KEYWORDS="amd64 ppc ppc64 sparc x86"
+KEYWORDS="~amd64 ~ppc ~ppc64 ~sparc ~x86"
 IUSE="+brasero cdr daap doc gnome-keyring hal ipod libnotify lirc musicbrainz mtp nsplugin python test udev"
 
 # FIXME: double check what to do with fm-radio plugin
@@ -18,13 +17,13 @@ IUSE="+brasero cdr daap doc gnome-keyring hal ipod libnotify lirc musicbrainz mt
 
 SLOT="0"
 
-COMMON_DEPEND=">=dev-libs/glib-2.16.0
+COMMON_DEPEND=">=dev-libs/glib-2.16
        dev-libs/libxml2
        >=x11-libs/gtk+-2.16
        >=dev-libs/dbus-glib-0.71
-       >=dev-libs/totem-pl-parser-2.26.0
+       >=dev-libs/totem-pl-parser-2.26
        >=gnome-base/gconf-2
-       >=gnome-extra/gnome-media-2.14.0
+       >=gnome-extra/gnome-media-2.14
        >=net-libs/libsoup-2.26:2.4
        >=net-libs/libsoup-gnome-2.26:2.4
 
@@ -40,11 +39,11 @@ COMMON_DEPEND=">=dev-libs/glib-2.16.0
        gnome-keyring? ( >=gnome-base/gnome-keyring-0.4.9 )
        udev? (
                ipod? ( >=media-libs/libgpod-0.6 )
-               mtp? ( >=media-libs/libmtp-0.3.0 )
+               mtp? ( >=media-libs/libmtp-0.3 )
                >=sys-fs/udev-145[extras] )
        hal? (
                ipod? ( >=media-libs/libgpod-0.6 )
-               mtp? ( >=media-libs/libmtp-0.3.0 )
+               mtp? ( >=media-libs/libmtp-0.3 )
                >=sys-apps/hal-0.5 )
        libnotify? ( >=x11-libs/libnotify-0.4.1 )
        lirc? ( app-misc/lirc )
@@ -55,9 +54,9 @@ COMMON_DEPEND=">=dev-libs/glib-2.16.0
                        >=dev-lang/python-2.5
                        dev-python/celementtree )
                >=dev-python/pygtk-2.8
-               >=dev-python/gnome-vfs-python-2.22.0
-               >=dev-python/gconf-python-2.22.0
-               >=dev-python/libgnome-python-2.22.0
+               >=dev-python/gnome-vfs-python-2.22
+               >=dev-python/gconf-python-2.22
+               >=dev-python/libgnome-python-2.22
                >=dev-python/gst-python-0.10.8 )"
 
 RDEPEND="${COMMON_DEPEND}
@@ -68,15 +67,12 @@ RDEPEND="${COMMON_DEPEND}
                >=media-plugins/gst-plugins-cdio-0.10 )
        >=media-plugins/gst-plugins-meta-0.10-r2:0.10
        >=media-plugins/gst-plugins-taglib-0.10.6
-       nsplugin? ( || (
-               net-libs/xulrunner
-               www-client/seamonkey
-               www-client/mozilla-firefox ) )"
+       nsplugin? ( net-libs/xulrunner )"
 
 # gtk-doc-am needed for eautoreconf
+#      dev-util/gtk-doc-am
 DEPEND="${COMMON_DEPEND}
        dev-util/pkgconfig
-       dev-util/gtk-doc-am
        >=dev-util/intltool-0.40
        app-text/scrollkeeper
        >=app-text/gnome-doc-utils-0.9.1
@@ -141,15 +137,12 @@ pkg_setup() {
 src_prepare() {
        gnome2_src_prepare
 
-       # Fix bug 291315 (patch taken from upstream repo)
-       # DAAP plugin load failure when built with --as-needed
-       epatch "${FILESDIR}/${P}-fix-daap-plugin-linking.patch"
-
-       eautoreconf
-
        # disable pyc compiling
        mv py-compile py-compile.orig
        ln -s $(type -P true) py-compile
+
+       # Fix python initialization problems, bug #318333
+       epatch "${FILESDIR}/${PN}-0.12-python-initialization.patch"
 }
 
 src_compile() {
@@ -164,6 +157,13 @@ src_test() {
        Xemake check || die "test failed"
 }
 
+src_install() {
+       gnome2_src_install
+
+       find "${D}/usr/$(get_libdir)/rhythmbox/plugins" -name "*.la" -delete \
+               || die "failed to remove *.la files"
+}
+
 pkg_postinst() {
        gnome2_pkg_postinst
        use python && python_mod_optimize /usr/$(get_libdir)/rhythmbox/plugins
diff --git a/media-sound/rhythmbox/rhythmbox-0.12.8-r1.ebuild b/media-sound/rhythmbox/rhythmbox-0.12.8-r1.ebuild
new file mode 100644 (file)
index 0000000..c81dafe
--- /dev/null
@@ -0,0 +1,197 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-sound/rhythmbox/rhythmbox-0.12.8-r1.ebuild,v 1.1 2010/05/05 22:50:30 eva Exp $
+
+EAPI="2"
+
+inherit eutils gnome2 python multilib virtualx
+
+DESCRIPTION="Music management and playback software for GNOME"
+HOMEPAGE="http://www.rhythmbox.org/"
+LICENSE="GPL-2"
+KEYWORDS="~amd64 ~x86"
+IUSE="+brasero cdr daap doc gnome-keyring hal ipod libnotify lirc musicbrainz mtp nsplugin python test udev upnp webkit"
+
+# FIXME: double check what to do with fm-radio plugin
+# TODO: watchout for udev use flag changes
+
+SLOT="0"
+
+COMMON_DEPEND=">=dev-libs/glib-2.18
+       dev-libs/libxml2
+       >=x11-libs/gtk+-2.18
+       >=dev-libs/dbus-glib-0.71
+       >=dev-libs/totem-pl-parser-2.26
+       >=gnome-base/gconf-2
+       >=gnome-extra/gnome-media-2.14
+       >=net-libs/libsoup-2.26:2.4
+       >=net-libs/libsoup-gnome-2.26:2.4
+
+       >=media-libs/gst-plugins-base-0.10.20
+       || (
+               >=media-libs/gst-plugins-base-0.10.24
+               >=media-libs/gst-plugins-bad-0.10.6 )
+
+       cdr? (
+               brasero? ( >=app-cdr/brasero-0.9.1 )
+               !brasero? ( >=gnome-extra/nautilus-cd-burner-2.21.6 ) )
+       daap? ( >=net-dns/avahi-0.6 )
+       gnome-keyring? ( >=gnome-base/gnome-keyring-0.4.9 )
+       udev? (
+               ipod? ( >=media-libs/libgpod-0.6 )
+               mtp? ( >=media-libs/libmtp-0.3 )
+               >=sys-fs/udev-145[extras] )
+       hal? (
+               ipod? ( >=media-libs/libgpod-0.6 )
+               mtp? ( >=media-libs/libmtp-0.3 )
+               >=sys-apps/hal-0.5 )
+       libnotify? ( >=x11-libs/libnotify-0.4.1 )
+       lirc? ( app-misc/lirc )
+       musicbrainz? ( media-libs/musicbrainz:3 )
+       python? (
+               >=dev-lang/python-2.4.2
+               || (
+                       >=dev-lang/python-2.5
+                       dev-python/celementtree )
+               >=dev-python/pygtk-2.8
+               >=dev-python/pygobject-2.15.4
+               >=dev-python/gconf-python-2.22
+               >=dev-python/libgnome-python-2.22
+               >=dev-python/gnome-keyring-python-2.22
+               >=dev-python/gst-python-0.10.8
+               webkit? (
+                       dev-python/mako
+                       dev-python/pywebkitgtk )
+               upnp? ( media-video/coherence )
+       )"
+
+RDEPEND="${COMMON_DEPEND}
+       >=media-plugins/gst-plugins-soup-0.10
+       >=media-plugins/gst-plugins-libmms-0.10
+       || (
+               >=media-plugins/gst-plugins-cdparanoia-0.10
+               >=media-plugins/gst-plugins-cdio-0.10 )
+       >=media-plugins/gst-plugins-meta-0.10-r2:0.10
+       >=media-plugins/gst-plugins-taglib-0.10.6
+       nsplugin? ( net-libs/xulrunner )"
+
+# gtk-doc-am needed for eautoreconf
+#      dev-util/gtk-doc-am
+DEPEND="${COMMON_DEPEND}
+       dev-util/pkgconfig
+       >=dev-util/intltool-0.40
+       app-text/scrollkeeper
+       >=app-text/gnome-doc-utils-0.9.1
+       doc? ( >=dev-util/gtk-doc-1.4 )
+       test? ( dev-libs/check )"
+
+DOCS="AUTHORS ChangeLog DOCUMENTERS INTERNALS \
+         MAINTAINERS MAINTAINERS.old NEWS README THANKS"
+
+pkg_setup() {
+       if ! use hal && ! use udev; then
+               if use ipod; then
+                       ewarn "ipod support requires hal or udev support.  Please"
+                       ewarn "re-emerge with USE=udev to enable ipod support"
+               fi
+
+               if use mtp; then
+                       ewarn "MTP support requires hal or udev support.  Please"
+                       ewarn "re-emerge with USE=udev to enable MTP support"
+               fi
+       fi
+
+       if use hal && use udev; then
+               einfo "udev support replaces hal support completely. You can disable"
+               einfo "hal on this package via /etc/portage/package.use."
+       fi
+
+       if ! use cdr ; then
+               ewarn "You have cdr USE flag disabled."
+               ewarn "You will not be able to burn CDs."
+       fi
+
+       if ! use python; then
+               if use webkit; then
+                       ewarn "You need python support in addition to webkit to be able to use"
+                       ewarn "the context panel plugin."
+               fi
+
+               if use upnp; then
+                       ewarn "You need python support in addition to upnp"
+               fi
+       fi
+
+       if use brasero; then
+               G2CONF="${G2CONF} $(use_with cdr libbrasero-media) --without-libnautilus-burn"
+       else
+               G2CONF="${G2CONF} $(use_with cdr libnautilus-burn) --without-libbrasero-media"
+       fi
+
+       G2CONF="${G2CONF}
+               MOZILLA_PLUGINDIR=/usr/$(get_libdir)/nsbrowser/plugins
+               $(use_with gnome-keyring)
+               $(use_with udev gudev)
+               $(use_with hal)
+               $(use_with ipod)
+               $(use_enable libnotify)
+               $(use_enable lirc)
+               $(use_enable musicbrainz)
+               $(use_with mtp)
+               $(use_enable nsplugin browser-plugin)
+               $(use_enable python)
+               $(use_enable daap)
+               $(use_with daap mdns avahi)
+               --enable-mmkeys
+               --disable-scrollkeeper
+               --disable-schemas-install
+               --disable-static
+               --disable-vala"
+
+       export GST_INSPECT=/bin/true
+}
+
+src_prepare() {
+       gnome2_src_prepare
+
+       # disable pyc compiling
+       mv py-compile py-compile.orig
+       ln -s $(type -P true) py-compile
+
+       # Fix python initialization problems, bug #318333
+       epatch "${FILESDIR}/${PN}-0.12-python-initialization.patch"
+}
+
+src_compile() {
+       addpredict "$(unset HOME; echo ~)/.gconf"
+       addpredict "$(unset HOME; echo ~)/.gconfd"
+       gnome2_src_compile
+}
+
+src_test() {
+       unset SESSION_MANAGER
+       unset DBUS_SESSION_BUS_ADDRESS
+       Xemake check || die "test failed"
+}
+
+src_install() {
+       gnome2_src_install
+
+       find "${D}/usr/$(get_libdir)/rhythmbox/plugins" -name "*.la" -delete \
+               || die "failed to remove *.la files"
+}
+
+pkg_postinst() {
+       gnome2_pkg_postinst
+       use python && python_mod_optimize /usr/$(get_libdir)/rhythmbox/plugins
+
+       ewarn
+       ewarn "If ${PN} doesn't play some music format, please check your"
+       ewarn "USE flags on media-plugins/gst-plugins-meta"
+       ewarn
+}
+
+pkg_postrm() {
+       gnome2_pkg_postrm
+       python_mod_cleanup /usr/$(get_libdir)/rhythmbox/plugins
+}