Name: rspamd Version: 3.12.1 Release: 1%{?dist} Summary: Rapid spam filtering system License: ASL 2.0 and LGPLv3 and BSD and MIT and CC0 and zlib URL: https://www.rspamd.com/ Source0: https://github.com/%{name}/%{name}/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz Source1: rspamd.sysusers Source2: rspamd.tmpfiles # see https://bugzilla.redhat.com/show_bug.cgi?id=2043092 %undefine _package_note_flags %global debug_package %{nil} %define _build_id_links none BuildRequires: cmake BuildRequires: gcc-toolset-14-gcc BuildRequires: gcc-toolset-14-gcc-c++ BuildRequires: gcc-toolset-14-gcc-plugin-annobin BuildRequires: file-devel BuildRequires: glib2-devel BuildRequires: hyperscan-devel BuildRequires: libcurl-devel BuildRequires: libicu-devel BuildRequires: libsodium-devel BuildRequires: openblas-devel BuildRequires: lapack-devel BuildRequires: openssl-devel BuildRequires: pcre2-devel BuildRequires: libzstd-devel BuildRequires: perl BuildRequires: perl-Digest-MD5 BuildRequires: systemd-units BuildRequires: systemd-rpm-macros #BuildRequires: epel-rpm-macros-systemd BuildRequires: sqlite-devel BuildRequires: zlib-devel BuildRequires: libarchive-devel %{?systemd_requires} %{?sysusers_requires_compat} Requires: hyperscan Requires: openblas Requires: zlib %description 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. %prep %setup -n %{name}-%{version} -q rm -rf centos rm -rf debian rm -rf docker rm -rf freebsd rm -fr %{_builddir}/ragel-6.10 || true curl -Ls https://www.colm.net/files/ragel/ragel-6.10.tar.gz | tar zxf - -C %{_builddir} rm -fr %{_builddir}/luajit-src || true rm -fr %{_builddir}/luajit-build || true git clone -b v2.1 https://luajit.org/git/luajit-2.0.git %{_builddir}/luajit-src rm -fr %{_builddir}/fasttext-src || true rm -fr %{_builddir}/fasttext-build || true git clone https://github.com/rspamd/fastText.git --depth 1 %{_builddir}/fasttext-src %build source /opt/rh/gcc-toolset-14/enable pushd %{_builddir}/ragel-6.10 ./configure --prefix=/usr && make -j4 && make install popd pushd %{_builddir}/luajit-src && make clean && make %{?_smp_mflags} CC="gcc -fPIC" PREFIX=%{_builddir}/luajit-build && make install PREFIX=%{_builddir}/luajit-build popd rm -f %{_builddir}/luajit-build/lib/*.so || true pushd %{_builddir}/fasttext-src && cmake . -DCMAKE_INSTALL_PREFIX=%{_builddir}/fasttext-build -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="-fpic -fPIC" -DCMAKE_CXX_FLAGS="-fPIC -fpic" && make -j4 && make install PREFIX=%{_builddir}/fasttext-build popd rm -f %{_builddir}/fasttext-build/lib/libfasttext.so* mv -f %{_builddir}/fasttext-build/lib/libfasttext_pic.a %{_builddir}/fasttext-build/lib/libfasttext.a %cmake \ -DDEBIAN_BUILD=0 \ -DENABLE_LTO=ON \ -DNO_SHARED=ON \ -DENABLE_OPTIMIZATION=ON \ %if 0%{?el8} -DLINKER_NAME=ld.bfd \ %endif -DCONFDIR=%{_sysconfdir}/%{name} \ -DMANDIR=%{_mandir} \ -DDBDIR=%{_sharedstatedir}/%{name} \ -DRUNDIR=%{_rundir}/%{name} \ -DLOGDIR=%{_localstatedir}/log/%{name} \ -DSHAREDIR=%{_datadir}/%{name} \ -DLIBDIR=%{_libdir}/%{name}/ \ -DSYSTEMDDIR=%{_unitdir} \ -DWANT_SYSTEMD_UNITS=OFF \ -DENABLE_HYPERSCAN=ON \ -DENABLE_LUAJIT=ON \ -DLUA_ROOT=%{_builddir}/luajit-build \ -DENABLE_FASTTEXT=ON \ -DFASTTEXT_ROOT_DIR=%{_builddir}/fasttext-build \ -DENABLE_JEMALLOC=OFF \ -DENABLE_PCRE2=ON \ -DSYSTEM_ZSTD=ON \ -DENABLE_BLAS=ON \ -DINSTALL_WEBUI=OFF \ -DRSPAMD_USER=%{name} %cmake_build %pre %sysusers_create_compat %{SOURCE1} %install %cmake_install # The tests install some files we don't want so ship rm -f %{buildroot}%{_libdir}/debug/usr/bin/rspam* mkdir -p %{buildroot}{%{_localstatedir}/log,%{_rundir}}/%{name}/ install -Ddm 0755 %{buildroot}%{_sysconfdir}/%{name}/{local,override}.d/ install -p -D -m 0644 %{SOURCE1} %{buildroot}%{_sysusersdir}/%{name}.conf install -p -D -m 0644 %{SOURCE2} %{buildroot}%{_tmpfilesdir}/%{name}.conf %files %exclude %{_datadir}/%{name}/elastic %exclude %{_sysconfdir}/%{name}/* %exclude %{_mandir} %{_bindir}/rspam{adm,c,d}{,-%{version}} %{_bindir}/rspamd_stats %dir %{_datadir}/%{name} %{_datadir}/%{name}/effective_tld_names.dat %dir %{_datadir}/%{name}/{languages,rules,plugins} %{_datadir}/%{name}/languages/*.json %{_datadir}/%{name}/languages/stop_words %{_datadir}/%{name}/{rules,plugins}/*.lua %dir %{_datadir}/%{name}/lualib %{_datadir}/%{name}/lualib/*.lua %dir %{_datadir}/%{name}/lualib/{lua_content,lua_ffi,lua_magic,lua_scanners,lua_selectors,plugins,rspamadm,redis_scripts} %{_datadir}/%{name}/lualib/{lua_content,lua_ffi,lua_magic,lua_scanners,lua_selectors,plugins,rspamadm,redis_scripts}/*.lua %dir %{_datadir}/%{name}/rules/{controller,regexp} %{_datadir}/%{name}/rules/{controller,regexp}/*.lua %{_libdir}/%{name}/* %dir %{_sysconfdir}/%{name} %{_sysusersdir}/%{name}.conf %{_tmpfilesdir}/%{name}.conf %dir %attr(0750,%{name},%{name}) %{_rundir}/%{name}