]> git.pld-linux.org Git - packages/clamav.git/blame_incremental - clamav.spec
- up to 0.102.2; fixes DoS CVE-2020-3123
[packages/clamav.git] / clamav.spec
... / ...
CommitLineData
1# TODO:
2# - Make freshclam package (script and daemon)
3# - restart amavis in triggers if group membership was modified?
4#
5# Conditional build:
6%bcond_without milter # milter interface subpackage
7%if "%{pld_release}" == "ac"
8%bcond_with llvm # LLVM support
9%else
10%bcond_without llvm # LLVM support
11%endif
12%bcond_without system_libmspack # system libmspack library
13%bcond_with system_llvm # system LLVM (< 3.7)
14
15%ifarch x32
16%undefine with_llvm
17%endif
18Summary: An anti-virus utility for Unix
19Summary(pl.UTF-8): Narzędzie antywirusowe dla Uniksów
20Name: clamav
21Version: 0.102.2
22Release: 1
23License: GPL v2+
24Group: Daemons
25#Source0Download: http://www.clamav.net/download
26Source0: http://www.clamav.net/downloads/production/%{name}-%{version}.tar.gz
27# Source0-md5: ecf5dd2c5c43aeed1c4b458b2e689847
28Source1: %{name}.init
29Source2: %{name}.sysconfig
30Source3: %{name}-milter.init
31Source4: %{name}-cron-updatedb
32Source5: %{name}.logrotate
33Source8: %{name}-post-updatedb
34Source9: %{name}-milter.sysconfig
35Source10: %{name}.tmpfiles
36Source11: clamd.service
37Source12: cronjob-clamav.timer
38Source13: cronjob-clamav.service.in
39Patch0: %{name}-pld_config.patch
40Patch1: %{name}-nolibs.patch
41%if "%{pld_release}" == "ac"
42Patch2: am-nosilentrules.patch
43%endif
44Patch3: ac2.68.patch
45Patch4: x32.patch
46Patch5: %{name}-add-support-for-system-tomsfastmath.patch
47Patch6: %{name}-headers.patch
48URL: http://www.clamav.net/
49BuildRequires: autoconf >= 2.59
50BuildRequires: automake >= 1:1.11
51BuildRequires: bzip2-devel
52BuildRequires: check-devel
53BuildRequires: curl-devel
54BuildRequires: gmp-devel
55BuildRequires: json-c-devel
56BuildRequires: libltdl-devel
57%{?with_milter:BuildRequires: libmilter-devel}
58%{?with_system_libmspack:BuildRequires: libmspack-devel}
59BuildRequires: libstdc++-devel >= 5:3.4
60BuildRequires: libtool
61%{?with_milter:BuildRequires: libwrap-devel}
62BuildRequires: libxml2-devel >= 2
63%{?with_llvm:%{?with_system_llvm:BuildRequires: llvm-devel < 3.7}}
64BuildRequires: ncurses-devel
65BuildRequires: openssl-devel >= 0.9.8
66BuildRequires: pcre2-8-devel
67BuildRequires: pkgconfig >= 1:0.16
68BuildRequires: rpm >= 4.4.9-56
69BuildRequires: rpmbuild(macros) >= 1.647
70BuildRequires: systemd-devel
71BuildRequires: tomsfastmath-devel >= 0.13.1-2
72BuildRequires: zlib-devel >= 1.2.2
73Requires(post,preun): /sbin/chkconfig
74Requires(postun): /usr/sbin/groupdel
75Requires(postun): /usr/sbin/userdel
76Requires(postun,pre): /usr/sbin/usermod
77Requires(pre): /bin/id
78Requires(pre): /usr/bin/getgid
79Requires(pre): /usr/sbin/groupadd
80Requires(pre): /usr/sbin/useradd
81Requires(post,preun,postun): systemd-units >= 38
82Requires: systemd-units >= 38
83Requires(triggerpostun): sed >= 4.0
84Requires: %{name}-libs = %{epoch}:%{version}-%{release}
85Requires: /usr/sbin/usermod
86Requires: rc-scripts >= 0.4.1.23
87Suggests: clamav-database
88Suggests: cronjobs
89Provides: group(clamav)
90Provides: user(clamav)
91Conflicts: logrotate < 3.7-4
92BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
93
94%description
95Clam AntiVirus is an open source anti-virus toolkit for UNIX, designed
96especially for e-mail scanning on mail gateways. It provides a number
97of utilities including a flexible and scalable multi-threaded daemon,
98a command line scanner and advanced tool for automatic database
99updates. The core of the package is an anti-virus engine available in
100a form of shared library (available in clamav-libs).
101
102Here is a list of the main features:
103- command-line scanner
104- fast, multi-threaded daemon with support for on-access scanning
105- milter interface for sendmail
106- advanced database updater with support for scripted updates and
107 digital signatures
108- virus scanner C library
109- on-access scanning (Linux and FreeBSD)
110- virus database updated multiple times per day (see home page for
111 total number of signatures)
112- built-in support for various archive formats, including Zip, RAR,
113 Tar, Gzip, Bzip2, OLE2, Cabinet, CHM, BinHex, SIS and others
114- built-in support for almost all mail file formats
115- built-in support for ELF executables and Portable Executable files
116 compressed with UPX, FSG, Petite, NsPack, wwpack32, MEW, Upack and
117 obfuscated with SUE, Y0da Cryptor and others
118- built-in support for popular document formats including MS Office
119 and MacOffice files, HTML, RTF and PDF
120
121%description -l pl.UTF-8
122Clam AntiVirus to mające otwarte źródła narzędzie antywirusowe dla
123systemów uniksowych, zaprojektowane szczególnie pod kątem skanowania
124poczty elektronicznej na bramkach pocztowych. Udostępnia wiele
125narzędzi, w tym elastycznego i skalowalnego, multiwątkowego demona,
126skaner działający z linii poleceń oraz zaawansowane narzędzie do
127automatycznej aktualizacji bazy danych. Główna część pakietu to
128silnik antywirusowy dostępny w postaci biblioteki współdzielonej
129(dostępnej w pakiecie clamav-libs).
130
131Lista podstawowych możliwości:
132- skaner działający z linii poleceń
133- szybki, wielowątkowy demon z obsługą skanowania przy odczycie
134- interfejs milter dla sendmaila
135- zaawansowane narzędzie do aktualizacji bazy danych z obsługą
136 aktualizacji oskryptowanych oraz podpisów cyfrowych
137- biblioteka C skanera antywirusowego
138- skanowanie przy odczycie (dla Linuksa i FreeBSD)
139- baza danych wirusów aktualizowana wiele razy dziennie (liczba
140 sygnatur dostępna na stronie projektu)
141- wbudowana obsługa różnych formatów archiwów, w tym Zip, RAR, Tar,
142 Gzip, Bzip2, OLE2, Cabinet, CHM, BinHex, SIS i inne
143- wbudowana obsługa prawie wszystkich formatów plików pocztowych
144- wbudowana obsługa plików wykonywalnych ELF i PE skompresowanych
145 programami UPX, FSG, Petite, NsPack, wwpack32, MEW, Upack oraz
146 zaciemnionych przy użyciu programów SUE, Y0da Cryptor i innych
147- wbudowana obsługa popularnych formatów dokumentów, w tym plików MS
148 Office, MacOffice, HTML, RTF i PDF
149
150%package libs
151Summary: Shared libraries for clamav
152Summary(pl.UTF-8): Biblioteki dzielone clamav
153Group: Libraries
154Requires: zlib >= 1.2.2
155
156%description libs
157Shared libraries for clamav.
158
159%description libs -l pl.UTF-8
160Biblioteki dzielone clamav.
161
162%package milter
163Summary: ClamAV filter using milter interface
164Summary(pl.UTF-8): Filtr ClamAV korzystający z interfejsu milter
165Group: Daemons
166Requires: %{name} = %{epoch}:%{version}-%{release}
167Requires: postfix
168#Requires: sendmail >= 8.11
169Requires: tcp_wrappers
170
171%description milter
172ClamAV sendmail filter using MILTER interface.
173
174%description milter -l pl.UTF-8
175Filtr ClamAV dla sendmaila korzystający z interfejsu MILTER.
176
177%package devel
178Summary: clamav - Development header files and libraries
179Summary(pl.UTF-8): clamav - Pliki nagłówkowe i biblioteki dla programistów
180Group: Development/Libraries
181Requires: %{name}-libs = %{epoch}:%{version}-%{release}
182Requires: bzip2-devel
183Requires: curl-devel
184Requires: gmp-devel
185Requires: openssl-devel >= 0.9.8
186Requires: zlib-devel >= 1.2.2
187
188%description devel
189This package contains the development header files and libraries
190necessary to develop clamav client applications.
191
192%description devel -l pl.UTF-8
193Pliki nagłówkowe i biblioteki konieczne do kompilacji aplikacji
194klienckich clamav.
195
196%package static
197Summary: clamav static libraries
198Summary(pl.UTF-8): Biblioteki statyczne clamav
199Group: Development/Libraries
200Requires: %{name}-devel = %{epoch}:%{version}-%{release}
201
202%description static
203clamav static libraries.
204
205%description static -l pl.UTF-8
206Biblioteki statyczne clamav.
207
208%prep
209%setup -q
210%patch0 -p1
211%patch1 -p1
212%if "%{pld_release}" == "ac"
213%patch2 -p1
214%endif
215%if "%{pld_release}" != "ac"
216%patch3 -p1
217%endif
218%patch4 -p1
219%patch5 -p1
220%patch6 -p1
221
222%build
223export CFLAGS="%{rpmcflags} -Wall -W -Wmissing-prototypes -Wmissing-declarations -std=gnu99"
224export CXXFLAGS="%{rpmcxxflags} -std=gnu++98"
225%{__libtoolize}
226%{__aclocal} -I m4
227%{__autoconf}
228%{__autoheader}
229%{__automake}
230%configure \
231 --disable-clamav \
232 --enable-clamdtop \
233 %{?with_llvm:--enable-llvm %{!?with_system_llvm:--with-system-llvm=no}} \
234 %{?with_milter:--enable-milter} \
235 --disable-silent-rules \
236 --disable-zlib-vcheck \
237 --with-dbdir=/var/lib/%{name} \
238 --with-ltdl-include=%{_includedir} \
239 --with-ltdl-lib=%{_libdir} \
240 --with-no-cache \
241 %{?with_system_libmspack:--with-system-libmspack}
242
243%{__make} \
244 LIBTOOL=%{_bindir}/libtool
245
246%install
247rm -rf $RPM_BUILD_ROOT
248install -d $RPM_BUILD_ROOT/etc/{cron.d,logrotate.d,rc.d/init.d,sysconfig} \
249 $RPM_BUILD_ROOT%{_var}/{log,spool/clamav,lib/clamav} \
250 $RPM_BUILD_ROOT%{systemdtmpfilesdir} \
251 $RPM_BUILD_ROOT%{systemdunitdir}
252
253%{__make} install \
254 LIBTOOL=%{_bindir}/libtool \
255 DESTDIR=$RPM_BUILD_ROOT
256%{!?with_milter:rm -f $RPM_BUILD_ROOT%{_mandir}/man8/clamav-milter.8*}
257
258cat <<'EOF' >$RPM_BUILD_ROOT/etc/cron.d/%{name}
2595 * * * * root %{_sbindir}/clamav-cron-updatedb
260EOF
261
262install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/clamd
263%if %{with milter}
264install -p %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/clamav-milter
265cp -p %{SOURCE9} $RPM_BUILD_ROOT/etc/sysconfig/clamav-milter
266%endif
267cp -p %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/clamd
268install -p %{SOURCE4} $RPM_BUILD_ROOT%{_sbindir}/clamav-cron-updatedb
269for i in $RPM_BUILD_ROOT%{_sysconfdir}/*.conf.sample; do
270 mv $i ${i%%.sample}
271done
272cp -p %{SOURCE5} $RPM_BUILD_ROOT/etc/logrotate.d/%{name}
273
274install -p %{SOURCE8} $RPM_BUILD_ROOT%{_sbindir}
275
276cp -p %{SOURCE10} $RPM_BUILD_ROOT%{systemdtmpfilesdir}/%{name}.conf
277
278cp -p %{SOURCE11} $RPM_BUILD_ROOT%{systemdunitdir}
279cp -p %{SOURCE12} $RPM_BUILD_ROOT%{systemdunitdir}/cronjob-%{name}.timer
280sed -e's#@sbindir@#%{_sbindir}#' < %{SOURCE13} > $RPM_BUILD_ROOT%{systemdunitdir}/cronjob-%{name}.service
281
282# NOTE: clamd uses sane rights to it's clamd.pid file
283# So better keep it dir
284# If it is fixed use of dir will be unecesary
285install -d $RPM_BUILD_ROOT/var/run/%{name}
286
287:> $RPM_BUILD_ROOT/var/log/freshclam.log
288
289%clean
290rm -rf $RPM_BUILD_ROOT
291
292%triggerin -- amavis-ng
293%addusertogroup -q clamav amavis
294
295%triggerin -- amavisd-new
296%addusertogroup -q clamav amavis
297
298%triggerin -- amavisd
299%addusertogroup -q clamav amavis
300
301%pre
302%groupadd -g 43 clamav
303%useradd -u 43 -d /tmp -s /bin/false -c "Clam Anti Virus Checker" -g clamav clamav
304
305%post
306/sbin/chkconfig --add clamd
307%service clamd restart "Clam Antivirus daemon"
308touch /var/log/freshclam.log
309chown clamav:root /var/log/freshclam.log
310chmod 640 /var/log/freshclam.log
311%systemd_post clamd.service cronjob-clamav.timer
312
313%preun
314if [ "$1" = "0" ]; then
315 %service clamd stop
316 /sbin/chkconfig --del clamd
317fi
318%systemd_preun clamd.service cronjob-clamav.timer
319
320%postun
321if [ "$1" = "0" ]; then
322 %userremove clamav
323 %groupremove clamav
324fi
325%systemd_reload
326
327%triggerpostun -- %{name} < 0.80
328if [ -f /etc/clamav.conf.rpmsave ]; then
329 echo "Renaming config to new name /etc/clamd.conf"
330 mv -f /etc/clamd.conf /etc/clamd.conf.rpmnew
331 mv -f /etc/clamav.conf.rpmsave /etc/clamd.conf
332 echo "Changing config location in freshclam config"
333 %{__sed} -i -e 's/clamav.conf/clamd.conf/' /etc/freshclam.conf
334fi
335
336%triggerpostun -- %{name} < 0.90-0.rc2.0.10
337%{__cp} -f /etc/clamd.conf{,.rpmsave}
338%{__sed} -i -e '
339 s,^LogSyslog$,& yes,
340 s,^FixStaleSocket$,& yes,
341 s,^AllowSupplementaryGroups$,& yes,
342 s,^ClamukoScanOnOpen$,& yes,
343 s,^ClamukoScanOnClose$,& yes,
344 s,^ClamukoScanOnExec$,& yes,
345 s,^LogTime$,& yes,
346 s,^ScanPE$,& yes,
347' /etc/clamd.conf
348%banner -e %{name}-0.90 <<EOF
349ClamAV config was automatically upgraded to 0.90 format. You should review it
350that it's still valid.
351EOF
352#'
353# unfortunately clamd has no configcheck option so we just have to start it
354# once again after config was broken after upgrade
355touch /var/lock/subsys/clamd
356%service -q clamd restart
357
358%triggerpostun -- %{name} < 0.97.7-4
359%systemd_trigger clamd.service
360
361%triggerpostun -- %{name} < 0.99.2-2
362%systemd_service_enable cronjob-clamav.timer
363
364%post milter
365/sbin/chkconfig --add clamav-milter
366%service clamav-milter restart "Clam Antivirus daemon"
367
368%preun milter
369if [ "$1" = "0" ]; then
370 %service clamav-milter stop
371 /sbin/chkconfig --del clamav-milter
372fi
373
374%post libs -p /sbin/ldconfig
375%postun libs -p /sbin/ldconfig
376
377%files
378%defattr(644,root,root,755)
379%doc ChangeLog.md NEWS.md README.md
380%attr(755,root,root) %{_bindir}/clambc
381%attr(755,root,root) %{_bindir}/clamdscan
382%attr(755,root,root) %{_bindir}/clamdtop
383%attr(755,root,root) %{_bindir}/clamonacc
384%attr(755,root,root) %{_bindir}/clamscan
385%attr(755,root,root) %{_bindir}/clamsubmit
386%attr(755,root,root) %{_bindir}/freshclam
387%attr(755,root,root) %{_bindir}/sigtool
388%attr(755,root,root) %{_bindir}/clamconf
389%attr(755,root,root) %{_sbindir}/clamd
390%attr(755,root,root) %{_sbindir}/clamav-cron-updatedb
391%attr(755,root,root) %{_sbindir}/clamav-post-updatedb
392%{systemdtmpfilesdir}/%{name}.conf
393%{systemdunitdir}/clamav-daemon.service
394%{systemdunitdir}/clamav-daemon.socket
395%{systemdunitdir}/clamav-freshclam.service
396%{systemdunitdir}/clamd.service
397%{systemdunitdir}/cronjob-clamav.service
398%{systemdunitdir}/cronjob-clamav.timer
399%attr(755,clamav,root) %dir /var/lib/%{name}
400%attr(640,clamav,root) %ghost /var/log/freshclam.log
401%attr(750,clamav,clamav) %dir /var/run/%{name}
402
403%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/cron.d/%{name}
404%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/clamd.conf
405%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/freshclam.conf
406
407%attr(754,root,root) /etc/rc.d/init.d/clamd
408%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/clamd
409%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/clamav
410%{_mandir}/man1/*
411%{_mandir}/man5/clamd*
412%{_mandir}/man5/freshclam*
413%{_mandir}/man8/clamd*
414
415%if %{with milter}
416%files milter
417%defattr(644,root,root,755)
418%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/clamav-milter
419%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/clamav-milter.conf
420%attr(754,root,root) /etc/rc.d/init.d/clamav-milter
421#%attr(755,root,root) %{_sysconfdir}/cron.daily/clamav-milter
422#%attr(755,root,root) %{_sysconfdir}/log.d/scripts/services/clamav-milter
423#%{_sysconfdir}/log.d/conf/services/clamav-milter.conf
424%attr(755,root,root) %{_sbindir}/clamav-milter
425%{_mandir}/man5/clamav-milter*
426%{_mandir}/man8/clamav-milter.8*
427%attr(700,clamav,clamav) /var/spool/clamav
428%endif
429
430%files libs
431%defattr(644,root,root,755)
432%attr(755,root,root) %{_libdir}/libclamav.so.*.*.*
433%attr(755,root,root) %ghost %{_libdir}/libclamav.so.9
434%if %{without system_libmspack}
435%attr(755,root,root) %{_libdir}/libclammspack.*.*.*
436%attr(755,root,root) %ghost %{_libdir}/libclammspack.so.0
437%endif
438%attr(755,root,root) %{_libdir}/libclamunrar.so.*.*.*
439%attr(755,root,root) %ghost %{_libdir}/libclamunrar.so.9
440%attr(755,root,root) %{_libdir}/libclamunrar_iface.so.*.*.*
441%attr(755,root,root) %ghost %{_libdir}/libclamunrar_iface.so.9
442%attr(755,root,root) %{_libdir}/libfreshclam.so.*.*.*
443%attr(755,root,root) %ghost %{_libdir}/libfreshclam.so.2
444
445%files devel
446%defattr(644,root,root,755)
447%attr(755,root,root) %{_bindir}/clamav-config
448%attr(755,root,root) %{_libdir}/libclamav.so
449%if %{without system_libmspack}
450%attr(755,root,root) %{_libdir}/libclammspack.so
451%endif
452%attr(755,root,root) %{_libdir}/libclamunrar.so
453%attr(755,root,root) %{_libdir}/libfreshclam.so
454%attr(755,root,root) %{_libdir}/libclamunrar_iface.so
455%{_libdir}/libclamav.la
456%if %{without system_libmspack}
457%{_libdir}/libclammspack.la
458%endif
459%{_libdir}/libclamunrar.la
460%{_libdir}/libfreshclam.la
461%{_libdir}/libclamunrar_iface.la
462%dir %{_includedir}/clamav
463%{_includedir}/clamav/clamav.h
464%{_includedir}/clamav/clamav-types.h
465%{_includedir}/clamav/clamav-version.h
466%{_includedir}/clamav/libfreshclam.h
467%{_pkgconfigdir}/libclamav.pc
468
469%files static
470%defattr(644,root,root,755)
471%{_libdir}/libclamav.a
472%if %{without system_libmspack}
473%{_libdir}/libclammspack.a
474%endif
475%{_libdir}/libclamunrar.a
476%{_libdir}/libfreshclam.a
477%{_libdir}/libclamunrar_iface.a
This page took 0.029354 seconds and 4 git commands to generate.