diff --git a/evolution-3.12.8.tar.xz b/evolution-3.12.8.tar.xz deleted file mode 100644 index 3b98e1b..0000000 --- a/evolution-3.12.8.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6a6996ed350e2bc09ecb63befdbc9cfbd9d1097e0ff77033e9bafd1f7b5a6414 -size 11370556 diff --git a/evolution-3.12.9.tar.xz b/evolution-3.12.9.tar.xz new file mode 100644 index 0000000..a47737e --- /dev/null +++ b/evolution-3.12.9.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:923e6a1e1732ddbb3bd9fe60d5fcfc3b9c1d6ee38b20885f1d243096e6275bf6 +size 11355484 diff --git a/evolution-crash-sending-simultaneous-emails.patch b/evolution-crash-sending-simultaneous-emails.patch new file mode 100644 index 0000000..e570f7b --- /dev/null +++ b/evolution-crash-sending-simultaneous-emails.patch @@ -0,0 +1,250 @@ +From f2a6072d31c1782540e26429a22523437cdb288b Mon Sep 17 00:00:00 2001 +From: Milan Crha +Date: Wed, 10 Dec 2014 10:26:38 +0100 +Subject: Bug 740297 - [SMTP] Crash when sending two messages at once + + +diff --git a/libemail-engine/e-mail-session-utils.c b/libemail-engine/e-mail-session-utils.c +index a248eac..295fe24 100644 +--- a/libemail-engine/e-mail-session-utils.c ++++ b/libemail-engine/e-mail-session-utils.c +@@ -540,14 +540,20 @@ mail_session_send_to_thread (GSimpleAsyncResult *simple, + return; + } + ++ if (!e_mail_session_mark_service_used_sync (session, context->transport, cancellable)) { ++ g_warn_if_fail (g_cancellable_set_error_if_cancelled (cancellable, &error)); ++ g_simple_async_result_take_error (simple, error); ++ return; ++ } ++ + status = camel_service_get_connection_status (context->transport); + if (status != CAMEL_SERVICE_CONNECTED) { + did_connect = TRUE; + +- camel_service_connect_sync ( +- context->transport, cancellable, &error); ++ camel_service_connect_sync (context->transport, cancellable, &error); + + if (error != NULL) { ++ e_mail_session_unmark_service_used (session, context->transport); + g_simple_async_result_take_error (simple, error); + return; + } +@@ -579,6 +585,8 @@ mail_session_send_to_thread (GSimpleAsyncResult *simple, + } + } + ++ e_mail_session_unmark_service_used (session, context->transport); ++ + if (error != NULL) { + g_simple_async_result_take_error (simple, error); + return; +diff --git a/libemail-engine/e-mail-session.c b/libemail-engine/e-mail-session.c +index 5578a78..f54025e 100644 +--- a/libemail-engine/e-mail-session.c ++++ b/libemail-engine/e-mail-session.c +@@ -91,6 +91,10 @@ struct _EMailSessionPrivate { + + guint preparing_flush; + GMutex preparing_flush_lock; ++ ++ GMutex used_services_lock; ++ GCond used_services_cond; ++ GHashTable *used_services; + }; + + struct _AsyncContext { +@@ -956,11 +960,14 @@ mail_session_finalize (GObject *object) + + g_hash_table_destroy (priv->auto_refresh_table); + g_hash_table_destroy (priv->junk_filters); ++ g_hash_table_destroy (priv->used_services); + + g_ptr_array_free (priv->local_folders, TRUE); + g_ptr_array_free (priv->local_folder_uris, TRUE); + + g_mutex_clear (&priv->preparing_flush_lock); ++ g_mutex_clear (&priv->used_services_lock); ++ g_cond_clear (&priv->used_services_cond); + + g_free (mail_data_dir); + g_free (mail_config_dir); +@@ -1799,6 +1806,10 @@ e_mail_session_init (EMailSession *session) + (GDestroyNotify) g_free); + + g_mutex_init (&session->priv->preparing_flush_lock); ++ g_mutex_init (&session->priv->used_services_lock); ++ g_cond_init (&session->priv->used_services_cond); ++ ++ session->priv->used_services = g_hash_table_new (g_direct_hash, g_direct_equal); + } + + EMailSession * +@@ -2367,3 +2378,86 @@ e_mail_session_create_vfolder_context (EMailSession *session) + return class->create_vfolder_context (session); + } + ++static void ++mail_session_wakeup_used_services_cond (GCancellable *cancenllable, ++ EMailSession *session) ++{ ++ g_return_if_fail (E_IS_MAIL_SESSION (session)); ++ ++ /* Use broadcast here, because it's not known which operation had been ++ cancelled, thus rather wake up all of them to retest. */ ++ g_cond_broadcast (&session->priv->used_services_cond); ++} ++ ++/** ++ * e_mail_session_mark_service_used_sync: ++ * @session: an #EMailSession ++ * @service: a #CamelService ++ * @cancellable: (allow none): a #GCancellable, or NULL ++ * ++ * Marks the @service as being used. If it is already in use, then waits ++ * for its release. The only reasons for a failure are either invalid ++ * parameters being passed in the function or the wait being cancelled. ++ * Use e_mail_session_unmark_service_used() to notice the @session that ++ * that the @service is no longer being used by the caller. ++ * ++ * Returns: Whether successfully waited for the @service. ++ * ++ * Since: 3.12.10 ++ **/ ++gboolean ++e_mail_session_mark_service_used_sync (EMailSession *session, ++ CamelService *service, ++ GCancellable *cancellable) ++{ ++ gulong cancelled_id = 0; ++ ++ g_return_val_if_fail (E_IS_MAIL_SESSION (session), FALSE); ++ g_return_val_if_fail (CAMEL_IS_SERVICE (service), FALSE); ++ ++ g_mutex_lock (&session->priv->used_services_lock); ++ ++ if (cancellable) ++ cancelled_id = g_cancellable_connect (cancellable, G_CALLBACK (mail_session_wakeup_used_services_cond), session, NULL); ++ ++ while (!g_cancellable_is_cancelled (cancellable) && ++ g_hash_table_contains (session->priv->used_services, service)) { ++ g_cond_wait (&session->priv->used_services_cond, &session->priv->used_services_lock); ++ } ++ ++ if (cancelled_id) ++ g_cancellable_disconnect (cancellable, cancelled_id); ++ ++ if (!g_cancellable_is_cancelled (cancellable)) ++ g_hash_table_insert (session->priv->used_services, service, GINT_TO_POINTER (1)); ++ ++ g_mutex_unlock (&session->priv->used_services_lock); ++ ++ return !g_cancellable_is_cancelled (cancellable); ++} ++ ++/** ++ * e_mail_session_unmark_service_used: ++ * @session: an #EMailSession ++ * @service: a #CamelService ++ * ++ * Frees a "use lock" on the @service, thus it can be used by others. If anything ++ * is waiting for it in e_mail_session_mark_service_used_sync(), then it is woken up. ++ * ++ * Since: 3.12.10 ++ **/ ++void ++e_mail_session_unmark_service_used (EMailSession *session, ++ CamelService *service) ++{ ++ g_return_if_fail (E_IS_MAIL_SESSION (session)); ++ g_return_if_fail (CAMEL_IS_SERVICE (service)); ++ ++ g_mutex_lock (&session->priv->used_services_lock); ++ ++ if (g_hash_table_remove (session->priv->used_services, service)) { ++ g_cond_signal (&session->priv->used_services_cond); ++ } ++ ++ g_mutex_unlock (&session->priv->used_services_lock); ++} +diff --git a/libemail-engine/e-mail-session.h b/libemail-engine/e-mail-session.h +index 7959d0c..674858d 100644 +--- a/libemail-engine/e-mail-session.h ++++ b/libemail-engine/e-mail-session.h +@@ -150,6 +150,13 @@ CamelFolder * e_mail_session_uri_to_folder_finish + EMVFolderContext * + e_mail_session_create_vfolder_context + (EMailSession *session); ++gboolean e_mail_session_mark_service_used_sync ++ (EMailSession *session, ++ CamelService *service, ++ GCancellable *cancellable); ++void e_mail_session_unmark_service_used ++ (EMailSession *session, ++ CamelService *service); + + /* Useful GBinding transform functions */ + gboolean e_binding_transform_service_to_source +diff --git a/libemail-engine/mail-ops.c b/libemail-engine/mail-ops.c +index 969fbcb..e84a412 100644 +--- a/libemail-engine/mail-ops.c ++++ b/libemail-engine/mail-ops.c +@@ -590,7 +590,6 @@ static void + mail_send_message (struct _send_queue_msg *m, + CamelFolder *queue, + const gchar *uid, +- CamelTransport *transport, + CamelFilterDriver *driver, + GCancellable *cancellable, + GError **error) +@@ -622,17 +621,24 @@ mail_send_message (struct _send_queue_msg *m, + if (service != NULL) + provider = camel_service_get_provider (service); + +- err = g_string_new (""); +- xev = mail_tool_remove_xevolution_headers (message); +- + if (CAMEL_IS_TRANSPORT (service)) { + const gchar *tuid; + + /* Let the dialog know the right account it is using. */ +- tuid = camel_service_get_uid (CAMEL_SERVICE (transport)); ++ tuid = camel_service_get_uid (service); + report_status (m, CAMEL_FILTER_STATUS_ACTION, 0, tuid); + } + ++ if (service && !e_mail_session_mark_service_used_sync (m->session, service, cancellable)) { ++ g_warn_if_fail (g_cancellable_set_error_if_cancelled (cancellable, error)); ++ g_clear_object (&service); ++ g_clear_object (&message); ++ return; ++ } ++ ++ err = g_string_new (""); ++ xev = mail_tool_remove_xevolution_headers (message); ++ + /* Check for email sending */ + from = (CamelAddress *) camel_internet_address_new (); + resent_from = camel_medium_get_header ( +@@ -857,6 +863,9 @@ exit: + } + } + ++ if (service) ++ e_mail_session_unmark_service_used (m->session, service); ++ + if (local_error != NULL) + g_propagate_error (error, local_error); + +@@ -957,7 +966,7 @@ send_queue_exec (struct _send_queue_msg *m, + cancellable, (i + 1) * 100 / send_uids->len); + + mail_send_message ( +- m, m->queue, send_uids->pdata[i], m->transport, ++ m, m->queue, send_uids->pdata[i], + m->driver, cancellable, &local_error); + if (local_error != NULL) { + if (!g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { +-- +cgit v0.10.1 diff --git a/evolution-no-DTEND-set.patch b/evolution-no-DTEND-set.patch new file mode 100644 index 0000000..b768178 --- /dev/null +++ b/evolution-no-DTEND-set.patch @@ -0,0 +1,82 @@ +From 96fd44260970317472ea5d672c3edefaa9faec19 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Erick=20P=C3=A9rez=20Castellanos?= +Date: Tue, 9 Dec 2014 15:59:30 +0100 +Subject: ECalModel: Workaround issue with no DTEND set + + +diff --git a/calendar/gui/e-cal-model.c b/calendar/gui/e-cal-model.c +index 05ffef5..afdec4c 100644 +--- a/calendar/gui/e-cal-model.c ++++ b/calendar/gui/e-cal-model.c +@@ -4281,6 +4281,10 @@ e_cal_model_set_instance_times (ECalModelComponent *comp_data, + } + } + ++ /* Some events can have missing DTEND, then use the start_time for them */ ++ if (icaltime_is_null_time (end_time)) ++ end_time = start_time; ++ + if (start_time.zone) + zone = start_time.zone; + else { +-- +cgit v0.10.1 + +From 012fa7ddfdf43b77d40449a28c26cb45b981a421 Mon Sep 17 00:00:00 2001 +From: Milan Crha +Date: Tue, 9 Dec 2014 15:51:59 +0100 +Subject: e_calendar_view_get_tooltips: Do not crash when there's no DTEND set + + +diff --git a/calendar/gui/e-calendar-view.c b/calendar/gui/e-calendar-view.c +index 686327a..365b63c 100644 +--- a/calendar/gui/e-calendar-view.c ++++ b/calendar/gui/e-calendar-view.c +@@ -2157,24 +2157,30 @@ e_calendar_view_get_tooltips (const ECalendarViewEventData *data) + } else { + zone = NULL; + } +- t_start = icaltime_as_timet_with_zone (*dtstart.value, zone); +- t_end = icaltime_as_timet_with_zone (*dtend.value, zone); + +- tmp1 = get_label (dtstart.value, zone, default_zone); +- tmp = calculate_time (t_start, t_end); ++ if (dtstart.value) { ++ t_start = icaltime_as_timet_with_zone (*dtstart.value, zone); ++ if (dtend.value) ++ t_end = icaltime_as_timet_with_zone (*dtend.value, zone); ++ else ++ t_end = t_start; + +- /* To Translators: It will display "Time: ActualStartDateAndTime (DurationOfTheMeeting)"*/ +- tmp2 = g_strdup_printf (_("Time: %s %s"), tmp1, tmp); +- if (zone && !cal_comp_util_compare_event_timezones (newcomp, client, default_zone)) { +- g_free (tmp); +- g_free (tmp1); ++ tmp1 = get_label (dtstart.value, zone, default_zone); ++ tmp = calculate_time (t_start, t_end); + +- tmp1 = get_label (dtstart.value, zone, zone); +- tmp = g_strconcat (tmp2, "\n\t[ ", tmp1, " ", icaltimezone_get_display_name (zone), " ]", NULL); +- } else { +- g_free (tmp); +- tmp = tmp2; +- tmp2 = NULL; ++ /* To Translators: It will display "Time: ActualStartDateAndTime (DurationOfTheMeeting)"*/ ++ tmp2 = g_strdup_printf (_("Time: %s %s"), tmp1, tmp); ++ if (zone && !cal_comp_util_compare_event_timezones (newcomp, client, default_zone)) { ++ g_free (tmp); ++ g_free (tmp1); ++ ++ tmp1 = get_label (dtstart.value, zone, zone); ++ tmp = g_strconcat (tmp2, "\n\t[ ", tmp1, " ", icaltimezone_get_display_name (zone), " ]", NULL); ++ } else { ++ g_free (tmp); ++ tmp = tmp2; ++ tmp2 = NULL; ++ } + } + + e_cal_component_free_datetime (&dtstart); +-- +cgit v0.10.1 diff --git a/evolution-protected-login-PIN.patch b/evolution-protected-login-PIN.patch new file mode 100644 index 0000000..64c0575 --- /dev/null +++ b/evolution-protected-login-PIN.patch @@ -0,0 +1,30 @@ +From 99184975e80f6db542dc363a4c51d74758016088 Mon Sep 17 00:00:00 2001 +From: David Woodhouse +Date: Mon, 8 Dec 2014 14:08:20 +0000 +Subject: Bug 741059 - Prompts for login PIN with + CKF_PROTECTED_AUTHENTICATION_PATH + +This turns out to be relatively simple to fix. Based on the patch in +http://bugzilla.mozilla.org/show_bug.cgi?id=229023 + +(cherry picked from commit 080e9fa33f57eb909555b439c0015d54bfb701dc) + +diff --git a/smime/lib/e-cert-db.c b/smime/lib/e-cert-db.c +index abb07be..21b167c 100644 +--- a/smime/lib/e-cert-db.c ++++ b/smime/lib/e-cert-db.c +@@ -387,6 +387,11 @@ pk11_password (PK11SlotInfo *slot, + + gboolean rv = FALSE; + ++ /* For tokens with CKF_PROTECTED_AUTHENTICATION_PATH we ++ * need to return a non-empty but unused password */ ++ if (PK11_ProtectedAuthenticationPath(slot)) ++ return PORT_Strdup(""); ++ + g_signal_emit ( + e_cert_db_peek (), + e_cert_db_signals[PK11_PASSWD], 0, +-- +cgit v0.10.1 + diff --git a/evolution-wrong-message-preview.patch b/evolution-wrong-message-preview.patch new file mode 100644 index 0000000..776fed7 --- /dev/null +++ b/evolution-wrong-message-preview.patch @@ -0,0 +1,140 @@ +From afab9d238a8b7e1b3bbcea9047431ae6395ecf65 Mon Sep 17 00:00:00 2001 +From: Milan Crha +Date: Fri, 12 Dec 2014 13:34:20 +0100 +Subject: Bug 724039 - Message preview shows a wrong message + + +diff --git a/mail/e-mail-reader-utils.c b/mail/e-mail-reader-utils.c +index 07ac192..acf5124 100644 +--- a/mail/e-mail-reader-utils.c ++++ b/mail/e-mail-reader-utils.c +@@ -957,6 +957,7 @@ mail_reader_print_parse_message_cb (GObject *source_object, + EMailPrinter *printer; + EMailPartList *part_list; + AsyncContext *async_context; ++ GError *local_error = NULL; + + reader = E_MAIL_READER (source_object); + async_context = (AsyncContext *) user_data; +@@ -964,7 +965,17 @@ mail_reader_print_parse_message_cb (GObject *source_object, + activity = async_context->activity; + cancellable = e_activity_get_cancellable (activity); + +- part_list = e_mail_reader_parse_message_finish (reader, result); ++ part_list = e_mail_reader_parse_message_finish (reader, result, &local_error); ++ ++ if (local_error) { ++ g_warn_if_fail (g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_CANCELLED)); ++ ++ e_activity_handle_cancellation (activity, local_error); ++ g_clear_error (&local_error); ++ async_context_free (async_context); ++ ++ return; ++ } + + printer = e_mail_printer_new (part_list); + +@@ -1650,10 +1661,21 @@ mail_reader_reply_message_parsed (GObject *object, + EMsgComposer *composer; + CamelMimeMessage *message; + AsyncContext *async_context; ++ GError *local_error = NULL; + + async_context = (AsyncContext *) user_data; + +- part_list = e_mail_reader_parse_message_finish (reader, result); ++ part_list = e_mail_reader_parse_message_finish (reader, result, &local_error); ++ ++ if (local_error) { ++ g_warn_if_fail (g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_CANCELLED)); ++ ++ g_clear_error (&local_error); ++ async_context_free (async_context); ++ ++ return; ++ } ++ + message = e_mail_part_list_get_message (part_list); + + backend = e_mail_reader_get_backend (async_context->reader); +@@ -2351,6 +2373,7 @@ mail_reader_parse_message_run (GSimpleAsyncResult *simple, + EMailPartList *part_list; + AsyncContext *async_context; + gchar *mail_uri; ++ GError *local_error = NULL; + + async_context = g_simple_async_result_get_op_res_gpointer (simple); + +@@ -2389,6 +2412,9 @@ mail_reader_parse_message_run (GSimpleAsyncResult *simple, + g_free (mail_uri); + + async_context->part_list = part_list; ++ ++ if (g_cancellable_set_error_if_cancelled (cancellable, &local_error)) ++ g_simple_async_result_take_error (simple, local_error); + } + + void +@@ -2438,7 +2464,8 @@ e_mail_reader_parse_message (EMailReader *reader, + + EMailPartList * + e_mail_reader_parse_message_finish (EMailReader *reader, +- GAsyncResult *result) ++ GAsyncResult *result, ++ GError **error) + { + GSimpleAsyncResult *simple; + AsyncContext *async_context; +@@ -2449,6 +2476,10 @@ e_mail_reader_parse_message_finish (EMailReader *reader, + e_mail_reader_parse_message), NULL); + + simple = G_SIMPLE_ASYNC_RESULT (result); ++ ++ if (g_simple_async_result_propagate_error (simple, error)) ++ return NULL; ++ + async_context = g_simple_async_result_get_op_res_gpointer (simple); + + if (async_context->part_list != NULL) +diff --git a/mail/e-mail-reader-utils.h b/mail/e-mail-reader-utils.h +index 32c6ae0..18f937b 100644 +--- a/mail/e-mail-reader-utils.h ++++ b/mail/e-mail-reader-utils.h +@@ -91,7 +91,8 @@ void e_mail_reader_parse_message (EMailReader *reader, + gpointer user_data); + EMailPartList * e_mail_reader_parse_message_finish + (EMailReader *reader, +- GAsyncResult *result); ++ GAsyncResult *result, ++ GError **error); + + G_END_DECLS + +diff --git a/mail/e-mail-reader.c b/mail/e-mail-reader.c +index 01ad296..cdf549d 100644 +--- a/mail/e-mail-reader.c ++++ b/mail/e-mail-reader.c +@@ -3091,11 +3091,19 @@ set_mail_display_part_list (GObject *object, + EMailPartList *part_list; + EMailReader *reader; + EMailDisplay *display; ++ GError *local_error = NULL; + + reader = E_MAIL_READER (object); + display = e_mail_reader_get_mail_display (reader); + +- part_list = e_mail_reader_parse_message_finish (reader, result); ++ part_list = e_mail_reader_parse_message_finish (reader, result, &local_error); ++ ++ if (local_error) { ++ g_warn_if_fail (g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_CANCELLED)); ++ ++ g_clear_error (&local_error); ++ return; ++ } + + e_mail_display_set_part_list (display, part_list); + e_mail_display_load (display, NULL); +-- +cgit v0.10.1 diff --git a/evolution.changes b/evolution.changes index 7f8c90a..5b03606 100644 --- a/evolution.changes +++ b/evolution.changes @@ -1,3 +1,32 @@ +------------------------------------------------------------------- +Sun Dec 14 05:19:59 UTC 2014 - badshah400@gmail.com + +- Update to version 3.12.9: + + Offer only enabled accounts as meeting organizers. + + Odd cross line when drawing an ECalendar with multiple + columns + + mail_regen_list: Fix a memory leak. + + Use EClientCache to open calendars in plugins. + + [Alarm-notify] Do not show "Not supported" error on an alarm + dismiss. + + Automatic Contacts can duplicate recipients in the set book. + + EWebView - Increase minimum zoom level for zoom out. + + Calendar events/tasks/memos not removed from UI on the source + removal. + + Bugs fixed: bgo#739708, bgo#700778, bgo#736947, bgo#736950 + bgo#740197, bgo#740577, bgo#734646, bgo#740244, bgo#734530 + bgo#524365, bgo#706993. + + Updated translations. +- Add post-release patches from upstream: + + evolution-no-DTEND-set.patch: Fix calendar issues when DTEND + is not set + + evolution-protected-login-PIN.patch: Prompts for login PIN + with CKF_PROTECTED_AUTHENTICATION_PATH (bgo#741059) + + evolution-crash-sending-simultaneous-emails.patch: [SMTP] Fix + crash when sending two messages at once (bgo#740297) + + evolution-wrong-message-preview.patch: Message preview shows + a wrong message (bgo#724039). + ------------------------------------------------------------------- Tue Nov 11 21:21:27 UTC 2014 - zaitor@opensuse.org diff --git a/evolution.spec b/evolution.spec index 1d1c6fb..1e18251 100644 --- a/evolution.spec +++ b/evolution.spec @@ -24,7 +24,7 @@ Name: evolution # This should be updated upon major version changes; it should match BASE_VERSION as defined in configure.in. %define evolution_base_version 3.12 -Version: 3.12.8 +Version: 3.12.9 Release: 0 # _version needs to be %{version} stripped to major.minor.micro only... %define _version %(echo %{version} | grep -E -o '[0-9]+\.[0-9]+\.[0-9]+') @@ -38,6 +38,14 @@ Url: http://wiki.gnome.org/Apps/Evolution/ Source0: http://download.gnome.org/sources/evolution/3.12/%{name}-%{version}.tar.xz # PATCH-NEEDS-REBASE evolution-migrate-kmail-kcontact.patch fate#316619 dliang@suse.com -- Migrate Kmail/Kcontact into evolution (WAS:PATCH-FEATURE-OPENSUSE) Patch0: evolution-migrate-kmail-kcontact.patch +# PATCH-FIX-UPSTREAM evolution-no-DTEND-set.patch badshah400@gmail.com -- Fix calendar issues when DTEND is not set; patch taken from upstream git +Patch1: evolution-no-DTEND-set.patch +# PATCH-FIX-UPSTREAM evolution-protected-login-PIN.patch bgo#741059 badshah400@gmail.com -- Prompts for login PIN with CKF_PROTECTED_AUTHENTICATION_PATH; patch taken from upstream git +Patch2: evolution-protected-login-PIN.patch +# PATCH-FIX-UPSTREAM evolution-crash-sending-simultaneous-emails.patch bgo#740297 badshah400@gmail.com -- [SMTP] Fix crash when sending two messages at once; patch taken from upstream git +Patch3: evolution-crash-sending-simultaneous-emails.patch +# PATCH-FIX-UPSTREAM evolution-wrong-message-preview.patch bgo#724039 badshah400@gmail.com -- Message preview shows a wrong message; patch taken from upstream git +Patch4: evolution-wrong-message-preview.patch # The icon we rely on is from adwaita-icon-theme BuildRequires: adwaita-icon-theme BuildRequires: bison @@ -135,6 +143,10 @@ to develop applications that require these. translation-update-upstream # NEEDS REBASE #patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 %build %if %{need_autogen}