diff --git a/.gitignore b/.gitignore index 357cd5b..e34431b 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,10 @@ evolution-2.31.5.tar.bz2 /evolution-3.9.4.tar.xz /evolution-3.9.5.tar.xz /evolution-3.9.90.tar.xz +/evolution-3.9.91.tar.xz +/evolution-3.9.92.tar.xz +/evolution-3.10.0.tar.xz +/evolution-3.10.1.tar.xz +/evolution-3.10.2.tar.xz +/evolution-3.10.3.tar.xz +/evolution-3.10.4.tar.xz diff --git a/0001-Bug-724023-Run-EMailFormatter-in-the-main-UI-thread.patch b/0001-Bug-724023-Run-EMailFormatter-in-the-main-UI-thread.patch new file mode 100644 index 0000000..7f0d8d1 --- /dev/null +++ b/0001-Bug-724023-Run-EMailFormatter-in-the-main-UI-thread.patch @@ -0,0 +1,73 @@ +From 37a95e0e6b74fa9fe1692c788983142d8d4774d4 Mon Sep 17 00:00:00 2001 +From: Milan Crha +Date: Mon, 10 Feb 2014 15:59:24 +0100 +Subject: [PATCH 2/7] 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. +--- + em-format/e-mail-part-attachment-bar.c | 17 ++++++++++++----- + mail/e-mail-request.c | 9 ++++++--- + 2 files changed, 18 insertions(+), 8 deletions(-) + +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); +-- +1.9.0 + diff --git a/0002-Bug-722041-NNTP-Messages-are-silently-dropped-from-O.patch b/0002-Bug-722041-NNTP-Messages-are-silently-dropped-from-O.patch new file mode 100644 index 0000000..2fc1da0 --- /dev/null +++ b/0002-Bug-722041-NNTP-Messages-are-silently-dropped-from-O.patch @@ -0,0 +1,82 @@ +From 9de8f573e9eba07a096c7f97f97bb5ac876278c8 Mon Sep 17 00:00:00 2001 +From: Milan Crha +Date: Mon, 10 Feb 2014 17:57:28 +0100 +Subject: [PATCH 3/7] Bug #722041 - NNTP Messages are silently dropped from + Outbox + +--- + libemail-engine/mail-ops.c | 20 ++++++++------------ + 1 file changed, 8 insertions(+), 12 deletions(-) + +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, +-- +1.9.0 + diff --git a/0003-Bug-722698-Crash-creating-a-new-folder.patch b/0003-Bug-722698-Crash-creating-a-new-folder.patch new file mode 100644 index 0000000..1c72b61 --- /dev/null +++ b/0003-Bug-722698-Crash-creating-a-new-folder.patch @@ -0,0 +1,44 @@ +From 5e4b28e2fae285fa632ab189707489e0df8d79aa Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= +Date: Tue, 21 Jan 2014 15:48:54 +0100 +Subject: [PATCH 5/7] Bug #722698 - Crash creating a new folder + +--- + mail/em-folder-tree.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +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; +-- +1.9.0 + diff --git a/evolution-2.30.1-help-contents.patch b/evolution-2.30.1-help-contents.patch index e0b27af..650e6de 100644 --- a/evolution-2.30.1-help-contents.patch +++ b/evolution-2.30.1-help-contents.patch @@ -1,7 +1,7 @@ -diff -up evolution-3.9.1/shell/e-shell-window-actions.c.help-contents evolution-3.9.1/shell/e-shell-window-actions.c ---- evolution-3.9.1/shell/e-shell-window-actions.c.help-contents 2013-04-29 11:23:28.943063568 +0200 -+++ evolution-3.9.1/shell/e-shell-window-actions.c 2013-04-29 11:24:16.701599684 +0200 -@@ -1396,6 +1396,15 @@ e_shell_window_actions_init (EShellWindo +diff -up evolution-3.10.0/shell/e-shell-window-actions.c.help-contents evolution-3.10.0/shell/e-shell-window-actions.c +--- evolution-3.10.0/shell/e-shell-window-actions.c.help-contents 2013-09-07 18:34:59.000000000 +0200 ++++ evolution-3.10.0/shell/e-shell-window-actions.c 2013-10-10 08:51:03.863987108 +0200 +@@ -1414,6 +1414,17 @@ e_shell_window_actions_init (EShellWindo if (path == NULL) gtk_action_set_visible (ACTION (SUBMIT_BUG), FALSE); g_free (path); @@ -11,8 +11,10 @@ diff -up evolution-3.9.1/shell/e-shell-window-actions.c.help-contents evolution- + path = g_build_filename ( + EVOLUTION_DATADIR, "help", "C", + PACKAGE, "index.page", NULL); -+ if (!g_file_test (path, G_FILE_TEST_IS_REGULAR)) ++ if (!g_file_test (path, G_FILE_TEST_IS_REGULAR)) { + gtk_action_set_visible (ACTION (CONTENTS), FALSE); ++ gtk_action_set_sensitive (ACTION (CONTENTS), FALSE); ++ } + g_free (path); } diff --git a/evolution-3.10.4-alarm-snooze-crash.patch b/evolution-3.10.4-alarm-snooze-crash.patch new file mode 100644 index 0000000..e4f7aa1 --- /dev/null +++ b/evolution-3.10.4-alarm-snooze-crash.patch @@ -0,0 +1,19 @@ +diff -up evolution-3.10.4/calendar/alarm-notify/alarm-queue.c.alarm-snooze-crash evolution-3.10.4/calendar/alarm-notify/alarm-queue.c +--- evolution-3.10.4/calendar/alarm-notify/alarm-queue.c.alarm-snooze-crash 2013-12-07 15:15:01.000000000 +0100 ++++ evolution-3.10.4/calendar/alarm-notify/alarm-queue.c 2014-07-30 08:24:33.579630783 +0200 +@@ -1352,7 +1352,6 @@ notify_dialog_cb (AlarmNotifyResult resu + debug (("Creating a snooze")); + create_snooze (tray_data->cqa, tray_data->alarm_id, snooze_mins); + tray_data->snooze_set = TRUE; +- tray_list_remove_data (tray_data); + if (alarm_notifications_dialog) { + GtkTreeSelection *selection = + gtk_tree_view_get_selection ( +@@ -1376,6 +1375,7 @@ notify_dialog_cb (AlarmNotifyResult resu + } + + } ++ tray_list_remove_data (tray_data); + + break; + diff --git a/evolution-3.10.4-large-message-render-hung.patch b/evolution-3.10.4-large-message-render-hung.patch new file mode 100644 index 0000000..882be30 --- /dev/null +++ b/evolution-3.10.4-large-message-render-hung.patch @@ -0,0 +1,178 @@ +diff -up evolution-3.10.4/modules/text-highlight/e-mail-formatter-text-highlight.c.large-message-render-hung evolution-3.10.4/modules/text-highlight/e-mail-formatter-text-highlight.c +--- evolution-3.10.4/modules/text-highlight/e-mail-formatter-text-highlight.c.large-message-render-hung 2013-12-07 15:14:12.000000000 +0100 ++++ evolution-3.10.4/modules/text-highlight/e-mail-formatter-text-highlight.c 2014-09-12 08:24:26.418217142 +0200 +@@ -41,6 +41,15 @@ typedef EMailFormatterExtensionClass EMa + typedef EExtension EMailFormatterTextHighlightLoader; + typedef EExtensionClass EMailFormatterTextHighlightLoaderClass; + ++typedef struct _TextHighlightClosure TextHighlightClosure; ++ ++struct _TextHighlightClosure { ++ CamelStream *read_stream; ++ CamelStream *output_stream; ++ GCancellable *cancellable; ++ GError *error; ++}; ++ + GType e_mail_formatter_text_highlight_get_type (void); + + G_DEFINE_DYNAMIC_TYPE ( +@@ -110,6 +119,103 @@ get_syntax (EMailPart *part, + return syntax; + } + ++static gpointer ++text_hightlight_read_data_thread (gpointer user_data) ++{ ++ TextHighlightClosure *closure = user_data; ++ gchar buffer[10240]; ++ ++ g_return_val_if_fail (closure != NULL, NULL); ++ ++ while (!camel_stream_eos (closure->read_stream) && ++ !g_cancellable_set_error_if_cancelled (closure->cancellable, &closure->error)) { ++ gssize read; ++ gsize wrote = 0; ++ ++ read = camel_stream_read (closure->read_stream, buffer, 10240, closure->cancellable, &closure->error); ++ if (read < 0 || closure->error) ++ break; ++ ++ wrote = camel_stream_write (closure->output_stream, buffer, read, closure->cancellable, &closure->error); ++ if (wrote == -1 || (gssize) wrote != read || closure->error) ++ break; ++ } ++ ++ return NULL; ++} ++ ++static gboolean ++text_highlight_feed_data (CamelStream *output_stream, ++ CamelDataWrapper *data_wrapper, ++ gint pipe_stdin, ++ gint pipe_stdout, ++ GCancellable *cancellable, ++ GError **error) ++{ ++ TextHighlightClosure closure; ++ CamelContentType *content_type; ++ CamelStream *write_stream; ++ gboolean success = TRUE; ++ GThread *thread; ++ ++ closure.read_stream = camel_stream_fs_new_with_fd (pipe_stdout); ++ closure.output_stream = output_stream; ++ closure.cancellable = cancellable; ++ closure.error = NULL; ++ ++ write_stream = camel_stream_fs_new_with_fd (pipe_stdin); ++ ++ thread = g_thread_new (NULL, text_hightlight_read_data_thread, &closure); ++ ++ content_type = camel_data_wrapper_get_mime_type_field (data_wrapper); ++ if (content_type) { ++ const gchar *charset = camel_content_type_param (content_type, "charset"); ++ ++ /* Convert to UTF-8 charset, if needed, which the 'highlight' expects; ++ it can cope with non-UTF-8 letters, thus no need for a content UTF-8-validation */ ++ if (charset && g_ascii_strcasecmp (charset, "utf-8") != 0) { ++ CamelMimeFilter *filter; ++ ++ filter = camel_mime_filter_charset_new (charset, "UTF-8"); ++ if (filter != NULL) { ++ CamelStream *filtered = camel_stream_filter_new (write_stream); ++ ++ if (filtered) { ++ camel_stream_filter_add (CAMEL_STREAM_FILTER (filtered), filter); ++ g_object_unref (write_stream); ++ write_stream = filtered; ++ } ++ ++ g_object_unref (filter); ++ } ++ } ++ } ++ ++ if (camel_data_wrapper_decode_to_stream_sync (data_wrapper, write_stream, cancellable, error) < 0) { ++ g_cancellable_cancel (cancellable); ++ success = FALSE; ++ } else { ++ /* Close the stream, thus the highlight knows no more data will come */ ++ g_clear_object (&write_stream); ++ } ++ ++ g_thread_join (thread); ++ ++ g_clear_object (&closure.read_stream); ++ g_clear_object (&write_stream); ++ ++ if (closure.error) { ++ if (error && !*error) ++ g_propagate_error (error, closure.error); ++ else ++ g_clear_error (&closure.error); ++ ++ return FALSE; ++ } ++ ++ return success; ++} ++ + static gboolean + emfe_text_highlight_format (EMailFormatterExtension *extension, + EMailFormatter *formatter, +@@ -213,35 +319,27 @@ emfe_text_highlight_format (EMailFormatt + &pid, &pipe_stdin, &pipe_stdout, NULL, NULL); + + if (success) { +- CamelStream *read; +- CamelStream *write; +- CamelStream *utf8; +- GByteArray *ba; +- gchar *tmp; +- +- write = camel_stream_fs_new_with_fd (pipe_stdin); +- read = camel_stream_fs_new_with_fd (pipe_stdout); +- +- /* Decode the content of mime part to the 'utf8' stream */ +- utf8 = camel_stream_mem_new (); +- camel_data_wrapper_decode_to_stream_sync ( +- dw, utf8, cancellable, NULL); +- +- /* Convert the binary data do someting displayable */ +- ba = camel_stream_mem_get_byte_array (CAMEL_STREAM_MEM (utf8)); +- tmp = e_util_utf8_data_make_valid ((gchar *) ba->data, ba->len); +- +- /* Send the sanitized data to the highlighter */ +- camel_stream_write_string (write, tmp, cancellable, NULL); +- g_free (tmp); +- g_object_unref (utf8); +- g_object_unref (write); ++ GError *local_error = NULL; + +- g_spawn_close_pid (pid); ++ success = text_highlight_feed_data ( ++ stream, dw, ++ pipe_stdin, pipe_stdout, ++ cancellable, &local_error); ++ ++ if (g_error_matches ( ++ local_error, G_IO_ERROR, ++ G_IO_ERROR_CANCELLED)) { ++ /* Do nothing. */ ++ ++ } else if (local_error != NULL) { ++ g_warning ( ++ "%s: %s", G_STRFUNC, ++ local_error->message); ++ } ++ ++ g_clear_error (&local_error); + +- g_seekable_seek (G_SEEKABLE (read), 0, G_SEEK_SET, cancellable, NULL); +- camel_stream_write_to_stream (read, stream, cancellable, NULL); +- g_object_unref (read); ++ g_spawn_close_pid (pid); + } else { + /* We can't call e_mail_formatter_format_as on text/plain, + * because text-highlight is registered as an handler for diff --git a/evolution.spec b/evolution.spec index d911425..d6d6692 100644 --- a/evolution.spec +++ b/evolution.spec @@ -30,14 +30,14 @@ ### Abstract ### Name: evolution -Version: 3.9.90 -Release: 1%{?dist} +Version: 3.10.4 +Release: 4%{?dist} Group: Applications/Productivity Summary: Mail and calendar client for GNOME License: GPLv2+ and GFDL URL: http://projects.gnome.org/evolution/ BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) -Source: http://download.gnome.org/sources/%{name}/3.9/%{name}-%{version}.tar.xz +Source: http://download.gnome.org/sources/%{name}/3.10/%{name}-%{version}.tar.xz Obsoletes: anjal <= %{last_anjal_version} Obsoletes: libgal2 <= %{last_libgal2_version} @@ -51,6 +51,17 @@ Patch01: evolution-1.4.4-ldap-x86_64-hack.patch # RH bug #589555 Patch02: evolution-2.30.1-help-contents.patch +# set of patches from RH bug #1070443 +Patch03: 0001-Bug-724023-Run-EMailFormatter-in-the-main-UI-thread.patch +Patch04: 0002-Bug-722041-NNTP-Messages-are-silently-dropped-from-O.patch +Patch05: 0003-Bug-722698-Crash-creating-a-new-folder.patch + +# RH bug #1122869 +Patch06: evolution-3.10.4-alarm-snooze-crash.patch + +# RH bug #1089966 +Patch07: evolution-3.10.4-large-message-render-hung.patch + ## Dependencies ### Requires: gnome-icon-theme >= %{gnome_icon_theme_version} @@ -114,7 +125,6 @@ BuildRequires: libnotify-devel %if %{libpst_support} BuildRequires: libpst-devel -BuildRequires: libytnef-devel %endif %description @@ -139,6 +149,16 @@ Obsoletes: libgal2-devel <= %{last_libgal2_version} %description devel Development files needed for building things which link against %{name}. +%package devel-docs +Summary: Developer documentation for Evolution +Group: Development/Libraries +Requires: devhelp +Requires: evolution-devel = %{version}-%{release} +BuildArch: noarch + +%description devel-docs +This package contains developer documentation for Evolution. + %package help Group: Applications/Productivity Summary: Help files for %{name} @@ -182,7 +202,6 @@ This package contains supplemental utilities for %{name} that require Perl. Group: Applications/Productivity Summary: PST importer plugin for Evolution Requires: %{name} = %{version}-%{release} -Requires: libpst %description pst This package contains the plugin to import Microsoft Personal Storage Table @@ -193,6 +212,11 @@ This package contains the plugin to import Microsoft Personal Storage Table %setup -q -n evolution-%{version} %patch01 -p1 -b .ldaphack %patch02 -p1 -b .help-contents +%patch03 -p1 -b .ui-thread +%patch04 -p1 -b .nntp-dropped +%patch05 -p1 -b .new-folder-crash +%patch06 -p1 -b .alarm-snooze-crash +%patch07 -p1 -b .large-message-render-hung mkdir -p krb5-fakeprefix/include mkdir -p krb5-fakeprefix/lib @@ -347,6 +371,8 @@ rm -rf $RPM_BUILD_ROOT # The main executable %{_bindir}/evolution +%{_datadir}/appdata/evolution.appdata.xml + # Desktop files: %{_datadir}/applications/evolution.desktop %{_sysconfdir}/xdg/autostart/evolution-alarm-notify.desktop @@ -396,7 +422,6 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/evolution/%{evo_base_version}/modules/module-settings.so %{_libdir}/evolution/%{evo_base_version}/modules/module-startup-wizard.so %{_libdir}/evolution/%{evo_base_version}/modules/module-text-highlight.so -%{_libdir}/evolution/%{evo_base_version}/modules/module-tnef-attachment.so %{_libdir}/evolution/%{evo_base_version}/modules/module-vcard-inline.so %{_libdir}/evolution/%{evo_base_version}/modules/module-web-inspector.so @@ -483,10 +508,6 @@ rm -rf $RPM_BUILD_ROOT %files devel %defattr(-, root, root) -%{_datadir}/gtk-doc/html/evolution-mail-composer -%{_datadir}/gtk-doc/html/evolution-mail-formatter -%{_datadir}/gtk-doc/html/evolution-shell -%{_datadir}/gtk-doc/html/evolution-util %{_includedir}/evolution-%{evo_base_version} %{_libdir}/pkgconfig/evolution-calendar-3.0.pc %{_libdir}/pkgconfig/evolution-mail-3.0.pc @@ -494,6 +515,13 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/pkgconfig/evolution-shell-3.0.pc %{_libdir}/pkgconfig/libemail-engine.pc +%files devel-docs +%defattr(-,root,root,-) +%doc %{_datadir}/gtk-doc/html/evolution-mail-composer +%doc %{_datadir}/gtk-doc/html/evolution-mail-formatter +%doc %{_datadir}/gtk-doc/html/evolution-shell +%doc %{_datadir}/gtk-doc/html/evolution-util + %files help -f help.lang %defattr(-, root, root) %dir %{_datadir}/help/*/evolution @@ -518,6 +546,49 @@ rm -rf $RPM_BUILD_ROOT %endif %changelog +* Fri Sep 12 2014 Milan Crha - 3.10.4-4 +- Add patch for RH bug #1089966 (Large text attachment locks up Evolution) + +* Wed Jul 30 2014 Milan Crha - 3.10.4-3 +- Add patch for RH bug #1122869 (Crash after alarm snooze) + +* Thu Feb 27 2014 Michael Kuhn - 3.10.4-2 +- Add upstream patches for GNOME bugs #724023, #722041 and #722698 + +* Mon Feb 10 2014 Milan Crha - 3.10.4-1 +- Update to 3.10.4 + +* Mon Dec 09 2013 Matthew Barnes - 3.10.3-1 +- Update to 3.10.3 + +* Thu Nov 21 2013 Milan Crha - 3.10.2-2 +- Rebuild for new libical (RH bug #1023020) + +* Mon Nov 11 2013 Milan Crha - 3.10.2-1 +- Update to 3.10.2 + +* Mon Oct 14 2013 Milan Crha - 3.10.1-1 +- Update to 3.10.1 +- Remove the dependency on libytnef, which apparently isn't needed for + the PST importer and disable the experimental TNEF attachments plugin +- Avoid help launch with F1 when evolution-help is not installed + +* Mon Sep 23 2013 Milan Crha - 3.10.0-1 +- Update to 3.10.0 +- Remove explicit Requires on libpst in pst subpackage + +* Mon Sep 16 2013 Milan Crha - 3.9.92-1 +- Update to 3.9.92 + +* Tue Sep 03 2013 Kalev Lember - 3.9.91-2 +- Rebuilt for libgnome-desktop soname bump + +* Mon Sep 02 2013 Milan Crha - 3.9.91-1 +- Update to 3.9.91 + +* Fri Aug 23 2013 Milan Crha - 3.9.90-2 +- Split developer documentation into evolution-devel-docs subpackage + * Mon Aug 19 2013 Milan Crha - 3.9.90-1 - Update to 3.9.90 diff --git a/sources b/sources index e559d1d..07ea052 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -1152520aff50ce70a8f463a05e5de11b evolution-3.9.90.tar.xz +f19aea3477f72c5afa51f4b3e4a8adf5 evolution-3.10.4.tar.xz