r39580 - in /desktop/unstable/gnome-online-accounts/debian: ./ patches/
jbicha-guest at users.alioth.debian.org
jbicha-guest at users.alioth.debian.org
Thu Sep 19 16:14:01 UTC 2013
Author: jbicha-guest
Date: Thu Sep 19 16:14:01 2013
New Revision: 39580
URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=39580
Log:
* debian/patches/drop-google-password-interface*.patch:
- Now that Google CalDav supports OAuth v2 for CalDav and
evolution-data-server has been updated for it, drop the
password-based UI that didn't work with Google Two-Factor
Authentication anyway (patches backported from git)
* debian/patches/revert-deadlock-fix.patch:
- Backport revert of 3.8.3 commit that could cause 100% cpu use
Added:
desktop/unstable/gnome-online-accounts/debian/patches/drop-google-password-interface-1.patch
desktop/unstable/gnome-online-accounts/debian/patches/drop-google-password-interface-2.patch
desktop/unstable/gnome-online-accounts/debian/patches/drop-google-password-interface-3.patch
desktop/unstable/gnome-online-accounts/debian/patches/drop-google-password-interface-4.patch
desktop/unstable/gnome-online-accounts/debian/patches/revert-deadlock-fix.patch
Modified:
desktop/unstable/gnome-online-accounts/debian/changelog
desktop/unstable/gnome-online-accounts/debian/patches/series
Modified: desktop/unstable/gnome-online-accounts/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gnome-online-accounts/debian/changelog?rev=39580&op=diff
==============================================================================
--- desktop/unstable/gnome-online-accounts/debian/changelog [utf-8] (original)
+++ desktop/unstable/gnome-online-accounts/debian/changelog [utf-8] Thu Sep 19 16:14:01 2013
@@ -1,3 +1,15 @@
+gnome-online-accounts (3.8.3-2) UNRELEASED; urgency=low
+
+ * debian/patches/drop-google-password-interface*.patch:
+ - Now that Google CalDav supports OAuth v2 for CalDav and
+ evolution-data-server has been updated for it, drop the
+ password-based UI that didn't work with Google Two-Factor
+ Authentication anyway (patches backported from git)
+ * debian/patches/revert-deadlock-fix.patch:
+ - Backport revert of 3.8.3 commit that could cause 100% cpu use
+
+ -- Jeremy Bicha <jbicha at ubuntu.com> Thu, 19 Sep 2013 12:11:59 -0400
+
gnome-online-accounts (3.8.3-1) unstable; urgency=low
[ Jeremy Bicha ]
Added: desktop/unstable/gnome-online-accounts/debian/patches/drop-google-password-interface-1.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gnome-online-accounts/debian/patches/drop-google-password-interface-1.patch?rev=39580&op=file
==============================================================================
--- desktop/unstable/gnome-online-accounts/debian/patches/drop-google-password-interface-1.patch (added)
+++ desktop/unstable/gnome-online-accounts/debian/patches/drop-google-password-interface-1.patch [utf-8] Thu Sep 19 16:14:01 2013
@@ -0,0 +1,39 @@
+From 9182fb378614abb2ff0245fe71a753f22eaaa906 Mon Sep 17 00:00:00 2001
+From: Debarshi Ray <debarshir at gnome.org>
+Date: Tue, 11 Jun 2013 14:58:21 +0000
+Subject: google: Bump credentials generation
+
+Access to the following were turned on in the Google APIs Console:
+ - Calendar API
+ - Google Calendar CalDAV API
+ - Google Contacts CardDAV API
+
+Of these, only the last two are new. We were already requesting the
+scope for Calendar API, but looks like the APIs Console is the way
+to go now. Interestingly the APIs Console does not list all the other
+services that we are interested in, or it is does but is not obvious
+to me.
+
+In any case we need access to their new CalDAV API which works with
+OAuth2 because that would let us work with 2-factor authenticated
+accounts again.
+
+See: https://bugzilla.gnome.org/show_bug.cgi?id=686804
+ https://bugzilla.gnome.org/show_bug.cgi?id=688364
+---
+(limited to 'src/goabackend/goagoogleprovider.c')
+
+diff --git a/src/goabackend/goagoogleprovider.c b/src/goabackend/goagoogleprovider.c
+index 8271711..79f5f73 100644
+--- a/src/goabackend/goagoogleprovider.c
++++ b/src/goabackend/goagoogleprovider.c
+@@ -148,7 +148,7 @@ get_scope (GoaOAuth2Provider *provider)
+ static guint
+ get_credentials_generation (GoaProvider *provider)
+ {
+- return 3;
++ return 4;
+ }
+
+ static const gchar *
+
Added: desktop/unstable/gnome-online-accounts/debian/patches/drop-google-password-interface-2.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gnome-online-accounts/debian/patches/drop-google-password-interface-2.patch?rev=39580&op=file
==============================================================================
--- desktop/unstable/gnome-online-accounts/debian/patches/drop-google-password-interface-2.patch (added)
+++ desktop/unstable/gnome-online-accounts/debian/patches/drop-google-password-interface-2.patch [utf-8] Thu Sep 19 16:14:01 2013
@@ -0,0 +1,74 @@
+From a0fd4cd595bd0fe6eb4015ea9050170319b16546 Mon Sep 17 00:00:00 2001
+From: Debarshi Ray <debarshir at gnome.org>
+Date: Wed, 19 Jun 2013 15:04:38 +0000
+Subject: google: Export CalDAV and CardDAV endpoints
+
+According to:
+https://developers.google.com/google-apps/calendar/caldav/v2/guide/
+https://developers.google.com/google-apps/carddav/
+
+See: https://bugzilla.gnome.org/show_bug.cgi?id=686804
+ https://bugzilla.gnome.org/show_bug.cgi?id=688364
+---
+(limited to 'src/goabackend/goagoogleprovider.c')
+
+diff --git a/src/goabackend/goagoogleprovider.c b/src/goabackend/goagoogleprovider.c
+index 79f5f73..740c08e 100644
+--- a/src/goabackend/goagoogleprovider.c
++++ b/src/goabackend/goagoogleprovider.c
+@@ -385,6 +385,7 @@ build_object (GoaProvider *provider,
+ gboolean contacts_enabled;
+ gboolean chat_enabled;
+ gboolean documents_enabled;
++ const gchar *email_address;
+
+ account = NULL;
+ mail = NULL;
+@@ -419,6 +420,7 @@ build_object (GoaProvider *provider,
+ }
+
+ account = goa_object_get_account (GOA_OBJECT (object));
++ email_address = goa_account_get_identity (account);
+
+ /* Email */
+ mail = goa_object_get_mail (GOA_OBJECT (object));
+@@ -427,8 +429,6 @@ build_object (GoaProvider *provider,
+ {
+ if (mail == NULL)
+ {
+- const gchar *email_address;
+- email_address = goa_account_get_identity (account);
+ mail = goa_mail_skeleton_new ();
+ g_object_set (G_OBJECT (mail),
+ "email-address", email_address,
+@@ -457,8 +457,19 @@ build_object (GoaProvider *provider,
+ {
+ if (calendar == NULL)
+ {
++ gchar *uri_caldav;
++
++ uri_caldav = g_strconcat ("https://apidata.googleusercontent.com/caldav/v2/",
++ email_address,
++ "/user",
++ NULL);
++
+ calendar = goa_calendar_skeleton_new ();
++ g_object_set (G_OBJECT (calendar),
++ "uri", uri_caldav,
++ NULL);
+ goa_object_skeleton_set_calendar (object, calendar);
++ g_free (uri_caldav);
+ }
+ }
+ else
+@@ -475,6 +486,9 @@ build_object (GoaProvider *provider,
+ if (contacts == NULL)
+ {
+ contacts = goa_contacts_skeleton_new ();
++ g_object_set (G_OBJECT (contacts),
++ "uri", "https://www.googleapis.com/.well-known/carddav",
++ NULL);
+ goa_object_skeleton_set_contacts (object, contacts);
+ }
+ }
+
Added: desktop/unstable/gnome-online-accounts/debian/patches/drop-google-password-interface-3.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gnome-online-accounts/debian/patches/drop-google-password-interface-3.patch?rev=39580&op=file
==============================================================================
--- desktop/unstable/gnome-online-accounts/debian/patches/drop-google-password-interface-3.patch (added)
+++ desktop/unstable/gnome-online-accounts/debian/patches/drop-google-password-interface-3.patch [utf-8] Thu Sep 19 16:14:01 2013
@@ -0,0 +1,296 @@
+From 365a5a92909fce8dcdd851b5a2b9caf34e0da926 Mon Sep 17 00:00:00 2001
+From: Debarshi Ray <debarshir at gnome.org>
+Date: Fri, 28 Jun 2013 12:22:07 +0000
+Subject: google: Don't offer a PasswordBased interface
+
+This was a temporary measure back when Google did not support OAuth2
+for CalDAV. Now that they do, we can drop this.
+
+In any case, the workaround didn't work with accounts using 2-factor
+authentication. This will make those people happy.
+
+This reverts 89c335479c1bb8409af8296c99ffea602a28b71f
+
+See: https://bugzilla.gnome.org/show_bug.cgi?id=686804
+ https://bugzilla.gnome.org/show_bug.cgi?id=688364
+---
+(limited to 'src/goabackend/goagoogleprovider.c')
+
+Index: gnome-online-accounts-3.8.2/src/goabackend/goagoogleprovider.c
+===================================================================
+--- gnome-online-accounts-3.8.2.orig/src/goabackend/goagoogleprovider.c 2013-07-10 13:29:35.381448621 -0400
++++ gnome-online-accounts-3.8.2/src/goabackend/goagoogleprovider.c 2013-07-10 13:29:35.377448621 -0400
+@@ -32,8 +32,6 @@
+ #include "goaprovider-priv.h"
+ #include "goaoauth2provider.h"
+ #include "goagoogleprovider.h"
+-#include "goahttpclient.h"
+-#include "goautils.h"
+
+ /**
+ * GoaGoogleProvider:
+@@ -71,8 +69,6 @@
+
+ /* ---------------------------------------------------------------------------------------------------- */
+
+-static const gchar *CALDAV_ENDPOINT = "https://www.google.com/calendar/dav/%s/events/";
+-
+ static const gchar *
+ get_provider_type (GoaProvider *_provider)
+ {
+@@ -310,48 +306,8 @@
+ return ret;
+ }
+
+-static gboolean
+-is_password_node (GoaOAuth2Provider *provider, WebKitDOMHTMLInputElement *element)
+-{
+- gboolean ret;
+- gchar *element_type;
+- gchar *id;
+- gchar *name;
+-
+- element_type = NULL;
+- id = NULL;
+- name = NULL;
+-
+- ret = FALSE;
+-
+- g_object_get (element, "type", &element_type, NULL);
+- if (g_strcmp0 (element_type, "password") != 0)
+- goto out;
+-
+- id = webkit_dom_html_element_get_id (WEBKIT_DOM_HTML_ELEMENT (element));
+- if (g_strcmp0 (id, "Passwd") != 0)
+- goto out;
+-
+- name = webkit_dom_html_input_element_get_name (element);
+- if (g_strcmp0 (name, "Passwd") != 0)
+- goto out;
+-
+- ret = TRUE;
+-
+- out:
+- g_free (element_type);
+- g_free (id);
+- g_free (name);
+- return ret;
+-}
+-
+ /* ---------------------------------------------------------------------------------------------------- */
+
+-static gboolean on_handle_get_password (GoaPasswordBased *interface,
+- GDBusMethodInvocation *invocation,
+- const gchar *id,
+- gpointer user_data);
+-
+ static gboolean
+ build_object (GoaProvider *provider,
+ GoaObjectSkeleton *object,
+@@ -367,7 +323,6 @@
+ GoaContacts *contacts;
+ GoaChat *chat;
+ GoaDocuments *documents;
+- GoaPasswordBased *password_based;
+ gboolean ret;
+ gboolean mail_enabled;
+ gboolean calendar_enabled;
+@@ -394,20 +349,6 @@
+ error))
+ goto out;
+
+- password_based = goa_object_get_password_based (GOA_OBJECT (object));
+- if (password_based == NULL)
+- {
+- password_based = goa_password_based_skeleton_new ();
+- /* Ensure D-Bus method invocations run in their own thread */
+- g_dbus_interface_skeleton_set_flags (G_DBUS_INTERFACE_SKELETON (password_based),
+- G_DBUS_INTERFACE_SKELETON_FLAGS_HANDLE_METHOD_INVOCATIONS_IN_THREAD);
+- goa_object_skeleton_set_password_based (object, password_based);
+- g_signal_connect (password_based,
+- "handle-get-password",
+- G_CALLBACK (on_handle_get_password),
+- NULL);
+- }
+-
+ account = goa_object_get_account (GOA_OBJECT (object));
+ email_address = goa_account_get_identity (account);
+
+@@ -567,103 +508,6 @@
+ /* ---------------------------------------------------------------------------------------------------- */
+
+ static gboolean
+-ensure_credentials_sync (GoaProvider *provider,
+- GoaObject *object,
+- gint *out_expires_in,
+- GCancellable *cancellable,
+- GError **error)
+-{
+- GVariant *credentials;
+- GoaAccount *account;
+- GoaHttpClient *http_client;
+- gboolean ret;
+- const gchar *username;
+- gchar *password;
+- gchar *uri_caldav;
+-
+- credentials = NULL;
+- http_client = NULL;
+- password = NULL;
+- uri_caldav = NULL;
+-
+- ret = FALSE;
+-
+- /* Chain up */
+- if (!GOA_PROVIDER_CLASS (goa_google_provider_parent_class)->ensure_credentials_sync (provider,
+- object,
+- out_expires_in,
+- cancellable,
+- error))
+- goto out;
+-
+- credentials = goa_utils_lookup_credentials_sync (provider,
+- object,
+- cancellable,
+- error);
+- if (credentials == NULL)
+- {
+- if (error != NULL)
+- {
+- (*error)->domain = GOA_ERROR;
+- (*error)->code = GOA_ERROR_NOT_AUTHORIZED;
+- }
+- goto out;
+- }
+-
+- account = goa_object_peek_account (object);
+- username = goa_account_get_presentation_identity (account);
+- uri_caldav = g_strdup_printf (CALDAV_ENDPOINT, username);
+-
+- if (!g_variant_lookup (credentials, "password", "s", &password))
+- {
+- if (error != NULL)
+- {
+- *error = g_error_new (GOA_ERROR,
+- GOA_ERROR_NOT_AUTHORIZED,
+- _("Did not find password with identity `%s' in credentials"),
+- username);
+- }
+- goto out;
+- }
+-
+- http_client = goa_http_client_new ();
+- ret = goa_http_client_check_sync (http_client,
+- uri_caldav,
+- username,
+- password,
+- FALSE,
+- cancellable,
+- error);
+- if (!ret)
+- {
+- if (error != NULL)
+- {
+- g_prefix_error (error,
+- /* Translators: the first %s is the username
+- * (eg., debarshi.ray at gmail.com or rishi), and the
+- * (%s, %d) is the error domain and code.
+- */
+- _("Invalid password with username `%s' (%s, %d): "),
+- username,
+- g_quark_to_string ((*error)->domain),
+- (*error)->code);
+- (*error)->domain = GOA_ERROR;
+- (*error)->code = GOA_ERROR_NOT_AUTHORIZED;
+- }
+- goto out;
+- }
+-
+- out:
+- g_clear_object (&http_client);
+- g_free (password);
+- g_free (uri_caldav);
+- g_clear_pointer (&credentials, (GDestroyNotify) g_variant_unref);
+- return ret;
+-}
+-
+-/* ---------------------------------------------------------------------------------------------------- */
+-
+-static gboolean
+ get_use_mobile_browser (GoaOAuth2Provider *provider)
+ {
+ return TRUE;
+@@ -744,7 +588,6 @@
+ provider_class->get_provider_name = get_provider_name;
+ provider_class->get_provider_group = get_provider_group;
+ provider_class->build_object = build_object;
+- provider_class->ensure_credentials_sync = ensure_credentials_sync;
+ provider_class->show_account = show_account;
+ provider_class->get_credentials_generation = get_credentials_generation;
+
+@@ -758,65 +601,7 @@
+ oauth2_class->get_scope = get_scope;
+ oauth2_class->is_deny_node = is_deny_node;
+ oauth2_class->is_identity_node = is_identity_node;
+- oauth2_class->is_password_node = is_password_node;
+ oauth2_class->get_token_uri = get_token_uri;
+ oauth2_class->get_use_mobile_browser = get_use_mobile_browser;
+ oauth2_class->add_account_key_values = add_account_key_values;
+ }
+-
+-/* ---------------------------------------------------------------------------------------------------- */
+-
+-/* runs in a thread dedicated to handling @invocation */
+-static gboolean
+-on_handle_get_password (GoaPasswordBased *interface,
+- GDBusMethodInvocation *invocation,
+- const gchar *id, /* unused */
+- gpointer user_data)
+-{
+- GoaObject *object;
+- GoaAccount *account;
+- GoaProvider *provider;
+- GError *error;
+- GVariant *credentials;
+- const gchar *identity;
+- gchar *password;
+-
+- /* TODO: maybe log what app is requesting access */
+-
+- password = NULL;
+- credentials = NULL;
+-
+- object = GOA_OBJECT (g_dbus_interface_get_object (G_DBUS_INTERFACE (interface)));
+- account = goa_object_peek_account (object);
+- identity = goa_account_get_identity (account);
+- provider = goa_provider_get_for_provider_type (goa_account_get_provider_type (account));
+-
+- error = NULL;
+- credentials = goa_utils_lookup_credentials_sync (provider,
+- object,
+- NULL, /* GCancellable* */
+- &error);
+- if (credentials == NULL)
+- {
+- g_dbus_method_invocation_take_error (invocation, error);
+- goto out;
+- }
+-
+- if (!g_variant_lookup (credentials, "password", "s", &password))
+- {
+- g_dbus_method_invocation_return_error (invocation,
+- GOA_ERROR,
+- GOA_ERROR_FAILED, /* TODO: more specific */
+- _("Did not find password with identity `%s' in credentials"),
+- identity);
+- goto out;
+- }
+-
+- goa_password_based_complete_get_password (interface, invocation, password);
+-
+- out:
+- g_free (password);
+- g_clear_pointer (&credentials, (GDestroyNotify) g_variant_unref);
+- g_object_unref (provider);
+- return TRUE; /* invocation was handled */
+-}
Added: desktop/unstable/gnome-online-accounts/debian/patches/drop-google-password-interface-4.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gnome-online-accounts/debian/patches/drop-google-password-interface-4.patch?rev=39580&op=file
==============================================================================
--- desktop/unstable/gnome-online-accounts/debian/patches/drop-google-password-interface-4.patch (added)
+++ desktop/unstable/gnome-online-accounts/debian/patches/drop-google-password-interface-4.patch [utf-8] Thu Sep 19 16:14:01 2013
@@ -0,0 +1,47 @@
+From 2c93558da1e85bbf8c17715820344e7eb708f274 Mon Sep 17 00:00:00 2001
+From: Patrick Ohly <patrick.ohly at intel.com>
+Date: Wed, 11 Sep 2013 14:40:53 +0000
+Subject: google: Add the OAuth2 scope for CardDAV
+
+Turns out that the scope for accessing CardDAV needs to be specified
+in the sources too. Having it only in the APIs Console is not enough.
+Otherwise Google rejects access to the CardDAV resources with a 401
+"AuthSub challenge".
+
+As far as we can make out this is undocumented. For some context see:
+9182fb378614abb2ff0245fe71a753f22eaaa906
+
+Fixes: https://bugzilla.gnome.org/707916
+---
+diff --git a/src/goabackend/goagoogleprovider.c b/src/goabackend/goagoogleprovider.c
+index ff85b24..62d2854 100644
+--- a/src/goabackend/goagoogleprovider.c
++++ b/src/goabackend/goagoogleprovider.c
+@@ -123,12 +123,15 @@ get_scope (GoaOAuth2Provider *provider)
+ return /* Read-only access to the user's email address */
+ "https://www.googleapis.com/auth/userinfo.email "
+
+- /* Google Calendar API */
++ /* Google Calendar API (CalDAV and GData) */
+ "https://www.googleapis.com/auth/calendar "
+
+- /* Google Contacts API */
++ /* Google Contacts API (GData) */
+ "https://www.google.com/m8/feeds/ "
+
++ /* Google Contacts API (CardDAV) - undocumented */
++ "https://www.googleapis.com/auth/carddav "
++
+ /* Google Documents List Data API */
+ "https://docs.google.com/feeds/ "
+ "https://docs.googleusercontent.com/ "
+@@ -144,7 +147,7 @@ get_scope (GoaOAuth2Provider *provider)
+ static guint
+ get_credentials_generation (GoaProvider *provider)
+ {
+- return 4;
++ return 5;
+ }
+
+ static const gchar *
+
Added: desktop/unstable/gnome-online-accounts/debian/patches/revert-deadlock-fix.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gnome-online-accounts/debian/patches/revert-deadlock-fix.patch?rev=39580&op=file
==============================================================================
--- desktop/unstable/gnome-online-accounts/debian/patches/revert-deadlock-fix.patch (added)
+++ desktop/unstable/gnome-online-accounts/debian/patches/revert-deadlock-fix.patch [utf-8] Thu Sep 19 16:14:01 2013
@@ -0,0 +1,50 @@
+From 7436669dde08abd5d4c6fe4716f43263b3567161 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode at redhat.com>
+Date: Mon, 16 Sep 2013 01:31:48 +0000
+Subject: Revert "goaidentity: Fix deadlock in goaalarm on_cancelled"
+
+This reverts commit f4c04ad49c29d8f619cb80ef480daa9d4ecdfa38.
+
+It's changes which threads code runs on and is probably causing
+100% cpu issues.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=705395
+---
+diff --git a/src/goaidentity/goaalarm.c b/src/goaidentity/goaalarm.c
+index 9ccb3b6..c8992cd 100644
+--- a/src/goaidentity/goaalarm.c
++++ b/src/goaidentity/goaalarm.c
+@@ -256,31 +256,12 @@ goa_alarm_init (GoaAlarm *self)
+ g_rec_mutex_init (&self->priv->lock);
+ }
+
+-static gboolean
+-async_alarm_cancel_idle_cb (gpointer user_data)
+-{
+- GoaAlarm *self = user_data;
+-
+- clear_scheduled_wakeups (self);
+- return G_SOURCE_REMOVE;
+-}
+-
+ static void
+ on_cancelled (GCancellable *cancellable, gpointer user_data)
+ {
+ GoaAlarm *self = GOA_ALARM (user_data);
+- GMainContext *main_context;
+- GSource *idle_source;
+-
+- main_context = g_main_context_ref_thread_default ();
+
+- idle_source = g_idle_source_new ();
+- g_source_set_priority (idle_source, G_PRIORITY_HIGH_IDLE);
+- g_source_set_callback (idle_source, async_alarm_cancel_idle_cb, g_object_ref (self), g_object_unref);
+- g_source_attach (idle_source, main_context);
+- g_source_unref (idle_source);
+-
+- g_main_context_unref (main_context);
++ clear_scheduled_wakeups (self);
+ }
+
+ static void
+
Modified: desktop/unstable/gnome-online-accounts/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gnome-online-accounts/debian/patches/series?rev=39580&op=diff
==============================================================================
--- desktop/unstable/gnome-online-accounts/debian/patches/series [utf-8] (original)
+++ desktop/unstable/gnome-online-accounts/debian/patches/series [utf-8] Thu Sep 19 16:14:01 2013
@@ -0,0 +1,5 @@
+drop-google-password-interface-1.patch
+drop-google-password-interface-2.patch
+drop-google-password-interface-3.patch
+drop-google-password-interface-4.patch
+revert-deadlock-fix.patch
More information about the pkg-gnome-commits
mailing list