summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPacho Ramos <pacho@gentoo.org>2014-03-16 14:41:07 +0000
committerPacho Ramos <pacho@gentoo.org>2014-03-16 14:41:07 +0000
commit3f07088122817b7b78d1df673ac090b64d772fa7 (patch)
treefafabf04cd40f86ce05cca84c97de7cef31f9e66 /mail-client
parentDrop broken version (diff)
downloadgentoo-2-3f07088122817b7b78d1df673ac090b64d772fa7.tar.gz
gentoo-2-3f07088122817b7b78d1df673ac090b64d772fa7.tar.bz2
gentoo-2-3f07088122817b7b78d1df673ac090b64d772fa7.zip
Apply some fixes from upstream 3.8 branch that also solves crash with IMAP folder creation (#504062 by Jaroslaw Strauchmann)
(Portage version: 2.2.8-r1/cvs/Linux x86_64, signed Manifest commit with key A188FBD4)
Diffstat (limited to 'mail-client')
-rw-r--r--mail-client/evolution/ChangeLog11
-rw-r--r--mail-client/evolution/evolution-3.10.4-r1.ebuild (renamed from mail-client/evolution/evolution-3.10.3.ebuild)13
-rw-r--r--mail-client/evolution/files/evolution-3.10.4-imap-crash.patch40
-rw-r--r--mail-client/evolution/files/evolution-3.10.4-main-ui.patch68
-rw-r--r--mail-client/evolution/files/evolution-3.10.4-nntp-outbox.patch77
5 files changed, 206 insertions, 3 deletions
diff --git a/mail-client/evolution/ChangeLog b/mail-client/evolution/ChangeLog
index 04a1b6f07e85..451a702f6062 100644
--- a/mail-client/evolution/ChangeLog
+++ b/mail-client/evolution/ChangeLog
@@ -1,6 +1,15 @@
# ChangeLog for mail-client/evolution
# Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/mail-client/evolution/ChangeLog,v 1.416 2014/03/09 12:01:21 pacho Exp $
+# $Header: /var/cvsroot/gentoo-x86/mail-client/evolution/ChangeLog,v 1.417 2014/03/16 14:41:07 pacho Exp $
+
+*evolution-3.10.4-r1 (16 Mar 2014)
+
+ 16 Mar 2014; Pacho Ramos <pacho@gentoo.org> +evolution-3.10.4-r1.ebuild,
+ +files/evolution-3.10.4-imap-crash.patch,
+ +files/evolution-3.10.4-main-ui.patch,
+ +files/evolution-3.10.4-nntp-outbox.patch, -evolution-3.10.3.ebuild:
+ Apply some fixes from upstream 3.8 branch that also solves crash with IMAP
+ folder creation (#504062 by Jaroslaw Strauchmann)
09 Mar 2014; Pacho Ramos <pacho@gentoo.org> evolution-3.10.4.ebuild:
x86 stable, bug 499954
diff --git a/mail-client/evolution/evolution-3.10.3.ebuild b/mail-client/evolution/evolution-3.10.4-r1.ebuild
index 95daa7da0e59..8f4c3f13e6f2 100644
--- a/mail-client/evolution/evolution-3.10.3.ebuild
+++ b/mail-client/evolution/evolution-3.10.4-r1.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/mail-client/evolution/evolution-3.10.3.ebuild,v 1.3 2014/01/21 22:57:04 eva Exp $
+# $Header: /var/cvsroot/gentoo-x86/mail-client/evolution/evolution-3.10.4-r1.ebuild,v 1.1 2014/03/16 14:41:07 pacho Exp $
EAPI="5"
GCONF_DEBUG="no"
@@ -9,7 +9,7 @@ GNOME2_LA_PUNT="yes"
inherit eutils flag-o-matic readme.gentoo gnome2 #autotools
DESCRIPTION="Integrated mail, addressbook and calendaring functionality"
-HOMEPAGE="https://live.gnome.org/Evolution http://projects.gnome.org/evolution/"
+HOMEPAGE="https://wiki.gnome.org/Apps/Evolution"
# Note: explicitly "|| ( LGPL-2 LGPL-3 )", not "LGPL-2+".
LICENSE="|| ( LGPL-2 LGPL-3 ) CC-BY-SA-3.0 FDL-1.3+ OPENLDAP"
@@ -100,6 +100,15 @@ src_prepare() {
DOCS="AUTHORS ChangeLog* HACKING MAINTAINERS NEWS* README"
+ # Run EMailFormatter in the main/UI thread (from 3.8 branch)
+ epatch "${FILESDIR}/${P}-main-ui.patch"
+
+ # NNTP Messages are silently dropped from Outbox (from 3.8 branch)
+ epatch "${FILESDIR}/${P}-nntp-outbox.patch"
+
+ # Crash creating a new folder (from 3.8 branch)
+ epatch "${FILESDIR}/${P}-imap-crash.patch"
+
#eautoreconf # See https://bugzilla.gnome.org/701904
gnome2_src_prepare
diff --git a/mail-client/evolution/files/evolution-3.10.4-imap-crash.patch b/mail-client/evolution/files/evolution-3.10.4-imap-crash.patch
new file mode 100644
index 000000000000..4d9d59961a68
--- /dev/null
+++ b/mail-client/evolution/files/evolution-3.10.4-imap-crash.patch
@@ -0,0 +1,40 @@
+From 5e4b28e2fae285fa632ab189707489e0df8d79aa Mon Sep 17 00:00:00 2001
+From: Fabiano Fidêncio <fidencio@redhat.com>
+Date: Tue, 21 Jan 2014 14:48:54 +0000
+Subject: Bug #722698 - Crash creating a new folder
+
+---
+diff --git a/mail/em-folder-tree.c b/mail/em-folder-tree.c
+index b15041a..cd7f67e 100644
+--- a/mail/em-folder-tree.c
++++ b/mail/em-folder-tree.c
+@@ -1108,15 +1108,27 @@ folder_tree_dispose (GObject *object)
+ {
+ EMFolderTreePrivate *priv;
+ GtkTreeModel *model;
++ GtkTreeSelection *selection;
+
+ priv = EM_FOLDER_TREE_GET_PRIVATE (object);
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (object));
++ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (object));
+
+ if (priv->loaded_row_id != 0) {
+ g_signal_handler_disconnect (model, priv->loaded_row_id);
+ priv->loaded_row_id = 0;
+ }
+
++ if (priv->loading_row_id != 0) {
++ g_signal_handler_disconnect (model, priv->loading_row_id);
++ priv->loading_row_id = 0;
++ }
++
++ if (priv->selection_changed_handler_id != 0) {
++ g_signal_handler_disconnect (selection, priv->selection_changed_handler_id);
++ priv->selection_changed_handler_id = 0;
++ }
++
+ if (priv->autoscroll_id != 0) {
+ g_source_remove (priv->autoscroll_id);
+ priv->autoscroll_id = 0;
+--
+cgit v0.9.2
diff --git a/mail-client/evolution/files/evolution-3.10.4-main-ui.patch b/mail-client/evolution/files/evolution-3.10.4-main-ui.patch
new file mode 100644
index 000000000000..086fdad0b50e
--- /dev/null
+++ b/mail-client/evolution/files/evolution-3.10.4-main-ui.patch
@@ -0,0 +1,68 @@
+From 37a95e0e6b74fa9fe1692c788983142d8d4774d4 Mon Sep 17 00:00:00 2001
+From: Milan Crha <mcrha@redhat.com>
+Date: Mon, 10 Feb 2014 14:59:24 +0000
+Subject: Bug #724023 - Run EMailFormatter in the main/UI thread
+
+Any GtkWidget creation or manipulation should be done exclusively
+from the main/UI thread, thus make sure it is done that way.
+Of course, evolution can freeze for a little time (depends on the message
+size), until its formatting is done. It's unnoticeable with usual messages.
+---
+diff --git a/em-format/e-mail-part-attachment-bar.c b/em-format/e-mail-part-attachment-bar.c
+index 5cebd9b..57f49be 100644
+--- a/em-format/e-mail-part-attachment-bar.c
++++ b/em-format/e-mail-part-attachment-bar.c
+@@ -60,12 +60,7 @@ e_mail_part_attachment_bar_class_init (EMailPartAttachmentBarClass *class)
+ static void
+ e_mail_part_attachment_bar_init (EMailPartAttachmentBar *part)
+ {
+- GtkTreeModel *tree_model;
+-
+ part->priv = E_MAIL_PART_ATTACHMENT_BAR_GET_PRIVATE (part);
+-
+- tree_model = e_attachment_store_new ();
+- part->priv->store = E_ATTACHMENT_STORE (tree_model);
+ }
+
+ EMailPart *
+@@ -84,6 +79,18 @@ e_mail_part_attachment_bar_get_store (EMailPartAttachmentBar *part)
+ {
+ g_return_val_if_fail (E_IS_MAIL_PART_ATTACHMENT_BAR (part), NULL);
+
++ if (!part->priv->store) {
++ GtkTreeModel *tree_model;
++
++ /* Create the store only on demand. The EMailParser runs in a dedicated
++ thread, but the EAttachmentStore is a GtkWidget descendant, which should
++ be manipulated only from the main/UI thread, thus postpone its creating
++ until it's really needed, which might be during the EMailFormatter run,
++ which runs from the main/UI thread. */
++ tree_model = e_attachment_store_new ();
++ part->priv->store = E_ATTACHMENT_STORE (tree_model);
++ }
++
+ return part->priv->store;
+ }
+
+diff --git a/mail/e-mail-request.c b/mail/e-mail-request.c
+index bfbedc3..615bce3 100644
+--- a/mail/e-mail-request.c
++++ b/mail/e-mail-request.c
+@@ -365,9 +365,12 @@ mail_request_send_async (SoupRequest *request,
+ simple, handle_contact_photo_request,
+ G_PRIORITY_DEFAULT, cancellable);
+ } else {
+- g_simple_async_result_run_in_thread (
+- simple, handle_mail_request,
+- G_PRIORITY_DEFAULT, cancellable);
++ /* Process e-mail mail requests in this thread, which should be
++ the main/UI thread, because any EMailFormatter can create
++ GtkWidget-s, or manipulate with them, which should be always
++ done in the main/UI thread. */
++ handle_mail_request (simple, G_OBJECT (request), cancellable);
++ g_simple_async_result_complete_in_idle (simple);
+ }
+
+ g_object_unref (simple);
+--
+cgit v0.9.2
diff --git a/mail-client/evolution/files/evolution-3.10.4-nntp-outbox.patch b/mail-client/evolution/files/evolution-3.10.4-nntp-outbox.patch
new file mode 100644
index 000000000000..574591e098f8
--- /dev/null
+++ b/mail-client/evolution/files/evolution-3.10.4-nntp-outbox.patch
@@ -0,0 +1,77 @@
+From 9de8f573e9eba07a096c7f97f97bb5ac876278c8 Mon Sep 17 00:00:00 2001
+From: Milan Crha <mcrha@redhat.com>
+Date: Mon, 10 Feb 2014 16:57:28 +0000
+Subject: Bug #722041 - NNTP Messages are silently dropped from Outbox
+
+---
+diff --git a/libemail-engine/mail-ops.c b/libemail-engine/mail-ops.c
+index 4f3dbd3..4db5dae 100644
+--- a/libemail-engine/mail-ops.c
++++ b/libemail-engine/mail-ops.c
+@@ -682,22 +682,18 @@ mail_send_message (struct _send_queue_msg *m,
+ info = camel_message_info_new (NULL);
+ camel_message_info_set_flags (info, CAMEL_MESSAGE_SEEN, ~0);
+
+- for (header = xev; header; header = header->next) {
++ for (header = xev; header && !local_error; header = header->next) {
+ gchar *uri;
+
+ if (strcmp (header->name, "X-Evolution-PostTo") != 0)
+ continue;
+
+- /* TODO: don't lose errors */
+-
+ uri = g_strstrip (g_strdup (header->value));
+- /* FIXME Not passing a GCancellable or GError here. */
+ folder = e_mail_session_uri_to_folder_sync (
+- m->session, uri, 0, NULL, NULL);
++ m->session, uri, 0, cancellable, &local_error);
+ if (folder != NULL) {
+- /* FIXME Not passing a GCancellable or GError here. */
+ camel_folder_append_message_sync (
+- folder, message, info, NULL, NULL, NULL);
++ folder, message, info, NULL, cancellable, &local_error);
+ g_object_unref (folder);
+ folder = NULL;
+ }
+@@ -707,7 +703,7 @@ mail_send_message (struct _send_queue_msg *m,
+ /* post process */
+ mail_tool_restore_xevolution_headers (message, xev);
+
+- if (driver) {
++ if (local_error == NULL && driver) {
+ camel_filter_driver_filter_message (
+ driver, message, info, NULL, NULL,
+ NULL, "", cancellable, &local_error);
+@@ -735,10 +731,9 @@ mail_send_message (struct _send_queue_msg *m,
+ }
+ }
+
+- if (provider == NULL
+- || !(provider->flags & CAMEL_PROVIDER_DISABLE_SENT_FOLDER)) {
++ if (local_error == NULL && (provider == NULL
++ || !(provider->flags & CAMEL_PROVIDER_DISABLE_SENT_FOLDER))) {
+ CamelFolder *local_sent_folder;
+- GError *local_error = NULL;
+
+ local_sent_folder = e_mail_session_get_local_folder (
+ m->session, E_MAIL_LOCAL_FOLDER_SENT);
+@@ -798,6 +793,7 @@ mail_send_message (struct _send_queue_msg *m,
+ _("Failed to append to "
+ "local 'Sent' folder: %s"),
+ local_error->message);
++ g_clear_error (&local_error);
+ }
+ }
+ }
+@@ -836,7 +832,7 @@ mail_send_message (struct _send_queue_msg *m,
+ camel_folder_synchronize_sync (queue, FALSE, NULL, NULL);
+ }
+
+- if (err->len > 0) {
++ if (local_error == NULL && err->len > 0) {
+ /* set the culmulative exception report */
+ g_set_error (
+ &local_error, CAMEL_ERROR,
+--
+cgit v0.9.2