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: