diff --git a/mail/rspamd/Makefile b/mail/rspamd/Makefile index 2e86b69f48b9..a3810ab16f4e 100644 --- a/mail/rspamd/Makefile +++ b/mail/rspamd/Makefile @@ -1,102 +1,103 @@ PORTNAME= rspamd PORTVERSION= 3.4 +PORTREVISION= 1 CATEGORIES= mail MAINTAINER= vsevolod@FreeBSD.org COMMENT= Fast spam filtering system WWW= https://rspamd.com/ LICENSE= APACHE20 LICENSE_FILE= ${WRKSRC}/LICENSE.md BUILD_DEPENDS= ragel:devel/ragel LIB_DEPENDS= libicui18n.so:devel/icu \ libpcre2-8.so:devel/pcre2 \ libsodium.so:security/libsodium RUN_DEPENDS= ca_root_nss>=3.*:security/ca_root_nss USES= cmake compiler:c++20-lang cpe gnome perl5 pkgconfig sqlite ssl CPE_VENDOR= rspamd_project USE_GITHUB= yes USE_GNOME= glib20 USE_LDCONFIG= yes USE_PERL5= build run USE_RC_SUBR= rspamd CMAKE_ARGS+= -DBUILD_PORT=yes \ -DCMAKE_INSTALL_PREFIX=${PREFIX} \ -DCONFDIR=${PREFIX}/etc/rspamd \ -DDBDIR=/var/db/rspamd \ -DLIBDIR=${PREFIX}/lib/rspamd \ -DLOGDIR=/var/log/rspamd \ -DMANDIR=${MANPREFIX}/man \ -DRUNDIR=/var/run/rspamd CONFLICTS_INSTALL= rspamd-devel SUB_FILES= pkg-message rspamd.newsyslog.conf.sample USERS= rspamd GROUPS= rspamd PLIST_SUB+= ETCDIR=etc/rspamd \ RSPAMDVERSION=${PORTVERSION} OPTIONS_DEFINE= BLAS CGP GPERF LUAJIT OPTIONS_DEFINE_amd64= HYPERSCAN OPTIONS_DEFAULT_amd64= LUAJIT OPTIONS_DEFAULT_armv7= LUAJIT OPTIONS_DEFAULT_i386= LUAJIT OPTIONS_DEFAULT_powerpc= LUAJIT OPTIONS_DEFAULT_powerpc64= LUAJIT OPTIONS_DEFAULT_powerpc64le= LUAJIT OPTIONS_SUB= yes BLAS_DESC= Use OpenBLAS to accelerate KANN CGP_DESC= Install Communigate Pro(tm) helper GPERF_DESC= Google perf-tools profiling HYPERSCAN_DESC= Use hyperscan optimizations (amd64 only) LUAJIT_DESC= Use LuaJIT instead of standard Lua BLAS_LIB_DEPENDS= libblis.so:math/blis \ liblapack.so:math/lapack BLAS_USES= blaslapack:openblas BLAS_CMAKE_ON= -DENABLE_BLAS=ON CGP_RUN_DEPENDS+= p5-AnyEvent-HTTP>=0:www/p5-AnyEvent-HTTP \ p5-AnyEvent>=0:devel/p5-AnyEvent \ p5-EV>=0:devel/p5-EV \ p5-JSON-XS>=0:converters/p5-JSON-XS GPERF_LIB_DEPENDS= libprofiler.so:devel/google-perftools GPERF_CMAKE_ON= -DENABLE_GPERF_TOOLS=ON HYPERSCAN_LIB_DEPENDS= libhs.so:devel/hyperscan HYPERSCAN_CMAKE_ON= -DENABLE_HYPERSCAN=ON LUAJIT_USES= luajit LUAJIT_USES_OFF= lua:51+ LUAJIT_CMAKE_OFF= -DENABLE_LUAJIT=OFF .include .if ${ARCH} == powerpc64 CMAKE_ARGS+= -DENABLE_LTO:BOOL=OFF .endif post-install: @${MKDIR} \ ${STAGEDIR}/var/log/rspamd \ ${STAGEDIR}/var/db/rspamd \ ${STAGEDIR}/var/run/rspamd ${RM} ${STAGEDIR}/${ETCDIR}/rspamd.conf.sample # Linux specific ${RM} ${STAGEDIR}/${ETCDIR}/rspamd.systemd.conf ${RM} ${STAGEDIR}/${ETCDIR}/rspamd.sysvinit.conf ${INSTALL_DATA} ${WRKDIR}/rspamd.newsyslog.conf.sample ${STAGEDIR}${ETCDIR} @${MKDIR} ${STAGEDIR}${PREFIX}/etc/newsyslog.conf.d ${LN} -s ${ETCDIR}/rspamd.newsyslog.conf ${STAGEDIR}${PREFIX}/etc/newsyslog.conf.d post-install-CGP-on: ${INSTALL_SCRIPT} ${WRKSRC}/utils/cgp_rspamd.pl ${STAGEDIR}${PREFIX}/bin/rspamd-cgp-helper .include diff --git a/mail/rspamd/files/patch-src_libserver_hyperscan_tools.cxx b/mail/rspamd/files/patch-src_libserver_hyperscan_tools.cxx new file mode 100644 index 000000000000..72eb1173ae88 --- /dev/null +++ b/mail/rspamd/files/patch-src_libserver_hyperscan_tools.cxx @@ -0,0 +1,21 @@ +diff --git a/src/libserver/hyperscan_tools.cxx b/src/libserver/hyperscan_tools.cxx +index 6187208a9..96366067d 100644 +--- src/libserver/hyperscan_tools.cxx ++++ src/libserver/hyperscan_tools.cxx +@@ -306,7 +306,15 @@ auto load_cached_hs_file(const char *fname, std::int64_t offset = 0) -> tl::expe + msg_debug_hyperscan_lambda("multipattern: create new database in %s; %Hz size", + tmpfile_pattern.data(), unserialized_size); + void *buf; +- posix_memalign(&buf, 16, unserialized_size); ++#ifdef HAVE_GETPAGESIZE ++ auto page_size = getpagesize(); ++#else ++ auto page_size = sysconf(_SC_PAGESIZE); ++#endif ++ if (page_size == -1) { ++ page_size = 4096; ++ } ++ posix_memalign(&buf, page_size, unserialized_size); + if (buf == nullptr) { + return tl::make_unexpected(error {"Cannot allocate memory", errno, error_category::CRITICAL }); + } diff --git a/mail/rspamd/files/patch-src_libutil_cxx_file_util.cxx b/mail/rspamd/files/patch-src_libutil_cxx_file_util.cxx new file mode 100644 index 000000000000..f7461da0c82b --- /dev/null +++ b/mail/rspamd/files/patch-src_libutil_cxx_file_util.cxx @@ -0,0 +1,22 @@ +diff --git a/src/libutil/cxx/file_util.cxx b/src/libutil/cxx/file_util.cxx +index e3b3a2605..4536fa97b 100644 +--- src/libutil/cxx/file_util.cxx ++++ src/libutil/cxx/file_util.cxx +@@ -198,7 +198,7 @@ auto raii_mmaped_file::mmap_shared(raii_file &&file, + } + /* Update stat on file to ensure it is up-to-date */ + file.update_stat(); +- map = mmap(nullptr, file.get_size() - offset, flags, MAP_SHARED, file.get_fd(), offset); ++ map = mmap(nullptr, (std::size_t)(file.get_size() - offset), flags, MAP_SHARED, file.get_fd(), offset); + + if (map == MAP_FAILED) { + return tl::make_unexpected(error { fmt::format("cannot mmap file {}: {}", +@@ -206,7 +206,7 @@ auto raii_mmaped_file::mmap_shared(raii_file &&file, + + } + +- return raii_mmaped_file{std::move(file), map, file.get_size() - offset}; ++ return raii_mmaped_file{std::move(file), map, (std::size_t)(file.get_size() - offset)}; + } + + auto raii_mmaped_file::mmap_shared(const char *fname, int open_flags, diff --git a/mail/rspamd/files/pkg-message.in b/mail/rspamd/files/pkg-message.in index 927f2a5b46ac..52b6ff711785 100644 --- a/mail/rspamd/files/pkg-message.in +++ b/mail/rspamd/files/pkg-message.in @@ -1,17 +1,27 @@ [ { type: install message: <