summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMart Raudsepp <leio@gentoo.org>2008-03-09 07:57:37 +0000
committerMart Raudsepp <leio@gentoo.org>2008-03-09 07:57:37 +0000
commit3ec039460d75d032fee89616eba82700e90331ab (patch)
tree1244e5b1ef7c467e2be8ad4ea4a2d1734886af3c /gnome-extra/evolution-exchange
parentInitial import of gflags (diff)
downloadgentoo-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/ChangeLog12
-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.ebuild54
-rw-r--r--gnome-extra/evolution-exchange/files/evolution-exchange-2.12.3-fix-locks.patch152
-rw-r--r--gnome-extra/evolution-exchange/files/evolution-exchange-2.6.2-fix-loop.patch32
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;