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 |
} |