1
1
# Copyright 1999-2020 Gentoo Authors
2
2
# Distributed under the terms of the GNU General Public License v2
3
3
4
- EAPI=6
4
+ EAPI=7
5
5
6
- inherit autotools eutils flag-o-matic ltprune systemd
6
+ inherit autotools flag-o-matic systemd
7
7
8
8
DESCRIPTION=" Clam Anti-Virus Scanner"
9
9
HOMEPAGE=" https://www.clamav.net/"
@@ -13,44 +13,43 @@ LICENSE="GPL-2"
13
13
SLOT=" 0"
14
14
KEYWORDS=" ~alpha amd64 arm arm64 hppa ia64 ppc ppc64 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~sparc-solaris ~x86-solaris"
15
15
IUSE=" bzip2 doc clamdtop clamsubmit iconv ipv6 libclamav-only libressl milter metadata-analysis-api selinux static-libs test uclibc xml"
16
+
17
+ REQUIRED_USE=" libclamav-only? ( !clamdtop !clamsubmit !milter !metadata-analysis-api )"
18
+
16
19
RESTRICT=" !test? ( test )"
17
20
18
21
# Require acct-{user,group}/clamav at build time so that we can set
19
22
# the permissions on /var/lib/clamav in src_install rather than in
20
23
# pkg_postinst; calling "chown" on the live filesystem scares me.
21
24
CDEPEND=" acct-group/clamav
22
25
acct-user/clamav
26
+ dev-libs/libltdl
27
+ dev-libs/libmspack
28
+ || ( dev-libs/libpcre2 >dev-libs/libpcre-6 )
29
+ >=sys-libs/zlib-1.2.2:=
23
30
bzip2? ( app-arch/bzip2 )
24
31
clamdtop? ( sys-libs/ncurses:0 )
32
+ clamsubmit? ( net-misc/curl dev-libs/json-c:= )
33
+ elibc_musl? ( sys-libs/fts-standalone )
25
34
iconv? ( virtual/libiconv )
26
- metadata-analysis-api? ( dev-libs/json-c:= )
27
- milter? ( || ( mail-filter/libmilter mail-mta/sendmail ) )
28
- >=sys-libs/zlib-1.2.2:=
35
+ !libclamav-only? ( net-misc/curl )
29
36
!libressl? ( dev-libs/openssl:0= )
30
37
libressl? ( dev-libs/libressl:0= )
31
- dev-libs/libltdl
32
- || ( dev-libs/libpcre2 >dev-libs/libpcre-6 )
33
- dev-libs/libmspack
34
- xml? ( dev-libs/libxml2 )
35
- elibc_musl? ( sys-libs/fts-standalone )
36
- !libclamav-only? ( net-misc/curl )
37
- clamsubmit? ( net-misc/curl dev-libs/json-c:= )"
38
- REQUIRED_USE="
39
- libclamav-only? ( !clamsubmit )
40
- clamsubmit? ( !libclamav-only )
41
- "
38
+ milter? ( || ( mail-filter/libmilter mail-mta/sendmail ) )
39
+ xml? ( dev-libs/libxml2 )"
40
+
41
+ BDEPEND=" virtual/pkgconfig"
42
42
43
43
DEPEND=" ${CDEPEND}
44
- virtual/pkgconfig
44
+ metadata-analysis-api? ( dev-libs/json-c:* )
45
45
test? ( dev-libs/check )"
46
46
RDEPEND=" ${CDEPEND}
47
47
selinux? ( sec-policy/selinux-clamav )"
48
48
49
- HTML_DOCS=( docs/html/. )
50
-
51
49
PATCHES=(
52
50
" ${FILESDIR} /${PN} -0.101.2-tinfo.patch" # 670729
53
51
" ${FILESDIR} /${PN} -0.102.1-libxml2_pkgconfig.patch" # 661328
52
+ " ${FILESDIR} /${PN} -0.102.2-fix-curl-detection.patch" # 709616
54
53
)
55
54
56
55
src_prepare () {
@@ -106,79 +105,94 @@ src_install() {
106
105
default
107
106
108
107
rm -rf " ${ED} " /var/lib/clamav || die
109
- newinitd " ${FILESDIR} " /clamd.initd-r6 clamd
110
- newconfd " ${FILESDIR} " /clamd.conf-r1 clamd
111
-
112
- systemd_dotmpfilesd " ${FILESDIR} /tmpfiles.d/clamav.conf"
113
- systemd_newunit
" ${FILESDIR} /clamd_at.service" " [email protected] "
114
- systemd_dounit " ${FILESDIR} /clamd.service"
115
- systemd_dounit " ${FILESDIR} /freshclamd.service"
116
-
117
- insinto /etc/logrotate.d
118
- newins " ${FILESDIR} " /clamav.logrotate clamav
119
-
120
- # Modify /etc/{clamd,freshclam}.conf to be usable out of the box
121
- sed -i -e " s:^\(Example\):\# \1:" \
122
- -e " s:.*\(PidFile\) .*:\1 ${EPREFIX} /var/run/clamav/clamd.pid:" \
123
- -e " s:.*\(LocalSocket\) .*:\1 ${EPREFIX} /var/run/clamav/clamd.sock:" \
124
- -e " s:.*\(User\) .*:\1 clamav:" \
125
- -e " s:^\#\(LogFile\) .*:\1 ${EPREFIX} /var/log/clamav/clamd.log:" \
126
- -e " s:^\#\(LogTime\).*:\1 yes:" \
127
- -e " s:^\#\(AllowSupplementaryGroups\).*:\1 yes:" \
128
- -e " s:^\#\(DatabaseDirectory\).*:\1 /var/lib/clamav:" \
129
- " ${ED} " /etc/clamd.conf.sample || die
130
- sed -i -e " s:^\(Example\):\# \1:" \
131
- -e " s:.*\(PidFile\) .*:\1 ${EPREFIX} /var/run/clamav/freshclam.pid:" \
132
- -e " s:.*\(DatabaseOwner\) .*:\1 clamav:" \
133
- -e " s:^\#\(UpdateLogFile\) .*:\1 ${EPREFIX} /var/log/clamav/freshclam.log:" \
134
- -e " s:^\#\(NotifyClamd\).*:\1 ${EPREFIX} /etc/clamd.conf:" \
135
- -e " s:^\#\(ScriptedUpdates\).*:\1 yes:" \
136
- -e " s:^\#\(AllowSupplementaryGroups\).*:\1 yes:" \
137
- -e " s:^\#\(DatabaseDirectory\).*:\1 /var/lib/clamav:" \
138
- " ${ED} " /etc/freshclam.conf.sample || die
139
108
140
- if use milter ; then
141
- # MilterSocket one to include ' /' because there is a 2nd line for
142
- # inet: which we want to leave
143
- # #dodoc "${FILESDIR}"/clamav-milter.README.gentoo
109
+ if ! use libclamav-only ; then
110
+ newinitd " ${FILESDIR} " /clamd.initd-r6 clamd
111
+ newconfd " ${FILESDIR} " /clamd.conf-r1 clamd
112
+
113
+ systemd_dotmpfilesd " ${FILESDIR} /tmpfiles.d/clamav.conf"
114
+ systemd_newunit
" ${FILESDIR} /clamd_at.service" " [email protected] "
115
+ systemd_dounit " ${FILESDIR} /clamd.service"
116
+ systemd_dounit " ${FILESDIR} /freshclamd.service"
117
+
118
+ insinto /etc/logrotate.d
119
+ newins " ${FILESDIR} " /clamav.logrotate clamav
120
+
121
+ # Modify /etc/{clamd,freshclam}.conf to be usable out of the box
144
122
sed -i -e " s:^\(Example\):\# \1:" \
145
- -e " s:.*\(PidFile\) .*:\1 ${EPREFIX} /var/run/clamav/clamav-milter .pid:" \
146
- -e " s+^\#\(ClamdSocket \) .*+ \1 unix: ${EPREFIX} /var/run/clamav/clamd.sock+ " \
123
+ -e " s:.*\(PidFile\) .*:\1 ${EPREFIX} /var/run/clamav/clamd .pid:" \
124
+ -e " s:.*\(LocalSocket \) .*: \1 ${EPREFIX} /var/run/clamav/clamd.sock: " \
147
125
-e " s:.*\(User\) .*:\1 clamav:" \
148
- -e " s+^\#\(MilterSocket\) /.*+\1 unix:${EPREFIX} /var/run/clamav/clamav-milter.sock+" \
126
+ -e " s:^\#\(LogFile\) .*:\1 ${EPREFIX} /var/log/clamav/clamd.log:" \
127
+ -e " s:^\#\(LogTime\).*:\1 yes:" \
149
128
-e " s:^\#\(AllowSupplementaryGroups\).*:\1 yes:" \
150
- -e " s:^\#\(LogFile\) .*:\1 ${EPREFIX} /var/log/clamav/clamav-milter.log:" \
151
- " ${ED} " /etc/clamav-milter.conf.sample || die
152
- cat >> " ${ED} " /etc/conf.d/clamd << -EOF
153
- MILTER_NICELEVEL=19
154
- START_MILTER=no
155
- EOF
156
-
157
- systemd_newunit " ${FILESDIR} /clamav-milter.service-r1" clamav-milter.service
158
- fi
129
+ -e " s:^\#\(DatabaseDirectory\).*:\1 /var/lib/clamav:" \
130
+ " ${ED} " /etc/clamd.conf.sample || die
159
131
160
- if use doc; then
161
- einstalldocs
162
- doman docs/man/* .[1-8]
132
+ sed -i -e " s:^\(Example\):\# \1:" \
133
+ -e " s:.*\(PidFile\) .*:\1 ${EPREFIX} /var/run/clamav/freshclam.pid:" \
134
+ -e " s:.*\(DatabaseOwner\) .*:\1 clamav:" \
135
+ -e " s:^\#\(UpdateLogFile\) .*:\1 ${EPREFIX} /var/log/clamav/freshclam.log:" \
136
+ -e " s:^\#\(NotifyClamd\).*:\1 ${EPREFIX} /etc/clamd.conf:" \
137
+ -e " s:^\#\(ScriptedUpdates\).*:\1 yes:" \
138
+ -e " s:^\#\(AllowSupplementaryGroups\).*:\1 yes:" \
139
+ -e " s:^\#\(DatabaseDirectory\).*:\1 /var/lib/clamav:" \
140
+ " ${ED} " /etc/freshclam.conf.sample || die
141
+
142
+ if use milter ; then
143
+ # MilterSocket one to include ' /' because there is a 2nd line for
144
+ # inet: which we want to leave
145
+ # #dodoc "${FILESDIR}"/clamav-milter.README.gentoo
146
+ sed -i -e " s:^\(Example\):\# \1:" \
147
+ -e " s:.*\(PidFile\) .*:\1 ${EPREFIX} /var/run/clamav/clamav-milter.pid:" \
148
+ -e " s+^\#\(ClamdSocket\) .*+\1 unix:${EPREFIX} /var/run/clamav/clamd.sock+" \
149
+ -e " s:.*\(User\) .*:\1 clamav:" \
150
+ -e " s+^\#\(MilterSocket\) /.*+\1 unix:${EPREFIX} /var/run/clamav/clamav-milter.sock+" \
151
+ -e " s:^\#\(AllowSupplementaryGroups\).*:\1 yes:" \
152
+ -e " s:^\#\(LogFile\) .*:\1 ${EPREFIX} /var/log/clamav/clamav-milter.log:" \
153
+ " ${ED} " /etc/clamav-milter.conf.sample || die
154
+
155
+ cat >> " ${ED} " /etc/conf.d/clamd << -EOF
156
+ MILTER_NICELEVEL=19
157
+ START_MILTER=no
158
+ EOF
159
+
160
+ systemd_newunit " ${FILESDIR} /clamav-milter.service-r1" clamav-milter.service
161
+ fi
162
+
163
+ local i
164
+ for i in clamd freshclam clamav-milter
165
+ do
166
+ if [[ -f " ${ED} " /etc/" ${i} " .conf.sample ]]; then
167
+ mv " ${ED} " /etc/" ${i} " .conf{.sample,} || die
168
+ fi
169
+ done
170
+
171
+ # These both need to be writable by the clamav user.
172
+ # TODO: use syslog by default; that's what it's for.
173
+ diropts -o clamav -g clamav
174
+ keepdir /var/lib/clamav
175
+ keepdir /var/log/clamav
163
176
fi
164
177
165
- for i in clamd freshclam clamav-milter
166
- do
167
- if [[ -f " ${D} " /etc/" ${i} " .conf.sample ]]; then
168
- mv " ${D} " /etc/" ${i} " .conf{.sample,} || die
169
- fi
170
- done
178
+ if use doc ; then
179
+ local HTML_DOCS=( docs/html/. )
180
+ einstalldocs
171
181
172
- prune_libtool_files --all
182
+ if ! use libclamav-only ; then
183
+ doman docs/man/* .[1-8]
184
+ fi
185
+ fi
173
186
174
- # These both need to be writable by the clamav user.
175
- # TODO: use syslog by default; that's what it's for.
176
- diropts -o clamav -g clamav
177
- keepdir /var/lib/clamav
178
- keepdir /var/log/clamav
187
+ find " ${ED} " -name ' *.la' -delete || die
179
188
}
180
189
181
190
src_test () {
191
+ if use libclamav-only ; then
192
+ ewarn " Test target not available when USE=libclamav-only is set, skipping tests ..."
193
+ return 0
194
+ fi
195
+
182
196
emake quick-check
183
197
}
184
198
@@ -187,11 +201,13 @@ pkg_postinst() {
187
201
elog " For simple instructions how to setup the clamav-milter read the"
188
202
elog " clamav-milter.README.gentoo in /usr/share/doc/${PF} "
189
203
fi
190
- local databases=( " ${ROOT} " var/lib/clamav/main.c[lv]d )
204
+
205
+ local databases=( " ${EROOT} " /var/lib/clamav/main.c[lv]d )
191
206
if [[ ! -f " ${databases} " ]] ; then
192
207
ewarn " You must run freshclam manually to populate the virus database"
193
208
ewarn " before starting clamav for the first time."
194
209
fi
210
+
195
211
elog " For instructions on how to use clamonacc, see"
196
212
elog
197
213
elog " https://www.clamav.net/documents/on-access-scanning"
0 commit comments