rspamd/rspamd.spec

875 lines
32 KiB
RPMSpec
Raw Normal View History

#
# spec file for package rspamd
#
# Copyright (c) 2016 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%{echo: building for suse: ver:%{suse_version} arch:%{_arch} o:%{is_opensuse} "\n"}
%bcond_with split_out_client
%if 0%{?suse_version} > 1230 || 0%{?rhel_version} > 600 || 0%{?centos_version} > 600 || 0%{?fedora_version} >= 20 || 0%{?el7}%{?fc20}%{?fc21}%{?fc22}%{?fc23}%{?fc24}%{?fc25}
%bcond_without systemd
%else
%bcond_with systemd
%endif
%ifarch %ix86
%if 0%{?suse_version} > 1500
#no luajit and jemallox for i.86 arch before Tumbleweed
%bcond_without luajit
%bcond_without jemalloc
%bcond_without ext_hiredis
%bcond_without torch
%endif
%else
%ifarch ppc ppc64 ppc64le
# no jemalloc for PPC builds (either too old, or absent at all)
%if 0%{?sle_version} != 150000
#no hiredis for SLE_15 on ppc64le
%bcond_without ext_hiredis
%endif
%else
%if 0%{?is_opensuse}
# Leap 43.2 and newer has luajit and may have torch
%bcond_without luajit
%bcond_without torch
%bcond_without jemalloc
%bcond_without ext_hiredis
%endif
%endif
%endif
%bcond_with luajit
%bcond_with torch
%ifarch %{ix86} x86_64
%if 0%{?suse_version} > 1500
%bcond_without hyperscan
%else
%bcond_with hyperscan
%endif
%endif
%if 0%{?suse_version} >= 1500
%bcond_without openblas
%bcond_without pcre2
%else
%bcond_with openblas
%bcond_with pcre2
%endif
# fails to build atm
%bcond_with utils
%define rspamd_user _rspamd
%define rspamd_group %{rspamd_user}
%global _wwwdir /srv/www/webapps
Name: rspamd
Version: 1.8.0
Release: 0
License: Apache-2.0
Summary: Spam filtering system
Url: https://rspamd.com/
Group: Productivity/Networking/Email/Utilities
Source0: https://github.com/vstakhov/rspamd/archive/%{version}/%{name}-%{version}.tar.gz
Patch0: rspamd-conf.patch
BuildRequires: cmake
BuildRequires: curl-devel
BuildRequires: db-devel
BuildRequires: file-devel
BuildRequires: gcc-c++
BuildRequires: gd-devel
%if %{with hyperscan}
BuildRequires: hyperscan-devel
%endif
%if %{with jemalloc}
BuildRequires: jemalloc-devel
%endif
BuildRequires: libfann-devel
BuildRequires: libicu-devel
%if %{with luajit}
BuildRequires: luajit-devel
%else
BuildRequires: lua-devel
%endif
%if %{with openblas}
BuildRequires: openblas-devel
%endif
BuildRequires: pcre-devel
%if %{with pcre2}
BuildRequires: pcre2-devel
%endif
BuildRequires: pkgconfig
BuildRequires: pkgconfig(glib-2.0) >= 2.28
%if %{with ext_hiredis}
BuildRequires: pkgconfig(hiredis)
%endif
BuildRequires: pkgconfig(libevent)
%if 0%{?suse_version} >= 1500
BuildRequires: pkgconfig(libnsl)
%endif
BuildRequires: pkgconfig(openssl)
BuildRequires: pkgconfig(sqlite3)
BuildRequires: ragel
%if %{with systemd}
BuildRequires: pkgconfig(systemd)
%{?systemd_requires}
%endif
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if 0%{?suse_version} < 1500
Requires: lua51-LPeg
%else
Requires: lua53-lpeg
%endif
%if 0%{?with split_out_client}
Requires: rspamd-client = %{version}
%else
Conflicts: rspamd-client
%endif
%description
Rspamd is a spam filtering system that allows evaluation of messages
by a number of rules including regular expressions, statistical analysis and
custom services such as URL black lists. Each message is analysed by rspamd and
given a "spam score".
According to this spam score and the user's settings, rspamd recommends an
action for the MTA to apply to the message, for example to pass, reject or add
a header. Rspamd is designed to process hundreds of messages per second
simultaneously and has a number of features available.
%if 0%{?with split_out_client}
%package client
Group: Productivity/Networking/Email/Utilities
#
Summary: Spam filtering system - Client tools
%description client
Rspamd is a spam filtering system that allows evaluation of messages
by a number of rules including regular expressions, statistical analysis and
custom services such as URL black lists. Each message is analysed by rspamd and
given a "spam score".
According to this spam score and the user's settings, rspamd recommends an
action for the MTA to apply to the message, for example to pass, reject or add
a header. Rspamd is designed to process hundreds of messages per second
simultaneously and has a number of features available.
This package holds the client tools (rspamc and rspamadm)
%endif
%prep
%setup -q -n %{name}
%patch0 -p1
%build
%cmake \
%if 0%{suse_version} == 1315
-DCMAKE_USER_MAKE_RULES_OVERRIDE="" \
%endif
-DCMAKE_EXE_LINKER_FLAGS:STRING='' \
-DCMAKE_MODULE_LINKER_FLAGS:STRING='' \
-DCMAKE_SHARED_LINKER_FLAGS:STRING='' \
-DRSPAMD_LIBDIR=%{_libdir}/rspamd \
-DCONFDIR=%{_sysconfdir}/rspamd \
-DMANDIR=%{_mandir} \
-DDBDIR=%{_localstatedir}/lib/rspamd \
-DRUNDIR=%{_localstatedir}/run/rspamd \
-DLOGDIR=%{_localstatedir}/log/rspamd \
-DEXAMPLESDIR=%{_datadir}/examples/rspamd \
-DPLUGINSDIR=%{_datadir}/rspamd \
-DLIBDIR=%{_libdir}/rspamd \
-DINCLUDEDIR=%{_includedir} \
-DWWWDIR=%{_wwwdir}/%{name} \
%if 0%{suse_version} > 1315
-DENABLE_OPTIMIZATION=ON \
%endif
-DENABLE_REDIRECTOR=ON \
-DCMAKE_SKIP_INSTALL_RPATH=ON \
-DCMAKE_SKIP_RPATH=OFF \
%if %{with luajit}
-DENABLE_LUAJIT=ON \
%else
-DENABLE_LUAJIT=OFF \
%endif
%if %{with torch}
-DENABLE_TORCH=ON \
%else
-DENABLE_TORCH=OFF \
%endif
-DENABLE_DB=ON \
-DENABLE_SQLITE=ON \
-DENABLE_HIREDIS=ON \
-DENABLE_URL_INCLUDE=ON \
-DNO_SHARED=ON \
-DINSTALL_EXAMPLES=ON \
-DINSTALL_WEBUI=ON \
%if %{with systemd}
-DWANT_SYSTEMD_UNITS=ON \
-DSYSTEMDDIR=%{_unitdir} \
%else
-DWANT_SYSTEMD_UNITS=OFF \
%endif
%if %{with hyperscan}
-DENABLE_HYPERSCAN=ON \
%endif
-DENABLE_GD=ON \
-DENABLE_FANN=ON \
%if %{with utils}
-DENABLE_UTILS=ON \
%endif
%if %{with pcre2}
-DENABLE_PCRE2=ON \
%endif
%if %{with jemalloc}
-DENABLE_JEMALLOC=ON \
%endif
-DDEBIAN_BUILD=1 \
-DRSPAMD_GROUP=%{rspamd_group} \
-DRSPAMD_USER=%{rspamd_user}
make %{?_smp_mflags}
%install
%cmake_install
mkdir -p \
%{buildroot}%{_sbindir} \
%{buildroot}%{_localstatedir}/lib/rspamd \
%{buildroot}%{_localstatedir}/run/rspamd \
%{buildroot}%{_localstatedir}/log/rspamd
%if %{with systemd}
ln -fs %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name}
%endif
ln -s rspamd/librspamd-actrie.so %{buildroot}%{_libdir}
%if %{with torch}
ln -s rspamd/libdecisiontree.so %{buildroot}%{_libdir}
ln -s rspamd/libpaths.so %{buildroot}%{_libdir}
ln -s rspamd/libTHNN.so %{buildroot}%{_libdir}
ln -s rspamd/libTH.so %{buildroot}%{_libdir}
ln -s rspamd/libtorch.so %{buildroot}%{_libdir}
%endif
install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}/local.d
cat > %{buildroot}%{_sysconfdir}/%{name}/local.d/worker-normal.inc << EOF
# If the mailer is running on the same host use a unix socket
#bind_socket = "/run/rspamd/worker.socket mode=0666";
EOF
cat > %{buildroot}%{_sysconfdir}/%{name}/local.d/worker-controller.inc << EOF
# If the mailer is running on the same host use a unix socket
#bind_socket = "/run/rspamd/worker-controller.socket mode=0666";
EOF
cat > %{buildroot}%{_sysconfdir}/%{name}/local.d/worker-proxy.inc << EOF
# If the mailer is running on the same host use a unix socket
#bind_socket = "/run/rspamd/worker-proxy.socket mode=0666";
EOF
install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}/overrides.d
%pre
%{_sbindir}/groupadd -r %{rspamd_group} 2>/dev/null || :
%{_sbindir}/useradd -g %{rspamd_group} -c "Rmilter user" -s /bin/false -r %{rspamd_user} 2>/dev/null || :
%if 0%{?suse_version} && %{with systemd}
%service_add_pre %{name}.service
%post
#systemd-tmpfiles --create /usr/lib/tmpfiles.d/%{name}.conf ||:
%service_add_post %{name}.service
%endif
%if 0%{?suse_version}
%preun
%if %{with systemd}
%service_del_preun %{name}.service
%else
%stop_on_removal %{name}
%endif
%endif
%if 0%{?suse_version}
%postun
%if %{with systemd}
%service_del_postun %{name}.service
%else
%restart_on_update %{name}
%insserv_cleanup
%endif
%endif
%files
%defattr(-,root,root)
%{_sbindir}/rc%{name}
%{_bindir}/rspamd
%{_bindir}/rspamd-redirector
%{_bindir}/rspamd_stats
%{_libdir}/librspamd-actrie.so
%if %{with torch}
%{_libdir}/libdecisiontree.so
%{_libdir}/libpaths.so
%{_libdir}/libTHNN.so
%{_libdir}/libTH.so
%{_libdir}/libtorch.so
%endif
%dir %{_libdir}/rspamd/
%{_libdir}/rspamd/librspamd-actrie.so
%if %{with torch}
%{_libdir}/rspamd/libdecisiontree.so
%{_libdir}/rspamd/libpaths.so
%{_libdir}/rspamd/libTHNN.so
%{_libdir}/rspamd/libTH.so
%{_libdir}/rspamd/libtorch.so
%endif
%dir %{_sysconfdir}/rspamd/
%config %{_sysconfdir}/rspamd/2tld.inc
%config %{_sysconfdir}/rspamd/actions.conf
%config %{_sysconfdir}/rspamd/cgp.inc
%config %{_sysconfdir}/rspamd/common.conf
%config %{_sysconfdir}/rspamd/composites.conf
%config %{_sysconfdir}/rspamd/dmarc_whitelist.inc
%config %{_sysconfdir}/rspamd/groups.conf
%config %{_sysconfdir}/rspamd/logging.inc
%config %{_sysconfdir}/rspamd/maillist.inc
%config %{_sysconfdir}/rspamd/metrics.conf
%config %{_sysconfdir}/rspamd/mid.inc
%config %{_sysconfdir}/rspamd/mime_types.inc
%config %{_sysconfdir}/rspamd/modules.conf
%config %{_sysconfdir}/rspamd/options.inc
%config %{_sysconfdir}/rspamd/redirectors.inc
%config %{_sysconfdir}/rspamd/rspamd.conf
%config %{_sysconfdir}/rspamd/settings.conf
%config %{_sysconfdir}/rspamd/spf_dkim_whitelist.inc
%config %{_sysconfdir}/rspamd/statistic.conf
%config %{_sysconfdir}/rspamd/surbl-whitelist.inc
%config %{_sysconfdir}/rspamd/worker-controller.inc
%config %{_sysconfdir}/rspamd/worker-fuzzy.inc
%config %{_sysconfdir}/rspamd/worker-normal.inc
%config %{_sysconfdir}/rspamd/worker-proxy.inc
%dir %{_sysconfdir}/rspamd/local.d
%config(noreplace) %{_sysconfdir}/rspamd/local.d/worker-controller.inc
%config(noreplace) %{_sysconfdir}/rspamd/local.d/worker-normal.inc
%config(noreplace) %{_sysconfdir}/rspamd/local.d/worker-proxy.inc
%dir %{_sysconfdir}/rspamd/scores.d
%config(noreplace) %{_sysconfdir}/rspamd/scores.d/fuzzy_group.conf
%config(noreplace) %{_sysconfdir}/rspamd/scores.d/headers_group.conf
%config(noreplace) %{_sysconfdir}/rspamd/scores.d/hfilter_group.conf
%config(noreplace) %{_sysconfdir}/rspamd/scores.d/mime_types_group.conf
%config(noreplace) %{_sysconfdir}/rspamd/scores.d/mua_group.conf
%config(noreplace) %{_sysconfdir}/rspamd/scores.d/phishing_group.conf
%config(noreplace) %{_sysconfdir}/rspamd/scores.d/policies_group.conf
%config(noreplace) %{_sysconfdir}/rspamd/scores.d/rbl_group.conf
%config(noreplace) %{_sysconfdir}/rspamd/scores.d/statistics_group.conf
%config(noreplace) %{_sysconfdir}/rspamd/scores.d/subject_group.conf
%config(noreplace) %{_sysconfdir}/rspamd/scores.d/surbl_group.conf
%dir %{_sysconfdir}/rspamd/modules.d
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/antivirus.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/arc.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/asn.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/chartable.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/clickhouse.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/dcc.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/dkim.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/dkim_signing.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/dmarc.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/elastic.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/emails.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/force_actions.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/forged_recipients.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/fuzzy_check.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/greylist.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/history_redis.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/hfilter.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/ip_score.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/maillist.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/metadata_exporter.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/metric_exporter.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/mid.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/mime_types.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/multimap.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/mx_check.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/neural.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/once_received.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/phishing.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/ratelimit.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/rbl.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/redis.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/regexp.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/replies.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/reputation.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/milter_headers.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/rspamd_update.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/spamassassin.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/spamtrap.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/spf.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/surbl.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/trie.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/url_redirector.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/url_reputation.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/url_tags.conf
%config(noreplace) %{_sysconfdir}/rspamd/modules.d/whitelist.conf
%dir %{_sysconfdir}/rspamd/overrides.d
%dir %{_datadir}/examples
%dir %{_datadir}/examples/rspamd
%{_datadir}/examples/rspamd/rspamd.conf
%dir %{_datadir}/rspamd
%{_datadir}/rspamd/effective_tld_names.dat
%dir %{_datadir}/rspamd/elastic
%{_datadir}/rspamd/elastic/kibana.json
%{_datadir}/rspamd/elastic/rspamd_template.json
%dir %{_datadir}/rspamd/languages
%{_datadir}/rspamd/languages/*
%dir %{_datadir}/rspamd/lua
%{_datadir}/rspamd/lua/antivirus.lua
%{_datadir}/rspamd/lua/arc.lua
%{_datadir}/rspamd/lua/asn.lua
%{_datadir}/rspamd/lua/bayes_expiry.lua
%{_datadir}/rspamd/lua/clickhouse.lua
%{_datadir}/rspamd/lua/dcc.lua
%{_datadir}/rspamd/lua/dkim_signing.lua
%{_datadir}/rspamd/lua/dmarc.lua
%{_datadir}/rspamd/lua/dynamic_conf.lua
%{_datadir}/rspamd/lua/elastic.lua
%{_datadir}/rspamd/lua/emails.lua
%{_datadir}/rspamd/lua/force_actions.lua
%{_datadir}/rspamd/lua/forged_recipients.lua
%{_datadir}/rspamd/lua/fuzzy_collect.lua
%{_datadir}/rspamd/lua/greylist.lua
%{_datadir}/rspamd/lua/hfilter.lua
%{_datadir}/rspamd/lua/history_redis.lua
%{_datadir}/rspamd/lua/ip_score.lua
%{_datadir}/rspamd/lua/maillist.lua
%{_datadir}/rspamd/lua/maps_stats.lua
%{_datadir}/rspamd/lua/metadata_exporter.lua
%{_datadir}/rspamd/lua/metric_exporter.lua
%{_datadir}/rspamd/lua/mid.lua
%{_datadir}/rspamd/lua/milter_headers.lua
%{_datadir}/rspamd/lua/mime_types.lua
%{_datadir}/rspamd/lua/multimap.lua
%{_datadir}/rspamd/lua/mx_check.lua
%{_datadir}/rspamd/lua/neural.lua
%{_datadir}/rspamd/lua/once_received.lua
%{_datadir}/rspamd/lua/phishing.lua
%{_datadir}/rspamd/lua/ratelimit.lua
%{_datadir}/rspamd/lua/rbl.lua
%{_datadir}/rspamd/lua/replies.lua
%{_datadir}/rspamd/lua/reputation.lua
%{_datadir}/rspamd/lua/rspamd_update.lua
%{_datadir}/rspamd/lua/settings.lua
%{_datadir}/rspamd/lua/spamassassin.lua
%{_datadir}/rspamd/lua/spamtrap.lua
%{_datadir}/rspamd/lua/trie.lua
%{_datadir}/rspamd/lua/url_redirector.lua
%{_datadir}/rspamd/lua/url_reputation.lua
%{_datadir}/rspamd/lua/url_tags.lua
%{_datadir}/rspamd/lua/whitelist.lua
%dir %{_datadir}/rspamd/lib
%{_datadir}/rspamd/lib/ansicolors.lua
%{_datadir}/rspamd/lib/argparse.lua
%{_datadir}/rspamd/lib/fun.lua
%{_datadir}/rspamd/lib/global_functions.lua
%{_datadir}/rspamd/lib/lua_auth_results.lua
%{_datadir}/rspamd/lib/lua_cfg_transform.lua
%{_datadir}/rspamd/lib/lua_clickhouse.lua
%{_datadir}/rspamd/lib/lua_dkim_tools.lua
%{_datadir}/rspamd/lib/lua_maps.lua
%{_datadir}/rspamd/lib/lua_meta.lua
%{_datadir}/rspamd/lib/lua_nn.lua
%{_datadir}/rspamd/lib/lua_redis.lua
%{_datadir}/rspamd/lib/lua_selectors.lua
%{_datadir}/rspamd/lib/lua_stat.lua
%{_datadir}/rspamd/lib/lua_squeeze_rules.lua
%{_datadir}/rspamd/lib/lua_tcp_sync.lua
%{_datadir}/rspamd/lib/lua_util.lua
%{_datadir}/rspamd/lib/plugins_stats.lua
%{_datadir}/rspamd/lib/rescore_utility.lua
%{_datadir}/rspamd/lib/tableshape.lua
%if %{with torch}
%{_datadir}/rspamd/lib/moses.lua
%dir %{_datadir}/rspamd/lib/decisiontree
%{_datadir}/rspamd/lib/decisiontree/CartNode.lua
%{_datadir}/rspamd/lib/decisiontree/CartTrainer.lua
%{_datadir}/rspamd/lib/decisiontree/CartTree.lua
%{_datadir}/rspamd/lib/decisiontree/DFD.lua
%{_datadir}/rspamd/lib/decisiontree/DataSet.lua
%{_datadir}/rspamd/lib/decisiontree/DecisionForest.lua
%{_datadir}/rspamd/lib/decisiontree/DecisionForestTrainer.lua
%{_datadir}/rspamd/lib/decisiontree/DecisionTree.lua
%{_datadir}/rspamd/lib/decisiontree/GiniState.lua
%{_datadir}/rspamd/lib/decisiontree/GradientBoostState.lua
%{_datadir}/rspamd/lib/decisiontree/GradientBoostTrainer.lua
%{_datadir}/rspamd/lib/decisiontree/LogitBoostCriterion.lua
%{_datadir}/rspamd/lib/decisiontree/MSECriterion.lua
%{_datadir}/rspamd/lib/decisiontree/RandomForestTrainer.lua
%{_datadir}/rspamd/lib/decisiontree/Sparse2Dense.lua
%{_datadir}/rspamd/lib/decisiontree/SparseTensor.lua
%{_datadir}/rspamd/lib/decisiontree/TreeState.lua
%{_datadir}/rspamd/lib/decisiontree/WorkPool.lua
%{_datadir}/rspamd/lib/decisiontree/_env.lua
%{_datadir}/rspamd/lib/decisiontree/benchmark.lua
%{_datadir}/rspamd/lib/decisiontree/init.lua
%{_datadir}/rspamd/lib/decisiontree/math.lua
%{_datadir}/rspamd/lib/decisiontree/test.lua
%{_datadir}/rspamd/lib/decisiontree/utils.lua
%dir %{_datadir}/rspamd/lib/nn
%{_datadir}/rspamd/lib/nn/Abs.lua
%{_datadir}/rspamd/lib/nn/AbsCriterion.lua
%{_datadir}/rspamd/lib/nn/Add.lua
%{_datadir}/rspamd/lib/nn/AddConstant.lua
%{_datadir}/rspamd/lib/nn/BCECriterion.lua
%{_datadir}/rspamd/lib/nn/BatchNormalization.lua
%{_datadir}/rspamd/lib/nn/Bilinear.lua
%{_datadir}/rspamd/lib/nn/Bottle.lua
%{_datadir}/rspamd/lib/nn/CAdd.lua
%{_datadir}/rspamd/lib/nn/CAddTable.lua
%{_datadir}/rspamd/lib/nn/CAddTensorTable.lua
%{_datadir}/rspamd/lib/nn/CDivTable.lua
%{_datadir}/rspamd/lib/nn/CMaxTable.lua
%{_datadir}/rspamd/lib/nn/CMinTable.lua
%{_datadir}/rspamd/lib/nn/CMul.lua
%{_datadir}/rspamd/lib/nn/CMulTable.lua
%{_datadir}/rspamd/lib/nn/CReLU.lua
%{_datadir}/rspamd/lib/nn/CSubTable.lua
%{_datadir}/rspamd/lib/nn/Clamp.lua
%{_datadir}/rspamd/lib/nn/ClassNLLCriterion.lua
%{_datadir}/rspamd/lib/nn/ClassSimplexCriterion.lua
%{_datadir}/rspamd/lib/nn/Collapse.lua
%{_datadir}/rspamd/lib/nn/Concat.lua
%{_datadir}/rspamd/lib/nn/ConcatTable.lua
%{_datadir}/rspamd/lib/nn/Constant.lua
%{_datadir}/rspamd/lib/nn/Container.lua
%{_datadir}/rspamd/lib/nn/Contiguous.lua
%{_datadir}/rspamd/lib/nn/Convert.lua
%{_datadir}/rspamd/lib/nn/Copy.lua
%{_datadir}/rspamd/lib/nn/Cosine.lua
%{_datadir}/rspamd/lib/nn/CosineDistance.lua
%{_datadir}/rspamd/lib/nn/CosineEmbeddingCriterion.lua
%{_datadir}/rspamd/lib/nn/Criterion.lua
%{_datadir}/rspamd/lib/nn/CriterionTable.lua
%{_datadir}/rspamd/lib/nn/CrossEntropyCriterion.lua
%{_datadir}/rspamd/lib/nn/Decorator.lua
%{_datadir}/rspamd/lib/nn/DepthConcat.lua
%{_datadir}/rspamd/lib/nn/DistKLDivCriterion.lua
%{_datadir}/rspamd/lib/nn/DistanceRatioCriterion.lua
%{_datadir}/rspamd/lib/nn/DontCast.lua
%{_datadir}/rspamd/lib/nn/DotProduct.lua
%{_datadir}/rspamd/lib/nn/Dropout.lua
%{_datadir}/rspamd/lib/nn/ELU.lua
%{_datadir}/rspamd/lib/nn/ErrorMessages.lua
%{_datadir}/rspamd/lib/nn/Euclidean.lua
%{_datadir}/rspamd/lib/nn/Exp.lua
%{_datadir}/rspamd/lib/nn/FlattenTable.lua
%{_datadir}/rspamd/lib/nn/GPU.lua
%{_datadir}/rspamd/lib/nn/GatedLinearUnit.lua
%{_datadir}/rspamd/lib/nn/GradientReversal.lua
%{_datadir}/rspamd/lib/nn/HardShrink.lua
%{_datadir}/rspamd/lib/nn/HardTanh.lua
%{_datadir}/rspamd/lib/nn/HingeEmbeddingCriterion.lua
%{_datadir}/rspamd/lib/nn/Identity.lua
%{_datadir}/rspamd/lib/nn/Index.lua
%{_datadir}/rspamd/lib/nn/IndexLinear.lua
%{_datadir}/rspamd/lib/nn/Jacobian.lua
%{_datadir}/rspamd/lib/nn/JoinTable.lua
%{_datadir}/rspamd/lib/nn/Kmeans.lua
%{_datadir}/rspamd/lib/nn/L1Cost.lua
%{_datadir}/rspamd/lib/nn/L1HingeEmbeddingCriterion.lua
%{_datadir}/rspamd/lib/nn/L1Penalty.lua
%{_datadir}/rspamd/lib/nn/LayerNormalization.lua
%{_datadir}/rspamd/lib/nn/LeakyReLU.lua
%{_datadir}/rspamd/lib/nn/Linear.lua
%{_datadir}/rspamd/lib/nn/LinearWeightNorm.lua
%{_datadir}/rspamd/lib/nn/Log.lua
%{_datadir}/rspamd/lib/nn/LogSigmoid.lua
%{_datadir}/rspamd/lib/nn/LogSoftMax.lua
%{_datadir}/rspamd/lib/nn/LookupTable.lua
%{_datadir}/rspamd/lib/nn/MM.lua
%{_datadir}/rspamd/lib/nn/MSECriterion.lua
%{_datadir}/rspamd/lib/nn/MV.lua
%{_datadir}/rspamd/lib/nn/MapTable.lua
%{_datadir}/rspamd/lib/nn/MarginCriterion.lua
%{_datadir}/rspamd/lib/nn/MarginRankingCriterion.lua
%{_datadir}/rspamd/lib/nn/MaskedSelect.lua
%{_datadir}/rspamd/lib/nn/Max.lua
%{_datadir}/rspamd/lib/nn/Maxout.lua
%{_datadir}/rspamd/lib/nn/Mean.lua
%{_datadir}/rspamd/lib/nn/Min.lua
%{_datadir}/rspamd/lib/nn/MixtureTable.lua
%{_datadir}/rspamd/lib/nn/Module.lua
%{_datadir}/rspamd/lib/nn/ModuleCriterion.lua
%{_datadir}/rspamd/lib/nn/Mul.lua
%{_datadir}/rspamd/lib/nn/MulConstant.lua
%{_datadir}/rspamd/lib/nn/MultiCriterion.lua
%{_datadir}/rspamd/lib/nn/MultiLabelMarginCriterion.lua
%{_datadir}/rspamd/lib/nn/MultiLabelSoftMarginCriterion.lua
%{_datadir}/rspamd/lib/nn/MultiMarginCriterion.lua
%{_datadir}/rspamd/lib/nn/NaN.lua
%{_datadir}/rspamd/lib/nn/Narrow.lua
%{_datadir}/rspamd/lib/nn/NarrowTable.lua
%{_datadir}/rspamd/lib/nn/Normalize.lua
%{_datadir}/rspamd/lib/nn/OneHot.lua
%{_datadir}/rspamd/lib/nn/PReLU.lua
%{_datadir}/rspamd/lib/nn/Padding.lua
%{_datadir}/rspamd/lib/nn/PairwiseDistance.lua
%{_datadir}/rspamd/lib/nn/Parallel.lua
%{_datadir}/rspamd/lib/nn/ParallelCriterion.lua
%{_datadir}/rspamd/lib/nn/ParallelTable.lua
%{_datadir}/rspamd/lib/nn/PartialLinear.lua
%{_datadir}/rspamd/lib/nn/PixelShuffle.lua
%{_datadir}/rspamd/lib/nn/Power.lua
%{_datadir}/rspamd/lib/nn/PrintSize.lua
%{_datadir}/rspamd/lib/nn/Profile.lua
%{_datadir}/rspamd/lib/nn/RReLU.lua
%{_datadir}/rspamd/lib/nn/ReLU.lua
%{_datadir}/rspamd/lib/nn/ReLU6.lua
%{_datadir}/rspamd/lib/nn/Replicate.lua
%{_datadir}/rspamd/lib/nn/Reshape.lua
%{_datadir}/rspamd/lib/nn/Select.lua
%{_datadir}/rspamd/lib/nn/SelectTable.lua
%{_datadir}/rspamd/lib/nn/Sequential.lua
%{_datadir}/rspamd/lib/nn/Sigmoid.lua
%{_datadir}/rspamd/lib/nn/SmoothL1Criterion.lua
%{_datadir}/rspamd/lib/nn/SoftMarginCriterion.lua
%{_datadir}/rspamd/lib/nn/SoftMax.lua
%{_datadir}/rspamd/lib/nn/SoftMin.lua
%{_datadir}/rspamd/lib/nn/SoftPlus.lua
%{_datadir}/rspamd/lib/nn/SoftShrink.lua
%{_datadir}/rspamd/lib/nn/SoftSign.lua
%{_datadir}/rspamd/lib/nn/SparseJacobian.lua
%{_datadir}/rspamd/lib/nn/SparseLinear.lua
%{_datadir}/rspamd/lib/nn/SpatialAdaptiveAveragePooling.lua
%{_datadir}/rspamd/lib/nn/SpatialAdaptiveMaxPooling.lua
%{_datadir}/rspamd/lib/nn/SpatialAutoCropMSECriterion.lua
%{_datadir}/rspamd/lib/nn/SpatialAveragePooling.lua
%{_datadir}/rspamd/lib/nn/SpatialBatchNormalization.lua
%{_datadir}/rspamd/lib/nn/SpatialClassNLLCriterion.lua
%{_datadir}/rspamd/lib/nn/SpatialContrastiveNormalization.lua
%{_datadir}/rspamd/lib/nn/SpatialConvolution.lua
%{_datadir}/rspamd/lib/nn/SpatialConvolutionLocal.lua
%{_datadir}/rspamd/lib/nn/SpatialConvolutionMM.lua
%{_datadir}/rspamd/lib/nn/SpatialConvolutionMap.lua
%{_datadir}/rspamd/lib/nn/SpatialCrossMapLRN.lua
%{_datadir}/rspamd/lib/nn/SpatialDepthWiseConvolution.lua
%{_datadir}/rspamd/lib/nn/SpatialDilatedConvolution.lua
%{_datadir}/rspamd/lib/nn/SpatialDilatedMaxPooling.lua
%{_datadir}/rspamd/lib/nn/SpatialDivisiveNormalization.lua
%{_datadir}/rspamd/lib/nn/SpatialDropout.lua
%{_datadir}/rspamd/lib/nn/SpatialFractionalMaxPooling.lua
%{_datadir}/rspamd/lib/nn/SpatialFullConvolution.lua
%{_datadir}/rspamd/lib/nn/SpatialFullConvolutionMap.lua
%{_datadir}/rspamd/lib/nn/SpatialLPPooling.lua
%{_datadir}/rspamd/lib/nn/SpatialLogSoftMax.lua
%{_datadir}/rspamd/lib/nn/SpatialMaxPooling.lua
%{_datadir}/rspamd/lib/nn/SpatialMaxUnpooling.lua
%{_datadir}/rspamd/lib/nn/SpatialReflectionPadding.lua
%{_datadir}/rspamd/lib/nn/SpatialReplicationPadding.lua
%{_datadir}/rspamd/lib/nn/SpatialSoftMax.lua
%{_datadir}/rspamd/lib/nn/SpatialSubSampling.lua
%{_datadir}/rspamd/lib/nn/SpatialSubtractiveNormalization.lua
%{_datadir}/rspamd/lib/nn/SpatialUpSamplingBilinear.lua
%{_datadir}/rspamd/lib/nn/SpatialUpSamplingNearest.lua
%{_datadir}/rspamd/lib/nn/SpatialZeroPadding.lua
%{_datadir}/rspamd/lib/nn/SplitTable.lua
%{_datadir}/rspamd/lib/nn/Sqrt.lua
%{_datadir}/rspamd/lib/nn/Square.lua
%{_datadir}/rspamd/lib/nn/Squeeze.lua
%{_datadir}/rspamd/lib/nn/StochasticGradient.lua
%{_datadir}/rspamd/lib/nn/Sum.lua
%{_datadir}/rspamd/lib/nn/THNN.lua
%{_datadir}/rspamd/lib/nn/THNN_h.lua
%{_datadir}/rspamd/lib/nn/Tanh.lua
%{_datadir}/rspamd/lib/nn/TanhShrink.lua
%{_datadir}/rspamd/lib/nn/TemporalConvolution.lua
%{_datadir}/rspamd/lib/nn/TemporalDynamicKMaxPooling.lua
%{_datadir}/rspamd/lib/nn/TemporalMaxPooling.lua
%{_datadir}/rspamd/lib/nn/TemporalRowConvolution.lua
%{_datadir}/rspamd/lib/nn/TemporalSubSampling.lua
%{_datadir}/rspamd/lib/nn/Threshold.lua
%{_datadir}/rspamd/lib/nn/Transpose.lua
%{_datadir}/rspamd/lib/nn/Unsqueeze.lua
%{_datadir}/rspamd/lib/nn/View.lua
%{_datadir}/rspamd/lib/nn/VolumetricAveragePooling.lua
%{_datadir}/rspamd/lib/nn/VolumetricBatchNormalization.lua
%{_datadir}/rspamd/lib/nn/VolumetricConvolution.lua
%{_datadir}/rspamd/lib/nn/VolumetricDilatedConvolution.lua
%{_datadir}/rspamd/lib/nn/VolumetricDilatedMaxPooling.lua
%{_datadir}/rspamd/lib/nn/VolumetricDropout.lua
%{_datadir}/rspamd/lib/nn/VolumetricFractionalMaxPooling.lua
%{_datadir}/rspamd/lib/nn/VolumetricFullConvolution.lua
%{_datadir}/rspamd/lib/nn/VolumetricMaxPooling.lua
%{_datadir}/rspamd/lib/nn/VolumetricMaxUnpooling.lua
%{_datadir}/rspamd/lib/nn/VolumetricReplicationPadding.lua
%{_datadir}/rspamd/lib/nn/WeightNorm.lua
%{_datadir}/rspamd/lib/nn/WeightedEuclidean.lua
%{_datadir}/rspamd/lib/nn/WeightedMSECriterion.lua
%{_datadir}/rspamd/lib/nn/WhiteNoise.lua
%{_datadir}/rspamd/lib/nn/ZeroGrad.lua
%{_datadir}/rspamd/lib/nn/ZipTable.lua
%{_datadir}/rspamd/lib/nn/ZipTableOneToMany.lua
%{_datadir}/rspamd/lib/nn/hessian.lua
%{_datadir}/rspamd/lib/nn/init.lua
%{_datadir}/rspamd/lib/nn/test.lua
%{_datadir}/rspamd/lib/nn/utils.lua
%dir %{_datadir}/rspamd/lib/optim
%{_datadir}/rspamd/lib/optim/ConfusionMatrix.lua
%{_datadir}/rspamd/lib/optim/Logger.lua
%{_datadir}/rspamd/lib/optim/adadelta.lua
%{_datadir}/rspamd/lib/optim/adagrad.lua
%{_datadir}/rspamd/lib/optim/adam.lua
%{_datadir}/rspamd/lib/optim/adamax.lua
%{_datadir}/rspamd/lib/optim/asgd.lua
%{_datadir}/rspamd/lib/optim/cg.lua
%{_datadir}/rspamd/lib/optim/checkgrad.lua
%{_datadir}/rspamd/lib/optim/cmaes.lua
%{_datadir}/rspamd/lib/optim/de.lua
%{_datadir}/rspamd/lib/optim/fista.lua
%{_datadir}/rspamd/lib/optim/init.lua
%{_datadir}/rspamd/lib/optim/lbfgs.lua
%{_datadir}/rspamd/lib/optim/lswolfe.lua
%{_datadir}/rspamd/lib/optim/nag.lua
%{_datadir}/rspamd/lib/optim/polyinterp.lua
%{_datadir}/rspamd/lib/optim/rmsprop.lua
%{_datadir}/rspamd/lib/optim/rprop.lua
%{_datadir}/rspamd/lib/optim/sgd.lua
%dir %{_datadir}/rspamd/lib/paths
%{_datadir}/rspamd/lib/paths/init.lua
%endif #if with torch
%dir %{_datadir}/rspamd/lib/rspamadm
%{_datadir}/rspamd/lib/rspamadm/confighelp.lua
%{_datadir}/rspamd/lib/rspamadm/configwizard.lua
%{_datadir}/rspamd/lib/rspamadm/corpus_test.lua
%{_datadir}/rspamd/lib/rspamadm/fuzzy_convert.lua
%{_datadir}/rspamd/lib/rspamadm/fuzzy_stat.lua
%{_datadir}/rspamd/lib/rspamadm/grep.lua
%{_datadir}/rspamd/lib/rspamadm/keypair.lua
%{_datadir}/rspamd/lib/rspamadm/mime.lua
%{_datadir}/rspamd/lib/rspamadm/rescore.lua
%{_datadir}/rspamd/lib/rspamadm/stat_convert.lua
%if %{with torch}
%dir %{_datadir}/rspamd/lib/torch
%{_datadir}/rspamd/lib/torch/CmdLine.lua
%{_datadir}/rspamd/lib/torch/FFInterface.lua
%{_datadir}/rspamd/lib/torch/File.lua
%{_datadir}/rspamd/lib/torch/Tensor.lua
%{_datadir}/rspamd/lib/torch/TestSuite.lua
%{_datadir}/rspamd/lib/torch/Tester.lua
%{_datadir}/rspamd/lib/torch/init.lua
%{_datadir}/rspamd/lib/torch/paths.lua
%{_datadir}/rspamd/lib/torch/test.lua
%endif
%dir %{_datadir}/rspamd/rules
%{_datadir}/rspamd/rules/forwarding.lua
%{_datadir}/rspamd/rules/headers_checks.lua
%{_datadir}/rspamd/rules/html.lua
%{_datadir}/rspamd/rules/http_headers.lua
%{_datadir}/rspamd/rules/mid.lua
%{_datadir}/rspamd/rules/misc.lua
%{_datadir}/rspamd/rules/rspamd.classifiers.lua
%{_datadir}/rspamd/rules/rspamd.lua
%{_datadir}/rspamd/rules/subject_checks.lua
%dir %{_datadir}/rspamd/rules/regexp
%{_datadir}/rspamd/rules/regexp/compromised_hosts.lua
%{_datadir}/rspamd/rules/regexp/headers.lua
%{_datadir}/rspamd/rules/regexp/misc.lua
%{_datadir}/rspamd/rules/regexp/upstream_spam_filters.lua
%{_mandir}/man8/rspamd.8*
%{_unitdir}/rspamd.service
%dir %attr(750,%{rspamd_user},%{rspamd_group}) %{_localstatedir}/lib/rspamd
%dir %attr(750,%{rspamd_user},%{rspamd_group}) %{_localstatedir}/log/rspamd
%dir %{_wwwdir}
%dir %{_wwwdir}/%{name}
%{_wwwdir}/%{name}/README.md
%{_wwwdir}/%{name}/favicon.ico
%{_wwwdir}/%{name}/index.html
%{_wwwdir}/%{name}/plugins.txt
%{_wwwdir}/%{name}/react-index.html
%dir %{_wwwdir}/%{name}/css
%{_wwwdir}/%{name}/css/bootstrap.min.css
%{_wwwdir}/%{name}/css/d3evolution.css
%{_wwwdir}/%{name}/css/footable.bootstrap.min.css
%{_wwwdir}/%{name}/css/nprogress.css
%{_wwwdir}/%{name}/css/rspamd.css
%dir %{_wwwdir}/%{name}/fonts
%{_wwwdir}/%{name}/fonts/glyphicons-halflings-regular.ttf
%{_wwwdir}/%{name}/fonts/glyphicons-halflings-regular.woff
%{_wwwdir}/%{name}/fonts/glyphicons-halflings-regular.woff2
%dir %{_wwwdir}/%{name}/img
%{_wwwdir}/%{name}/img/asc.png
%{_wwwdir}/%{name}/img/desc.png
%{_wwwdir}/%{name}/img/rspamd_logo_navbar.png
%dir %{_wwwdir}/%{name}/js
%{_wwwdir}/%{name}/js/main.js
%dir %{_wwwdir}/%{name}/js/app
%{_wwwdir}/%{name}/js/app/config.js
%{_wwwdir}/%{name}/js/app/graph.js
%{_wwwdir}/%{name}/js/app/history.js
%{_wwwdir}/%{name}/js/app/rspamd.js
%{_wwwdir}/%{name}/js/app/stats.js
%{_wwwdir}/%{name}/js/app/symbols.js
%{_wwwdir}/%{name}/js/app/upload.js
%dir %{_wwwdir}/%{name}/js/lib
%{_wwwdir}/%{name}/js/lib/bootstrap.min.js
%{_wwwdir}/%{name}/js/lib/d3.min.js
%{_wwwdir}/%{name}/js/lib/d3evolution.min.js
%{_wwwdir}/%{name}/js/lib/d3pie.min.js
%{_wwwdir}/%{name}/js/lib/domReady.js
%{_wwwdir}/%{name}/js/lib/footable.min.js
%{_wwwdir}/%{name}/js/lib/humanize.min.js
%{_wwwdir}/%{name}/js/lib/jquery-3.3.1.min.js
%{_wwwdir}/%{name}/js/lib/nprogress.min.js
%{_wwwdir}/%{name}/js/lib/require.min.js
%{_wwwdir}/%{name}/js/lib/visibility.min.js
%if 0%{?with split_out_client}
%files client
%endif
%{_mandir}/man1/rspamadm.1*
%{_mandir}/man1/rspamc.1*
%{_bindir}/rspamadm
%{_bindir}/rspamc