[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#768424: unblock: evolution-data-server/3.12.7.1-2



Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Please unblock package evolution-data-server

unblock evolution-data-server/3.12.7.1-2

This upload (now in unstable) fixes #765812 plus adds a couple more
patches from git to resolve some network-related problems we've been
observing.

Finally, it switches the hardcoded arch list for libphonenumber to just
exclude kfreebsd & hurd, which have not yet built that library.

Thanks for considering.

-- System Information:
Debian Release: jessie/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.16-3-amd64 (SMP w/4 CPU cores)
Locale: LANG=ca_ES.UTF-8, LC_CTYPE=ca_ES.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
diff -Nru evolution-data-server-3.12.7.1/debian/changelog evolution-data-server-3.12.7.1/debian/changelog
--- evolution-data-server-3.12.7.1/debian/changelog	2014-10-14 18:29:20.000000000 +0200
+++ evolution-data-server-3.12.7.1/debian/changelog	2014-11-06 21:10:23.000000000 +0100
@@ -1,3 +1,16 @@
+evolution-data-server (3.12.7.1-2) unstable; urgency=medium
+
+  * Replace hardcoded list of libphonenumber architectures with just
+    [!kfreebsd-any !hurd-any], so arm64 can also get this support.
+  * Add sqlite3_xfetch_crash.patch: Add upstream fix for crashes with
+    new sqlite3 (closes: #765812).
+  * Add imapx_no_connect_when_offline.patch: avoid server connections while
+    in offline mode.
+  * Add imapx_reconnect_after_socket_io_timeout.patch: Fix connection
+    problems after network state changes.
+
+ -- Jordi Mallach <jordi@debian.org>  Thu, 06 Nov 2014 21:10:18 +0100
+
 evolution-data-server (3.12.7.1-1) unstable; urgency=medium
 
   * New upstream release 3.12.7.1
diff -Nru evolution-data-server-3.12.7.1/debian/control evolution-data-server-3.12.7.1/debian/control
--- evolution-data-server-3.12.7.1/debian/control	2014-10-13 15:55:16.000000000 +0200
+++ evolution-data-server-3.12.7.1/debian/control	2014-11-06 20:35:30.000000000 +0100
@@ -40,7 +40,7 @@
                libkrb5-dev,
                libldap2-dev,
                liboauth-dev (>= 0.9.4),
-               libphonenumber6-dev [amd64 armel armhf i386 mips mipsel powerpc ppc64el s390x alpha ppc64 x32],
+               libphonenumber6-dev [!kfreebsd-any !hurd-any],
                libjson-glib-dev,
                librest-dev (>= 0.7),
                libnss3-dev,
diff -Nru evolution-data-server-3.12.7.1/debian/patches/imapx_no_connect_when_offline.patch evolution-data-server-3.12.7.1/debian/patches/imapx_no_connect_when_offline.patch
--- evolution-data-server-3.12.7.1/debian/patches/imapx_no_connect_when_offline.patch	1970-01-01 01:00:00.000000000 +0100
+++ evolution-data-server-3.12.7.1/debian/patches/imapx_no_connect_when_offline.patch	2014-11-06 21:07:18.000000000 +0100
@@ -0,0 +1,37 @@
+From 65d1428b7be80ea0c934328b70be9001dc2e80eb Mon Sep 17 00:00:00 2001
+From: Milan Crha <mcrha@redhat.com>
+Date: Fri, 24 Oct 2014 13:54:32 +0200
+Subject: [IMAPx] Do not connect to the server in offline mode
+
+One cannot do remote operations when in offline mode, which may
+include the server not being reachable.
+
+diff --git a/camel/providers/imapx/camel-imapx-store.c b/camel/providers/imapx/camel-imapx-store.c
+index 947d7e8..642d21a 100644
+--- a/camel/providers/imapx/camel-imapx-store.c
++++ b/camel/providers/imapx/camel-imapx-store.c
+@@ -2674,12 +2674,19 @@ camel_imapx_store_ref_server (CamelIMAPXStore *store,
+                               GError **error)
+ {
+ 	CamelIMAPXServer *server = NULL;
++	CamelSession *session;
+ 	GError *local_error = NULL;
+ 
+ 	g_return_val_if_fail (CAMEL_IS_IMAPX_STORE (store), NULL);
+ 
+- 	server = camel_imapx_conn_manager_get_connection (
+-		store->priv->con_man, folder_name, for_expensive_job, cancellable, &local_error);
++	session = camel_service_ref_session (CAMEL_SERVICE (store));
++
++	if (camel_offline_store_get_online (CAMEL_OFFLINE_STORE (store)) &&
++	    camel_session_get_online (session))
++		server = camel_imapx_conn_manager_get_connection (
++			store->priv->con_man, folder_name, for_expensive_job, cancellable, &local_error);
++
++	g_clear_object (&session);
+ 
+ 	if (!server && (!local_error || local_error->domain == G_RESOLVER_ERROR)) {
+ 		if (!local_error) {
+-- 
+cgit v0.10.1
+
diff -Nru evolution-data-server-3.12.7.1/debian/patches/imapx_reconnect_after_socket_io_timeout.patch evolution-data-server-3.12.7.1/debian/patches/imapx_reconnect_after_socket_io_timeout.patch
--- evolution-data-server-3.12.7.1/debian/patches/imapx_reconnect_after_socket_io_timeout.patch	1970-01-01 01:00:00.000000000 +0100
+++ evolution-data-server-3.12.7.1/debian/patches/imapx_reconnect_after_socket_io_timeout.patch	2014-11-06 21:07:41.000000000 +0100
@@ -0,0 +1,23 @@
+From 89d89f990e8705c7cb0b3534267026e8bfbd6b69 Mon Sep 17 00:00:00 2001
+From: Milan Crha <mcrha@redhat.com>
+Date: Mon, 3 Nov 2014 12:20:17 +0100
+Subject: [IMAPx] Try to reconnect after socket I/O timeout
+
+
+diff --git a/camel/providers/imapx/camel-imapx-server.c b/camel/providers/imapx/camel-imapx-server.c
+index 7241a9f..4bedc67 100644
+--- a/camel/providers/imapx/camel-imapx-server.c
++++ b/camel/providers/imapx/camel-imapx-server.c
+@@ -7696,7 +7696,8 @@ imapx_ready_to_read (GInputStream *input_stream,
+ 		camel_imapx_debug (io, is->tagprefix, "Data read failed with error '%s'\n", local_error->message);
+ 
+ 		/* Sadly, G_IO_ERROR_FAILED is also used for 'Connection reset by peer' error */
+-		if (g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_FAILED)) {
++		if (g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_FAILED) ||
++		    g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_TIMED_OUT)) {
+ 			local_error->domain = CAMEL_IMAPX_SERVER_ERROR;
+ 			local_error->code = CAMEL_IMAPX_SERVER_ERROR_TRY_RECONNECT;
+ 		}
+-- 
+cgit v0.10.1
+
diff -Nru evolution-data-server-3.12.7.1/debian/patches/series evolution-data-server-3.12.7.1/debian/patches/series
--- evolution-data-server-3.12.7.1/debian/patches/series	2014-09-15 11:06:33.000000000 +0200
+++ evolution-data-server-3.12.7.1/debian/patches/series	2014-11-06 21:06:22.000000000 +0100
@@ -1 +1,4 @@
 02_Only-export-symbols-starting-with-e.patch
+imapx_no_connect_when_offline.patch
+imapx_reconnect_after_socket_io_timeout.patch
+sqlite3_xfetch_crash.patch
diff -Nru evolution-data-server-3.12.7.1/debian/patches/sqlite3_xfetch_crash.patch evolution-data-server-3.12.7.1/debian/patches/sqlite3_xfetch_crash.patch
--- evolution-data-server-3.12.7.1/debian/patches/sqlite3_xfetch_crash.patch	1970-01-01 01:00:00.000000000 +0100
+++ evolution-data-server-3.12.7.1/debian/patches/sqlite3_xfetch_crash.patch	2014-11-06 20:10:26.000000000 +0100
@@ -0,0 +1,133 @@
+From 6e5e4fd0d945cd40e0c61d8b9a62c14e5494f2d8 Mon Sep 17 00:00:00 2001
+From: Milan Crha <mcrha@redhat.com>
+Date: Thu, 23 Oct 2014 11:58:43 +0200
+Subject: Bug 738965 - [SQLite VFS] Crash due to missing xFetch definition
+
+
+diff --git a/camel/camel-db.c b/camel/camel-db.c
+index eba5590..cf0e71f 100644
+--- a/camel/camel-db.c
++++ b/camel/camel-db.c
+@@ -194,6 +194,20 @@ camel_sqlite3_file_ ## _nm _params \
+ 	return cFile->old_vfs_file->pMethods->_nm _call; \
+ }
+ 
++#define def_subclassed_void(_nm, _params, _call) \
++static void \
++camel_sqlite3_file_ ## _nm _params \
++{ \
++	CamelSqlite3File *cFile; \
++ \
++	g_return_if_fail (old_vfs != NULL); \
++	g_return_if_fail (pFile != NULL); \
++ \
++	cFile = (CamelSqlite3File *) pFile; \
++	g_return_if_fail (cFile->old_vfs_file->pMethods != NULL); \
++	cFile->old_vfs_file->pMethods->_nm _call; \
++}
++
+ def_subclassed (xRead, (sqlite3_file *pFile, gpointer pBuf, gint iAmt, sqlite3_int64 iOfst), (cFile->old_vfs_file, pBuf, iAmt, iOfst))
+ def_subclassed (xWrite, (sqlite3_file *pFile, gconstpointer pBuf, gint iAmt, sqlite3_int64 iOfst), (cFile->old_vfs_file, pBuf, iAmt, iOfst))
+ def_subclassed (xTruncate, (sqlite3_file *pFile, sqlite3_int64 size), (cFile->old_vfs_file, size))
+@@ -203,6 +217,12 @@ def_subclassed (xUnlock, (sqlite3_file *pFile, gint lockType), (cFile->old_vfs_f
+ def_subclassed (xFileControl, (sqlite3_file *pFile, gint op, gpointer pArg), (cFile->old_vfs_file, op, pArg))
+ def_subclassed (xSectorSize, (sqlite3_file *pFile), (cFile->old_vfs_file))
+ def_subclassed (xDeviceCharacteristics, (sqlite3_file *pFile), (cFile->old_vfs_file))
++def_subclassed (xShmMap, (sqlite3_file *pFile, gint iPg, gint pgsz, gint n, void volatile **arr), (cFile->old_vfs_file, iPg, pgsz, n, arr))
++def_subclassed (xShmLock, (sqlite3_file *pFile, gint offset, gint n, gint flags), (cFile->old_vfs_file, offset, n, flags))
++def_subclassed_void (xShmBarrier, (sqlite3_file *pFile), (cFile->old_vfs_file))
++def_subclassed (xShmUnmap, (sqlite3_file *pFile, gint deleteFlag), (cFile->old_vfs_file, deleteFlag))
++def_subclassed (xFetch, (sqlite3_file *pFile, sqlite3_int64 iOfst, int iAmt, void **pp), (cFile->old_vfs_file, iOfst, iAmt, pp))
++def_subclassed (xUnfetch, (sqlite3_file *pFile, sqlite3_int64 iOfst, void *p), (cFile->old_vfs_file, iOfst, p))
+ 
+ #undef def_subclassed
+ 
+@@ -351,6 +371,23 @@ camel_sqlite3_vfs_xOpen (sqlite3_vfs *pVfs,
+ 		use_subclassed (xFileControl);
+ 		use_subclassed (xSectorSize);
+ 		use_subclassed (xDeviceCharacteristics);
++
++		if (io_methods.iVersion > 1) {
++			use_subclassed (xShmMap);
++			use_subclassed (xShmLock);
++			use_subclassed (xShmBarrier);
++			use_subclassed (xShmUnmap);
++		}
++
++		if (io_methods.iVersion > 2) {
++			use_subclassed (xFetch);
++			use_subclassed (xUnfetch);
++		}
++
++		if (io_methods.iVersion > 3) {
++			g_warning ("%s: Unchecked IOMethods version %d, downgrading to version 3", G_STRFUNC, io_methods.iVersion);
++			io_methods.iVersion = 3;
++		}
+ 		#undef use_subclassed
+ 	}
+ 
+diff --git a/libebackend/e-sqlite3-vfs.c b/libebackend/e-sqlite3-vfs.c
+index 9b09534..cf49682 100644
+--- a/libebackend/e-sqlite3-vfs.c
++++ b/libebackend/e-sqlite3-vfs.c
+@@ -152,6 +152,19 @@ e_sqlite3_file_ ## _nm _params \
+ 	g_return_val_if_fail (cFile->old_vfs_file->pMethods != NULL, SQLITE_ERROR); \
+ 	return cFile->old_vfs_file->pMethods->_nm _call; \
+ }
++#define def_subclassed_void(_nm, _params, _call) \
++static void \
++e_sqlite3_file_ ## _nm _params \
++{ \
++	ESqlite3File *cFile; \
++ \
++	g_return_if_fail (old_vfs != NULL); \
++	g_return_if_fail (pFile != NULL); \
++ \
++	cFile = (ESqlite3File *) pFile; \
++	g_return_if_fail (cFile->old_vfs_file->pMethods != NULL); \
++	cFile->old_vfs_file->pMethods->_nm _call; \
++}
+ 
+ def_subclassed (xRead, (sqlite3_file *pFile, gpointer pBuf, gint iAmt, sqlite3_int64 iOfst), (cFile->old_vfs_file, pBuf, iAmt, iOfst))
+ def_subclassed (xWrite, (sqlite3_file *pFile, gconstpointer pBuf, gint iAmt, sqlite3_int64 iOfst), (cFile->old_vfs_file, pBuf, iAmt, iOfst))
+@@ -162,6 +175,12 @@ def_subclassed (xUnlock, (sqlite3_file *pFile, gint lockType), (cFile->old_vfs_f
+ def_subclassed (xFileControl, (sqlite3_file *pFile, gint op, gpointer pArg), (cFile->old_vfs_file, op, pArg))
+ def_subclassed (xSectorSize, (sqlite3_file *pFile), (cFile->old_vfs_file))
+ def_subclassed (xDeviceCharacteristics, (sqlite3_file *pFile), (cFile->old_vfs_file))
++def_subclassed (xShmMap, (sqlite3_file *pFile, gint iPg, gint pgsz, gint n, void volatile **arr), (cFile->old_vfs_file, iPg, pgsz, n, arr))
++def_subclassed (xShmLock, (sqlite3_file *pFile, gint offset, gint n, gint flags), (cFile->old_vfs_file, offset, n, flags))
++def_subclassed_void (xShmBarrier, (sqlite3_file *pFile), (cFile->old_vfs_file))
++def_subclassed (xShmUnmap, (sqlite3_file *pFile, gint deleteFlag), (cFile->old_vfs_file, deleteFlag))
++def_subclassed (xFetch, (sqlite3_file *pFile, sqlite3_int64 iOfst, gint iAmt, void **pp), (cFile->old_vfs_file, iOfst, iAmt, pp))
++def_subclassed (xUnfetch, (sqlite3_file *pFile, sqlite3_int64 iOfst, void *p), (cFile->old_vfs_file, iOfst, p))
+ 
+ #undef def_subclassed
+ 
+@@ -306,6 +325,24 @@ e_sqlite3_vfs_xOpen (sqlite3_vfs *pVfs,
+ 		use_subclassed (xFileControl);
+ 		use_subclassed (xSectorSize);
+ 		use_subclassed (xDeviceCharacteristics);
++
++		if (io_methods.iVersion > 1) {
++			use_subclassed (xShmMap);
++			use_subclassed (xShmLock);
++			use_subclassed (xShmBarrier);
++			use_subclassed (xShmUnmap);
++		}
++
++		if (io_methods.iVersion > 2) {
++			use_subclassed (xFetch);
++			use_subclassed (xUnfetch);
++		}
++
++		if (io_methods.iVersion > 3) {
++			g_warning ("%s: Unchecked IOMethods version %d, downgrading to version 3", G_STRFUNC, io_methods.iVersion);
++			io_methods.iVersion = 3;
++		}
++
+ 		#undef use_subclassed
+ 	}
+ 
+-- 
+cgit v0.10.1
+
diff -Nru evolution-data-server-3.12.7.1/debian/rules evolution-data-server-3.12.7.1/debian/rules
--- evolution-data-server-3.12.7.1/debian/rules	2014-10-04 11:40:51.000000000 +0200
+++ evolution-data-server-3.12.7.1/debian/rules	2014-11-06 20:09:14.000000000 +0100
@@ -25,7 +25,7 @@
 export DEB_BUILD_MAINT_OPTIONS=hardening=+all
 include /usr/share/dpkg/buildflags.mk
 
-ifneq (,$(findstring $(DEB_HOST_ARCH),amd64 armel armhf i386 mips mipsel powerpc ppc64el s390x alpha ppc64 x32))
+ifeq (,$(findstring $(DEB_HOST_ARCH_OS),kfreebsd hurd))
 	DEB_CONFIGURE_EXTRA_FLAGS += --with-phonenumber=/usr
 endif
 

Reply to: