Gentoo Archives: gentoo-commits

From: Nirbheek Chauhan <nirbheek@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gnome:master commit in: media-sound/rhythmbox/, media-sound/rhythmbox/files/
Date: Sat, 02 Mar 2013 08:52:42
Message-Id: 1362214115.b24186650aab8d3ffa860ea3b9284cc711d5a7ae.nirbheek@gentoo
1 commit: b24186650aab8d3ffa860ea3b9284cc711d5a7ae
2 Author: Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
3 AuthorDate: Sat Mar 2 08:47:39 2013 +0000
4 Commit: Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
5 CommitDate: Sat Mar 2 08:48:35 2013 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=b2418665
7
8 media-sound/rhythmbox: Update to latest git and add libsecret port
9
10 ---
11 .../rhythmbox-port-magnatune-to-libsecret.patch | 119 +++++++
12 .../files/rhythmbox-port-to-libsecret.patch | 355 ++++++++++++++++++++
13 media-sound/rhythmbox/rhythmbox-9999.ebuild | 15 +-
14 3 files changed, 483 insertions(+), 6 deletions(-)
15
16 diff --git a/media-sound/rhythmbox/files/rhythmbox-port-magnatune-to-libsecret.patch b/media-sound/rhythmbox/files/rhythmbox-port-magnatune-to-libsecret.patch
17 new file mode 100644
18 index 0000000..ddff723
19 --- /dev/null
20 +++ b/media-sound/rhythmbox/files/rhythmbox-port-magnatune-to-libsecret.patch
21 @@ -0,0 +1,119 @@
22 +From 937423f0cff334693a68bf9c9d13e3d477c7a969 Mon Sep 17 00:00:00 2001
23 +From: Nirbheek Chauhan <nirbheek.chauhan@××××××××××××.uk>
24 +Date: Sat, 2 Mar 2013 14:09:26 +0530
25 +Subject: [PATCH 2/2] magnatune: Port to libsecret
26 +
27 +---
28 +diff --git a/plugins/magnatune/MagnatuneAccount.py b/plugins/magnatune/MagnatuneAccount.py
29 +index f8cf81b..6fdc406 100644
30 +--- a/plugins/magnatune/MagnatuneAccount.py
31 ++++ b/plugins/magnatune/MagnatuneAccount.py
32 +@@ -1,4 +1,5 @@
33 + # -*- Mode: python; coding: utf-8; tab-width: 8; indent-tabs-mode: t; -*-
34 ++# vim: set sts=0 ts=8 sw=8 tw=0 noet :
35 + #
36 + # Copyright (C) 2012 Jonathan Matthew <jonathan@××××.org>
37 + #
38 +@@ -24,10 +25,17 @@
39 + # along with this program; if not, write to the Free Software
40 + # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
41 +
42 +-from gi.repository import Gio, GnomeKeyring
43 ++from gi.repository import Gio, Secret, SecretUnstable
44 +
45 + __instance = None
46 +
47 ++# We need to be able to fetch passwords stored by libgnome-keyring, so we use
48 ++# a schema with SECRET_SCHEMA_DONT_MATCH_NAME set.
49 ++# See: http://developer.gnome.org/libsecret/unstable/migrating-schemas.html
50 ++MAGNATUNE_SCHEMA = Secret.Schema.new("org.gnome.rhythmbox.plugins.magnatune",
51 ++ Secret.SchemaFlags.DONT_MATCH_NAME,
52 ++ {"rhythmbox-plugin": Secret.SchemaAttributeType.STRING})
53 ++
54 + def instance():
55 + global __instance
56 + if __instance is None:
57 +@@ -36,54 +44,44 @@ def instance():
58 +
59 + class MagnatuneAccount(object):
60 + def __init__(self):
61 +- self.keyring_item = None
62 + self.settings = Gio.Settings("org.gnome.rhythmbox.plugins.magnatune")
63 +-
64 +- self.keyring_attributes = GnomeKeyring.attribute_list_new()
65 +- GnomeKeyring.attribute_list_append_string(self.keyring_attributes,
66 +- "rhythmbox-plugin",
67 +- "magnatune")
68 +- (result, items) = GnomeKeyring.find_items_sync(GnomeKeyring.ItemType.GENERIC_SECRET,
69 +- self.keyring_attributes)
70 +- if result == GnomeKeyring.Result.OK and len(items) != 0:
71 +- (result, item) = GnomeKeyring.item_get_info_sync(None, items[0].item_id)
72 +- if result == GnomeKeyring.Result.OK:
73 +- self.keyring_item = item
74 +- else:
75 +- print "Couldn't get keyring item: " + GnomeKeyring.result_to_message(result)
76 +- else:
77 +- print "couldn't search keyring items: " + GnomeKeyring.result_to_message(result)
78 ++ self.secret = None
79 ++ self.keyring_attributes = {"rhythmbox-plugin": "magnatune"}
80 ++ # Haha.
81 ++ self.secret_service = SecretUnstable.Service.get_sync(SecretUnstable.ServiceFlags.OPEN_SESSION, None)
82 ++ items = self.secret_service.search_sync(MAGNATUNE_SCHEMA,
83 ++ self.keyring_attributes,
84 ++ SecretUnstable.SearchFlags.LOAD_SECRETS,
85 ++ None)
86 ++ if not items:
87 ++ # The Python API doesn't seem to have a way to differentiate between errors and no results.
88 ++ print ("Couldn't find an existing keyring entry")
89 ++ return
90 ++ self.secret = items[0].get_secret().get()
91 +
92 + def get(self):
93 +- if self.keyring_item is None:
94 ++ if self.secret is None:
95 + return ('none', None, None)
96 +
97 + account_type = self.settings['account-type']
98 + try:
99 +- (username, password) = self.keyring_item.get_secret().split("\n")
100 ++ (username, password) = self.secret.split("\n")
101 + return (account_type, username, password)
102 + except ValueError:
103 + return ('none', None, None)
104 +
105 + def update(self, username, password):
106 + secret = '\n'.join((username, password))
107 +- if self.keyring_item is not None:
108 +- if secret == self.keyring_item.get_secret():
109 +- print "account details not changed"
110 +- return
111 ++ if secret == self.secret:
112 ++ print "Account details not changed"
113 ++ return
114 +
115 +- (result, id) = GnomeKeyring.item_create_sync(None,
116 +- GnomeKeyring.ItemType.GENERIC_SECRET,
117 +- "Rhythmbox: Magnatune account information",
118 +- self.keyring_attributes,
119 +- secret,
120 +- True)
121 +- if result == GnomeKeyring.Result.OK:
122 +- if self.keyring_item is None:
123 +- (result, item) = GnomeKeyring.item_get_info_sync(None, id)
124 +- if result == GnomeKeyring.Result.OK:
125 +- self.keyring_item = item
126 +- else:
127 +- print "couldn't fetch keyring itme: " + GnomeKeyring.result_to_message(result)
128 ++ result = Secret.password_store_sync(MAGNATUNE_SCHEMA,
129 ++ self.keyring_attributes,
130 ++ Secret.COLLECTION_DEFAULT,
131 ++ "Rhythmbox: Magnatune account information",
132 ++ secret, None)
133 ++ if not result:
134 ++ print "Couldn't create keyring item!"
135 + else:
136 +- print "couldn't create keyring item: " + GnomeKeyring.result_to_message(result)
137 ++ self.secret = secret
138 +--
139 +1.7.12.4
140 +
141
142 diff --git a/media-sound/rhythmbox/files/rhythmbox-port-to-libsecret.patch b/media-sound/rhythmbox/files/rhythmbox-port-to-libsecret.patch
143 new file mode 100644
144 index 0000000..c9255a1
145 --- /dev/null
146 +++ b/media-sound/rhythmbox/files/rhythmbox-port-to-libsecret.patch
147 @@ -0,0 +1,355 @@
148 +From e7880e08bd2eb0b3ea59c8bdb049300712e38993 Mon Sep 17 00:00:00 2001
149 +From: Nirbheek Chauhan <nirbheek.chauhan@××××××××××××.uk>
150 +Date: Wed, 23 Jan 2013 02:29:10 +0530
151 +Subject: [PATCH] Port audioscrobbler and daap plugins from gnome-keyring to
152 + libsecret
153 +
154 +---
155 + configure.ac | 41 +++++------
156 + plugins/audioscrobbler/Makefile.am | 3 +-
157 + .../rb-audioscrobbler-radio-source.c | 46 ++++++------
158 + plugins/daap/Makefile.am | 6 +-
159 + plugins/daap/rb-daap-source.c | 82 ++++++++++------------
160 + 5 files changed, 90 insertions(+), 88 deletions(-)
161 +
162 +diff --git a/configure.ac b/configure.ac
163 +index f739a19..6ff98d6 100644
164 +--- a/configure.ac
165 ++++ b/configure.ac
166 +@@ -223,26 +223,27 @@ fi
167 + AM_CONDITIONAL(USE_MTP, test x"$use_mtp" = xyes)
168 +
169 +
170 +-dnl gnome-keyring support
171 +-
172 +-AC_ARG_WITH(gnome-keyring,
173 +- AC_HELP_STRING([--with-gnome-keyring],
174 +- [Enable gnome-keyring support]),,
175 +- with_gnome_keyring=auto)
176 +-if test "x$with_gnome_keyring" != "xno"; then
177 +-
178 +- PKG_CHECK_MODULES(GNOME_KEYRING, gnome-keyring-1, have_gnome_keyring=yes, have_gnome_keyring=no)
179 +- if test "x$have_gnome_keyring" = "xno" -a "x$with_gnome_keyring" = "xyes"; then
180 +- AC_MSG_ERROR([gnome-keyring support explicitly requested but gnome-keyring couldn't be found])
181 ++dnl libsecret keyring support
182 ++
183 ++AC_ARG_WITH(keyring,
184 ++ AC_HELP_STRING([--with-keyring],
185 ++ [Enable keyring support using libsecret]),,
186 ++ with_keyring=auto)
187 ++if test "x$with_keyring" != "xno"; then
188 ++
189 ++ PKG_CHECK_MODULES(LIBSECRET, libsecret-1, have_keyring=yes, have_keyring=no)
190 ++ if test "x$have_keyring" = "xno" -a "x$with_keyring" = "xyes"; then
191 ++ AC_MSG_ERROR([keyring support explicitly requested but libsecret
192 ++ could not be found])
193 + fi
194 +- if test "x$have_gnome_keyring" = "xyes"; then
195 +- AC_DEFINE(WITH_GNOME_KEYRING, 1, [Define if gnome-keyring support is enabled])
196 +- use_gnome_keyring=yes
197 +- AC_SUBST(GNOME_KEYRING_CFLAGS)
198 +- AC_SUBST(GNOME_KEYRING_LIBS)
199 ++ if test "x$have_keyring" = "xyes"; then
200 ++ AC_DEFINE(WITH_LIBSECRET, 1, [Define if keyring support is enabled])
201 ++ use_keyring=yes
202 ++ AC_SUBST(LIBSECRET_CFLAGS)
203 ++ AC_SUBST(LIBSECRET_LIBS)
204 + fi
205 + fi
206 +-AM_CONDITIONAL(USE_GNOME_KEYRING, test x"$use_gnome_keyring" = xyes)
207 ++AM_CONDITIONAL(USE_LIBSECRET, test x"$use_keyring" = xyes)
208 +
209 + dnl Database
210 + AC_ARG_WITH(database,
211 +@@ -919,10 +920,10 @@ if test x"$with_vala" = xyes; then
212 + else
213 + AC_MSG_NOTICE([ Vala plugin support disabled])
214 + fi
215 +-if test x"$use_gnome_keyring" = xyes; then
216 +- AC_MSG_NOTICE([** gnome-keyring support enabled])
217 ++if test x"$use_keyring" = xyes; then
218 ++ AC_MSG_NOTICE([** Libsecret keyring support enabled])
219 + else
220 +- AC_MSG_NOTICE([ gnome-keyring support disabled])
221 ++ AC_MSG_NOTICE([ Libsecret keyring support disabled])
222 + fi
223 + if test "x$enable_fm_radio" != xno; then
224 + AC_MSG_NOTICE([** FM radio support enabled])
225 +diff --git a/plugins/audioscrobbler/Makefile.am b/plugins/audioscrobbler/Makefile.am
226 +index 913a6b3..c139a34 100644
227 +--- a/plugins/audioscrobbler/Makefile.am
228 ++++ b/plugins/audioscrobbler/Makefile.am
229 +@@ -31,6 +31,7 @@ libaudioscrobbler_la_LIBADD = \
230 + $(top_builddir)/shell/librhythmbox-core.la \
231 + $(TOTEM_PLPARSER_LIBS) \
232 + $(JSON_GLIB_LIBS) \
233 ++ $(LIBSECRET_LIBS) \
234 + $(RHYTHMBOX_LIBS)
235 +
236 + INCLUDES = \
237 +@@ -53,7 +54,7 @@ INCLUDES = \
238 + $(TOTEM_PLPARSER_CFLAGS) \
239 + $(JSON_GLIB_CFLAGS) \
240 + $(RHYTHMBOX_CFLAGS) \
241 +- $(GNOME_KEYRING_CFLAGS) \
242 ++ $(LIBSECRET_CFLAGS) \
243 + -D_BSD_SOURCE
244 +
245 + gtkbuilderdir = $(plugindatadir)
246 +diff --git a/plugins/audioscrobbler/rb-audioscrobbler-radio-source.c b/plugins/audioscrobbler/rb-audioscrobbler-radio-source.c
247 +index 6f5f3cf..9735537 100644
248 +--- a/plugins/audioscrobbler/rb-audioscrobbler-radio-source.c
249 ++++ b/plugins/audioscrobbler/rb-audioscrobbler-radio-source.c
250 +@@ -35,8 +35,8 @@
251 + #include <glib/gi18n.h>
252 + #include <glib/gstdio.h>
253 +
254 +-#ifdef WITH_GNOME_KEYRING
255 +-#include <gnome-keyring.h>
256 ++#ifdef WITH_LIBSECRET
257 ++#include <libsecret/secret.h>
258 + #endif
259 +
260 + #include <totem-pl-parser.h>
261 +@@ -1054,28 +1054,33 @@ old_api_shake_hands (RBAudioscrobblerRadioSource *source)
262 + g_free (password_hash);
263 + g_free (msg_url);
264 + } else {
265 +-#ifdef WITH_GNOME_KEYRING
266 +- GnomeKeyringResult result;
267 ++#ifdef WITH_LIBSECRET
268 + char *password;
269 ++ GError *error = NULL;
270 +
271 + rb_debug ("attempting to retrieve password from keyring");
272 +- result = gnome_keyring_find_password_sync (GNOME_KEYRING_NETWORK_PASSWORD,
273 +- &password,
274 +- "user", source->priv->username,
275 +- "server", rb_audioscrobbler_service_get_name (source->priv->service),
276 +- NULL);
277 ++ password = secret_password_lookup_sync (SECRET_SCHEMA_COMPAT_NETWORK,
278 ++ NULL, &error,
279 ++ "user", source->priv->username,
280 ++ "server", rb_audioscrobbler_service_get_name (source->priv->service),
281 ++ NULL);
282 +
283 +- if (result == GNOME_KEYRING_RESULT_OK) {
284 ++ if (password) {
285 + source->priv->old_api_password = g_strdup (password);
286 + rb_debug ("password found. shaking hands");
287 + old_api_shake_hands (source);
288 + } else {
289 +- rb_debug ("no password found");
290 ++ if (error) {
291 ++ rb_debug ("unable to lookup password: %s", error->message);
292 ++ g_error_free (error);
293 ++ } else {
294 ++ rb_debug ("no password found");
295 ++ }
296 + #endif
297 + rb_debug ("cannot shake hands. asking user for password");
298 + display_password_info_bar (source);
299 + source->priv->is_busy = FALSE;
300 +-#ifdef WITH_GNOME_KEYRING
301 ++#ifdef WITH_LIBSECRET
302 + }
303 + #endif
304 + }
305 +@@ -1277,7 +1282,7 @@ password_info_bar_response_cb (GtkInfoBar *info_bar,
306 + g_free (source->priv->old_api_password);
307 + source->priv->old_api_password = g_strdup (gtk_entry_get_text (GTK_ENTRY (source->priv->password_info_bar_entry)));
308 +
309 +-#ifdef WITH_GNOME_KEYRING
310 ++#ifdef WITH_LIBSECRET
311 + /* save the new password */
312 + char *password_desc;
313 +
314 +@@ -1285,13 +1290,14 @@ password_info_bar_response_cb (GtkInfoBar *info_bar,
315 + rb_audioscrobbler_service_get_name (source->priv->service));
316 +
317 + rb_debug ("saving password to keyring");
318 +- gnome_keyring_store_password_sync (GNOME_KEYRING_NETWORK_PASSWORD,
319 +- GNOME_KEYRING_DEFAULT,
320 +- password_desc,
321 +- source->priv->old_api_password,
322 +- "user", source->priv->username,
323 +- "server", rb_audioscrobbler_service_get_name (source->priv->service),
324 +- NULL);
325 ++ secret_password_store_sync (SECRET_SCHEMA_COMPAT_NETWORK,
326 ++ NULL,
327 ++ password_desc,
328 ++ source->priv->old_api_password,
329 ++ NULL, NULL,
330 ++ "user", source->priv->username,
331 ++ "server", rb_audioscrobbler_service_get_name (source->priv->service),
332 ++ NULL);
333 +
334 + g_free (password_desc);
335 + #endif
336 +diff --git a/plugins/daap/Makefile.am b/plugins/daap/Makefile.am
337 +index b950bef..f4bb907 100644
338 +--- a/plugins/daap/Makefile.am
339 ++++ b/plugins/daap/Makefile.am
340 +@@ -63,9 +63,9 @@ INCLUDES = \
341 + $(RHYTHMBOX_CFLAGS) \
342 + -D_BSD_SOURCE
343 +
344 +-if USE_GNOME_KEYRING
345 +-libdaap_la_LIBADD += $(GNOME_KEYRING_LIBS)
346 +-INCLUDES += $(GNOME_KEYRING_CFLAGS)
347 ++if USE_LIBSECRET
348 ++libdaap_la_LIBADD += $(LIBSECRET_LIBS)
349 ++INCLUDES += $(LIBSECRET_CFLAGS)
350 + endif
351 +
352 + gtkbuilderdir = $(plugindatadir)
353 +diff --git a/plugins/daap/rb-daap-source.c b/plugins/daap/rb-daap-source.c
354 +index fb034f9..75e0dc4 100644
355 +--- a/plugins/daap/rb-daap-source.c
356 ++++ b/plugins/daap/rb-daap-source.c
357 +@@ -35,8 +35,8 @@
358 + #include <glib/gi18n.h>
359 + #include <gtk/gtk.h>
360 +
361 +-#ifdef WITH_GNOME_KEYRING
362 +-#include <gnome-keyring.h>
363 ++#ifdef WITH_LIBSECRET
364 ++#include <libsecret/secret.h>
365 + #endif
366 +
367 + #include "rhythmdb.h"
368 +@@ -394,31 +394,36 @@ mount_op_reply_cb (GMountOperation *op,
369 + AuthData *auth_data)
370 + {
371 + const char *password;
372 +- gchar *keyring;
373 +-#ifdef WITH_GNOME_KEYRING
374 +- guint32 item_id;
375 ++#ifdef WITH_LIBSECRET
376 ++ gchar *label;
377 ++ gchar *collection = NULL;
378 + #endif
379 +
380 + rb_debug ("mount op reply: %d", result);
381 + password = g_mount_operation_get_password (op);
382 +
383 +-#ifdef WITH_GNOME_KEYRING
384 ++#ifdef WITH_LIBSECRET
385 + switch (g_mount_operation_get_password_save (op)) {
386 + case G_PASSWORD_SAVE_NEVER:
387 + break;
388 +
389 + case G_PASSWORD_SAVE_FOR_SESSION:
390 +- keyring = "session";
391 ++ collection = SECRET_COLLECTION_SESSION;
392 + /* fall through */
393 +
394 + case G_PASSWORD_SAVE_PERMANENTLY:
395 +- gnome_keyring_set_network_password_sync (keyring,
396 +- NULL,
397 +- "DAAP", auth_data->name,
398 +- NULL, "daap",
399 +- NULL, 0,
400 ++ label = g_strdup_printf ("Rhythmbox DAAP password for %s", auth_data->name);
401 ++ secret_password_store_sync (SECRET_SCHEMA_COMPAT_NETWORK,
402 ++ collection,
403 ++ label,
404 + password,
405 +- &item_id);
406 ++ NULL,
407 ++ NULL,
408 ++ "domain", "DAAP",
409 ++ "server", auth_data->name,
410 ++ "protocol", "daap",
411 ++ NULL);
412 ++ g_free (label);
413 + break;
414 +
415 + default:
416 +@@ -443,7 +448,11 @@ mount_op_reply_cb (GMountOperation *op,
417 + }
418 +
419 + static void
420 +-ask_password (RBDAAPSource *source, const char *name, const char *keyring, SoupSession *session, SoupMessage *msg, SoupAuth *auth)
421 ++ask_password (RBDAAPSource *source,
422 ++ const char *name,
423 ++ SoupSession *session,
424 ++ SoupMessage *msg,
425 ++ SoupAuth *auth)
426 + {
427 + GtkWindow *parent;
428 + GMountOperation *mount_op;
429 +@@ -465,10 +474,8 @@ ask_password (RBDAAPSource *source, const char *name, const char *keyring, SoupS
430 + g_signal_connect (mount_op, "reply", G_CALLBACK (mount_op_reply_cb), auth_data);
431 +
432 + flags = G_ASK_PASSWORD_NEED_PASSWORD;
433 +-#ifdef WITH_GNOME_KEYRING
434 +- if (gnome_keyring_is_available ()) {
435 +- flags |= G_ASK_PASSWORD_SAVING_SUPPORTED;
436 +- }
437 ++#ifdef WITH_LIBSECRET
438 ++ flags |= G_ASK_PASSWORD_SAVING_SUPPORTED;
439 + #endif
440 + message = g_strdup_printf (_("The music share '%s' requires a password to connect"), name);
441 + g_signal_emit_by_name (mount_op, "ask-password", message, NULL, "DAAP", flags);
442 +@@ -485,44 +492,31 @@ connection_auth_cb (DMAPConnection *connection,
443 + RBDAAPSource *source)
444 + {
445 + gchar *password = NULL;
446 +-#ifdef WITH_GNOME_KEYRING
447 +- GnomeKeyringResult keyringret;
448 +- gchar *keyring;
449 +- GList *list = NULL;
450 ++#ifdef WITH_LIBSECRET
451 ++ GError *error = NULL;
452 +
453 +- keyring = NULL;
454 + if (!source->priv->tried_password) {
455 +- gnome_keyring_get_default_keyring_sync (&keyring);
456 +- keyringret = gnome_keyring_find_network_password_sync (
457 +- NULL,
458 +- "DAAP", name,
459 +- NULL, "daap",
460 +- NULL, 0, &list);
461 +- } else {
462 +- keyringret = GNOME_KEYRING_RESULT_CANCELLED;
463 ++ password = secret_password_lookup_sync (SECRET_SCHEMA_COMPAT_NETWORK,
464 ++ NULL, &error,
465 ++ "domain", "DAAP",
466 ++ "server", name,
467 ++ "protocol", "daap",
468 ++ NULL);
469 + }
470 +
471 +- if (keyringret == GNOME_KEYRING_RESULT_OK) {
472 +- GnomeKeyringNetworkPasswordData *pwd_data;
473 +-
474 +- if (list != NULL) {
475 +- pwd_data = (GnomeKeyringNetworkPasswordData*)list->data;
476 +- password = g_strdup (pwd_data->password);
477 +- }
478 ++ if (!error)
479 + source->priv->tried_password = TRUE;
480 +- }
481 ++ else
482 ++ g_error_free (error);
483 +
484 + if (password == NULL) {
485 +- ask_password (source, name, keyring, session, msg, auth);
486 ++ ask_password (source, name, session, msg, auth);
487 + } else {
488 + dmap_connection_authenticate_message (connection, session, msg, auth, password);
489 + }
490 +
491 +- if (list)
492 +- gnome_keyring_network_password_list_free (list);
493 +- g_free (keyring);
494 + #else
495 +- ask_password (source, name, NULL, session, msg, auth);
496 ++ ask_password (source, name, session, msg, auth);
497 + #endif
498 + }
499 +
500 +--
501 +1.7.12.4
502 +
503
504 diff --git a/media-sound/rhythmbox/rhythmbox-9999.ebuild b/media-sound/rhythmbox/rhythmbox-9999.ebuild
505 index 03d4b2f..ecb64c2 100644
506 --- a/media-sound/rhythmbox/rhythmbox-9999.ebuild
507 +++ b/media-sound/rhythmbox/rhythmbox-9999.ebuild
508 @@ -18,8 +18,8 @@ HOMEPAGE="http://www.rhythmbox.org/"
509
510 LICENSE="GPL-2"
511 SLOT="0"
512 -IUSE="cdr daap dbus doc gnome-keyring html ipod libnotify lirc mtp nsplugin
513 -+python test +udev upnp-av visualizer webkit zeitgeist"
514 +IUSE="cdr daap dbus doc keyring html ipod libnotify lirc mtp nsplugin +python
515 +test +udev upnp-av visualizer webkit zeitgeist"
516 if [[ ${PV} = 9999 ]]; then
517 KEYWORDS=""
518 else
519 @@ -36,7 +36,7 @@ REQUIRED_USE="
520 COMMON_DEPEND=">=dev-libs/glib-2.32.0:2
521 dev-libs/json-glib
522 >=dev-libs/libxml2-2.7.8:2
523 - >=x11-libs/gtk+-3.4:3[introspection]
524 + >=x11-libs/gtk+-3.6:3[introspection]
525 >=x11-libs/gdk-pixbuf-2.18.0:2
526 >=dev-libs/gobject-introspection-0.10.0
527 >=dev-libs/libpeas-0.7.3[gtk,python?]
528 @@ -58,7 +58,7 @@ COMMON_DEPEND=">=dev-libs/glib-2.32.0:2
529 >=net-libs/libdmapsharing-2.9.16:3.0
530 >=net-dns/avahi-0.6
531 media-plugins/gst-plugins-soup:1.0 )
532 - gnome-keyring? ( >=gnome-base/gnome-keyring-0.4.9 )
533 + keyring? ( app-crypt/libsecret )
534 html? ( >=net-libs/webkit-gtk-1.3.9:3 )
535 libnotify? ( >=x11-libs/libnotify-0.7.0 )
536 lirc? ( app-misc/lirc )
537 @@ -87,7 +87,7 @@ RDEPEND="${COMMON_DEPEND}
538 x11-libs/pango[introspection]
539
540 dbus? ( sys-apps/dbus )
541 - gnome-keyring? ( gnome-base/libgnome-keyring[introspection] )
542 + keyring? ( >=app-crypt/libsecret-0.13[introspection] )
543 webkit? (
544 dev-python/mako
545 >=net-libs/webkit-gtk-1.3.9:3[introspection] ) )
546 @@ -130,7 +130,7 @@ pkg_setup() {
547 $(use_enable upnp-av grilo)
548 $(use_with cdr brasero)
549 $(use_with daap mdns avahi)
550 - $(use_with gnome-keyring)
551 + $(use_with keyring)
552 $(use_with html webkit)
553 $(use_with ipod)
554 $(use_with mtp)
555 @@ -141,6 +141,9 @@ pkg_setup() {
556
557 src_prepare() {
558 gnome2_src_prepare
559 + # https://bugzilla.gnome.org/show_bug.cgi?id=694981
560 + epatch "${FILESDIR}/${PN}-port-to-libsecret.patch"
561 + epatch "${FILESDIR}/${PN}-port-magnatune-to-libsecret.patch"
562 echo > py-compile
563 }