debhelper (>= 10),
libcurl4-openssl-dev,
libglib2.0-dev,
- libhyperscan-dev [amd64 i386],
libicu-dev,
- libjemalloc-dev,
- libluajit-5.1-dev [amd64 arm64 armel armhf i386 mips mips64el mipsel ppc64 ppc64el] | liblua5.1-dev,
libmagic-dev,
libpcre2-dev,
libsodium-dev,
Package: rspamd
Architecture: any
+Conflicts: rspamd-asan
+Provides: rspamd
Depends: adduser, lsb-base, ca-certificates, ${misc:Depends}, ${shlibs:Depends}
Description: Rapid spam filtering system
Rspamd is a rapid, modular and lightweight spam filter. It is designed to work
with big amount of mail and can be easily extended with own filters written in
Lua.
+Package: rspamd-asan
+Architecture: any
+Conflicts: rspamd
+Provides: rspamd
+Depends: adduser, lsb-base, ca-certificates, ${misc:Depends}, ${shlibs:Depends}
+Description: Rapid spam filtering system
+ Rspamd is a rapid, modular and lightweight spam filter. It is designed to work
+ with big amount of mail and can be easily extended with own filters written in
+ Lua. This package is build with no compile optimisations and with ASAN library
+ to be used when there is a need to debug Rspamd.
+
Package: rspamd-dbg
Architecture: any
Section: debug
Depends: rspamd (= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}
Description: debugging symbols for rspamd
This package contains the debugging symbols for rspamd.
+
+Package: rspamd-dbg-asan
+Architecture: any
+Section: debug
+Depends: rspamd-asan (= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}
+Description: debugging symbols for rspamd-asan
+ This package contains the debugging symbols for rspamd-asan.
export ASAN_OPTIONS=detect_leaks=0
DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
+builddir = debian/build/flavor-
+FLAVORS = release asan
+CONFIG_asan = -DCMAKE_BUILD_TYPE=Debug -DSANITIZE=address -DENABLE_LTO=OFF
+CONFIG_release = -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_LTO=ON
ifneq ($(filter $(DEB_HOST_ARCH),amd64 armel armhf i386 mips mips64el mipsel ppc64 ppc64el),)
- ENABLE_LUAJIT := ON
+ ENABLE_LUAJIT := -DENABLE_LUAJIT=ON -DLUA_ROOT=/luajit-build
else
- ENABLE_LUAJIT := OFF
+ ENABLE_LUAJIT := -DENABLE_LUAJIT=OFF
endif
# Can be filled by a build system
EXTRA_ARGS :=
+ENABLE_JEMALLOC := -DENABLE_JEMALLOC=OFF
-ifneq ($(filter $(DEB_HOST_ARCH),amd64 i386),)
+ifneq ($(filter $(DEB_HOST_ARCH),amd64 i386 arm64),)
+ifeq ($(filter $(DEB_HOST_ARCH),arm64),)
+ ENABLE_JEMALLOC := -DENABLE_JEMALLOC=ON
+ ENABLE_HYPERSCAN := -DENABLE_HYPERSCAN=ON -DHYPERSCAN_ROOT_DIR=/vectorscan
+else
ENABLE_HYPERSCAN := -DENABLE_HYPERSCAN=ON
+endif
else
- ENABLE_HYPERSCAN :=
+ ENABLE_HYPERSCAN := -DENABLE_HYPERSCAN=OFF
endif
+
%:
dh $@ --with systemd --parallel
-override_dh_auto_configure:
- dh_auto_configure -- -DCONFDIR=/etc/rspamd \
+override_dh_auto_configure: $(patsubst %,configure_%,$(FLAVORS))
+configure_%:
+ mkdir -p $(builddir)$*
+ cd $(builddir)$* && cmake ../../../ -DCONFDIR=/etc/rspamd -DCMAKE_C_COMPILER=clang-16 -DCMAKE_CXX_COMPILER=clang++-16 \
-DMANDIR=/usr/share/man \
-DRUNDIR=/run/rspamd \
-DDBDIR=/var/lib/rspamd \
-DLIBDIR=/usr/lib/rspamd \
-DINCLUDEDIR=/usr/include \
-DSYSTEMDDIR=/lib/systemd/system \
- -DCMAKE_BUILD_TYPE=None \
+ -DCMAKE_INSTALL_PREFIX:PATH=/usr \
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
- -DENABLE_LTO=ON \
-DDEBIAN_BUILD=1 \
- -DENABLE_JEMALLOC=ON \
-DENABLE_PCRE2=ON \
-DENABLE_LUAJIT=$(ENABLE_LUAJIT) \
-DENABLE_LIBUNWIND=ON \
-DENABLE_STATIC_LIBCXX=OFF \
-DENABLE_LIBCXX=OFF \
$(ENABLE_HYPERSCAN) \
+ $(ENABLE_LUAJIT) \
+ $(ENABLE_JEMALLOC) \
+ $(CONFIG_$*) \
$(EXTRA_ARGS)
-override_dh_strip:
- dh_strip --dbg-package=rspamd-dbg
+override_dh_auto_build: $(patsubst %,build_%,$(FLAVORS))
+build_%:
+ dh_auto_build --sourcedirectory=$(builddir)$*
+
+override_dh_strip: $(patsubst %,strip_%,$(FLAVORS))
+strip_%:
+ if [ "$*" = "asan" ]; then \
+ dh_strip --dbg-package=rspamd-dbg-asan ; \
+ else \
+ dh_strip --dbg-package=rspamd-dbg ; \
+ fi
override_dh_makeshlibs:
dh_makeshlibs -Xrspamd-actrie
-override_dh_auto_install:
- dh_auto_install --destdir=debian/rspamd
-
-override_dh_auto_clean:
- dh_auto_clean
- rm -f src/modules.c
+override_dh_auto_install: $(patsubst %,install_%,$(FLAVORS))
+install_%:
+ if [ "$*" = "asan" ]; then \
+ cd $(builddir)$* && make install DESTDIR=../../../debian/rspamd-asan ; \
+ else \
+ cd $(builddir)$* && make install DESTDIR=../../../debian/rspamd ; \
+ fi
override_dh_fixperms:
dh_fixperms