summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /app-antivirus
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'app-antivirus')
-rw-r--r--app-antivirus/clamav-unofficial-sigs/Manifest1
-rw-r--r--app-antivirus/clamav-unofficial-sigs/clamav-unofficial-sigs-3.7.2.ebuild90
-rw-r--r--app-antivirus/clamav-unofficial-sigs/metadata.xml10
-rw-r--r--app-antivirus/clamav/Manifest3
-rw-r--r--app-antivirus/clamav/clamav-0.98.5.ebuild139
-rw-r--r--app-antivirus/clamav/clamav-0.98.6.ebuild139
-rw-r--r--app-antivirus/clamav/clamav-0.98.7.ebuild139
-rw-r--r--app-antivirus/clamav/files/clamav-milter.README.gentoo44
-rw-r--r--app-antivirus/clamav/files/clamav-milter.service12
-rw-r--r--app-antivirus/clamav/files/clamav-milter.service-r113
-rw-r--r--app-antivirus/clamav/files/clamav.logrotate17
-rw-r--r--app-antivirus/clamav/files/clamd.conf9
-rw-r--r--app-antivirus/clamav/files/clamd.conf-r17
-rwxr-xr-xapp-antivirus/clamav/files/clamd.initd-r3121
-rwxr-xr-xapp-antivirus/clamav/files/clamd.initd-r5126
-rwxr-xr-xapp-antivirus/clamav/files/clamd.initd-r6129
-rw-r--r--app-antivirus/clamav/files/clamd.service7
-rw-r--r--app-antivirus/clamav/files/clamd_at.service9
-rw-r--r--app-antivirus/clamav/files/freshclamd.service10
-rw-r--r--app-antivirus/clamav/files/tmpfiles.d/clamav.conf1
-rw-r--r--app-antivirus/clamav/metadata.xml13
-rw-r--r--app-antivirus/metadata.xml35
22 files changed, 1074 insertions, 0 deletions
diff --git a/app-antivirus/clamav-unofficial-sigs/Manifest b/app-antivirus/clamav-unofficial-sigs/Manifest
new file mode 100644
index 000000000000..e5aa696cbeab
--- /dev/null
+++ b/app-antivirus/clamav-unofficial-sigs/Manifest
@@ -0,0 +1 @@
+DIST clamav-unofficial-sigs-3.7.2.tar.gz 38549 SHA256 96e98e6e4434c5950fa9831c6a43236fed7eabae44beded16171305cf3f9bdb9 SHA512 ee07bf521cca229bc85acb887c8e520149955732797a9d220e24f09cb9e89f9bd189ad77dc781c03c60bdaaec2bfa91a6c96cf7a0b689759cddf3ff231b8b0a4 WHIRLPOOL af4925c8a9bb8c09472131f98026b809da13e122a530c4a48614014b8156a259d37303cb1042da98d0bd8b0f4abef3cd7c05f2d549f87e1b7cd533d4a8d4d188
diff --git a/app-antivirus/clamav-unofficial-sigs/clamav-unofficial-sigs-3.7.2.ebuild b/app-antivirus/clamav-unofficial-sigs/clamav-unofficial-sigs-3.7.2.ebuild
new file mode 100644
index 000000000000..bc1ff1bbcbaf
--- /dev/null
+++ b/app-antivirus/clamav-unofficial-sigs/clamav-unofficial-sigs-3.7.2.ebuild
@@ -0,0 +1,90 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+DESCRIPTION="Downloads and installs third-party clamav signatures"
+HOMEPAGE="http://sourceforge.net/projects/unofficial-sigs"
+SRC_URI="mirror://sourceforge/unofficial-sigs/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE=""
+
+# We need its user/group.
+DEPEND="app-antivirus/clamav"
+
+# The script relies on either net-misc/socat, or Perl's
+# IO::Socket::UNIX. We already depend on Perl, and Gentoo's Perl ships
+# with IO::Socket::UNIX, so we can leave out net-misc/socat here.
+RDEPEND="${DEPEND}
+ app-crypt/gnupg
+ dev-lang/perl
+ net-dns/bind-tools
+ net-misc/curl"
+
+src_prepare() {
+ # First, fix the paths contained in the configuration file. Eventually
+ # these should be moved under /run, but for now we keep them sync'ed
+ # with the default clamd.conf.
+ local pid_default="/var/run/clamd.pid"
+ local pid_gentoo="/var/run/clamav/clamd.pid"
+
+ # clamd listens on a local socket by default. The clamd_socket
+ # setting needs to be uncommented in the configuration file for it
+ # to take effect.
+ local socket_default="#clamd_socket=\"/var/run/clamd.socket\""
+ local socket_gentoo="clamd_socket=\"/var/run/clamav/clamd.sock\""
+
+ sed -i -e '$a\pkg_mgr="emerge"' \
+ -e "\$a\\pkg_rm=\"emerge -C ${PN}\"" \
+ -e "s~${socket_default}~${socket_gentoo}~" \
+ -e "s~${pid_default}~${pid_gentoo}~" \
+ "${PN}.conf" \
+ || die "failed to update paths in the ${PN}.conf file"
+
+ # Now, change the script's working directory to point to
+ # /var/lib/${PN}. We'll need to make this writable by the clamav
+ # user during src_install.
+ sed -i -e "s~/usr/unofficial-dbs~/var/lib/${PN}~" "${PN}.conf" \
+ || die "failed to update the work_dir variable in ${PN}.conf"
+
+ # Tell the script that it's been configured.
+ local cfged_default='user_configuration_complete="no"'
+ local cfged_gentoo='user_configuration_complete="yes"'
+ sed -i "s/${cfged_default}/${cfged_gentoo}/" "${PN}.conf" \
+ || die "failed to set user configuration completed in ${PN}.conf"
+}
+
+src_install() {
+ dosbin "${PN}.sh"
+
+ # We set the script's working directory to /var/lib/${PN} in
+ # src_compile, so make sure that the permissions are set correctly
+ # here. By default, it runs as clamav/clamav.
+ diropts -m 0755 -o clamav -g clamav
+ dodir "/var/lib/${PN}"
+
+ insinto /etc/logrotate.d
+ doins "${PN}-logrotate"
+
+ insinto /etc
+ doins "${PN}.conf"
+
+ doman "${PN}.8"
+ dodoc CHANGELOG INSTALL README
+}
+
+pkg_postinst() {
+ elog ''
+ elog "You will need to select databases in /etc/${PN}.conf."
+ elog "For details, please see the ${PN}(8) manual page."
+ elog ''
+ elog 'An up-to-date description of the available Sanesecurity'
+ elog 'databases is available at,'
+ elog ''
+ elog ' http://sanesecurity.com/usage/signatures/'
+ elog ''
+}
diff --git a/app-antivirus/clamav-unofficial-sigs/metadata.xml b/app-antivirus/clamav-unofficial-sigs/metadata.xml
new file mode 100644
index 000000000000..3c2da3db86b6
--- /dev/null
+++ b/app-antivirus/clamav-unofficial-sigs/metadata.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer>
+ <email>mjo@gentoo.org</email>
+ </maintainer>
+ <upstream>
+ <remote-id type="sourceforge">unofficial-sigs</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/app-antivirus/clamav/Manifest b/app-antivirus/clamav/Manifest
new file mode 100644
index 000000000000..3f4c8fa1a97f
--- /dev/null
+++ b/app-antivirus/clamav/Manifest
@@ -0,0 +1,3 @@
+DIST clamav-0.98.5.tar.gz 15146379 SHA256 9c2f37d5fa9033936468237f6f4b29289f30791caa84765ef510acb56c8daa4d SHA512 4fd3af9e8e828b426ac4aaa867b356df05eb84396b62ab02715630683371f5a9b7a417d495236952a5e112b700ec0304c3760351855d10edc9fa8c032a64c52c WHIRLPOOL d7d32199c9fed92a6a7dd827f7ddac9b6a9689f29d315a7f525d8cf9e96bcf37087b743cc0b181d7e76f6f47897ac93f587de9f9ed336bd7a7552a320608332a
+DIST clamav-0.98.6.tar.gz 15148292 SHA256 6591245d55445a2ddcc1700964c33b8bf62fe20c75bd9c7746f4fe0735502951 SHA512 420064e784c352c1398c531f7530dbe37ed1092de8015984b354a96f0e5fe0968b285cae6108659fcebfa91ffbe0742335b70cb8d7f49db7690d049ca2d52758 WHIRLPOOL 40ed590fb649aa40849526af95bf0f2bfb86b51a4cff0db5f79bafcd8954bd2aba37845ca6c57f290b044976567a5b4e54ce57082c11020342f2f3d1c094e192
+DIST clamav-0.98.7.tar.gz 15118851 SHA256 282417b707740de13cd8f18d4cbca9ddd181cf96b444db2cad98913a5153e272 SHA512 acf01961472c13ccb219420cc3fa3c3e6f8a733edef371dbc04ce5867900aa1535e956ec8ad50d31c8f872a0a1d79fcccac944cd86e29ecdfa4af18f7fd5afb9 WHIRLPOOL c9f2e6f52f07f68bdcccf55ca1aab0bf3deaa6963279459d64ecca076a9ed0ef53c25996b2b673e9746833822df24689a9fab0654064c5ee6ed372a86966fbb6
diff --git a/app-antivirus/clamav/clamav-0.98.5.ebuild b/app-antivirus/clamav/clamav-0.98.5.ebuild
new file mode 100644
index 000000000000..ae67580254bd
--- /dev/null
+++ b/app-antivirus/clamav/clamav-0.98.5.ebuild
@@ -0,0 +1,139 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit eutils flag-o-matic user systemd
+
+DESCRIPTION="Clam Anti-Virus Scanner"
+HOMEPAGE="http://www.clamav.net/"
+SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 ~arm hppa ia64 ppc ppc64 sparc x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~sparc-solaris ~x86-solaris"
+IUSE="bzip2 clamdtop iconv ipv6 milter metadata-analysis-api selinux static-libs uclibc"
+
+CDEPEND="bzip2? ( app-arch/bzip2 )
+ clamdtop? ( sys-libs/ncurses )
+ iconv? ( virtual/libiconv )
+ metadata-analysis-api? ( dev-libs/json-c )
+ milter? ( || ( mail-filter/libmilter mail-mta/sendmail ) )
+ dev-libs/libtommath
+ >=sys-libs/zlib-1.2.2
+ dev-libs/openssl
+ sys-devel/libtool"
+# openssl is now *required* see this link as to why
+# http://www.clamav.net/lang/en/2014/02/22/introducing-openssl-as-a-dependency-to-clamav/
+DEPEND="${CDEPEND}
+ virtual/pkgconfig"
+RDEPEND="${CDEPEND}
+ selinux? ( sec-policy/selinux-clamav )"
+
+DOCS=( AUTHORS BUGS ChangeLog FAQ INSTALL NEWS README UPGRADE )
+
+pkg_setup() {
+ enewgroup clamav
+ enewuser clamav -1 -1 /dev/null clamav
+}
+
+src_prepare() {
+ use ppc64 && append-flags -mminimal-toc
+ use uclibc && export ac_cv_type_error_t=yes
+}
+
+src_configure() {
+ econf \
+ --disable-experimental \
+ --disable-fanotify \
+ --enable-id-check \
+ --with-dbdir="${EPREFIX}"/var/lib/clamav \
+ --with-system-tommath \
+ --with-zlib="${EPREFIX}"/usr \
+ $(use_enable bzip2) \
+ $(use_enable clamdtop) \
+ $(use_enable ipv6) \
+ $(use_enable milter) \
+ $(use_enable static-libs static) \
+ $(use_with iconv) \
+ $(use_with metadata-analysis-api libjson /usr)
+}
+
+src_install() {
+ default
+
+ rm -rf "${ED}"/var/lib/clamav
+ newinitd "${FILESDIR}"/clamd.initd-r6 clamd
+ newconfd "${FILESDIR}"/clamd.conf-r1 clamd
+
+ systemd_dotmpfilesd "${FILESDIR}/tmpfiles.d/clamav.conf"
+ systemd_newunit "${FILESDIR}/clamd_at.service" "clamd@.service"
+ systemd_dounit "${FILESDIR}/clamd.service"
+ systemd_dounit "${FILESDIR}/freshclamd.service"
+
+ keepdir /var/lib/clamav
+ fowners clamav:clamav /var/lib/clamav
+ keepdir /var/log/clamav
+ fowners clamav:clamav /var/log/clamav
+
+ dodir /etc/logrotate.d
+ insinto /etc/logrotate.d
+ newins "${FILESDIR}"/clamav.logrotate clamav
+
+ # Modify /etc/{clamd,freshclam}.conf to be usable out of the box
+ sed -i -e "s:^\(Example\):\# \1:" \
+ -e "s:.*\(PidFile\) .*:\1 ${EPREFIX}/var/run/clamav/clamd.pid:" \
+ -e "s:.*\(LocalSocket\) .*:\1 ${EPREFIX}/var/run/clamav/clamd.sock:" \
+ -e "s:.*\(User\) .*:\1 clamav:" \
+ -e "s:^\#\(LogFile\) .*:\1 ${EPREFIX}/var/log/clamav/clamd.log:" \
+ -e "s:^\#\(LogTime\).*:\1 yes:" \
+ -e "s:^\#\(AllowSupplementaryGroups\).*:\1 yes:" \
+ "${ED}"/etc/clamd.conf.sample || die
+ sed -i -e "s:^\(Example\):\# \1:" \
+ -e "s:.*\(PidFile\) .*:\1 ${EPREFIX}/var/run/clamav/freshclam.pid:" \
+ -e "s:.*\(DatabaseOwner\) .*:\1 clamav:" \
+ -e "s:^\#\(UpdateLogFile\) .*:\1 ${EPREFIX}/var/log/clamav/freshclam.log:" \
+ -e "s:^\#\(NotifyClamd\).*:\1 ${EPREFIX}/etc/clamd.conf:" \
+ -e "s:^\#\(ScriptedUpdates\).*:\1 yes:" \
+ -e "s:^\#\(AllowSupplementaryGroups\).*:\1 yes:" \
+ "${ED}"/etc/freshclam.conf.sample || die
+
+ if use milter ; then
+ # MilterSocket one to include ' /' because there is a 2nd line for
+ # inet: which we want to leave
+ dodoc "${FILESDIR}"/clamav-milter.README.gentoo
+ sed -i -e "s:^\(Example\):\# \1:" \
+ -e "s:.*\(PidFile\) .*:\1 ${EPREFIX}/var/run/clamav/clamav-milter.pid:" \
+ -e "s+^\#\(ClamdSocket\) .*+\1 unix:${EPREFIX}/var/run/clamav/clamd.sock+" \
+ -e "s:.*\(User\) .*:\1 clamav:" \
+ -e "s+^\#\(MilterSocket\) /.*+\1 unix:${EPREFIX}/var/run/clamav/clamav-milter.sock+" \
+ -e "s:^\#\(AllowSupplementaryGroups\).*:\1 yes:" \
+ -e "s:^\#\(LogFile\) .*:\1 ${EPREFIX}/var/log/clamav/clamav-milter.log:" \
+ "${ED}"/etc/clamav-milter.conf.sample || die
+ cat >> "${ED}"/etc/conf.d/clamd <<-EOF
+ MILTER_NICELEVEL=19
+ START_MILTER=no
+ EOF
+
+ systemd_newunit "${FILESDIR}/clamav-milter.service-r1" clamav-milter.service
+ fi
+
+ for i in clamd freshclam clamav-milter
+ do
+ [[ -f "${D}"/etc/"${i}".conf.sample ]] && mv "${D}"/etc/"${i}".conf{.sample,}
+ done
+
+ prune_libtool_files --all
+}
+
+pkg_postinst() {
+ if use milter ; then
+ elog "For simple instructions how to setup the clamav-milter read the"
+ elog "clamav-milter.README.gentoo in /usr/share/doc/${PF}"
+ fi
+ if test -z $(find "${ROOT}"var/lib/clamav -maxdepth 1 -name 'main.c*' -print -quit) ; then
+ ewarn "You must run freshclam manually to populate the virus database files"
+ ewarn "before starting clamav for the first time.\n"
+ fi
+}
diff --git a/app-antivirus/clamav/clamav-0.98.6.ebuild b/app-antivirus/clamav/clamav-0.98.6.ebuild
new file mode 100644
index 000000000000..23b1903f9933
--- /dev/null
+++ b/app-antivirus/clamav/clamav-0.98.6.ebuild
@@ -0,0 +1,139 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit eutils flag-o-matic user systemd
+
+DESCRIPTION="Clam Anti-Virus Scanner"
+HOMEPAGE="http://www.clamav.net/"
+SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~sparc-solaris ~x86-solaris"
+IUSE="bzip2 clamdtop iconv ipv6 milter metadata-analysis-api selinux static-libs uclibc"
+
+CDEPEND="bzip2? ( app-arch/bzip2 )
+ clamdtop? ( sys-libs/ncurses )
+ iconv? ( virtual/libiconv )
+ metadata-analysis-api? ( dev-libs/json-c )
+ milter? ( || ( mail-filter/libmilter mail-mta/sendmail ) )
+ dev-libs/libtommath
+ >=sys-libs/zlib-1.2.2
+ dev-libs/openssl
+ sys-devel/libtool"
+# openssl is now *required* see this link as to why
+# http://www.clamav.net/lang/en/2014/02/22/introducing-openssl-as-a-dependency-to-clamav/
+DEPEND="${CDEPEND}
+ virtual/pkgconfig"
+RDEPEND="${CDEPEND}
+ selinux? ( sec-policy/selinux-clamav )"
+
+DOCS=( AUTHORS BUGS ChangeLog FAQ INSTALL NEWS README UPGRADE )
+
+pkg_setup() {
+ enewgroup clamav
+ enewuser clamav -1 -1 /dev/null clamav
+}
+
+src_prepare() {
+ use ppc64 && append-flags -mminimal-toc
+ use uclibc && export ac_cv_type_error_t=yes
+}
+
+src_configure() {
+ econf \
+ --disable-experimental \
+ --disable-fanotify \
+ --enable-id-check \
+ --with-dbdir="${EPREFIX}"/var/lib/clamav \
+ --with-system-tommath \
+ --with-zlib="${EPREFIX}"/usr \
+ $(use_enable bzip2) \
+ $(use_enable clamdtop) \
+ $(use_enable ipv6) \
+ $(use_enable milter) \
+ $(use_enable static-libs static) \
+ $(use_with iconv) \
+ $(use_with metadata-analysis-api libjson /usr)
+}
+
+src_install() {
+ default
+
+ rm -rf "${ED}"/var/lib/clamav
+ newinitd "${FILESDIR}"/clamd.initd-r6 clamd
+ newconfd "${FILESDIR}"/clamd.conf-r1 clamd
+
+ systemd_dotmpfilesd "${FILESDIR}/tmpfiles.d/clamav.conf"
+ systemd_newunit "${FILESDIR}/clamd_at.service" "clamd@.service"
+ systemd_dounit "${FILESDIR}/clamd.service"
+ systemd_dounit "${FILESDIR}/freshclamd.service"
+
+ keepdir /var/lib/clamav
+ fowners clamav:clamav /var/lib/clamav
+ keepdir /var/log/clamav
+ fowners clamav:clamav /var/log/clamav
+
+ dodir /etc/logrotate.d
+ insinto /etc/logrotate.d
+ newins "${FILESDIR}"/clamav.logrotate clamav
+
+ # Modify /etc/{clamd,freshclam}.conf to be usable out of the box
+ sed -i -e "s:^\(Example\):\# \1:" \
+ -e "s:.*\(PidFile\) .*:\1 ${EPREFIX}/var/run/clamav/clamd.pid:" \
+ -e "s:.*\(LocalSocket\) .*:\1 ${EPREFIX}/var/run/clamav/clamd.sock:" \
+ -e "s:.*\(User\) .*:\1 clamav:" \
+ -e "s:^\#\(LogFile\) .*:\1 ${EPREFIX}/var/log/clamav/clamd.log:" \
+ -e "s:^\#\(LogTime\).*:\1 yes:" \
+ -e "s:^\#\(AllowSupplementaryGroups\).*:\1 yes:" \
+ "${ED}"/etc/clamd.conf.sample || die
+ sed -i -e "s:^\(Example\):\# \1:" \
+ -e "s:.*\(PidFile\) .*:\1 ${EPREFIX}/var/run/clamav/freshclam.pid:" \
+ -e "s:.*\(DatabaseOwner\) .*:\1 clamav:" \
+ -e "s:^\#\(UpdateLogFile\) .*:\1 ${EPREFIX}/var/log/clamav/freshclam.log:" \
+ -e "s:^\#\(NotifyClamd\).*:\1 ${EPREFIX}/etc/clamd.conf:" \
+ -e "s:^\#\(ScriptedUpdates\).*:\1 yes:" \
+ -e "s:^\#\(AllowSupplementaryGroups\).*:\1 yes:" \
+ "${ED}"/etc/freshclam.conf.sample || die
+
+ if use milter ; then
+ # MilterSocket one to include ' /' because there is a 2nd line for
+ # inet: which we want to leave
+ dodoc "${FILESDIR}"/clamav-milter.README.gentoo
+ sed -i -e "s:^\(Example\):\# \1:" \
+ -e "s:.*\(PidFile\) .*:\1 ${EPREFIX}/var/run/clamav/clamav-milter.pid:" \
+ -e "s+^\#\(ClamdSocket\) .*+\1 unix:${EPREFIX}/var/run/clamav/clamd.sock+" \
+ -e "s:.*\(User\) .*:\1 clamav:" \
+ -e "s+^\#\(MilterSocket\) /.*+\1 unix:${EPREFIX}/var/run/clamav/clamav-milter.sock+" \
+ -e "s:^\#\(AllowSupplementaryGroups\).*:\1 yes:" \
+ -e "s:^\#\(LogFile\) .*:\1 ${EPREFIX}/var/log/clamav/clamav-milter.log:" \
+ "${ED}"/etc/clamav-milter.conf.sample || die
+ cat >> "${ED}"/etc/conf.d/clamd <<-EOF
+ MILTER_NICELEVEL=19
+ START_MILTER=no
+ EOF
+
+ systemd_newunit "${FILESDIR}/clamav-milter.service-r1" clamav-milter.service
+ fi
+
+ for i in clamd freshclam clamav-milter
+ do
+ [[ -f "${D}"/etc/"${i}".conf.sample ]] && mv "${D}"/etc/"${i}".conf{.sample,}
+ done
+
+ prune_libtool_files --all
+}
+
+pkg_postinst() {
+ if use milter ; then
+ elog "For simple instructions how to setup the clamav-milter read the"
+ elog "clamav-milter.README.gentoo in /usr/share/doc/${PF}"
+ fi
+ if test -z $(find "${ROOT}"var/lib/clamav -maxdepth 1 -name 'main.c*' -print -quit) ; then
+ ewarn "You must run freshclam manually to populate the virus database files"
+ ewarn "before starting clamav for the first time.\n"
+ fi
+}
diff --git a/app-antivirus/clamav/clamav-0.98.7.ebuild b/app-antivirus/clamav/clamav-0.98.7.ebuild
new file mode 100644
index 000000000000..86a3380ca98e
--- /dev/null
+++ b/app-antivirus/clamav/clamav-0.98.7.ebuild
@@ -0,0 +1,139 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit eutils flag-o-matic user systemd
+
+DESCRIPTION="Clam Anti-Virus Scanner"
+HOMEPAGE="http://www.clamav.net/"
+SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 ~arm ~hppa ia64 ppc ~ppc64 sparc x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~sparc-solaris ~x86-solaris"
+IUSE="bzip2 clamdtop iconv ipv6 milter metadata-analysis-api selinux static-libs uclibc"
+
+CDEPEND="bzip2? ( app-arch/bzip2 )
+ clamdtop? ( sys-libs/ncurses )
+ iconv? ( virtual/libiconv )
+ metadata-analysis-api? ( dev-libs/json-c )
+ milter? ( || ( mail-filter/libmilter mail-mta/sendmail ) )
+ dev-libs/libtommath
+ >=sys-libs/zlib-1.2.2
+ dev-libs/openssl:0
+ sys-devel/libtool"
+# openssl is now *required* see this link as to why
+# http://blog.clamav.net/2014/02/introducing-openssl-as-dependency-to.html
+DEPEND="${CDEPEND}
+ virtual/pkgconfig"
+RDEPEND="${CDEPEND}
+ selinux? ( sec-policy/selinux-clamav )"
+
+DOCS=( AUTHORS BUGS ChangeLog FAQ INSTALL NEWS README UPGRADE )
+
+pkg_setup() {
+ enewgroup clamav
+ enewuser clamav -1 -1 /dev/null clamav
+}
+
+src_prepare() {
+ use ppc64 && append-flags -mminimal-toc
+ use uclibc && export ac_cv_type_error_t=yes
+}
+
+src_configure() {
+ econf \
+ --disable-experimental \
+ --disable-fanotify \
+ --enable-id-check \
+ --with-dbdir="${EPREFIX}"/var/lib/clamav \
+ --with-system-tommath \
+ --with-zlib="${EPREFIX}"/usr \
+ $(use_enable bzip2) \
+ $(use_enable clamdtop) \
+ $(use_enable ipv6) \
+ $(use_enable milter) \
+ $(use_enable static-libs static) \
+ $(use_with iconv) \
+ $(use_with metadata-analysis-api libjson /usr)
+}
+
+src_install() {
+ default
+
+ rm -rf "${ED}"/var/lib/clamav
+ newinitd "${FILESDIR}"/clamd.initd-r6 clamd
+ newconfd "${FILESDIR}"/clamd.conf-r1 clamd
+
+ systemd_dotmpfilesd "${FILESDIR}/tmpfiles.d/clamav.conf"
+ systemd_newunit "${FILESDIR}/clamd_at.service" "clamd@.service"
+ systemd_dounit "${FILESDIR}/clamd.service"
+ systemd_dounit "${FILESDIR}/freshclamd.service"
+
+ keepdir /var/lib/clamav
+ fowners clamav:clamav /var/lib/clamav
+ keepdir /var/log/clamav
+ fowners clamav:clamav /var/log/clamav
+
+ dodir /etc/logrotate.d
+ insinto /etc/logrotate.d
+ newins "${FILESDIR}"/clamav.logrotate clamav
+
+ # Modify /etc/{clamd,freshclam}.conf to be usable out of the box
+ sed -i -e "s:^\(Example\):\# \1:" \
+ -e "s:.*\(PidFile\) .*:\1 ${EPREFIX}/var/run/clamav/clamd.pid:" \
+ -e "s:.*\(LocalSocket\) .*:\1 ${EPREFIX}/var/run/clamav/clamd.sock:" \
+ -e "s:.*\(User\) .*:\1 clamav:" \
+ -e "s:^\#\(LogFile\) .*:\1 ${EPREFIX}/var/log/clamav/clamd.log:" \
+ -e "s:^\#\(LogTime\).*:\1 yes:" \
+ -e "s:^\#\(AllowSupplementaryGroups\).*:\1 yes:" \
+ "${ED}"/etc/clamd.conf.sample || die
+ sed -i -e "s:^\(Example\):\# \1:" \
+ -e "s:.*\(PidFile\) .*:\1 ${EPREFIX}/var/run/clamav/freshclam.pid:" \
+ -e "s:.*\(DatabaseOwner\) .*:\1 clamav:" \
+ -e "s:^\#\(UpdateLogFile\) .*:\1 ${EPREFIX}/var/log/clamav/freshclam.log:" \
+ -e "s:^\#\(NotifyClamd\).*:\1 ${EPREFIX}/etc/clamd.conf:" \
+ -e "s:^\#\(ScriptedUpdates\).*:\1 yes:" \
+ -e "s:^\#\(AllowSupplementaryGroups\).*:\1 yes:" \
+ "${ED}"/etc/freshclam.conf.sample || die
+
+ if use milter ; then
+ # MilterSocket one to include ' /' because there is a 2nd line for
+ # inet: which we want to leave
+ dodoc "${FILESDIR}"/clamav-milter.README.gentoo
+ sed -i -e "s:^\(Example\):\# \1:" \
+ -e "s:.*\(PidFile\) .*:\1 ${EPREFIX}/var/run/clamav/clamav-milter.pid:" \
+ -e "s+^\#\(ClamdSocket\) .*+\1 unix:${EPREFIX}/var/run/clamav/clamd.sock+" \
+ -e "s:.*\(User\) .*:\1 clamav:" \
+ -e "s+^\#\(MilterSocket\) /.*+\1 unix:${EPREFIX}/var/run/clamav/clamav-milter.sock+" \
+ -e "s:^\#\(AllowSupplementaryGroups\).*:\1 yes:" \
+ -e "s:^\#\(LogFile\) .*:\1 ${EPREFIX}/var/log/clamav/clamav-milter.log:" \
+ "${ED}"/etc/clamav-milter.conf.sample || die
+ cat >> "${ED}"/etc/conf.d/clamd <<-EOF
+ MILTER_NICELEVEL=19
+ START_MILTER=no
+ EOF
+
+ systemd_newunit "${FILESDIR}/clamav-milter.service-r1" clamav-milter.service
+ fi
+
+ for i in clamd freshclam clamav-milter
+ do
+ [[ -f "${D}"/etc/"${i}".conf.sample ]] && mv "${D}"/etc/"${i}".conf{.sample,}
+ done
+
+ prune_libtool_files --all
+}
+
+pkg_postinst() {
+ if use milter ; then
+ elog "For simple instructions how to setup the clamav-milter read the"
+ elog "clamav-milter.README.gentoo in /usr/share/doc/${PF}"
+ fi
+ if test -z $(find "${ROOT}"var/lib/clamav -maxdepth 1 -name 'main.c*' -print -quit) ; then
+ ewarn "You must run freshclam manually to populate the virus database files"
+ ewarn "before starting clamav for the first time.\n"
+ fi
+}
diff --git a/app-antivirus/clamav/files/clamav-milter.README.gentoo b/app-antivirus/clamav/files/clamav-milter.README.gentoo
new file mode 100644
index 000000000000..17e9ba628ea5
--- /dev/null
+++ b/app-antivirus/clamav/files/clamav-milter.README.gentoo
@@ -0,0 +1,44 @@
+Nick Hadaway <raker@gentoo.org>
+Updated by Andrea Barisani <lcars@gentoo.org>
+18/05/2004
+
+Setting up clamav-milter on Gentoo Linux
+
+Step 1 - Configure clamd
+
+Check /etc/clamd.conf, default values should work out of the box but
+read and understand all the options especially if you are going to
+use it on production boxes.
+
+Step 2 - Tell the init script to start clamd as well as freshclam and the
+ milter itself.
+
+ nano -w /etc/conf.d/clamd
+
+ START_CLAMD=yes
+ START_FRESHCLAM=yes
+ START_MILTER=yes
+
+Step 3 - Edit sendmail.mc
+
+ Add these lines to sendmail.mc before any any other
+ INPUT_MAIL_FILTER lines and before MAILER(local)
+ NOTE: ANY INPUT_MAIL_FILTER definitions put before these lines
+ will be discarded due to the use of confINPUT_MAIL_FILTERS
+ Make this your first mail filter. :)
+
+ INPUT_MAIL_FILTER(`clmilter',`S=local:/var/run/clamav/clmilter.sock, F=, T=S:4m;R:4m')dnl
+ define(`confINPUT_MAIL_FILTERS', `clmilter')dnl
+
+Step 4 - Rebuild sendmail.cf
+
+ cd /etc/mail
+ m4 sendmail.mc > sendmail.cf
+
+Step 5 - Start clamad
+
+ /etc/init.d/clamd start
+
+Step 6 - Restart sendmail
+
+ /etc/init.d/sendmail restart
diff --git a/app-antivirus/clamav/files/clamav-milter.service b/app-antivirus/clamav/files/clamav-milter.service
new file mode 100644
index 000000000000..5a1a24faa27d
--- /dev/null
+++ b/app-antivirus/clamav/files/clamav-milter.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Milter module for the ClamAV scanner
+After=nss-lookup.target network.target
+Before=sendmail.service
+Before=postfix.service
+
+[Service]
+ExecStart=/usr/sbin/clamav-milter -c /etc/clamav-milter.conf --nofork=yes
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/app-antivirus/clamav/files/clamav-milter.service-r1 b/app-antivirus/clamav/files/clamav-milter.service-r1
new file mode 100644
index 000000000000..f0118d8346f5
--- /dev/null
+++ b/app-antivirus/clamav/files/clamav-milter.service-r1
@@ -0,0 +1,13 @@
+[Unit]
+Description=Milter module for the ClamAV scanner
+After=nss-lookup.target network.target
+Before=sendmail.service
+Before=postfix.service
+
+[Service]
+Type=forking
+PIDFile=/run/clamav/clamav-milter.pid
+ExecStart=/usr/sbin/clamav-milter -c /etc/clamav-milter.conf
+
+[Install]
+WantedBy=multi-user.target
diff --git a/app-antivirus/clamav/files/clamav.logrotate b/app-antivirus/clamav/files/clamav.logrotate
new file mode 100644
index 000000000000..7a811264653b
--- /dev/null
+++ b/app-antivirus/clamav/files/clamav.logrotate
@@ -0,0 +1,17 @@
+/var/log/clamav/clamd.log {
+ su clamav clamav
+ missingok
+ postrotate
+ /etc/init.d/clamd logfix
+ /bin/kill -HUP `cat /var/run/clamav/clamd.pid 2> /dev/null` 2>/dev/null || true
+ endscript
+}
+
+/var/log/clamav/freshclam.log {
+ su clamav clamav
+ missingok
+ postrotate
+ /etc/init.d/clamd logfix
+ /bin/kill -HUP `cat /var/run/clamav/freshclam.pid 2> /dev/null` 2>/dev/null || true
+ endscript
+}
diff --git a/app-antivirus/clamav/files/clamd.conf b/app-antivirus/clamav/files/clamd.conf
new file mode 100644
index 000000000000..ee055138074c
--- /dev/null
+++ b/app-antivirus/clamav/files/clamd.conf
@@ -0,0 +1,9 @@
+# Config file for /etc/init.d/clamd
+
+# NOTICE: Since clamav-0.85-r1, only START_CLAMD and START_FRESHCLAM settings
+# are used, other are silently ignored
+
+START_CLAMD=yes
+START_FRESHCLAM=yes
+CLAMD_NICELEVEL=3
+FRESHCLAM_NICELEVEL=19
diff --git a/app-antivirus/clamav/files/clamd.conf-r1 b/app-antivirus/clamav/files/clamd.conf-r1
new file mode 100644
index 000000000000..de95554eea7b
--- /dev/null
+++ b/app-antivirus/clamav/files/clamd.conf-r1
@@ -0,0 +1,7 @@
+# Config file for /etc/init.d/clamd
+
+START_CLAMD=yes
+START_FRESHCLAM=yes
+CLAMD_NICELEVEL=3
+FRESHCLAM_NICELEVEL=19
+IONICE_LEVEL=2
diff --git a/app-antivirus/clamav/files/clamd.initd-r3 b/app-antivirus/clamav/files/clamd.initd-r3
new file mode 100755
index 000000000000..df3079d45c58
--- /dev/null
+++ b/app-antivirus/clamav/files/clamd.initd-r3
@@ -0,0 +1,121 @@
+#!/sbin/runscript
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+daemon_clamd="/usr/sbin/clamd"
+daemon_freshclam="/usr/bin/freshclam"
+daemon_milter="/usr/sbin/clamav-milter"
+
+extra_commands="logfix"
+
+depend() {
+ use net
+ provide antivirus
+}
+
+get_config() {
+ clamconf | sed 's/["=]//g' | \
+ awk "{
+ if(\$0==\"Config file: $1.conf\") S=1
+ if(S==1&&\$0==\"\") {
+ print \"$3\"
+ exit
+ }
+ if(S==1&&\$1~\"^$2\$\") {
+ print \$2!=\"disabled\"?\$2:\"$3\"
+ exit
+ }
+ }"
+}
+
+start() {
+ local clamd_socket=$(get_config clamd LocalSocket /var/run/clamav/clamd.sock)
+ local clamd_user=$(get_config clamd User clamav)
+ local freshclam_user=$(get_config freshclam DatabaseOwner clamav)
+ logfix
+
+ if [ "${START_CLAMD}" = "yes" ]; then
+ checkpath --quiet --mode 755 \
+ --owner "${clamd_user}":"${clamd_user}" \
+ --directory `dirname ${clamd_socket}`
+ if [ -S "${clamd_socket}" ]; then
+ rm -f ${clamd_socket}
+ fi
+ ebegin "Starting clamd"
+ start-stop-daemon --start --quiet \
+ --nicelevel ${CLAMD_NICELEVEL:-0} \
+ --exec ${daemon_clamd}
+ eend $? "Failed to start clamd"
+ fi
+
+ if [ "${START_FRESHCLAM}" = "yes" ]; then
+ ebegin "Starting freshclam"
+ start-stop-daemon --start --quiet \
+ --nicelevel ${FRESHCLAM_NICELEVEL:-0} \
+ --exec ${daemon_freshclam} -- -d
+ retcode=$?
+ if [ ${retcode} = 1 ]; then
+ eend 0
+ einfo "Virus databases are already up to date."
+ else
+ eend ${retcode} "Failed to start freshclam"
+ fi
+ fi
+
+ if [ "${START_MILTER}" = "yes" ]; then
+ if [ -z "${MILTER_CONF_FILE}" ]; then
+ MILTER_CONF_FILE="/etc/clamav-milter.conf"
+ fi
+
+ ebegin "Starting clamav-milter"
+ start-stop-daemon --start --quiet \
+ --nicelevel ${MILTER_NICELEVEL:-0} \
+ --exec ${daemon_milter} -- -c ${MILTER_CONF_FILE}
+ eend $? "Failed to start clamav-milter"
+ fi
+}
+
+stop() {
+ if [ "${START_CLAMD}" = "yes" ]; then
+ ebegin "Stopping clamd"
+ start-stop-daemon --stop --quiet --name clamd
+ eend $? "Failed to stop clamd"
+ fi
+ if [ "${START_FRESHCLAM}" = "yes" ]; then
+ ebegin "Stopping freshclam"
+ start-stop-daemon --stop --quiet --name freshclam
+ eend $? "Failed to stop freshclam"
+ fi
+ if [ "${START_MILTER}" = "yes" ]; then
+ ebegin "Stopping clamav-milter"
+ start-stop-daemon --stop --quiet --name clamav-milter
+ eend $? "Failed to stop clamav-milter"
+ fi
+}
+
+logfix() {
+ if [ "${START_CLAMD}" = "yes" ]; then
+ # fix clamd log permissions
+ # (might be clobbered by logrotate or something)
+ local logfile=$(get_config clamd LogFile)
+ if [ -n "${logfile}" ]; then
+ checkpath --quiet \
+ --owner "${clamd_user}":"${clamd_user}" \
+ --mode 640 \
+ --file ${logfile}
+ fi
+ fi
+
+ if [ "${START_FRESHCLAM}" = "yes" ]; then
+ # fix freshclam log permissions
+ # (might be clobbered by logrotate or something)
+ local logfile=$(get_config freshclam UpdateLogFile)
+ if [ -n "${logfile}" ]; then
+ checkpath --quiet \
+ --owner "${freshclam_user}":"${freshclam_user}" \
+ --mode 640 \
+ --file ${logfile}
+ fi
+ fi
+}
diff --git a/app-antivirus/clamav/files/clamd.initd-r5 b/app-antivirus/clamav/files/clamd.initd-r5
new file mode 100755
index 000000000000..6b2d757038e6
--- /dev/null
+++ b/app-antivirus/clamav/files/clamd.initd-r5
@@ -0,0 +1,126 @@
+#!/sbin/runscript
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+daemon_clamd="/usr/sbin/clamd"
+daemon_freshclam="/usr/bin/freshclam"
+daemon_milter="/usr/sbin/clamav-milter"
+
+extra_commands="logfix"
+
+depend() {
+ use net
+ provide antivirus
+}
+
+get_config() {
+ clamconf | sed 's/["=]//g' | \
+ awk "{
+ if(\$0==\"Config file: $1.conf\") S=1
+ if(S==1&&\$0==\"\") {
+ print \"$3\"
+ exit
+ }
+ if(S==1&&\$1~\"^$2\$\") {
+ print \$2!=\"disabled\"?\$2:\"$3\"
+ exit
+ }
+ }"
+}
+
+start() {
+ # populate variables and fix log file permissions
+ logfix
+
+ if [ "${START_CLAMD}" = "yes" ]; then
+ checkpath --quiet --mode 755 \
+ --owner "${clamd_user}":"${clamd_user}" \
+ --directory `dirname ${clamd_socket}`
+ if [ -S "${clamd_socket}" ]; then
+ rm -f ${clamd_socket}
+ fi
+ ebegin "Starting clamd"
+ start-stop-daemon --start --quiet \
+ --nicelevel ${CLAMD_NICELEVEL:-0} \
+ --exec ${daemon_clamd}
+ eend $? "Failed to start clamd"
+ fi
+
+ if [ "${START_FRESHCLAM}" = "yes" ]; then
+ checkpath --quiet --mode 755 \
+ --owner "${clamd_user}":"${clamd_user}" \
+ --directory `dirname ${clamd_socket}`
+ ebegin "Starting freshclam"
+ start-stop-daemon --start --quiet \
+ --nicelevel ${FRESHCLAM_NICELEVEL:-0} \
+ --exec ${daemon_freshclam} -- -d
+ retcode=$?
+ if [ ${retcode} = 1 ]; then
+ eend 0
+ einfo "Virus databases are already up to date."
+ else
+ eend ${retcode} "Failed to start freshclam"
+ fi
+ fi
+
+ if [ "${START_MILTER}" = "yes" ]; then
+ if [ -z "${MILTER_CONF_FILE}" ]; then
+ MILTER_CONF_FILE="/etc/clamav-milter.conf"
+ fi
+
+ ebegin "Starting clamav-milter"
+ start-stop-daemon --start --quiet \
+ --nicelevel ${MILTER_NICELEVEL:-0} \
+ --exec ${daemon_milter} -- -c ${MILTER_CONF_FILE}
+ eend $? "Failed to start clamav-milter"
+ fi
+}
+
+stop() {
+ if [ "${START_CLAMD}" = "yes" ]; then
+ ebegin "Stopping clamd"
+ start-stop-daemon --stop --quiet --name clamd
+ eend $? "Failed to stop clamd"
+ fi
+ if [ "${START_FRESHCLAM}" = "yes" ]; then
+ ebegin "Stopping freshclam"
+ start-stop-daemon --stop --quiet --name freshclam
+ eend $? "Failed to stop freshclam"
+ fi
+ if [ "${START_MILTER}" = "yes" ]; then
+ ebegin "Stopping clamav-milter"
+ start-stop-daemon --stop --quiet --name clamav-milter
+ eend $? "Failed to stop clamav-milter"
+ fi
+}
+
+logfix() {
+ clamd_socket=$(get_config clamd LocalSocket /run/clamav/clamd.sock)
+ clamd_user=$(get_config clamd User clamav)
+ freshclam_user=$(get_config freshclam DatabaseOwner clamav)
+
+ if [ "${START_CLAMD}" = "yes" ]; then
+ # fix clamd log permissions
+ # (might be clobbered by logrotate or something)
+ local logfile=$(get_config clamd LogFile)
+ if [ -n "${logfile}" ]; then
+ checkpath --quiet \
+ --owner "${clamd_user}":"${clamd_user}" \
+ --mode 640 \
+ --file ${logfile}
+ fi
+ fi
+
+ if [ "${START_FRESHCLAM}" = "yes" ]; then
+ # fix freshclam log permissions
+ # (might be clobbered by logrotate or something)
+ local logfile=$(get_config freshclam UpdateLogFile)
+ if [ -n "${logfile}" ]; then
+ checkpath --quiet \
+ --owner "${freshclam_user}":"${freshclam_user}" \
+ --mode 640 \
+ --file ${logfile}
+ fi
+ fi
+}
diff --git a/app-antivirus/clamav/files/clamd.initd-r6 b/app-antivirus/clamav/files/clamd.initd-r6
new file mode 100755
index 000000000000..774e8adc9b11
--- /dev/null
+++ b/app-antivirus/clamav/files/clamd.initd-r6
@@ -0,0 +1,129 @@
+#!/sbin/runscript
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+daemon_clamd="/usr/sbin/clamd"
+daemon_freshclam="/usr/bin/freshclam"
+daemon_milter="/usr/sbin/clamav-milter"
+
+extra_commands="logfix"
+
+depend() {
+ use net
+ provide antivirus
+}
+
+get_config() {
+ clamconf | sed 's/["=]//g' | \
+ awk "{
+ if(\$0==\"Config file: $1.conf\") S=1
+ if(S==1&&\$0==\"\") {
+ print \"$3\"
+ exit
+ }
+ if(S==1&&\$1~\"^$2\$\") {
+ print \$2!=\"disabled\"?\$2:\"$3\"
+ exit
+ }
+ }"
+}
+
+start() {
+ # populate variables and fix log file permissions
+ logfix
+
+ if [ "${START_CLAMD}" = "yes" ]; then
+ checkpath --quiet --mode 755 \
+ --owner "${clamd_user}":"${clamd_user}" \
+ --directory `dirname ${clamd_socket}`
+ if [ -S "${clamd_socket}" ]; then
+ rm -f ${clamd_socket}
+ fi
+ ebegin "Starting clamd"
+ start-stop-daemon --start --quiet \
+ --nicelevel ${CLAMD_NICELEVEL:-0} \
+ --ionice ${IONICE_LEVEL:-0} \
+ --exec ${daemon_clamd}
+ eend $? "Failed to start clamd"
+ fi
+
+ if [ "${START_FRESHCLAM}" = "yes" ]; then
+ checkpath --quiet --mode 755 \
+ --owner "${clamd_user}":"${clamd_user}" \
+ --directory `dirname ${clamd_socket}`
+ ebegin "Starting freshclam"
+ start-stop-daemon --start --quiet \
+ --nicelevel ${FRESHCLAM_NICELEVEL:-0} \
+ --ionice ${IONICE_LEVEL:-0} \
+ --exec ${daemon_freshclam} -- -d
+ retcode=$?
+ if [ ${retcode} = 1 ]; then
+ eend 0
+ einfo "Virus databases are already up to date."
+ else
+ eend ${retcode} "Failed to start freshclam"
+ fi
+ fi
+
+ if [ "${START_MILTER}" = "yes" ]; then
+ if [ -z "${MILTER_CONF_FILE}" ]; then
+ MILTER_CONF_FILE="/etc/clamav-milter.conf"
+ fi
+
+ ebegin "Starting clamav-milter"
+ start-stop-daemon --start --quiet \
+ --nicelevel ${MILTER_NICELEVEL:-0} \
+ --ionice ${IONICE_LEVEL:-0} \
+ --exec ${daemon_milter} -- -c ${MILTER_CONF_FILE}
+ eend $? "Failed to start clamav-milter"
+ fi
+}
+
+stop() {
+ if [ "${START_CLAMD}" = "yes" ]; then
+ ebegin "Stopping clamd"
+ start-stop-daemon --stop --quiet --name clamd
+ eend $? "Failed to stop clamd"
+ fi
+ if [ "${START_FRESHCLAM}" = "yes" ]; then
+ ebegin "Stopping freshclam"
+ start-stop-daemon --stop --quiet --name freshclam
+ eend $? "Failed to stop freshclam"
+ fi
+ if [ "${START_MILTER}" = "yes" ]; then
+ ebegin "Stopping clamav-milter"
+ start-stop-daemon --stop --quiet --name clamav-milter
+ eend $? "Failed to stop clamav-milter"
+ fi
+}
+
+logfix() {
+ clamd_socket=$(get_config clamd LocalSocket /run/clamav/clamd.sock)
+ clamd_user=$(get_config clamd User clamav)
+ freshclam_user=$(get_config freshclam DatabaseOwner clamav)
+
+ if [ "${START_CLAMD}" = "yes" ]; then
+ # fix clamd log permissions
+ # (might be clobbered by logrotate or something)
+ local logfile=$(get_config clamd LogFile)
+ if [ -n "${logfile}" ]; then
+ checkpath --quiet \
+ --owner "${clamd_user}":"${clamd_user}" \
+ --mode 640 \
+ --file ${logfile}
+ fi
+ fi
+
+ if [ "${START_FRESHCLAM}" = "yes" ]; then
+ # fix freshclam log permissions
+ # (might be clobbered by logrotate or something)
+ local logfile=$(get_config freshclam UpdateLogFile)
+ if [ -n "${logfile}" ]; then
+ checkpath --quiet \
+ --owner "${freshclam_user}":"${freshclam_user}" \
+ --mode 640 \
+ --file ${logfile}
+ fi
+ fi
+}
diff --git a/app-antivirus/clamav/files/clamd.service b/app-antivirus/clamav/files/clamd.service
new file mode 100644
index 000000000000..efdab4314a22
--- /dev/null
+++ b/app-antivirus/clamav/files/clamd.service
@@ -0,0 +1,7 @@
+.include /usr/lib/systemd/system/clamd@.service
+
+[Unit]
+Description=Generic ClamAV scanner daemon
+
+[Install]
+WantedBy=multi-user.target
diff --git a/app-antivirus/clamav/files/clamd_at.service b/app-antivirus/clamav/files/clamd_at.service
new file mode 100644
index 000000000000..c5ad8dfa6899
--- /dev/null
+++ b/app-antivirus/clamav/files/clamd_at.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=clamd scanner (%i) daemon
+After=nss-lookup.target network.target
+
+[Service]
+Type=forking
+ExecStart=/usr/sbin/clamd -c /etc/clamd%i.conf
+Restart=on-failure
+PrivateTmp=true
diff --git a/app-antivirus/clamav/files/freshclamd.service b/app-antivirus/clamav/files/freshclamd.service
new file mode 100644
index 000000000000..a0a72c2e60eb
--- /dev/null
+++ b/app-antivirus/clamav/files/freshclamd.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=clamav updater
+
+[Service]
+Type=forking
+PIDFile=/run/clamav/freshclam.pid
+ExecStart=/usr/bin/freshclam -d -p /run/clamav/freshclam.pid
+
+[Install]
+WantedBy=multi-user.target
diff --git a/app-antivirus/clamav/files/tmpfiles.d/clamav.conf b/app-antivirus/clamav/files/tmpfiles.d/clamav.conf
new file mode 100644
index 000000000000..1672df60eab5
--- /dev/null
+++ b/app-antivirus/clamav/files/tmpfiles.d/clamav.conf
@@ -0,0 +1 @@
+d /run/clamav 0710 clamav clamav
diff --git a/app-antivirus/clamav/metadata.xml b/app-antivirus/clamav/metadata.xml
new file mode 100644
index 000000000000..7d2b0e47b1e8
--- /dev/null
+++ b/app-antivirus/clamav/metadata.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>net-mail</herd>
+ <herd>antivirus</herd>
+ <use>
+ <flag name="clamdtop">A Top like tool which shows what clamd is currently scanning amongst other things</flag>
+ <flag name="metadata-analysis-api">Enables collection of file property metadata using ClamAV API for analysis by ClamAV bytecode programs.</flag>
+ </use>
+ <upstream>
+ <remote-id type="sourceforge">clamav</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/app-antivirus/metadata.xml b/app-antivirus/metadata.xml
new file mode 100644
index 000000000000..7c17b14e55cf
--- /dev/null
+++ b/app-antivirus/metadata.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE catmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<catmetadata>
+ <longdescription lang="en">
+ The app-antivirus category contains antivirus software.
+ </longdescription>
+ <longdescription lang="es">
+ La categoría app-antivirus contiene software anti-virus.
+ </longdescription>
+ <longdescription lang="de">
+ Die Kategorie app-antivirus enthält Antiviren-Software.
+ </longdescription>
+ <longdescription lang="ja">
+ app-antivirusカテゴリにはアンチウィルスソフトが含まれます。
+ </longdescription>
+ <longdescription lang="nl">
+ De categorie app-antivirus bevat anti-virus applicaties.
+ </longdescription>
+ <longdescription lang="sk">
+ Kategória app-antivirus obsahuje antivírusové programy.
+ </longdescription>
+ <longdescription lang="vi">
+ Nhóm app-antivirus chứa các ứng dụng chống/diệt virus.
+ </longdescription>
+ <longdescription lang="it">
+ La categoria app-antivirus contiene software anti-virus.
+ </longdescription>
+ <longdescription lang="pt">
+ A categoria app-antivirus contém software anti-vírus.
+ </longdescription>
+ <longdescription lang="pl">
+ Kategoria app-antivirus zawiera oprogramowanie antywirusowe.
+ </longdescription>
+</catmetadata>
+