- fixed building with dovecot 2.2.14+ auto/th/dovecot-antispam-2.0-21
authorJan Rękorajski <baggins@pld-linux.org>
Sun, 9 Nov 2014 21:32:39 +0000 (22:32 +0100)
committerJan Rękorajski <baggins@pld-linux.org>
Sun, 9 Nov 2014 21:32:39 +0000 (22:32 +0100)
- rel 21

dovecot-2.2.14.patch [new file with mode: 0644]
dovecot-antispam.spec

diff --git a/dovecot-2.2.14.patch b/dovecot-2.2.14.patch
new file mode 100644 (file)
index 0000000..7e48f07
--- /dev/null
@@ -0,0 +1,225 @@
+From d17c6a9c34aa407d2ced8488389520903f16971f Mon Sep 17 00:00:00 2001
+From: Ron <ron@debian.org>
+Date: Sat, 25 Oct 2014 00:36:12 +1030
+Subject: Include the patch level in the dovecot version checks
+
+Dovecot broke the t_push() API for 2.2.14 so just checking the major/minor
+versions is no longer enough.  Bonus points for it not actually exporting
+that version anywhere itself, so we still need to parse the full string to
+get it.
+
+There's a chance this might break some things for dovecot < 2.0 or so
+(based mostly on the theory that the patch=255 fallback coded into the
+dovecot-version.c parsing was put there for a reason), but we might be
+well past the stage of needing to worry about that now.  If someone
+tests it with an earlier version and it breaks there, we'll worry about
+that when they report how and where it breaks.
+
+diff --git a/antispam-plugin.c b/antispam-plugin.c
+index 103b5fb..6ea49cf 100644
+--- a/antispam-plugin.c
++++ b/antispam-plugin.c
+@@ -70,7 +70,7 @@ static void lowercase_string(const char *in, char *out)
+ }
+ static bool mailbox_patternmatch(struct mailbox *box,
+-#if DOVECOT_IS_GE(2,0)
++#if DOVECOT_IS_GE(2,0,0)
+                                const struct mail_namespace *ns,
+ #else
+                                struct mail_storage *storage,
+@@ -82,7 +82,7 @@ static bool mailbox_patternmatch(struct mailbox *box,
+       int len;
+       int rc;
+-#if DOVECOT_IS_GE(2,0)
++#if DOVECOT_IS_GE(2,0,0)
+       if (ns && mailbox_get_namespace(box) != ns)
+               return FALSE;
+ #else
+@@ -116,7 +116,7 @@ static bool mailbox_patternmatch(struct mailbox *box,
+ }
+ static bool mailbox_patternmatch_case(struct mailbox *box,
+-#if DOVECOT_IS_GE(2,0)
++#if DOVECOT_IS_GE(2,0,0)
+                                     const struct mail_namespace *ns,
+ #else
+                                     struct mail_storage *ns,
+@@ -127,7 +127,7 @@ static bool mailbox_patternmatch_case(struct mailbox *box,
+ }
+ static bool mailbox_patternmatch_icase(struct mailbox *box,
+-#if DOVECOT_IS_GE(2,0)
++#if DOVECOT_IS_GE(2,0,0)
+                                      const struct mail_namespace *ns,
+ #else
+                                      struct mail_storage *ns,
+@@ -138,7 +138,7 @@ static bool mailbox_patternmatch_icase(struct mailbox *box,
+ }
+ static bool _mailbox_equals(struct mailbox *box,
+-#if DOVECOT_IS_GE(2,0)
++#if DOVECOT_IS_GE(2,0,0)
+                           const struct mail_namespace *ns,
+ #else
+                           struct mail_storage *ns,
+@@ -149,7 +149,7 @@ static bool _mailbox_equals(struct mailbox *box,
+ }
+ typedef bool (*match_fn_t)(struct mailbox *,
+-#if DOVECOT_IS_GE(2,0)
++#if DOVECOT_IS_GE(2,0,0)
+                          const struct mail_namespace *,
+ #else
+                          struct mail_storage *,
+@@ -187,7 +187,7 @@ static bool mailbox_in_list(struct mailbox *box, char ** const * patterns)
+               while (*list) {
+                       if (match_info[i].fn(box,
+-#if DOVECOT_IS_GE(2,0)
++#if DOVECOT_IS_GE(2,0,0)
+                                            mailbox_get_namespace(box),
+ #else
+                                            mailbox_get_storage(box),
+@@ -374,7 +374,7 @@ void antispam_free_config(struct antispam_config *cfg)
+       i_free(cfg);
+ }
+-#if DOVECOT_IS_GE(2,0)
++#if DOVECOT_IS_GE(2,0,0)
+ void PLUGIN_FUNCTION(init)(struct module *module)
+ {
+       antispam_storage_init(module);
+@@ -392,7 +392,7 @@ void PLUGIN_FUNCTION(deinit)(void)
+ }
+ /* put dovecot version we built against into plugin for checking */
+-#ifdef DOVECOT_ABI_VERSION
++#if DOVECOT_IS_GE(2,2,0)
+ const char *PLUGIN_FUNCTION(version) = DOVECOT_ABI_VERSION;
+ #else
+ const char *PLUGIN_FUNCTION(version) = PACKAGE_VERSION;
+diff --git a/antispam-plugin.h b/antispam-plugin.h
+index a06f7be..724ab5e 100644
+--- a/antispam-plugin.h
++++ b/antispam-plugin.h
+@@ -4,7 +4,7 @@
+ #include "lib.h"
+ #include "str.h"
+ #include "dovecot-version.h"
+-#if DOVECOT_IS_GE(2, 0)
++#if DOVECOT_IS_GE(2,0,0)
+ #include "imap-client.h"
+ #else
+ #include "client.h"
+@@ -186,7 +186,7 @@ void antispam_free_config(struct antispam_config *cfg);
+ /*
+  * Dovecot version compat code
+  */
+-#if DOVECOT_IS_EQ(1, 0)
++#if DOVECOT_IS_GE(1,0,0) && DOVECOT_IS_LT(1,1,0)
+ #define module_arg            void
+ #define ATTR_UNUSED           __attr_unused__
+ #define mempool_unref(x)      pool_unref(*(x))
+@@ -217,7 +217,7 @@ static inline int _mail_get_stream(struct mail *mail,
+       return 0;
+ }
+ #define mail_get_stream _mail_get_stream
+-#elif DOVECOT_IS_EQ(1, 1)
++#elif DOVECOT_IS_GE(1,1,0) && DOVECOT_IS_LT(1,2,0)
+ #define mempool_unref         pool_unref
+ #define module_arg            void
+ #define ME(err)                       MAIL_ERROR_ ##err,
+@@ -236,7 +236,7 @@ o_stream_create_from_fd(int fd, pool_t pool ATTR_UNUSED)
+ {
+       return o_stream_create_fd(fd, 0, TRUE);
+ }
+-#elif DOVECOT_IS_EQ(1, 2)
++#elif DOVECOT_IS_GE(1,2,0) && DOVECOT_IS_LT(2,0,0)
+ #define mempool_unref         pool_unref
+ #define module_arg            void
+ #define ME(err)                       MAIL_ERROR_ ##err,
+@@ -255,7 +255,7 @@ o_stream_create_from_fd(int fd, pool_t pool ATTR_UNUSED)
+ {
+       return o_stream_create_fd(fd, 0, TRUE);
+ }
+-#elif DOVECOT_IS_EQ(2, 0) || DOVECOT_IS_EQ(2, 1)
++#elif DOVECOT_IS_GE(2,0,0) && DOVECOT_IS_LT(2,2,0)
+ #define mempool_unref         pool_unref
+ #define module_arg            struct module *
+ #define ME(err)                       MAIL_ERROR_ ##err,
+@@ -277,7 +277,7 @@ o_stream_create_from_fd(int fd, pool_t pool ATTR_UNUSED)
+ {
+       return dict_init(uri, DICT_DATA_TYPE_STRING, username, NULL);
+ }
+-#elif DOVECOT_IS_EQ(2, 2)
++#elif DOVECOT_IS_GE(2,2,0)
+ #define mempool_unref         pool_unref
+ #define module_arg            struct module *
+ #define ME(err)                       MAIL_ERROR_ ##err,
+diff --git a/dovecot-version.c b/dovecot-version.c
+index e7e7cf2..a9f980a 100644
+--- a/dovecot-version.c
++++ b/dovecot-version.c
+@@ -40,19 +40,19 @@ int main(int argc, char **argv)
+       printf("/* Auto-generated file, do not edit */\n\n");
+       printf("#define DOVECOT_VERSION_CODE(maj, min, patch)   "
+               "((maj)<<16 | ((min)<<8) | (patch))\n\n");
+-      
++
+       printf("#define DOVECOT_VCODE                           "
+-              "0x%.2x%.2x%.2x\n", maj, min, 0);
+-      printf("#define DOVECOT_IS_EQ(maj, min)                 "
+-              "DOVECOT_VCODE == DOVECOT_VERSION_CODE(maj, min, 0)\n");
+-      printf("#define DOVECOT_IS_GT(maj, min)                 "
+-              "DOVECOT_VCODE > DOVECOT_VERSION_CODE(maj, min, 0)\n");
+-      printf("#define DOVECOT_IS_GE(maj, min)                 "
+-              "DOVECOT_VCODE >= DOVECOT_VERSION_CODE(maj, min, 0)\n");
+-      printf("#define DOVECOT_IS_LT(maj, min)                 "
+-              "DOVECOT_VCODE < DOVECOT_VERSION_CODE(maj, min, 0)\n");
+-      printf("#define DOVECOT_IS_LE(maj, min)                 "
+-              "DOVECOT_VCODE <= DOVECOT_VERSION_CODE(maj, min, 0)\n");
++              "0x%.2x%.2x%.2x\n", maj, min, patch);
++      printf("#define DOVECOT_IS_EQ(maj, min, patch)          "
++              "DOVECOT_VCODE == DOVECOT_VERSION_CODE(maj, min, patch)\n");
++      printf("#define DOVECOT_IS_GT(maj, min, patch)          "
++              "DOVECOT_VCODE > DOVECOT_VERSION_CODE(maj, min, patch)\n");
++      printf("#define DOVECOT_IS_GE(maj, min, patch)          "
++              "DOVECOT_VCODE >= DOVECOT_VERSION_CODE(maj, min, patch)\n");
++      printf("#define DOVECOT_IS_LT(maj, min, patch)          "
++              "DOVECOT_VCODE < DOVECOT_VERSION_CODE(maj, min, patch)\n");
++      printf("#define DOVECOT_IS_LE(maj, min, patch)          "
++              "DOVECOT_VCODE <= DOVECOT_VERSION_CODE(maj, min, patch)\n");
+       /* Use the antispam-storage-2.0.c for dovecot 2.1 and 2.2 as well */
+       if (maj == 2 && min < 3)
+-- 
+cgit v0.10.2
+
+From 2aa93d15409f5a47589d264991fd3e8261d34b1b Mon Sep 17 00:00:00 2001
+From: Ron <ron@debian.org>
+Date: Sat, 25 Oct 2014 00:47:21 +1030
+Subject: Add a compatibility macro for t_push()
+
+This should fix things for the API change in dovecot 2.2.14 reported in:
+https://bugs.debian.org/765943
+
+diff --git a/antispam-plugin.h b/antispam-plugin.h
+index 724ab5e..939e27e 100644
+--- a/antispam-plugin.h
++++ b/antispam-plugin.h
+@@ -299,6 +299,10 @@ o_stream_create_from_fd(int fd, pool_t pool ATTR_UNUSED)
+ #define module_arg            struct module *
+ #define ME(err)                       MAIL_ERROR_ ##err,
++#if DOVECOT_IS_GE(2,2,14)
++#define t_push()              t_push(__func__)
++#endif
++
+ static inline const char *const *
+ get_mail_headers(struct mail *mail, const char *hdr)
+ {
+-- 
+cgit v0.10.2
+
index 2df1e3ea924961e2d764071df2578c4bcd44f2dc..de39a04c2d3b6185e437e2eebdd027c088a8c346 100644 (file)
@@ -2,13 +2,14 @@ Summary:      The dovecot antispam plugin
 Summary(pl.UTF-8):     Wtyczka antyspamowa dla dovecota
 Name:          dovecot-antispam
 Version:       2.0
-Release:       20
+Release:       21
 License:       GPL v2
 Group:         Daemons
 Source0:       http://johannes.sipsolutions.net/download/dovecot-antispam/%{name}-%{version}.tar.bz2
 # Source0-md5: 14547898759fbd93f2b98304520decc6
 Patch0:                %{name}-git.patch
 Patch1:                dovecot-2.2.patch
+Patch2:                dovecot-2.2.14.patch
 URL:           http://johannes.sipsolutions.net/Projects/dovecot-antispam
 BuildRequires: dovecot-devel >= 1:2.0
 %requires_eq_to        dovecot dovecot-devel
@@ -24,6 +25,7 @@ way it was moved).
 %setup -q
 %patch0 -p1
 %patch1 -p1
+%patch2 -p1
 
 %build
 unset GIT_DIR
This page took 0.04704 seconds and 4 git commands to generate.