diff options
author | Mart Raudsepp <leio@gentoo.org> | 2008-03-09 07:57:37 +0000 |
---|---|---|
committer | Mart Raudsepp <leio@gentoo.org> | 2008-03-09 07:57:37 +0000 |
commit | 3ec039460d75d032fee89616eba82700e90331ab (patch) | |
tree | 1244e5b1ef7c467e2be8ad4ea4a2d1734886af3c /gnome-extra/evolution-exchange | |
parent | Initial import of gflags (diff) | |
download | gentoo-2-3ec039460d75d032fee89616eba82700e90331ab.tar.gz gentoo-2-3ec039460d75d032fee89616eba82700e90331ab.tar.bz2 gentoo-2-3ec039460d75d032fee89616eba82700e90331ab.zip |
Fix backend crashes in some situations caused by thread locking problems, bug 201824. Remove old versions
(Portage version: 2.1.4.4)
Diffstat (limited to 'gnome-extra/evolution-exchange')
-rw-r--r-- | gnome-extra/evolution-exchange/ChangeLog | 12 | ||||
-rw-r--r-- | gnome-extra/evolution-exchange/evolution-exchange-2.12.3-r1.ebuild (renamed from gnome-extra/evolution-exchange/evolution-exchange-2.10.3.ebuild) | 23 | ||||
-rw-r--r-- | gnome-extra/evolution-exchange/evolution-exchange-2.6.2-r1.ebuild | 54 | ||||
-rw-r--r-- | gnome-extra/evolution-exchange/files/evolution-exchange-2.12.3-fix-locks.patch | 152 | ||||
-rw-r--r-- | gnome-extra/evolution-exchange/files/evolution-exchange-2.6.2-fix-loop.patch | 32 |
5 files changed, 178 insertions, 95 deletions
diff --git a/gnome-extra/evolution-exchange/ChangeLog b/gnome-extra/evolution-exchange/ChangeLog index 4cded41eb2db..573b6c4c9623 100644 --- a/gnome-extra/evolution-exchange/ChangeLog +++ b/gnome-extra/evolution-exchange/ChangeLog @@ -1,6 +1,16 @@ # ChangeLog for gnome-extra/evolution-exchange # Copyright 1999-2008 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/gnome-extra/evolution-exchange/ChangeLog,v 1.57 2008/02/29 16:07:33 jer Exp $ +# $Header: /var/cvsroot/gentoo-x86/gnome-extra/evolution-exchange/ChangeLog,v 1.58 2008/03/09 07:57:37 leio Exp $ + +*evolution-exchange-2.12.3-r1 (09 Mar 2008) + + 09 Mar 2008; Mart Raudsepp <leio@gentoo.org> + -files/evolution-exchange-2.6.2-fix-loop.patch, + +files/evolution-exchange-2.12.3-fix-locks.patch, + -evolution-exchange-2.6.2-r1.ebuild, -evolution-exchange-2.10.3.ebuild, + +evolution-exchange-2.12.3-r1.ebuild: + Fix backend crashes in some situations caused by thread locking problems, + bug 201824. Remove old versions 29 Feb 2008; Jeroen Roovers <jer@gentoo.org> evolution-exchange-2.10.3.ebuild, evolution-exchange-2.12.0.ebuild, diff --git a/gnome-extra/evolution-exchange/evolution-exchange-2.10.3.ebuild b/gnome-extra/evolution-exchange/evolution-exchange-2.12.3-r1.ebuild index cd818fce8878..3ee11314921b 100644 --- a/gnome-extra/evolution-exchange/evolution-exchange-2.10.3.ebuild +++ b/gnome-extra/evolution-exchange/evolution-exchange-2.12.3-r1.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/gnome-extra/evolution-exchange/evolution-exchange-2.10.3.ebuild,v 1.7 2008/02/29 16:07:33 jer Exp $ +# $Header: /var/cvsroot/gentoo-x86/gnome-extra/evolution-exchange/evolution-exchange-2.12.3-r1.ebuild,v 1.1 2008/03/09 07:57:37 leio Exp $ EAPI="1" inherit gnome2 eutils @@ -10,18 +10,18 @@ HOMEPAGE="http://www.novell.com/products/desktop/features/evolution.html" LICENSE="GPL-2" SLOT="2.0" -KEYWORDS="amd64 ~hppa ppc sparc x86" +KEYWORDS="~amd64 ~hppa ~ppc ~sparc ~x86" IUSE="debug doc static" -RDEPEND=">=mail-client/evolution-2.10 - >=gnome-extra/evolution-data-server-1.10 - >=net-libs/libsoup-2.2.96:2.2 +RDEPEND=">=x11-libs/gtk+-2.10 + >=gnome-base/gconf-2.0 + >=gnome-base/libbonobo-2.0 >=gnome-base/libglade-2.0 >=gnome-base/libgnomeui-2.0 - >=gnome-base/libgnomeprint-2.2 - >=gnome-base/libbonobo-2.0 dev-libs/libxml2 - >=gnome-base/gconf-2.0 + >=mail-client/evolution-2.11 + >=gnome-extra/evolution-data-server-1.11 + >=net-libs/libsoup-2.2.96:2.2 >=net-nds/openldap-2.1.30-r2" DEPEND="${RDEPEND} @@ -42,3 +42,10 @@ pkg_setup() { G2CONF="${G2CONF} $(use_with static static-ldap) --with-openldap" } + +src_unpack() { + gnome2_src_unpack + + # Fix bug 201824 + epatch "${FILESDIR}/${P}-fix-locks.patch" +} diff --git a/gnome-extra/evolution-exchange/evolution-exchange-2.6.2-r1.ebuild b/gnome-extra/evolution-exchange/evolution-exchange-2.6.2-r1.ebuild deleted file mode 100644 index 8509a1bf39f5..000000000000 --- a/gnome-extra/evolution-exchange/evolution-exchange-2.6.2-r1.ebuild +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright 1999-2008 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/gnome-extra/evolution-exchange/evolution-exchange-2.6.2-r1.ebuild,v 1.6 2008/01/29 17:36:14 dang Exp $ -EAPI="1" - -inherit gnome2 eutils autotools - -DESCRIPTION="Evolution module for connecting to Microsoft Exchange" -HOMEPAGE="http://www.novell.com/products/desktop/features/evolution.html" -LICENSE="GPL-2" - -SLOT="2.0" -KEYWORDS="amd64 ~hppa ppc ~sparc x86" -IUSE="debug doc static" - -RDEPEND=">=mail-client/evolution-2.5.90 - >=gnome-extra/evolution-data-server-1.5.90 - net-libs/libsoup:2.2 - >=gnome-base/libglade-2.0 - >=gnome-base/libgnomeui-2.0 - >=gnome-base/libbonobo-2.0 - dev-libs/libxml2 - >=gnome-base/gconf-2.0 - >=net-nds/openldap-2.1.30-r2" - -DEPEND="${RDEPEND} - >=dev-util/intltool-0.29 - dev-util/pkgconfig - doc? ( >=dev-util/gtk-doc-1 )" - -MAKEOPTS="${MAKEOPTS} -j1" - -pkg_setup() { - G2CONF="${G2CONF} $(use_with debug e2k-debug)" - - if ! built_with_use gnome-extra/evolution-data-server ldap || ! built_with_use gnome-extra/evolution-data-server kerberos; then - eerror "Please re-emerge gnome-extra/evolution-data-server with" - eerror "the use flags ldap and kerberos." - die - fi - - G2CONF="${G2CONF} $(use_with static static-ldap) --with-openldap" -} - -src_unpack() { - gnome2_src_unpack - - # fix proc spike - cd camel - epatch "${FILESDIR}"/${P}-fix-loop.patch - cd "${S}" - - eautoreconf -} diff --git a/gnome-extra/evolution-exchange/files/evolution-exchange-2.12.3-fix-locks.patch b/gnome-extra/evolution-exchange/files/evolution-exchange-2.12.3-fix-locks.patch new file mode 100644 index 000000000000..0b74e4fa0926 --- /dev/null +++ b/gnome-extra/evolution-exchange/files/evolution-exchange-2.12.3-fix-locks.patch @@ -0,0 +1,152 @@ +** Fix for GNOME bug #501295, Gentoo bug #201824 + +Create locks around the cache so that the file is protected well not to crash. + +--- a/addressbook/e-book-backend-exchange.c.orig 2007-10-12 09:05:18.000000000 +0200 ++++ b/addressbook/e-book-backend-exchange.c 2008-01-21 11:02:48.000000000 +0100 +@@ -84,12 +84,15 @@ + gboolean is_cache_ready; + gboolean marked_for_offline; + +- GMutex *create_mutex; ++ GMutex *cache_lock; + + EBookBackendSummary *summary; + EBookBackendCache *cache; + }; + ++#define LOCK(x) g_mutex_lock (x->cache_lock) ++#define UNLOCK(x) g_mutex_unlock (x->cache_lock) ++ + typedef struct PropMapping PropMapping; + + static void subscription_notify (E2kContext *ctx, const char *uri, E2kContextChangeType type, gpointer user_data); +@@ -477,6 +480,7 @@ + field_names, n_field_names, + bepriv->base_rn, NULL, TRUE); + ++ LOCK (bepriv); + e_file_cache_freeze_changes (E_FILE_CACHE (bepriv->cache)); + while ((result = e2k_result_iter_next (iter))) { + contact = e_contact_from_props (be, result); +@@ -488,6 +492,7 @@ + e_book_backend_cache_set_populated (bepriv->cache); + bepriv->is_cache_ready=TRUE; + e_file_cache_thaw_changes (E_FILE_CACHE (bepriv->cache)); ++ UNLOCK (bepriv); + return NULL; + } + +@@ -520,6 +525,7 @@ + field_names, n_field_names, + bepriv->base_rn, NULL, TRUE); + ++ LOCK (bepriv); + e_file_cache_freeze_changes (E_FILE_CACHE (bepriv->cache)); + while ((result = e2k_result_iter_next (iter))) { + contact = e_contact_from_props (be, result); +@@ -531,7 +537,7 @@ + e_book_backend_cache_set_populated (bepriv->cache); + bepriv->is_cache_ready=TRUE; + e_file_cache_thaw_changes (E_FILE_CACHE (bepriv->cache)); +- ++ UNLOCK (bepriv); + return TRUE; + } + +@@ -1319,13 +1325,13 @@ + + d(printf("ebbe_create_contact(%p, %p, %s)\n", backend, book, vcard)); + +- g_mutex_lock (bepriv->create_mutex); ++ LOCK (bepriv); + + switch (bepriv->mode) { + + case GNOME_Evolution_Addressbook_MODE_LOCAL: + *contact = NULL; +- g_mutex_unlock (bepriv->create_mutex); ++ UNLOCK (bepriv); + return GNOME_Evolution_Addressbook_RepositoryOffline; + + case GNOME_Evolution_Addressbook_MODE_REMOTE: +@@ -1346,6 +1353,7 @@ + state = e_book_backend_exchange_connect (be); + if ( state != GNOME_Evolution_Addressbook_Success) { + d(printf("Returning status %d while creating contact\n", state)); ++ UNLOCK (bepriv); + return state; + } + } +@@ -1375,18 +1383,18 @@ + e_book_backend_summary_add_contact (bepriv->summary, + *contact); + e_book_backend_cache_add_contact (bepriv->cache, *contact); +- g_mutex_unlock (bepriv->create_mutex); ++ UNLOCK (bepriv); + return GNOME_Evolution_Addressbook_Success; + } else { + g_object_unref (*contact); + *contact = NULL; +- g_mutex_unlock (bepriv->create_mutex); ++ UNLOCK (bepriv); + return http_status_to_pas (status); + } + default: + break; + } +- g_mutex_unlock (bepriv->create_mutex); ++ UNLOCK (bepriv); + return GNOME_Evolution_Addressbook_Success; + } + +@@ -1501,13 +1509,14 @@ + e2k_results_free (results, nresults); + + if (E2K_HTTP_STATUS_IS_SUCCESSFUL (status)) { ++ LOCK (bepriv); + e_book_backend_summary_remove_contact (bepriv->summary, + uri); + e_book_backend_summary_add_contact (bepriv->summary, + *contact); + e_book_backend_cache_remove_contact (bepriv->cache, uri); + e_book_backend_cache_add_contact (bepriv->cache, *contact); +- ++ UNLOCK (bepriv); + return GNOME_Evolution_Addressbook_Success; + } else { + g_object_unref (*contact); +@@ -1550,11 +1559,13 @@ + uri = l->data; + status = e2k_context_delete (bepriv->ctx, NULL, uri); + if (E2K_HTTP_STATUS_IS_SUCCESSFUL (status)) { ++ LOCK (bepriv); + e_book_backend_summary_remove_contact ( + bepriv->summary, uri); + e_book_backend_cache_remove_contact (bepriv->cache, uri); + *removed_ids = g_list_append ( + *removed_ids, g_strdup (uri)); ++ UNLOCK (bepriv); + } else + ret_status = http_status_to_pas (status); + } +@@ -2537,8 +2548,8 @@ + if (be->priv->cache) + g_object_unref (be->priv->cache); + +- if (be->priv->create_mutex) +- g_mutex_free (be->priv->create_mutex); ++ if (be->priv->cache_lock) ++ g_mutex_free (be->priv->cache_lock); + + + g_free (be->priv); +@@ -2608,7 +2619,7 @@ + priv->original_uri = NULL; + priv->is_writable = TRUE; + +- priv->create_mutex = g_mutex_new (); ++ priv->cache_lock = g_mutex_new (); + + backend->priv = priv; + } diff --git a/gnome-extra/evolution-exchange/files/evolution-exchange-2.6.2-fix-loop.patch b/gnome-extra/evolution-exchange/files/evolution-exchange-2.6.2-fix-loop.patch deleted file mode 100644 index 146737cfa44d..000000000000 --- a/gnome-extra/evolution-exchange/files/evolution-exchange-2.6.2-fix-loop.patch +++ /dev/null @@ -1,32 +0,0 @@ -=================================================================== -RCS file: /cvs/gnome/evolution-exchange/camel/camel-stub-marshal.c,v -retrieving revision 1.3 -retrieving revision 1.5 -diff -u -r1.3 -r1.5 ---- camel-stub-marshal.c 2006/05/08 20:15:55 1.3 -+++ camel-stub-marshal.c 2006/06/15 20:36:50 1.5 -@@ -1,6 +1,6 @@ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ - --/* Copyright (C) 2001-2004 Novell, Inc. -+/* Copyright (C) 2001-2006 Novell, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public -@@ -86,7 +86,15 @@ - static gboolean - do_read (CamelStubMarshal *marshal, char *buf, size_t len) - { -- if (camel_read (marshal->fd, buf, len) == -1) { -+ size_t nread = 0; -+ ssize_t n; -+ -+ do { -+ if ((n = camel_read (marshal->fd, buf + nread, len - nread)) > 0) -+ nread += n; -+ } while (n && nread < len && errno != EINTR); -+ -+ if (nread < len) { - close (marshal->fd); - marshal->fd = -1; - return FALSE; |