# justification: currently "makes the package in question unusable"
severity 544588 grave
tags 544588 + patch
thanks

It turns out that dovecot-antispam is currently unusable in unstable. On an
up-to-date sid system, where I installed dovecot-antispam and dovecot-imapd,
enabled antispam as an IMAP plugin and made no other configuration changes:

Nov 16 22:49:06 reptile dovecot: Killed with signal 15 (by pid=15973 uid=0 
code=kill)
Nov 16 22:49:06 reptile dovecot: Dovecot v1.2.7 starting up (core dumps 
disabled)
Nov 16 22:49:38 reptile wpa_supplicant[2593]: CTRL-EVENT-SCAN-RESULTS 
Nov 16 22:49:40 reptile dovecot: IMAP(smcv): Module is for different version 
1.2.1: /usr/lib/dovecot/modules/imap/lib90_antispam_plugin.so
Nov 16 22:49:40 reptile dovecot: IMAP(smcv): Fatal: Couldn't load required 
plugins
Nov 16 22:49:40 reptile dovecot: imap-login: Login: user=<smcv>, method=PLAIN, 
rip=127.0.0.1, lip=127.0.0.1, TLS

This could be solved easily, but temporarily, by recompiling dovecot-antispam,
which would make it work until the next dovecot upstream release breaks it
again. Also, with the current arrangement, dovecot and dovecot-antispam can
easily trickle into testing at different speeds, breaking dovecot-antispam
in testing and potentially stable.

I attach patches against dovecot-antispam (also available from
<http://git.debian.org/?p=users/smcv/dovecot-antispam.git>) which add an
explicit dependency on the same upstream version of dovecot (and also add an
explicit build-dependency on the versions of dovecot-dev that will work in
practice).

With this change, dovecot-antispam will need a binary NMU every time a new
upstream version of dovecot is uploaded, in order to remain installable.
However, this seems better than needing a binary NMU in order to *work*, and
in the meantime being installable in an unusable state!

As a bonus, once this change arrives on backports.org, it'll become much
clearer what the intended usage of the backported package is, solving my
original problem with this package.

Thanks,
    Simon
From 0cb0ff5ea4bdbdb543bae82d670e1b339187f78d Mon Sep 17 00:00:00 2001
From: Simon McVittie <[email protected]>
Date: Mon, 16 Nov 2009 23:13:50 +0000
Subject: [PATCH 1/3] Depend on the only upstream version of dovecot we'll work with (Closes: #544588)

---
 debian/control                |    2 +-
 debian/get-dovecot-version.sh |    3 +++
 debian/rules                  |   10 +++++++++-
 3 files changed, 13 insertions(+), 2 deletions(-)
 create mode 100644 debian/get-dovecot-version.sh

diff --git a/debian/control b/debian/control
index bf49940..a6573d8 100644
--- a/debian/control
+++ b/debian/control
@@ -10,7 +10,7 @@ Vcs-Browser: http://git.debian.org/?p=users/ron/dovecot-antispam.git;a=summary
 
 Package: dovecot-antispam
 Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}, dovecot-imapd
+Depends: ${shlibs:Depends}, ${misc:Depends}, ${dovecot:Depends}
 Description: a Dovecot plugin that helps train spam filters
  dovecot-antispam provides a plugin for the Dovecot IMAP server that
  helps train spam filters. It watches designated spam folders and
diff --git a/debian/get-dovecot-version.sh b/debian/get-dovecot-version.sh
new file mode 100644
index 0000000..2037d66
--- /dev/null
+++ b/debian/get-dovecot-version.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+exec sed -n -e 's/#define PACKAGE_VERSION  *"\(.*\)"/\1/p' \
+    /usr/include/dovecot/config.h
diff --git a/debian/rules b/debian/rules
index 0ac5356..cbc9d17 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,5 +1,13 @@
 #!/usr/bin/make -f
 
+EPOCH := 1:
+DOVECOT_VERSION := $(shell sh $(CURDIR)/debian/get-dovecot-version.sh)
+# if we were compiled against (for instance) dovecot 1.2.7, depend on versions
+# "1.2.7" <= v < "1.2.7.", so a hypothetical upstream point release 1.2.7.1
+# would not be considered suitable, and (more importantly) neither would 1.2.8.
+# (Dovecot has a very strict version-compat check: see Debian bug #456021)
+DOVECOT_DEPENDENCY := dovecot-imapd (>= $(EPOCH)$(DOVECOT_VERSION)), dovecot-imapd (<< $(EPOCH)$(DOVECOT_VERSION).)
+
 build: build-stamp
 
 build-stamp:
@@ -36,7 +44,7 @@ binary-arch: build install
 	dh_fixperms
 	dh_installdeb
 	dh_shlibdeps
-	dh_gencontrol
+	dh_gencontrol -- -Vdovecot:Depends="$(DOVECOT_DEPENDENCY)"
 	dh_md5sums
 	dh_builddeb
 
-- 
1.6.5.2

From 22c9c6dbd5d0c89d935af07d6ae1e08c9d097d6f Mon Sep 17 00:00:00 2001
From: Simon McVittie <[email protected]>
Date: Mon, 16 Nov 2009 23:12:55 +0000
Subject: [PATCH 2/3] Build-Depend on a version of dovecot-dev for which we have suitable code

---
 debian/control |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/debian/control b/debian/control
index a6573d8..e95ec81 100644
--- a/debian/control
+++ b/debian/control
@@ -2,7 +2,7 @@ Source: dovecot-antispam
 Section: mail
 Priority: optional
 Maintainer: Ron Lee <[email protected]>
-Build-Depends: debhelper (>= 5), dovecot-dev
+Build-Depends: debhelper (>= 5), dovecot-dev (>= 1:1.0), dovecot-dev (<< 1:1.3~)
 Standards-Version: 3.8.2.0
 Homepage: http://johannes.sipsolutions.net/Projects/dovecot-antispam
 Vcs-Git: git://git.debian.org/users/ron/dovecot-antispam.git
-- 
1.6.5.2

Attachment: signature.asc
Description: Digital signature

Reply via email to