diff --git a/mail/dovecot-fts-xapian/Makefile b/mail/dovecot-fts-xapian/Makefile index 978dc02be880..01a6bec1aae3 100644 --- a/mail/dovecot-fts-xapian/Makefile +++ b/mail/dovecot-fts-xapian/Makefile @@ -1,31 +1,31 @@ PORTNAME= fts-xapian -DISTVERSION= 1.4.13 -PORTREVISION= 2 +DISTVERSION= 1.4.14 CATEGORIES= mail MASTER_SITES= https://github.com/grosjo/fts-xapian/releases/download/${DISTVERSION}/ PKGNAMEPREFIX= dovecot- DISTNAME= ${PKGNAMEPREFIX}${PORTNAME}-${DISTVERSION} MAINTAINER= otis@FreeBSD.org COMMENT= Dovecot FTS plugin based on Xapian LICENSE= LGPL21 BUILD_DEPENDS= dovecot>=2.3.7:mail/dovecot LIB_DEPENDS= libicuuc.so:devel/icu \ libxapian.so:databases/xapian-core RUN_DEPENDS= dovecot>=2.3.7:mail/dovecot USES= autoreconf compiler:c++11-lang libtool pkgconfig +USE_LDCONFIG= yes GNU_CONFIGURE= yes WRKSRC= ${WRKDIR}/${PORTNAME}-${DISTVERSION} PLIST_FILES= lib/dovecot/lib21_fts_xapian_plugin.a \ lib/dovecot/lib21_fts_xapian_plugin.so post-install: ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/dovecot/lib21_fts_xapian_plugin.so .include diff --git a/mail/dovecot-fts-xapian/distinfo b/mail/dovecot-fts-xapian/distinfo index 4f98dad52fbf..364773719647 100644 --- a/mail/dovecot-fts-xapian/distinfo +++ b/mail/dovecot-fts-xapian/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1633297573 -SHA256 (dovecot-fts-xapian-1.4.13.tar.gz) = a25a5ce4a70f1332408cd006ce1f326031eba5cdd3185ad467314a377af08ed4 -SIZE (dovecot-fts-xapian-1.4.13.tar.gz) = 2318781 +TIMESTAMP = 1636548959 +SHA256 (dovecot-fts-xapian-1.4.14.tar.gz) = 1f46f319f5b1c59f6359d1c1a55a7fa0988bfb3c3e8cdacec792961331ddb780 +SIZE (dovecot-fts-xapian-1.4.14.tar.gz) = 2563251 diff --git a/mail/dovecot-fts-xapian/files/patch-src_fts-backend-xapian-functions.cpp b/mail/dovecot-fts-xapian/files/patch-src_fts-backend-xapian-functions.cpp new file mode 100644 index 000000000000..74bb89dd8c95 --- /dev/null +++ b/mail/dovecot-fts-xapian/files/patch-src_fts-backend-xapian-functions.cpp @@ -0,0 +1,30 @@ +--- src/fts-backend-xapian-functions.cpp.orig 2021-11-10 13:09:44 UTC ++++ src/fts-backend-xapian-functions.cpp +@@ -505,7 +505,17 @@ static long fts_backend_xapian_current_time() + + static long fts_backend_xapian_get_free_memory() // KB + { +- return long(sysconf(_SC_AVPHYS_PAGES)*sysconf(_SC_PAGE_SIZE) / 1024.0); ++#ifdef __FreeBSD__ ++ uint32_t m; ++ size_t len = sizeof(m); ++ sysctlbyname("vm.stats.vm.v_free_count", &m, &len, NULL, 0); ++ if(fts_xapian_settings.verbose>1) i_info("FTS Xapian: (BSD) Free pages %ld",long(m)); ++ m = m * fts_xapian_settings.pagesize / 1024.0; ++ if(fts_xapian_settings.verbose>1) i_info("FTS Xapian: (BSD) Free memory %ld kB",long(m)); ++ return long(m); ++#else ++ return long(sysconf(_SC_AVPHYS_PAGES) * fts_xapian_settings.pagesize / 1024.0); ++#endif + } + + static bool fts_backend_xapian_test_memory() +@@ -1100,7 +1110,7 @@ bool fts_backend_xapian_index_text(struct xapian_fts_b + + XResultSet * result=fts_backend_xapian_query(dbx,xq,1); + +- Xapian::docid docid; ++ Xapian::docid docid = 0; + Xapian::Document * doc = NULL; + + try diff --git a/mail/dovecot-fts-xapian/files/patch-src_fts-xapian-plugin.c b/mail/dovecot-fts-xapian/files/patch-src_fts-xapian-plugin.c new file mode 100644 index 000000000000..24d3a718d46c --- /dev/null +++ b/mail/dovecot-fts-xapian/files/patch-src_fts-xapian-plugin.c @@ -0,0 +1,26 @@ +--- src/fts-xapian-plugin.c.orig 2021-11-10 13:11:59 UTC ++++ src/fts-xapian-plugin.c +@@ -30,7 +30,14 @@ static void fts_xapian_mail_user_created(struct mail_u + fuser->set.lowmemory = XAPIAN_MIN_RAM; + fuser->set.partial = XAPIAN_DEFAULT_PARTIAL; + fuser->set.full = XAPIAN_DEFAULT_FULL; +- ++ ++#ifdef __FreeBSD__ ++ size_t len = sizeof(fuser->set.pagesize); ++ sysctlbyname("hw.pagesize", &(fuser->set.pagesize), &len, NULL, 0); ++#else ++ fuser->set.pagesize = sysconf(_SC_PAGE_SIZE); ++#endif ++ + const char * env = mail_user_plugin_getenv(user, "fts_xapian"); + if (env == NULL) + { +@@ -93,7 +100,6 @@ static void fts_xapian_mail_user_created(struct mail_u + fuser->set.partial = XAPIAN_DEFAULT_PARTIAL; + fuser->set.full = XAPIAN_DEFAULT_FULL; + } +- + + if (fts_mail_user_init(user, FALSE, &error) < 0) i_error("FTS Xapian: %s", error); + diff --git a/mail/dovecot-fts-xapian/files/patch-src_fts-xapian-plugin.h b/mail/dovecot-fts-xapian/files/patch-src_fts-xapian-plugin.h new file mode 100644 index 000000000000..e6788f3145a5 --- /dev/null +++ b/mail/dovecot-fts-xapian/files/patch-src_fts-xapian-plugin.h @@ -0,0 +1,29 @@ +--- src/fts-xapian-plugin.h.orig 2021-11-10 13:06:54 UTC ++++ src/fts-xapian-plugin.h +@@ -15,6 +15,12 @@ + #include "module-context.h" + #include "fts-api-private.h" + ++#ifdef __FreeBSD__ ++#include ++#include ++#include ++#endif ++ + #define XAPIAN_FILE_PREFIX "xapian-indexes" + #define XAPIAN_TERM_SIZELIMIT 245L + #define XAPIAN_COMMIT_ENTRIES 1000000L +@@ -27,9 +33,10 @@ + + struct fts_xapian_settings + { +- int verbose; +- long lowmemory; +- long partial,full; ++ int verbose; ++ unsigned long pagesize; ++ long lowmemory; ++ long partial,full; + }; + + struct fts_xapian_user {