# TODO:
# - Make freshclam package (script and daemon)
+# - restart amavis in triggers if group membership was modified?
#
# Conditional build:
-%bcond_without milter # build without milter subpackage
-#
+%bcond_without milter # milter interface subpackage
+%if "%{pld_release}" == "ac"
+%bcond_with llvm # LLVM support
+%else
+%bcond_without llvm # LLVM support
+%endif
+
Summary: An anti-virus utility for Unix
Summary(pl.UTF-8): Narzędzie antywirusowe dla Uniksów
Name: clamav
-Version: 0.95
-Release: 0.1
-Epoch: 0
+Version: 0.98.1
+Release: 2
License: GPL v2+
-Group: Applications
-Source0: http://dl.sourceforge.net/clamav/%{name}-%{version}.tar.gz
-# Source0-md5: 98590386ba9a69039580b1bf48ca038b
+Group: Daemons
+Source0: http://downloads.sourceforge.net/clamav/%{name}-%{version}.tar.gz
+# Source0-md5: b1ec7b19dea8385954515ef1d63576d8
Source1: %{name}.init
Source2: %{name}.sysconfig
Source3: %{name}-milter.init
Source5: %{name}.logrotate
Source8: %{name}-post-updatedb
Source9: %{name}-milter.sysconfig
+Source10: %{name}.tmpfiles
+Source11: clamd.service
Patch0: %{name}-pld_config.patch
Patch1: %{name}-nolibs.patch
+Patch2: am-nosilentrules.patch
+Patch3: ac2.68.patch
+Patch4: %{name}-notify-error.patch
URL: http://www.clamav.net/
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: bzip2-devel
BuildRequires: gmp-devel
+BuildRequires: libltdl-devel
%{?with_milter:BuildRequires: libmilter-devel}
+BuildRequires: libstdc++-devel
BuildRequires: libtool
+BuildRequires: llvm-devel
%{?with_milter:BuildRequires: libwrap-devel}
-BuildRequires: rpmbuild(macros) >= 1.268
+%{?with_llvm:BuildRequires: llvm-devel}
+BuildRequires: ncurses-devel
+BuildRequires: rpm >= 4.4.9-56
+BuildRequires: rpmbuild(macros) >= 1.647
BuildRequires: zlib-devel
Requires(post,preun): /sbin/chkconfig
Requires(postun): /usr/sbin/groupdel
Requires(pre): /usr/bin/getgid
Requires(pre): /usr/sbin/groupadd
Requires(pre): /usr/sbin/useradd
+Requires(post,preun,postun): systemd-units >= 38
+Requires: systemd-units >= 38
Requires(triggerpostun): sed >= 4.0
Requires: %{name}-libs = %{epoch}:%{version}-%{release}
Requires: /usr/sbin/usermod
-Requires: bc
-Requires: rc-scripts
+Requires: rc-scripts >= 0.4.1.23
+Suggests: clamav-database
Provides: group(clamav)
Provides: user(clamav)
Conflicts: logrotate < 3.7-4
Summary(pl.UTF-8): Filtr ClamAV korzystający z interfejsu milter
Group: Daemons
Requires: %{name} = %{epoch}:%{version}-%{release}
-Requires: sendmail >= 8.11
+Requires: postfix
+#Requires: sendmail >= 8.11
Requires: tcp_wrappers
%description milter
%setup -q
%patch0 -p1
%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
%build
%{__libtoolize}
%{__autoheader}
%{__automake}
%configure \
+ --disable-silent-rules \
--disable-clamav \
+ --enable-clamdtop \
%{?with_milter:--enable-milter} \
--with-dbdir=/var/lib/%{name} \
- --with-no-cache
-%{__make} LIBTOOL=/usr/bin/libtool
+ --with-no-cache \
+ --with-ltdl-include=%{_includedir} \
+ --with-ltdl-lib=%{_libdir}
+
+%{__make} \
+ LIBTOOL=%{_bindir}/libtool
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT/etc/{cron.d,logrotate.d,rc.d/init.d,sysconfig} \
- $RPM_BUILD_ROOT%{_var}/{log,spool/clamav}
+ $RPM_BUILD_ROOT%{_var}/{log,spool/clamav,lib/clamav} \
+ $RPM_BUILD_ROOT%{systemdtmpfilesdir} \
+ $RPM_BUILD_ROOT%{systemdunitdir}
%{__make} install \
- LIBTOOL=/usr/bin/libtool \
+ LIBTOOL=%{_bindir}/libtool \
DESTDIR=$RPM_BUILD_ROOT
%{!?with_milter:rm -f $RPM_BUILD_ROOT%{_mandir}/man8/clamav-milter.8*}
5 * * * * root %{_sbindir}/clamav-cron-updatedb
EOF
-install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/clamd
+install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/clamd
%if %{with milter}
-install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/clamav-milter
-install %{SOURCE9} $RPM_BUILD_ROOT/etc/sysconfig/clamav-milter
+install -p %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/clamav-milter
+cp -p %{SOURCE9} $RPM_BUILD_ROOT/etc/sysconfig/clamav-milter
%endif
-install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/clamd
-install %{SOURCE4} $RPM_BUILD_ROOT%{_sbindir}/clamav-cron-updatedb
-install etc/*.conf $RPM_BUILD_ROOT%{_sysconfdir}
-install %{SOURCE5} $RPM_BUILD_ROOT/etc/logrotate.d/%{name}
+cp -p %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/clamd
+install -p %{SOURCE4} $RPM_BUILD_ROOT%{_sbindir}/clamav-cron-updatedb
+for i in $RPM_BUILD_ROOT%{_sysconfdir}/*.conf.sample; do
+ mv $i ${i%%.sample}
+done
+cp -p %{SOURCE5} $RPM_BUILD_ROOT/etc/logrotate.d/%{name}
+
+install -p %{SOURCE8} $RPM_BUILD_ROOT%{_sbindir}
-install %{SOURCE8} $RPM_BUILD_ROOT%{_sbindir}
+install %{SOURCE10} $RPM_BUILD_ROOT%{systemdtmpfilesdir}/%{name}.conf
+
+install %{SOURCE11} $RPM_BUILD_ROOT%{systemdunitdir}
# NOTE: clamd uses sane rights to it's clamd.pid file
# So better keep it dir
rm -rf $RPM_BUILD_ROOT
%triggerin -- amavis-ng
-%addusertogroup clamav amavis
+%addusertogroup -q clamav amavis
%triggerin -- amavisd-new
-%addusertogroup clamav amavis
+%addusertogroup -q clamav amavis
%triggerin -- amavisd
-%addusertogroup clamav amavis
+%addusertogroup -q clamav amavis
%pre
%groupadd -g 43 clamav
%useradd -u 43 -d /tmp -s /bin/false -c "Clam Anti Virus Checker" -g clamav clamav
-%addusertogroup clamav amavis
%post
/sbin/chkconfig --add clamd
touch /var/log/freshclam.log
chown clamav:root /var/log/freshclam.log
chmod 640 /var/log/freshclam.log
+%systemd_post clamd.service
%preun
if [ "$1" = "0" ]; then
%service clamd stop
/sbin/chkconfig --del clamd
fi
+%systemd_preun clamd.service
%postun
if [ "$1" = "0" ]; then
%userremove clamav
%groupremove clamav
fi
+%systemd_reload
%triggerpostun -- %{name} < 0.80
if [ -f /etc/clamav.conf.rpmsave ]; then
touch /var/lock/subsys/clamd
%service -q clamd restart
+%triggerpostun -- %{name} < 0.97.7-4
+%systemd_trigger clamd.service
+
%post milter
/sbin/chkconfig --add clamav-milter
%service clamav-milter restart "Clam Antivirus daemon"
%files
%defattr(644,root,root,755)
%doc AUTHORS ChangeLog FAQ NEWS README docs/*.pdf
+%attr(755,root,root) %{_bindir}/clambc
%attr(755,root,root) %{_bindir}/clamdscan
%attr(755,root,root) %{_bindir}/clamdtop
%attr(755,root,root) %{_bindir}/clamscan
%attr(755,root,root) %{_sbindir}/clamd
%attr(755,root,root) %{_sbindir}/clamav-cron-updatedb
%attr(755,root,root) %{_sbindir}/clamav-post-updatedb
+%{systemdtmpfilesdir}/%{name}.conf
+%{systemdunitdir}/clamd.service
%attr(755,clamav,root) %dir /var/lib/%{name}
-%ghost %attr(644,clamav,root) %verify(not md5 mtime size) /var/lib/clamav/*.cvd
%attr(640,clamav,root) %ghost /var/log/freshclam.log
%attr(750,clamav,clamav) %dir /var/run/%{name}
%files milter
%defattr(644,root,root,755)
%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/clamav-milter
-%config(noreplace) %verify(not md5 mtime size) /etc/clamav-milter.conf
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/clamav-milter.conf
%attr(754,root,root) /etc/rc.d/init.d/clamav-milter
#%attr(755,root,root) %{_sysconfdir}/cron.daily/clamav-milter
#%attr(755,root,root) %{_sysconfdir}/log.d/scripts/services/clamav-milter
%files libs
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/lib*.so.*.*
+%attr(755,root,root) %{_libdir}/libclamav.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libclamav.so.6
+%attr(755,root,root) %{_libdir}/libclamunrar.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libclamunrar.so.6
+%attr(755,root,root) %{_libdir}/libclamunrar_iface.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libclamunrar_iface.so.6
%files devel
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/clamav-config
-%attr(755,root,root) %{_libdir}/lib*.so
-%{_libdir}/lib*.la
-%{_includedir}/*.h
-%{_pkgconfigdir}/*.pc
+%attr(755,root,root) %{_libdir}/libclamav.so
+%attr(755,root,root) %{_libdir}/libclamunrar.so
+%attr(755,root,root) %{_libdir}/libclamunrar_iface.so
+%{_libdir}/libclamav.la
+%{_libdir}/libclamunrar.la
+%{_libdir}/libclamunrar_iface.la
+%{_includedir}/clamav.h
+%{_pkgconfigdir}/libclamav.pc
%files static
%defattr(644,root,root,755)
-%{_libdir}/*.a
+%{_libdir}/libclamav.a
+%{_libdir}/libclamunrar.a
+%{_libdir}/libclamunrar_iface.a