]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Rework debian packages build system
authorVsevolod Stakhov <vsevolod@rspamd.com>
Fri, 17 Feb 2023 19:53:21 +0000 (19:53 +0000)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Fri, 17 Feb 2023 19:53:21 +0000 (19:53 +0000)
debian/control
debian/rules

index 97211dbc66ae0dfef80afd9b6a90abaff90ce677..46fcff85d44c5ff2bb45639c7d76d28b0566c635 100644 (file)
@@ -6,10 +6,7 @@ Build-Depends: cmake,
                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,
@@ -26,15 +23,35 @@ Vcs-Browser: https://github.com/vstakhov/rspamd
 
 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.
index f702e46dec523142701603441e17d2c98cd7e5c8..f4c922447afdd3b1634c214c9d48300905a6bb04 100755 (executable)
@@ -5,26 +5,39 @@ export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
 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 \
@@ -33,11 +46,9 @@ override_dh_auto_configure:
                -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 \
@@ -45,20 +56,33 @@ override_dh_auto_configure:
                -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