On Tue, 17 Nov 2009 at 12:37:55 +1030, Ron wrote:
> This is a known issue, yeah.  But I don't really think it's a bug in the
> plugin per-se.

I'm not going to get into BTS severity ping-pong, but I don't see how this can
not be grave. dovecot-antispam only has one purpose (being loaded into
dovecot-imapd), but when the current sid/i386 version of dovecot-antispam is
loaded into the current sid/i386 version of dovecot-imapd, it is not only
non-functional, but also prevents IMAP logins. It's only coincidence that the
versions in squeeze don't currently have the same failure mode.

(This gets worse in backports or partial upgrades, since without a dependency
it's unclear whether you're meant to be using the stable or backported version
of dovecot, only one of which can be supported; my interest in this bug
started from upgrading dovecot-antispam on a lenny + backports machine and
breaking its IMAP server.)

> Dovecot itself really needs a saner way to indicate when
> its plugin ABI has actually changed than just enforcing they are used
> with the 'current version'.  I've talked to Jaldhar about this previously
> and he seemed to indicate that this would get sorted out, but I'm still
> not exactly sure when or how.

I've been cc'ing dove...@packages.debian.org on recent mails in this bug;
Dovecot maintainers, any thoughts on this? Bug #456021 "Please use looser
versioning for plugin interface" is very relevant to this, but appears
to have been open for two years with no response, so I'm not holding my
breath...

I believe the patch I provided is the best dovecot-antispam can do to resolve
its current unusability without assistance from the dovecot package. With
this patch it would need a binNMU for each Dovecot upstream release to remain
installable, but at the moment, it needs a binNMU for each Dovecot upstream
release *anyway*, to remain usable (the dependencies just don't make that
obvious).

Having looked at the contents of dovecot-dev, it seems that Dovecot wasn't
really designed to be used with out-of-tree plugins - the fact that dovecot-dev
contains /usr/include/dovecot/src and /usr/include/dovecot/config.h seems to
indicate that plugins are "meant to be" in-tree.

As such, I think the simplest way for dovecot-antispam to remain usable with
dovecot's help would be to embed it in the dovecot package as a Debian patch,
in the same way that it's currently patched to contain a plugin for mbox.gz
and a plugin for IMAP quota?

> > --- 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)
> 
> Uh, are you sure you really need this many subshells to do this ;?

There are two nested /bin/sh processes here: one implicit in $(shell foo)
and one explicitly invoked. I did try to use $(shell sed...) but ran into a
collision between shell-quoting and Makefile-quoting, and chose to go for
robustness over optimization.

> > +# 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,
> 
> .... when in reality, it actually most probably would be perfectly ok.
> and hypothetically it may not have even had the PACKAGE_VERSION macro
> that you check incremented

It's the normal autoconf PACKAGE_VERSION, which goes into (among other things)
the name of the tarball, so I would hope that every upstream release would
increment it! This is the same string that Dovecot's plugin-compatibility
check uses, so the plugin will load successfully if and only if the
PACKAGE_VERSION matches.

> And keeps getting
> worse if Jaldhar ever has to release a .dfsg upstream version or so, since
> again the package version and what you grep out of dovecot source here won't
> actually match at all ...

A fair point.

Regards,
    Simon

Attachment: signature.asc
Description: Digital signature

Reply via email to