From a57654340b90fcb0004be856e63943244415e64d Mon Sep 17 00:00:00 2001
From: Michael Orlitzky <mjo@gentoo.org>
Date: Tue, 9 Feb 2021 14:45:38 -0500
Subject: app-antivirus/clamav: new upstream version 0.103.1.

Package-Manager: Portage-3.0.13, Repoman-3.0.2
Signed-off-by: Michael Orlitzky <mjo@gentoo.org>
---
 app-antivirus/clamav/Manifest                      |   2 +-
 app-antivirus/clamav/clamav-0.103.0-r2.ebuild      | 236 ----------
 app-antivirus/clamav/clamav-0.103.1.ebuild         | 235 ++++++++++
 .../clamav-0.103.0-freshclam-db-test-fix.patch     |  27 --
 .../files/clamav-0.103.0-upstream-openrc.patch     | 439 -------------------
 .../files/clamav-0.103.1-upstream-openrc.patch     | 474 +++++++++++++++++++++
 6 files changed, 710 insertions(+), 703 deletions(-)
 delete mode 100644 app-antivirus/clamav/clamav-0.103.0-r2.ebuild
 create mode 100644 app-antivirus/clamav/clamav-0.103.1.ebuild
 delete mode 100644 app-antivirus/clamav/files/clamav-0.103.0-freshclam-db-test-fix.patch
 delete mode 100644 app-antivirus/clamav/files/clamav-0.103.0-upstream-openrc.patch
 create mode 100644 app-antivirus/clamav/files/clamav-0.103.1-upstream-openrc.patch

(limited to 'app-antivirus/clamav')

diff --git a/app-antivirus/clamav/Manifest b/app-antivirus/clamav/Manifest
index 67f7c7901093..2fad2fc449e3 100644
--- a/app-antivirus/clamav/Manifest
+++ b/app-antivirus/clamav/Manifest
@@ -1,2 +1,2 @@
 DIST clamav-0.102.4.tar.gz 13234444 BLAKE2B 7109da3e2281472032777b8a9d14ca6ff345aead33e5aaf0b9d1ff4721459926062f789dd1f7e8637155e4b9f3bce9f78127bf450f32baf3f1006b8083d3431a SHA512 29893deb8d2d913dff72331875d3dc3a10356bfb254ddfe1c1933b3ea4f8b76c96a1b840f95e72be36cbc0e00b9ec35e395225ef264761f53e709bb1026a4f09
-DIST clamav-0.103.0.tar.gz 13357078 BLAKE2B 6c4b05043f560a56f967642094ba4a9f9bd52268994ac43a99446650a78dafe0ec851b9ebcfe95f3e216fd7942e4756f2e20bda67ca9187e55523fbba9ca56d8 SHA512 e0712ed3c068dc8dab1d31b7cbc19cd69c62875fdcf314abb28e6f42660daf162a3aae69e0a008919e7b809675b68d35f79d3cb98379442bcbc6f5c8ee4313bf
+DIST clamav-0.103.1.tar.gz 13369791 BLAKE2B 974716a17e67240ef606b074584a1ac344f1d5915347aaa02b388570ea543981433c482423b99f5d07054bdf4dce8a0d043afdd52b42d49ace468f3d801c3353 SHA512 f13e9542898ef42c0db6f7826bcb220b9cb57de2a88bfedc6c991b76ff06c59290522d31119132eaa2093da58c5069d63103f6260e271497bda2b472c3cd6ffb
diff --git a/app-antivirus/clamav/clamav-0.103.0-r2.ebuild b/app-antivirus/clamav/clamav-0.103.0-r2.ebuild
deleted file mode 100644
index 1ebe1bd96d9f..000000000000
--- a/app-antivirus/clamav/clamav-0.103.0-r2.ebuild
+++ /dev/null
@@ -1,236 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-inherit autotools flag-o-matic systemd tmpfiles
-
-DESCRIPTION="Clam Anti-Virus Scanner"
-HOMEPAGE="https://www.clamav.net/"
-SRC_URI="https://www.clamav.net/downloads/production/${P}.tar.gz"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~sparc-solaris ~x86-solaris"
-IUSE="bzip2 doc clamonacc clamdtop clamsubmit iconv ipv6 libclamav-only libressl milter metadata-analysis-api selinux systemd test uclibc xml"
-
-REQUIRED_USE="libclamav-only? ( !clamonacc !clamdtop !clamsubmit !milter !metadata-analysis-api )"
-
-RESTRICT="!test? ( test )"
-
-# Require acct-{user,group}/clamav at build time so that we can set
-# the permissions on /var/lib/clamav in src_install rather than in
-# pkg_postinst; calling "chown" on the live filesystem scares me.
-CDEPEND="acct-group/clamav
-	acct-user/clamav
-	dev-libs/libltdl
-	dev-libs/libmspack
-	|| ( dev-libs/libpcre2 >dev-libs/libpcre-6 )
-	dev-libs/tomsfastmath
-	>=sys-libs/zlib-1.2.2:=
-	bzip2? ( app-arch/bzip2 )
-	clamdtop? ( sys-libs/ncurses:0 )
-	clamsubmit? ( net-misc/curl dev-libs/json-c:= )
-	elibc_musl? ( sys-libs/fts-standalone )
-	iconv? ( virtual/libiconv )
-	!libclamav-only? ( net-misc/curl )
-	!libressl? ( dev-libs/openssl:0= )
-	libressl? ( dev-libs/libressl:0= )
-	milter? ( || ( mail-filter/libmilter mail-mta/sendmail ) )
-	xml? ( dev-libs/libxml2 )"
-
-# We need at least autoconf-2.69-r5 because that's the first (patched)
-# version of it in Gentoo that supports ./configure --runstatedir.
-BDEPEND=">=sys-devel/autoconf-2.69-r5
-	virtual/pkgconfig"
-
-DEPEND="${CDEPEND}
-	metadata-analysis-api? ( dev-libs/json-c:* )
-	test? ( dev-libs/check )"
-RDEPEND="${CDEPEND}
-	selinux? ( sec-policy/selinux-clamav )"
-
-PATCHES=(
-	"${FILESDIR}/${PN}-0.102.1-libxml2_pkgconfig.patch" #661328
-	"${FILESDIR}/${PN}-0.102.2-fix-curl-detection.patch" #709616
-	"${FILESDIR}/${PN}-0.103.0-system-tomsfastmath.patch" # 649394
-	"${FILESDIR}/${PN}-0.103.0-upstream-openrc.patch"
-	"${FILESDIR}/${PN}-0.103.0-freshclam-db-test-fix.patch"
-)
-
-src_prepare() {
-	default
-
-	# Be extra sure that we're using the system copy of tomsfastmath
-	einfo "removing bundled copy of dev-libs/tomsfastmath"
-	rm -r libclamav/tomsfastmath || \
-		die "failed to remove bundled tomsfastmath"
-
-	AT_NO_RECURSIVE="yes" eautoreconf
-}
-
-src_configure() {
-	use elibc_musl && append-ldflags -lfts
-	use ppc64 && append-flags -mminimal-toc
-	use uclibc && export ac_cv_type_error_t=yes
-
-	# according to configure help it should be
-	# $(use_enable xml)
-	# but that does not work
-	# do not add this, since --disable-xml seems to override
-	# --without-xml
-	JSONUSE="--without-libjson"
-
-	if use clamsubmit || use metadata-analysis-api; then
-		# either of those 2 requires libjson.
-		# clamsubmit will be built as soon as libjson and curl are found
-		# but we only install the binary if requested
-		JSONUSE="--with-libjson=${EPREFIX}/usr"
-	fi
-
-	local myeconfargs=(
-		$(use_enable bzip2)
-		$(use_enable clamonacc)
-		$(use_enable clamdtop)
-		$(use_enable ipv6)
-		$(use_enable milter)
-		$(use_enable test check)
-		$(use_with xml)
-		$(use_with iconv)
-		${JSONUSE}
-		$(use_enable libclamav-only)
-		$(use_with !libclamav-only libcurl)
-		--with-system-libmspack
-		--cache-file="${S}"/config.cache
-		--disable-experimental
-		--disable-static
-		--disable-zlib-vcheck
-		--enable-id-check
-		--with-dbdir="${EPREFIX}"/var/lib/clamav
-		# Don't call --with-zlib=/usr (see bug #699296)
-		--with-zlib
-		--disable-llvm
-		--enable-openrc
-		--runstatedir=/run
-	)
-	econf "${myeconfargs[@]}"
-}
-
-src_install() {
-	default
-
-	rm -rf "${ED}"/var/lib/clamav || die
-
-	if ! use libclamav-only ; then
-		if use systemd; then
-			# The tmpfiles entry is behind USE=systemd because the
-			# upstream OpenRC service files should (and do) ensure that
-			# the directories they need exist and have the correct
-			# permissions without the help of opentmpfiles. There are
-			# years-old root exploits in opentmpfiles, the design is
-			# fundamentally flawed, and the maintainer is not up to
-			# the task of fixing it.
-			dotmpfiles "${FILESDIR}/tmpfiles.d/clamav.conf"
-			systemd_newunit "${FILESDIR}/clamd_at.service" "clamd@.service"
-			systemd_dounit "${FILESDIR}/clamd.service"
-			systemd_newunit "${FILESDIR}/freshclamd.service-r1" \
-							"freshclamd.service"
-		fi
-
-		insinto /etc/logrotate.d
-		newins "${FILESDIR}/clamd.logrotate" clamd
-		newins "${FILESDIR}/freshclam.logrotate" freshclam
-		use milter && \
-			newins "${FILESDIR}/clamav-milter.logrotate" clamav-milter
-
-		# Modify /etc/{clamd,freshclam}.conf to be usable out of the box
-		sed -i -e "s:^\(Example\):\# \1:" \
-			-e "s/^#\(PidFile .*\)/\1/" \
-			-e "s/^#\(LocalSocket .*\)/\1/" \
-			-e "s/^#\(User .*\)/\1/" \
-			-e "s:^\#\(LogFile\) .*:\1 ${EPREFIX}/var/log/clamav/clamd.log:" \
-			-e "s:^\#\(LogTime\).*:\1 yes:" \
-			-e "s/^#\(DatabaseDirectory .*\)/\1/" \
-			"${ED}"/etc/clamd.conf.sample || die
-
-		sed -i -e "s:^\(Example\):\# \1:" \
-			-e "s/^#\(PidFile .*\)/\1/" \
-			-e "s/^#\(DatabaseOwner .*\)/\1/" \
-			-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/^#\(DatabaseDirectory .*\)/\1/" \
-			"${ED}"/etc/freshclam.conf.sample || die
-
-		if use milter ; then
-			# Note: only keep the "unix" ClamdSocket and MilterSocket!
-			sed -i -e "s:^\(Example\):\# \1:" \
-				-e "s/^#\(PidFile .*\)/\1/" \
-				-e "s/^#\(ClamdSocket unix:.*\)/\1/" \
-				-e "s/^#\(User .*\)/\1/" \
-				-e "s/^#\(MilterSocket unix:.*\)/\1/" \
-				-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
-
-		local i
-		for i in clamd freshclam clamav-milter
-		do
-			if [[ -f "${ED}"/etc/"${i}".conf.sample ]]; then
-				mv "${ED}"/etc/"${i}".conf{.sample,} || die
-			fi
-		done
-
-		# These both need to be writable by the clamav user.
-		# TODO: use syslog by default; that's what it's for.
-		diropts -o clamav -g clamav
-		keepdir /var/lib/clamav
-		keepdir /var/log/clamav
-	fi
-
-	if use doc ; then
-		local HTML_DOCS=( docs/html/. )
-		einstalldocs
-
-		if ! use libclamav-only ; then
-			doman docs/man/*.[1-8]
-		fi
-	fi
-
-	find "${ED}" -name '*.la' -delete || die
-}
-
-src_test() {
-	if use libclamav-only ; then
-		ewarn "Test target not available when USE=libclamav-only is set, skipping tests ..."
-		return 0
-	fi
-
-	emake quick-check
-}
-
-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
-
-	local databases=( "${EROOT}"/var/lib/clamav/main.c[lv]d )
-	if [[ ! -f "${databases}" ]] ; then
-		ewarn "You must run freshclam manually to populate the virus database"
-		ewarn "before starting clamav for the first time."
-	fi
-
-	ewarn "This version of ClamAV provides separate OpenRC services"
-	ewarn "for clamd, freshclam, clamav-milter, and clamonacc. The"
-	ewarn "clamd service now starts only the clamd daemon itself. You"
-	ewarn "should add freshclam (and perhaps clamav-milter) to any"
-	ewarn "runlevels that previously contained clamd."
-}
diff --git a/app-antivirus/clamav/clamav-0.103.1.ebuild b/app-antivirus/clamav/clamav-0.103.1.ebuild
new file mode 100644
index 000000000000..6829a29906af
--- /dev/null
+++ b/app-antivirus/clamav/clamav-0.103.1.ebuild
@@ -0,0 +1,235 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools flag-o-matic systemd tmpfiles
+
+DESCRIPTION="Clam Anti-Virus Scanner"
+HOMEPAGE="https://www.clamav.net/"
+SRC_URI="https://www.clamav.net/downloads/production/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~sparc-solaris ~x86-solaris"
+IUSE="bzip2 doc clamonacc clamdtop clamsubmit iconv ipv6 libclamav-only libressl milter metadata-analysis-api selinux systemd test uclibc xml"
+
+REQUIRED_USE="libclamav-only? ( !clamonacc !clamdtop !clamsubmit !milter !metadata-analysis-api )"
+
+RESTRICT="!test? ( test )"
+
+# Require acct-{user,group}/clamav at build time so that we can set
+# the permissions on /var/lib/clamav in src_install rather than in
+# pkg_postinst; calling "chown" on the live filesystem scares me.
+CDEPEND="acct-group/clamav
+	acct-user/clamav
+	dev-libs/libltdl
+	dev-libs/libmspack
+	|| ( dev-libs/libpcre2 >dev-libs/libpcre-6 )
+	dev-libs/tomsfastmath
+	>=sys-libs/zlib-1.2.2:=
+	bzip2? ( app-arch/bzip2 )
+	clamdtop? ( sys-libs/ncurses:0 )
+	clamsubmit? ( net-misc/curl dev-libs/json-c:= )
+	elibc_musl? ( sys-libs/fts-standalone )
+	iconv? ( virtual/libiconv )
+	!libclamav-only? ( net-misc/curl )
+	!libressl? ( dev-libs/openssl:0= )
+	libressl? ( dev-libs/libressl:0= )
+	milter? ( || ( mail-filter/libmilter mail-mta/sendmail ) )
+	xml? ( dev-libs/libxml2 )"
+
+# We need at least autoconf-2.69-r5 because that's the first (patched)
+# version of it in Gentoo that supports ./configure --runstatedir.
+BDEPEND=">=sys-devel/autoconf-2.69-r5
+	virtual/pkgconfig"
+
+DEPEND="${CDEPEND}
+	metadata-analysis-api? ( dev-libs/json-c:* )
+	test? ( dev-libs/check )"
+RDEPEND="${CDEPEND}
+	selinux? ( sec-policy/selinux-clamav )"
+
+PATCHES=(
+	"${FILESDIR}/${PN}-0.102.1-libxml2_pkgconfig.patch" #661328
+	"${FILESDIR}/${PN}-0.102.2-fix-curl-detection.patch" #709616
+	"${FILESDIR}/${PN}-0.103.0-system-tomsfastmath.patch" # 649394
+	"${FILESDIR}/${PN}-0.103.1-upstream-openrc.patch"
+)
+
+src_prepare() {
+	default
+
+	# Be extra sure that we're using the system copy of tomsfastmath
+	einfo "removing bundled copy of dev-libs/tomsfastmath"
+	rm -r libclamav/tomsfastmath || \
+		die "failed to remove bundled tomsfastmath"
+
+	AT_NO_RECURSIVE="yes" eautoreconf
+}
+
+src_configure() {
+	use elibc_musl && append-ldflags -lfts
+	use ppc64 && append-flags -mminimal-toc
+	use uclibc && export ac_cv_type_error_t=yes
+
+	# according to configure help it should be
+	# $(use_enable xml)
+	# but that does not work
+	# do not add this, since --disable-xml seems to override
+	# --without-xml
+	JSONUSE="--without-libjson"
+
+	if use clamsubmit || use metadata-analysis-api; then
+		# either of those 2 requires libjson.
+		# clamsubmit will be built as soon as libjson and curl are found
+		# but we only install the binary if requested
+		JSONUSE="--with-libjson=${EPREFIX}/usr"
+	fi
+
+	local myeconfargs=(
+		$(use_enable bzip2)
+		$(use_enable clamonacc)
+		$(use_enable clamdtop)
+		$(use_enable ipv6)
+		$(use_enable milter)
+		$(use_enable test check)
+		$(use_with xml)
+		$(use_with iconv)
+		${JSONUSE}
+		$(use_enable libclamav-only)
+		$(use_with !libclamav-only libcurl)
+		--with-system-libmspack
+		--cache-file="${S}"/config.cache
+		--disable-experimental
+		--disable-static
+		--disable-zlib-vcheck
+		--enable-id-check
+		--with-dbdir="${EPREFIX}"/var/lib/clamav
+		# Don't call --with-zlib=/usr (see bug #699296)
+		--with-zlib
+		--disable-llvm
+		--enable-openrc
+		--runstatedir=/run
+	)
+	econf "${myeconfargs[@]}"
+}
+
+src_install() {
+	default
+
+	rm -rf "${ED}"/var/lib/clamav || die
+
+	if ! use libclamav-only ; then
+		if use systemd; then
+			# The tmpfiles entry is behind USE=systemd because the
+			# upstream OpenRC service files should (and do) ensure that
+			# the directories they need exist and have the correct
+			# permissions without the help of opentmpfiles. There are
+			# years-old root exploits in opentmpfiles, the design is
+			# fundamentally flawed, and the maintainer is not up to
+			# the task of fixing it.
+			dotmpfiles "${FILESDIR}/tmpfiles.d/clamav.conf"
+			systemd_newunit "${FILESDIR}/clamd_at.service" "clamd@.service"
+			systemd_dounit "${FILESDIR}/clamd.service"
+			systemd_newunit "${FILESDIR}/freshclamd.service-r1" \
+							"freshclamd.service"
+		fi
+
+		insinto /etc/logrotate.d
+		newins "${FILESDIR}/clamd.logrotate" clamd
+		newins "${FILESDIR}/freshclam.logrotate" freshclam
+		use milter && \
+			newins "${FILESDIR}/clamav-milter.logrotate" clamav-milter
+
+		# Modify /etc/{clamd,freshclam}.conf to be usable out of the box
+		sed -i -e "s:^\(Example\):\# \1:" \
+			-e "s/^#\(PidFile .*\)/\1/" \
+			-e "s/^#\(LocalSocket .*\)/\1/" \
+			-e "s/^#\(User .*\)/\1/" \
+			-e "s:^\#\(LogFile\) .*:\1 ${EPREFIX}/var/log/clamav/clamd.log:" \
+			-e "s:^\#\(LogTime\).*:\1 yes:" \
+			-e "s/^#\(DatabaseDirectory .*\)/\1/" \
+			"${ED}"/etc/clamd.conf.sample || die
+
+		sed -i -e "s:^\(Example\):\# \1:" \
+			-e "s/^#\(PidFile .*\)/\1/" \
+			-e "s/^#\(DatabaseOwner .*\)/\1/" \
+			-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/^#\(DatabaseDirectory .*\)/\1/" \
+			"${ED}"/etc/freshclam.conf.sample || die
+
+		if use milter ; then
+			# Note: only keep the "unix" ClamdSocket and MilterSocket!
+			sed -i -e "s:^\(Example\):\# \1:" \
+				-e "s/^#\(PidFile .*\)/\1/" \
+				-e "s/^#\(ClamdSocket unix:.*\)/\1/" \
+				-e "s/^#\(User .*\)/\1/" \
+				-e "s/^#\(MilterSocket unix:.*\)/\1/" \
+				-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
+
+		local i
+		for i in clamd freshclam clamav-milter
+		do
+			if [[ -f "${ED}"/etc/"${i}".conf.sample ]]; then
+				mv "${ED}"/etc/"${i}".conf{.sample,} || die
+			fi
+		done
+
+		# These both need to be writable by the clamav user.
+		# TODO: use syslog by default; that's what it's for.
+		diropts -o clamav -g clamav
+		keepdir /var/lib/clamav
+		keepdir /var/log/clamav
+	fi
+
+	if use doc ; then
+		local HTML_DOCS=( docs/html/. )
+		einstalldocs
+
+		if ! use libclamav-only ; then
+			doman docs/man/*.[1-8]
+		fi
+	fi
+
+	find "${ED}" -name '*.la' -delete || die
+}
+
+src_test() {
+	if use libclamav-only ; then
+		ewarn "Test target not available when USE=libclamav-only is set, skipping tests ..."
+		return 0
+	fi
+
+	emake quick-check
+}
+
+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
+
+	local databases=( "${EROOT}"/var/lib/clamav/main.c[lv]d )
+	if [[ ! -f "${databases}" ]] ; then
+		ewarn "You must run freshclam manually to populate the virus database"
+		ewarn "before starting clamav for the first time."
+	fi
+
+	ewarn "This version of ClamAV provides separate OpenRC services"
+	ewarn "for clamd, freshclam, clamav-milter, and clamonacc. The"
+	ewarn "clamd service now starts only the clamd daemon itself. You"
+	ewarn "should add freshclam (and perhaps clamav-milter) to any"
+	ewarn "runlevels that previously contained clamd."
+}
diff --git a/app-antivirus/clamav/files/clamav-0.103.0-freshclam-db-test-fix.patch b/app-antivirus/clamav/files/clamav-0.103.0-freshclam-db-test-fix.patch
deleted file mode 100644
index 25ae94b9fb85..000000000000
--- a/app-antivirus/clamav/files/clamav-0.103.0-freshclam-db-test-fix.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-diff --git a/freshclam/freshclam.c b/freshclam/freshclam.c
-index 8db3b8001..8cde8c9a8 100644
---- a/freshclam/freshclam.c
-+++ b/freshclam/freshclam.c
-@@ -280,6 +280,14 @@ fc_error_t download_complete_callback(const char *dbFilename, void *context)
-                 goto done;
-             }
-         } else {
-+            /*
-+             * Attempt to test database in a child process.
-+             */
-+
-+            /* We need to be able to wait for the child process ourselves.
-+             * We'll re-enable wait in the global handler when we're done. */
-+            g_sigchildWait = 0;
-+
-             switch (pid = fork()) {
-                 case -1: {
-                     /*
-@@ -391,6 +399,7 @@ done:
-         logg("!Database test FAILED.\n");
-     }
- 
-+    /* Re-enable the global handler's child process wait */
-     g_sigchildWait = 1;
- 
-     return status;
diff --git a/app-antivirus/clamav/files/clamav-0.103.0-upstream-openrc.patch b/app-antivirus/clamav/files/clamav-0.103.0-upstream-openrc.patch
deleted file mode 100644
index a7676f0ab82a..000000000000
--- a/app-antivirus/clamav/files/clamav-0.103.0-upstream-openrc.patch
+++ /dev/null
@@ -1,439 +0,0 @@
-diff --git a/Makefile.am b/Makefile.am
-index 12e7fcc28..a3c47e23a 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -52,6 +52,17 @@ nodist_include_HEADERS = clamav-types.h clamav-version.h
- distuninstallcheck_listfiles = find . -type f ! -name clamd.conf ! -name freshclam.conf ! -name daily.cvd ! -name main.cvd -print
- DISTCLEANFILES = target.h
- DISTCHECK_CONFIGURE_FLAGS=--enable-milter --disable-clamav --enable-all-jit-targets --enable-llvm=yes --with-system-llvm=no --with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir) CC="$(CC)" CXX="$(CXX)" YACC="$(YACC)" LEX="$(LEX)" AR="$(AR)" AS="$(AS)"
-+
-+
-+# This command allows us to replace bindir, libdir, etc.
-+# within our script and conf file. The example is taken
-+# from the autoconf documentation and can be found in the
-+# "Installation Directory Variables" section.
-+editgnudirs = sed -e 's|@BINDIR[@]|$(bindir)|g' \
-+                  -e 's|@SBINDIR[@]|$(sbindir)|g' \
-+                  -e 's|@RUNSTATEDIR[@]|$(runstatedir)|g'
-+export editgnudirs
-+
- lcov:
- 	($(MAKE); cd unit_tests; $(MAKE) lcov)
- quick-check:
-diff --git a/clamav-milter/Makefile.am b/clamav-milter/Makefile.am
-index 1ec4afff6..c75c2b4a3 100644
---- a/clamav-milter/Makefile.am
-+++ b/clamav-milter/Makefile.am
-@@ -35,6 +35,27 @@ clamav_milter_SOURCES = \
- man_MANS = $(top_builddir)/docs/man/clamav-milter.8
- AM_CFLAGS=@WERR_CFLAGS_MILTER@
- 
-+
-+if INSTALL_OPENRC_SERVICES
-+
-+openrcdir = $(sysconfdir)/init.d
-+
-+# The next rule allows us to replace @RUNSTATEDIR@ and friends within
-+# our OpenRC service scripts. This example is taken from the autoconf
-+# documentation in the "Installation Directory Variables" section.
-+openrc_SCRIPTS_src = openrc/clamav-milter.in.in
-+openrc_SCRIPTS_intermediate = openrc/clamav-milter.in
-+nodist_openrc_SCRIPTS = openrc/clamav-milter
-+DISTCLEANFILES = $(nodist_openrc_SCRIPTS) $(openrc_SCRIPTS_intermediate)
-+$(nodist_openrc_SCRIPTS): $(openrc_SCRIPTS_src) $(openrc_SCRIPTS_intermediate) Makefile
-+	rm -f $@ $@.tmp
-+	$(editgnudirs) $@.in > $@.tmp
-+	mv $@.tmp $@
-+
-+endif
-+EXTRA_DIST = $(openrc_SCRIPTS_src)
-+
-+
- endif
- 
- LIBS = $(top_builddir)/libclamav/libclamav.la $(top_builddir)/shared/libshared.la @CLAMAV_MILTER_LIBS@ @THREAD_LIBS@
-diff --git a/clamav-milter/openrc/clamav-milter.in.in b/clamav-milter/openrc/clamav-milter.in.in
-new file mode 100644
-index 000000000..71053564a
---- /dev/null
-+++ b/clamav-milter/openrc/clamav-milter.in.in
-@@ -0,0 +1,34 @@
-+#!/sbin/openrc-run
-+
-+# Note: the "Foreground" option in clamav-milter.conf MUST
-+# be set to "no".
-+command="@SBINDIR@/clamav-milter"
-+
-+# For now, must be manually synchronized with the PidFile
-+# variable in clamav-milter.conf.
-+#
-+# https://bugzilla.clamav.net/show_bug.cgi?id=12595
-+#
-+pidfile="@RUNSTATEDIR@/${RC_SVCNAME}.pid"
-+
-+depend() {
-+  # The milter can successfully launch without clamd, but it's not a
-+  # great user experience to have the milter start accepting requests
-+  # that it can't process. The "use" dependency below will start clamd
-+  # before clamav-milter, so long as clamd is also present this runlevel.
-+  use clamd
-+}
-+
-+start_pre() {
-+  # This exists to support the (disabled) default MilterSocket setting
-+  # within clamav-milter.conf. The "clamav" user and group agree with
-+  # the (disabled) default "User" and "MilterSocketGroup" settings.
-+  #
-+  # Creating this directory is harmless even when a local socket is
-+  # not used. In fact, the clamd service that we depend on should
-+  # create it as well, to hold its own local socket (if enabled).
-+  checkpath --directory \
-+           --mode 0755 \
-+           --owner clamav:clamav \
-+           "@RUNSTATEDIR@/clamav"
-+}
-diff --git a/clamd/Makefile.am b/clamd/Makefile.am
-index 12b872b1f..725bc2fc1 100644
---- a/clamd/Makefile.am
-+++ b/clamd/Makefile.am
-@@ -44,6 +44,25 @@ if INSTALL_SYSTEMD_UNITS
- systemdsystemunit_DATA = clamav-daemon.socket clamav-daemon.service
- endif
- 
-+if INSTALL_OPENRC_SERVICES
-+
-+openrcdir = $(sysconfdir)/init.d
-+
-+# The next rule allows us to replace @RUNSTATEDIR@ and friends within
-+# our OpenRC service scripts. This example is taken from the autoconf
-+# documentation in the "Installation Directory Variables" section.
-+openrc_SCRIPTS_src = openrc/clamd.in.in
-+openrc_SCRIPTS_intermediate = openrc/clamd.in
-+nodist_openrc_SCRIPTS = openrc/clamd
-+DISTCLEANFILES = $(nodist_openrc_SCRIPTS) $(openrc_SCRIPTS_intermediate)
-+$(nodist_openrc_SCRIPTS): $(openrc_SCRIPTS_src) $(openrc_SCRIPTS_intermediate) Makefile
-+	rm -f $@ $@.tmp
-+	$(editgnudirs) $@.in > $@.tmp
-+	mv $@.tmp $@
-+
-+endif
-+EXTRA_DIST = $(openrc_SCRIPTS_src)
-+
- LIBS = $(top_builddir)/libclamav/libclamav.la $(top_builddir)/shared/libshared.la @CLAMD_LIBS@ @THREAD_LIBS@
- AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav -I$(top_builddir)/libclamav -I$(top_srcdir)/libclamunrar_iface @SSL_CPPFLAGS@ @JSON_CPPFLAGS@ @PCRE_CPPFLAGS@
- 
-diff --git a/clamd/openrc/clamd.in.in b/clamd/openrc/clamd.in.in
-new file mode 100644
-index 000000000..5d38f9a84
---- /dev/null
-+++ b/clamd/openrc/clamd.in.in
-@@ -0,0 +1,33 @@
-+#!/sbin/openrc-run
-+
-+# Note: the "Foreground" option in clamd.conf must be set to "no"
-+command="@SBINDIR@/clamd"
-+extra_started_commands="reload"
-+
-+# For now, must be manually synchronized with the PidFile variable
-+# in clamd.conf.
-+#
-+# https://bugzilla.clamav.net/show_bug.cgi?id=12595
-+#
-+pidfile="@RUNSTATEDIR@/${RC_SVCNAME}.pid"
-+
-+start_pre() {
-+  # This exists to support the (disabled) default LocalSocket setting
-+  # within clamd.conf. The "clamav" user and group agree with the
-+  # (disabled) default "User" and "LocalSocketGroup" settings in
-+  # clamd.conf. And everything here agrees with the
-+  # clamav-daemon.socket systemd service.
-+  #
-+  # Creating this directory is harmless even when a local socket is
-+  # not used.
-+  checkpath --directory \
-+           --mode 0755 \
-+           --owner clamav:clamav \
-+           "@RUNSTATEDIR@/clamav"
-+}
-+
-+reload() {
-+  ebegin "Reloading ${RC_SVCNAME}"
-+  "@BINDIR@/clamdscan" --reload
-+  eend $?
-+}
-diff --git a/clamonacc/Makefile.am b/clamonacc/Makefile.am
-index 181e22056..864a7fc2a 100644
---- a/clamonacc/Makefile.am
-+++ b/clamonacc/Makefile.am
-@@ -56,6 +56,25 @@ if INSTALL_SYSTEMD_UNITS
- systemdsystemunit_DATA = clamav-clamonacc.service
- endif
- 
-+if INSTALL_OPENRC_SERVICES
-+
-+openrcdir = $(sysconfdir)/init.d
-+
-+# The next rules allow us to replace @RUNSTATEDIR@ and friends within
-+# our OpenRC service scripts. This example is taken from the autoconf
-+# documentation in the "Installation Directory Variables" section.
-+openrc_SCRIPTS_src = openrc/clamonacc.in.in
-+openrc_SCRIPTS_intermediate = openrc/clamonacc.in
-+nodist_openrc_SCRIPTS = openrc/clamonacc
-+DISTCLEANFILES = $(nodist_openrc_SCRIPTS) $(openrc_SCRIPTS_intermediate)
-+$(nodist_openrc_SCRIPTS): $(openrc_SCRIPTS_src) $(openrc_SCRIPTS_intermediate) Makefile
-+	rm -f $@ $@.tmp
-+	$(editgnudirs) $@.in > $@.tmp
-+	mv $@.tmp $@
-+
-+endif
-+EXTRA_DIST = $(openrc_SCRIPTS_src)
-+
- LIBS = $(top_builddir)/shared/libshared.la $(top_builddir)/libclamav/libclamav.la @CURL_LIBS@ @CLAMONACC_LIBS@ @THREAD_LIBS@
- AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/clamonacc -I$(top_srcdir)/shared -I$(top_srcdir)/clamd -I$(top_srcdir)/libclamav -I$(top_builddir)/libclamav -I$(top_srcdir)/libclamunrar_iface @CURL_CPPFLAGS@ @SSL_CPPFLAGS@ @CLAMONACC_CPPFLAGS@ @JSON_CPPFLAGS@ @PCRE_CPPFLAGS@
- 
-diff --git a/clamonacc/openrc/clamonacc.in.in b/clamonacc/openrc/clamonacc.in.in
-new file mode 100644
-index 000000000..844cd49dd
---- /dev/null
-+++ b/clamonacc/openrc/clamonacc.in.in
-@@ -0,0 +1,18 @@
-+#!/sbin/openrc-run
-+
-+command="@SBINDIR@/clamonacc"
-+pidfile="@RUNSTATEDIR@/${RC_SVCNAME}.pid"
-+
-+# clamonacc doesn't support a PID file at the moment, so we
-+# run it in the foreground and let OpenRC background it.
-+#
-+# https://bugzilla.clamav.net/show_bug.cgi?id=12595
-+#
-+command_args="--foreground"
-+command_background=true
-+
-+depend() {
-+  # Unlike the milter, the on-access scanner will simply fail to start
-+  # until clamd is available.
-+  need clamd
-+}
-diff --git a/configure.ac b/configure.ac
-index 7b2a777d4..8e0e810f8 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -79,6 +79,12 @@ if test "$enable_experimental" = "yes"; then
-   VERSION_SUFFIX="$VERSION_SUFFIX-exp"
- fi
- 
-+# Autoconf 2.70 will support this, and many distros patch it in,
-+# but Autoconf 2.70 hasn't actually been released yet (it's in beta).
-+AS_IF([test -z "${runstatedir}"], [runstatedir='${localstatedir}/run'])
-+AC_SUBST([runstatedir])
-+
-+
- build_configure_args=`echo "$ac_configure_args" | sed -e 's/[\"]//g'`
- AC_SUBST([BUILD_CONFIGURE_FLAGS], [$build_configure_args])
- 
-@@ -104,6 +110,7 @@ m4_include([m4/reorganization/libs/libz.m4])
- m4_include([m4/reorganization/libs/bzip.m4])
- m4_include([m4/reorganization/libs/unrar.m4])
- m4_include([m4/reorganization/libs/systemd.m4])
-+m4_include([m4/reorganization/libs/openrc.m4])
- m4_include([m4/reorganization/code_checks/ipv6.m4])
- m4_include([m4/reorganization/code_checks/dns.m4])
- m4_include([m4/reorganization/code_checks/fanotify.m4])
-@@ -192,7 +199,10 @@ AC_CONFIG_FILES([
-                  libclamav.pc
-                  platform.h
-                  clamav-types.h
--                 clamav-version.h])
-+                 clamav-version.h
-+                 etc/clamd.conf.sample.in
-+                 etc/clamav-milter.conf.sample.in
-+                 etc/freshclam.conf.sample.in])
- if test "x$enable_libclamav_only" != "xyes"; then
-     AC_CONFIG_FILES([
-                      clamscan/Makefile
-@@ -202,10 +212,14 @@ if test "x$enable_libclamav_only" != "xyes"; then
-                      clamd/Makefile
-                      clamd/clamav-daemon.service
-                      clamd/clamav-daemon.socket
-+                     clamd/openrc/clamd.in
-                      clamdscan/Makefile
-                      clamsubmit/Makefile
-+                     clamonacc/openrc/clamonacc.in
-                      clamav-milter/Makefile
-+                     clamav-milter/openrc/clamav-milter.in
-                      freshclam/clamav-freshclam.service
-+                     freshclam/openrc/freshclam.in
-                      freshclam/Makefile
-                      sigtool/Makefile
-                      clamconf/Makefile
-diff --git a/etc/Makefile.am b/etc/Makefile.am
-index 487c31429..bee68f1d0 100644
---- a/etc/Makefile.am
-+++ b/etc/Makefile.am
-@@ -18,11 +18,31 @@
- #  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- #  MA 02110-1301, USA.
- 
--EXTRA_DIST = clamd.conf.sample freshclam.conf.sample clamav-milter.conf.sample
-+EXTRA_DIST = clamd.conf.sample.in.in \
-+             freshclam.conf.sample.in.in \
-+             clamav-milter.conf.sample.in.in
- CFGINST = @CFGDIR@
- 
- sysconf_DATA = clamd.conf.sample freshclam.conf.sample
- 
-+# Custom variable to simplify the "edit" rule below.
-+sysconf_DATA_intermediate = clamd.conf.sample.in freshclam.conf.sample.in
-+
- if HAVE_MILTER
- sysconf_DATA += clamav-milter.conf.sample
-+sysconf_DATA_intermediate += clamav-milter.conf.sample.in
- endif
-+
-+# Otherwise these don't get cleaned up by "make distclean",
-+# even though they are auto-generated.
-+DISTCLEANFILES = $(sysconf_DATA) $(sysconf_DATA_intermediate)
-+
-+# This rule includes EVERY source/intermediate file as a dependency of
-+# EVERY output file, which is clearly wrong, but it may be the best we
-+# can do without duplication. At least it's the right kind of wrong,
-+# and rebuilds too often rather than not often enough.
-+$(sysconf_DATA): $(sysconf_DATA_intermediate) $(EXTRA_DIST) Makefile
-+	rm -f $@ $@.tmp
-+	$(editgnudirs) $@.in > $@.tmp
-+	mv $@.tmp $@
-+>>>>>>> ea2f2442b... etc: convert conf files to templates and make @VARIABLE@ substitutions.
-diff --git a/etc/clamav-milter.conf.sample b/etc/clamav-milter.conf.sample.in.in
-similarity index 98%
-rename from etc/clamav-milter.conf.sample
-rename to etc/clamav-milter.conf.sample.in.in
-index bf46b4fc5..c3c5d2000 100644
---- a/etc/clamav-milter.conf.sample
-+++ b/etc/clamav-milter.conf.sample.in.in
-@@ -17,7 +17,7 @@ Example
- # inet6:port@[hostname|ip-address] - to specify an ipv6 socket
- #
- # Default: no default
--#MilterSocket /tmp/clamav-milter.socket
-+#MilterSocket unix:@RUNSTATEDIR@/clamav/clamav-milter.socket
- #MilterSocket inet:7357
- 
- # Define the group ownership for the (unix) milter socket.
-@@ -64,7 +64,7 @@ Example
- # also owned by root to keep other users from tampering with it.
- #
- # Default: disabled
--#PidFile /var/run/clamav-milter.pid
-+#PidFile @RUNSTATEDIR@/clamav-milter.pid
- 
- # Optional path to the global temporary directory.
- # Default: system specific (usually /tmp or /var/tmp).
-@@ -91,6 +91,7 @@ Example
- # fashion.
- #
- # Default: no default
-+#ClamdSocket unix:@RUNSTATEDIR@/clamav/clamd.ctl
- #ClamdSocket tcp:scanner.mydomain:7357
- 
- 
-diff --git a/etc/clamd.conf.sample b/etc/clamd.conf.sample.in.in
-similarity index 99%
-rename from etc/clamd.conf.sample
-rename to etc/clamd.conf.sample.in.in
-index 828dd5ad9..0e0ea4b12 100644
---- a/etc/clamd.conf.sample
-+++ b/etc/clamd.conf.sample.in.in
-@@ -74,7 +74,7 @@ Example
- # It is recommended that the directory where this file is stored is
- # also owned by root to keep other users from tampering with it.
- # Default: disabled
--#PidFile /var/run/clamd.pid
-+#PidFile @RUNSTATEDIR@/clamd.pid
- 
- # Optional path to the global temporary directory.
- # Default: system specific (usually /tmp or /var/tmp).
-@@ -93,7 +93,7 @@ Example
- 
- # Path to a local socket file the daemon will listen on.
- # Default: disabled (must be specified by a user)
--#LocalSocket /tmp/clamd.socket
-+#LocalSocket @RUNSTATEDIR@/clamav/clamd.ctl
- 
- # Sets the group ownership on the unix socket.
- # Default: disabled (the primary group of the user running clamd)
-diff --git a/etc/freshclam.conf.sample b/etc/freshclam.conf.sample.in.in
-similarity index 99%
-rename from etc/freshclam.conf.sample
-rename to etc/freshclam.conf.sample.in.in
-index 2f7d14618..3af3a3485 100644
---- a/etc/freshclam.conf.sample
-+++ b/etc/freshclam.conf.sample.in.in
-@@ -51,7 +51,7 @@ Example
- # It is recommended that the directory where this file is stored is
- # also owned by root to keep other users from tampering with it.
- # Default: disabled
--#PidFile /var/run/freshclam.pid
-+#PidFile @RUNSTATEDIR@/freshclam.pid
- 
- # By default when started freshclam drops privileges and switches to the
- # "clamav" user. This directive allows you to change the database owner.
-diff --git a/freshclam/Makefile.am b/freshclam/Makefile.am
-index ab6ac8f1c..6b16b3d3e 100644
---- a/freshclam/Makefile.am
-+++ b/freshclam/Makefile.am
-@@ -32,6 +32,26 @@ if INSTALL_SYSTEMD_UNITS
- systemdsystemunit_DATA = clamav-freshclam.service
- endif
- 
-+if INSTALL_OPENRC_SERVICES
-+
-+openrcdir = $(sysconfdir)/init.d
-+
-+# The next rule allows us to replace @RUNSTATEDIR@ and friends within
-+# our OpenRC service scripts. This example is taken from the autoconf
-+# documentation in the "Installation Directory Variables" section.
-+openrc_SCRIPTS_src = openrc/freshclam.in.in
-+openrc_SCRIPTS_intermediate = openrc/freshclam.in
-+nodist_openrc_SCRIPTS = openrc/freshclam
-+DISTCLEANFILES = $(nodist_openrc_SCRIPTS) $(openrc_SCRIPTS_intermediate)
-+$(nodist_openrc_SCRIPTS): $(openrc_SCRIPTS_src) $(openrc_SCRIPTS_intermediate) Makefile
-+	rm -f $@ $@.tmp
-+	$(editgnudirs) $@.in > $@.tmp
-+	mv $@.tmp $@
-+
-+endif
-+EXTRA_DIST = $(openrc_SCRIPTS_src)
-+
-+
- AM_CFLAGS=@WERR_CFLAGS@
- DEFS = @DEFS@
- AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav -I$(top_builddir)/libclamav -I$(top_srcdir)/libclamunrar_iface -I$(top_srcdir)/libfreshclam @CURL_CPPFLAGS@ @SSL_CPPFLAGS@ @FRESHCLAM_CPPFLAGS@ @ZLIB_CFLAGS@ @JSON_CPPFLAGS@ @PCRE_CPPFLAGS@
-diff --git a/freshclam/openrc/freshclam.in.in b/freshclam/openrc/freshclam.in.in
-new file mode 100644
-index 000000000..9feb73747
---- /dev/null
-+++ b/freshclam/openrc/freshclam.in.in
-@@ -0,0 +1,8 @@
-+#!/sbin/openrc-run
-+
-+command="@BINDIR@/freshclam"
-+pidfile="@RUNSTATEDIR@/${RC_SVCNAME}.pid"
-+
-+# Ignore the value of "PidFile" set in freshclam.conf.
-+command_args="-p ${pidfile}"
-+command_args_background="--daemon"
-diff --git a/m4/reorganization/libs/openrc.m4 b/m4/reorganization/libs/openrc.m4
-new file mode 100644
-index 000000000..1a73d1589
---- /dev/null
-+++ b/m4/reorganization/libs/openrc.m4
-@@ -0,0 +1,8 @@
-+dnl Should we install our OpenRC service files?
-+AC_ARG_ENABLE([openrc],
-+              AS_HELP_STRING([--enable-openrc],
-+                             [Install OpenRC service files]),
-+              [],
-+              [enable_openrc=no])
-+AM_CONDITIONAL(INSTALL_OPENRC_SERVICES,
-+               [test "x$enable_openrc" = "xyes"])
diff --git a/app-antivirus/clamav/files/clamav-0.103.1-upstream-openrc.patch b/app-antivirus/clamav/files/clamav-0.103.1-upstream-openrc.patch
new file mode 100644
index 000000000000..a37d44fa934d
--- /dev/null
+++ b/app-antivirus/clamav/files/clamav-0.103.1-upstream-openrc.patch
@@ -0,0 +1,474 @@
+From 7d7ca4f425909368cd78cd587120703754bcd608 Mon Sep 17 00:00:00 2001
+From: Michael Orlitzky <michael@orlitzky.com>
+Date: Tue, 9 Feb 2021 14:24:09 -0500
+Subject: [PATCH 1/1] Add OpenRC service scripts integrated with the build
+ system.
+
+---
+ Makefile.am                                   | 11 ++++++
+ clamav-milter/Makefile.am                     | 21 ++++++++++++
+ clamav-milter/openrc/clamav-milter.in.in      | 34 +++++++++++++++++++
+ clamd/Makefile.am                             | 19 +++++++++++
+ clamd/openrc/clamd.in.in                      | 33 ++++++++++++++++++
+ clamonacc/Makefile.am                         | 19 +++++++++++
+ clamonacc/openrc/clamonacc.in.in              | 18 ++++++++++
+ configure.ac                                  | 16 ++++++++-
+ etc/Makefile.am                               | 22 +++++++++++-
+ ...sample => clamav-milter.conf.sample.in.in} |  5 +--
+ ...md.conf.sample => clamd.conf.sample.in.in} |  4 +--
+ ...onf.sample => freshclam.conf.sample.in.in} |  2 +-
+ freshclam/Makefile.am                         | 20 +++++++++++
+ freshclam/openrc/freshclam.in.in              |  8 +++++
+ m4/reorganization/libs/openrc.m4              |  8 +++++
+ 15 files changed, 233 insertions(+), 7 deletions(-)
+ create mode 100644 clamav-milter/openrc/clamav-milter.in.in
+ create mode 100644 clamd/openrc/clamd.in.in
+ create mode 100644 clamonacc/openrc/clamonacc.in.in
+ rename etc/{clamav-milter.conf.sample => clamav-milter.conf.sample.in.in} (98%)
+ rename etc/{clamd.conf.sample => clamd.conf.sample.in.in} (99%)
+ rename etc/{freshclam.conf.sample => freshclam.conf.sample.in.in} (99%)
+ create mode 100644 freshclam/openrc/freshclam.in.in
+ create mode 100644 m4/reorganization/libs/openrc.m4
+
+diff --git a/Makefile.am b/Makefile.am
+index 42a58e7..c4d82ad 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -52,6 +52,17 @@ nodist_include_HEADERS = clamav-types.h clamav-version.h
+ distuninstallcheck_listfiles = find . -type f ! -name clamd.conf ! -name freshclam.conf ! -name daily.cvd ! -name main.cvd -print
+ DISTCLEANFILES = target.h
+ DISTCHECK_CONFIGURE_FLAGS=--enable-milter --disable-clamav --enable-all-jit-targets --enable-llvm=yes --with-system-llvm=no --with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir) CC="$(CC)" CXX="$(CXX)" YACC="$(YACC)" LEX="$(LEX)" AR="$(AR)" AS="$(AS)"
++
++
++# This command allows us to replace bindir, libdir, etc.
++# within our script and conf file. The example is taken
++# from the autoconf documentation and can be found in the
++# "Installation Directory Variables" section.
++editgnudirs = sed -e 's|@BINDIR[@]|$(bindir)|g' \
++                  -e 's|@SBINDIR[@]|$(sbindir)|g' \
++                  -e 's|@RUNSTATEDIR[@]|$(runstatedir)|g'
++export editgnudirs
++
+ lcov:
+ 	($(MAKE); cd unit_tests; $(MAKE) lcov)
+ quick-check:
+diff --git a/clamav-milter/Makefile.am b/clamav-milter/Makefile.am
+index 38d9b94..46885a7 100644
+--- a/clamav-milter/Makefile.am
++++ b/clamav-milter/Makefile.am
+@@ -35,6 +35,27 @@ clamav_milter_SOURCES = \
+ man_MANS = $(top_builddir)/docs/man/clamav-milter.8
+ AM_CFLAGS=@WERR_CFLAGS_MILTER@
+ 
++
++if INSTALL_OPENRC_SERVICES
++
++openrcdir = $(sysconfdir)/init.d
++
++# The next rule allows us to replace @RUNSTATEDIR@ and friends within
++# our OpenRC service scripts. This example is taken from the autoconf
++# documentation in the "Installation Directory Variables" section.
++openrc_SCRIPTS_src = openrc/clamav-milter.in.in
++openrc_SCRIPTS_intermediate = openrc/clamav-milter.in
++nodist_openrc_SCRIPTS = openrc/clamav-milter
++DISTCLEANFILES = $(nodist_openrc_SCRIPTS) $(openrc_SCRIPTS_intermediate)
++$(nodist_openrc_SCRIPTS): $(openrc_SCRIPTS_src) $(openrc_SCRIPTS_intermediate) Makefile
++	rm -f $@ $@.tmp
++	$(editgnudirs) $@.in > $@.tmp
++	mv $@.tmp $@
++
++endif
++EXTRA_DIST = $(openrc_SCRIPTS_src)
++
++
+ endif
+ 
+ LIBS = $(top_builddir)/libclamav/libclamav.la $(top_builddir)/shared/libshared.la @CLAMAV_MILTER_LIBS@ @THREAD_LIBS@
+diff --git a/clamav-milter/openrc/clamav-milter.in.in b/clamav-milter/openrc/clamav-milter.in.in
+new file mode 100644
+index 0000000..7105356
+--- /dev/null
++++ b/clamav-milter/openrc/clamav-milter.in.in
+@@ -0,0 +1,34 @@
++#!/sbin/openrc-run
++
++# Note: the "Foreground" option in clamav-milter.conf MUST
++# be set to "no".
++command="@SBINDIR@/clamav-milter"
++
++# For now, must be manually synchronized with the PidFile
++# variable in clamav-milter.conf.
++#
++# https://bugzilla.clamav.net/show_bug.cgi?id=12595
++#
++pidfile="@RUNSTATEDIR@/${RC_SVCNAME}.pid"
++
++depend() {
++  # The milter can successfully launch without clamd, but it's not a
++  # great user experience to have the milter start accepting requests
++  # that it can't process. The "use" dependency below will start clamd
++  # before clamav-milter, so long as clamd is also present this runlevel.
++  use clamd
++}
++
++start_pre() {
++  # This exists to support the (disabled) default MilterSocket setting
++  # within clamav-milter.conf. The "clamav" user and group agree with
++  # the (disabled) default "User" and "MilterSocketGroup" settings.
++  #
++  # Creating this directory is harmless even when a local socket is
++  # not used. In fact, the clamd service that we depend on should
++  # create it as well, to hold its own local socket (if enabled).
++  checkpath --directory \
++           --mode 0755 \
++           --owner clamav:clamav \
++           "@RUNSTATEDIR@/clamav"
++}
+diff --git a/clamd/Makefile.am b/clamd/Makefile.am
+index c161586..b59d94c 100644
+--- a/clamd/Makefile.am
++++ b/clamd/Makefile.am
+@@ -44,6 +44,25 @@ if INSTALL_SYSTEMD_UNITS
+ systemdsystemunit_DATA = clamav-daemon.socket clamav-daemon.service
+ endif
+ 
++if INSTALL_OPENRC_SERVICES
++
++openrcdir = $(sysconfdir)/init.d
++
++# The next rule allows us to replace @RUNSTATEDIR@ and friends within
++# our OpenRC service scripts. This example is taken from the autoconf
++# documentation in the "Installation Directory Variables" section.
++openrc_SCRIPTS_src = openrc/clamd.in.in
++openrc_SCRIPTS_intermediate = openrc/clamd.in
++nodist_openrc_SCRIPTS = openrc/clamd
++DISTCLEANFILES = $(nodist_openrc_SCRIPTS) $(openrc_SCRIPTS_intermediate)
++$(nodist_openrc_SCRIPTS): $(openrc_SCRIPTS_src) $(openrc_SCRIPTS_intermediate) Makefile
++	rm -f $@ $@.tmp
++	$(editgnudirs) $@.in > $@.tmp
++	mv $@.tmp $@
++
++endif
++EXTRA_DIST = $(openrc_SCRIPTS_src)
++
+ LIBS = $(top_builddir)/libclamav/libclamav.la $(top_builddir)/shared/libshared.la @CLAMD_LIBS@ @THREAD_LIBS@
+ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav -I$(top_builddir)/libclamav -I$(top_srcdir)/libclamunrar_iface @SSL_CPPFLAGS@ @JSON_CPPFLAGS@ @PCRE_CPPFLAGS@
+ 
+diff --git a/clamd/openrc/clamd.in.in b/clamd/openrc/clamd.in.in
+new file mode 100644
+index 0000000..5d38f9a
+--- /dev/null
++++ b/clamd/openrc/clamd.in.in
+@@ -0,0 +1,33 @@
++#!/sbin/openrc-run
++
++# Note: the "Foreground" option in clamd.conf must be set to "no"
++command="@SBINDIR@/clamd"
++extra_started_commands="reload"
++
++# For now, must be manually synchronized with the PidFile variable
++# in clamd.conf.
++#
++# https://bugzilla.clamav.net/show_bug.cgi?id=12595
++#
++pidfile="@RUNSTATEDIR@/${RC_SVCNAME}.pid"
++
++start_pre() {
++  # This exists to support the (disabled) default LocalSocket setting
++  # within clamd.conf. The "clamav" user and group agree with the
++  # (disabled) default "User" and "LocalSocketGroup" settings in
++  # clamd.conf. And everything here agrees with the
++  # clamav-daemon.socket systemd service.
++  #
++  # Creating this directory is harmless even when a local socket is
++  # not used.
++  checkpath --directory \
++           --mode 0755 \
++           --owner clamav:clamav \
++           "@RUNSTATEDIR@/clamav"
++}
++
++reload() {
++  ebegin "Reloading ${RC_SVCNAME}"
++  "@BINDIR@/clamdscan" --reload
++  eend $?
++}
+diff --git a/clamonacc/Makefile.am b/clamonacc/Makefile.am
+index 4cb4886..39c2e5d 100644
+--- a/clamonacc/Makefile.am
++++ b/clamonacc/Makefile.am
+@@ -58,6 +58,25 @@ if INSTALL_SYSTEMD_UNITS
+ systemdsystemunit_DATA = clamav-clamonacc.service
+ endif
+ 
++if INSTALL_OPENRC_SERVICES
++
++openrcdir = $(sysconfdir)/init.d
++
++# The next rules allow us to replace @RUNSTATEDIR@ and friends within
++# our OpenRC service scripts. This example is taken from the autoconf
++# documentation in the "Installation Directory Variables" section.
++openrc_SCRIPTS_src = openrc/clamonacc.in.in
++openrc_SCRIPTS_intermediate = openrc/clamonacc.in
++nodist_openrc_SCRIPTS = openrc/clamonacc
++DISTCLEANFILES = $(nodist_openrc_SCRIPTS) $(openrc_SCRIPTS_intermediate)
++$(nodist_openrc_SCRIPTS): $(openrc_SCRIPTS_src) $(openrc_SCRIPTS_intermediate) Makefile
++	rm -f $@ $@.tmp
++	$(editgnudirs) $@.in > $@.tmp
++	mv $@.tmp $@
++
++endif
++EXTRA_DIST = $(openrc_SCRIPTS_src)
++
+ LIBS = $(top_builddir)/shared/libshared.la $(top_builddir)/libclamav/libclamav.la @CURL_LIBS@ @CLAMONACC_LIBS@ @THREAD_LIBS@
+ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/clamonacc -I$(top_srcdir)/shared -I$(top_srcdir)/clamd -I$(top_srcdir)/libclamav -I$(top_builddir)/libclamav -I$(top_srcdir)/libclamunrar_iface @CURL_CPPFLAGS@ @SSL_CPPFLAGS@ @CLAMONACC_CPPFLAGS@ @JSON_CPPFLAGS@ @PCRE_CPPFLAGS@
+ 
+diff --git a/clamonacc/openrc/clamonacc.in.in b/clamonacc/openrc/clamonacc.in.in
+new file mode 100644
+index 0000000..844cd49
+--- /dev/null
++++ b/clamonacc/openrc/clamonacc.in.in
+@@ -0,0 +1,18 @@
++#!/sbin/openrc-run
++
++command="@SBINDIR@/clamonacc"
++pidfile="@RUNSTATEDIR@/${RC_SVCNAME}.pid"
++
++# clamonacc doesn't support a PID file at the moment, so we
++# run it in the foreground and let OpenRC background it.
++#
++# https://bugzilla.clamav.net/show_bug.cgi?id=12595
++#
++command_args="--foreground"
++command_background=true
++
++depend() {
++  # Unlike the milter, the on-access scanner will simply fail to start
++  # until clamd is available.
++  need clamd
++}
+diff --git a/configure.ac b/configure.ac
+index 33e252e..c8cd60f 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -79,6 +79,12 @@ if test "$enable_experimental" = "yes"; then
+   VERSION_SUFFIX="$VERSION_SUFFIX-exp"
+ fi
+ 
++# Autoconf 2.70 will support this, and many distros patch it in,
++# but Autoconf 2.70 hasn't actually been released yet (it's in beta).
++AS_IF([test -z "${runstatedir}"], [runstatedir='${localstatedir}/run'])
++AC_SUBST([runstatedir])
++
++
+ build_configure_args=`echo "$ac_configure_args" | sed -e 's/[\"]//g'`
+ AC_SUBST([BUILD_CONFIGURE_FLAGS], [$build_configure_args])
+ 
+@@ -105,6 +111,7 @@ m4_include([m4/reorganization/libs/libz.m4])
+ m4_include([m4/reorganization/libs/bzip.m4])
+ m4_include([m4/reorganization/libs/unrar.m4])
+ m4_include([m4/reorganization/libs/systemd.m4])
++m4_include([m4/reorganization/libs/openrc.m4])
+ m4_include([m4/reorganization/code_checks/ipv6.m4])
+ m4_include([m4/reorganization/code_checks/dns.m4])
+ m4_include([m4/reorganization/code_checks/fanotify.m4])
+@@ -193,7 +200,10 @@ AC_CONFIG_FILES([
+                  libclamav.pc
+                  platform.h
+                  clamav-types.h
+-                 clamav-version.h])
++                 clamav-version.h
++                 etc/clamd.conf.sample.in
++                 etc/clamav-milter.conf.sample.in
++                 etc/freshclam.conf.sample.in])
+ if test "x$enable_libclamav_only" != "xyes"; then
+     if test "$have_curl" = "no"; then
+         AC_MSG_ERROR([libcurl not found. libcurl (e.g. libcurl-devel) is required in order to build freshclam and clamsubmit.])
+@@ -207,10 +217,14 @@ if test "x$enable_libclamav_only" != "xyes"; then
+                      clamd/Makefile
+                      clamd/clamav-daemon.service
+                      clamd/clamav-daemon.socket
++                     clamd/openrc/clamd.in
+                      clamdscan/Makefile
+                      clamsubmit/Makefile
++                     clamonacc/openrc/clamonacc.in
+                      clamav-milter/Makefile
++                     clamav-milter/openrc/clamav-milter.in
+                      freshclam/clamav-freshclam.service
++                     freshclam/openrc/freshclam.in
+                      freshclam/Makefile
+                      sigtool/Makefile
+                      clamconf/Makefile
+diff --git a/etc/Makefile.am b/etc/Makefile.am
+index c694856..213a978 100644
+--- a/etc/Makefile.am
++++ b/etc/Makefile.am
+@@ -18,11 +18,31 @@
+ #  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ #  MA 02110-1301, USA.
+ 
+-EXTRA_DIST = clamd.conf.sample freshclam.conf.sample clamav-milter.conf.sample
++EXTRA_DIST = clamd.conf.sample.in.in \
++             freshclam.conf.sample.in.in \
++             clamav-milter.conf.sample.in.in
+ CFGINST = @CFGDIR@
+ 
+ sysconf_DATA = clamd.conf.sample freshclam.conf.sample
+ 
++# Custom variable to simplify the "edit" rule below.
++sysconf_DATA_intermediate = clamd.conf.sample.in freshclam.conf.sample.in
++
+ if HAVE_MILTER
+ sysconf_DATA += clamav-milter.conf.sample
++sysconf_DATA_intermediate += clamav-milter.conf.sample.in
+ endif
++
++# Otherwise these don't get cleaned up by "make distclean",
++# even though they are auto-generated.
++DISTCLEANFILES = $(sysconf_DATA) $(sysconf_DATA_intermediate)
++
++# This rule includes EVERY source/intermediate file as a dependency of
++# EVERY output file, which is clearly wrong, but it may be the best we
++# can do without duplication. At least it's the right kind of wrong,
++# and rebuilds too often rather than not often enough.
++$(sysconf_DATA): $(sysconf_DATA_intermediate) $(EXTRA_DIST) Makefile
++	rm -f $@ $@.tmp
++	$(editgnudirs) $@.in > $@.tmp
++	mv $@.tmp $@
++
+diff --git a/etc/clamav-milter.conf.sample b/etc/clamav-milter.conf.sample.in.in
+similarity index 98%
+rename from etc/clamav-milter.conf.sample
+rename to etc/clamav-milter.conf.sample.in.in
+index bf46b4f..c3c5d20 100644
+--- a/etc/clamav-milter.conf.sample
++++ b/etc/clamav-milter.conf.sample.in.in
+@@ -17,7 +17,7 @@ Example
+ # inet6:port@[hostname|ip-address] - to specify an ipv6 socket
+ #
+ # Default: no default
+-#MilterSocket /tmp/clamav-milter.socket
++#MilterSocket unix:@RUNSTATEDIR@/clamav/clamav-milter.socket
+ #MilterSocket inet:7357
+ 
+ # Define the group ownership for the (unix) milter socket.
+@@ -64,7 +64,7 @@ Example
+ # also owned by root to keep other users from tampering with it.
+ #
+ # Default: disabled
+-#PidFile /var/run/clamav-milter.pid
++#PidFile @RUNSTATEDIR@/clamav-milter.pid
+ 
+ # Optional path to the global temporary directory.
+ # Default: system specific (usually /tmp or /var/tmp).
+@@ -91,6 +91,7 @@ Example
+ # fashion.
+ #
+ # Default: no default
++#ClamdSocket unix:@RUNSTATEDIR@/clamav/clamd.ctl
+ #ClamdSocket tcp:scanner.mydomain:7357
+ 
+ 
+diff --git a/etc/clamd.conf.sample b/etc/clamd.conf.sample.in.in
+similarity index 99%
+rename from etc/clamd.conf.sample
+rename to etc/clamd.conf.sample.in.in
+index a1ca9ec..82ef42c 100644
+--- a/etc/clamd.conf.sample
++++ b/etc/clamd.conf.sample.in.in
+@@ -74,7 +74,7 @@ Example
+ # It is recommended that the directory where this file is stored is
+ # also owned by root to keep other users from tampering with it.
+ # Default: disabled
+-#PidFile /var/run/clamd.pid
++#PidFile @RUNSTATEDIR@/clamd.pid
+ 
+ # Optional path to the global temporary directory.
+ # Default: system specific (usually /tmp or /var/tmp).
+@@ -93,7 +93,7 @@ Example
+ 
+ # Path to a local socket file the daemon will listen on.
+ # Default: disabled (must be specified by a user)
+-#LocalSocket /tmp/clamd.socket
++#LocalSocket @RUNSTATEDIR@/clamav/clamd.ctl
+ 
+ # Sets the group ownership on the unix socket.
+ # Default: disabled (the primary group of the user running clamd)
+diff --git a/etc/freshclam.conf.sample b/etc/freshclam.conf.sample.in.in
+similarity index 99%
+rename from etc/freshclam.conf.sample
+rename to etc/freshclam.conf.sample.in.in
+index 8f4dd49..5a5c42b 100644
+--- a/etc/freshclam.conf.sample
++++ b/etc/freshclam.conf.sample.in.in
+@@ -51,7 +51,7 @@ Example
+ # It is recommended that the directory where this file is stored is
+ # also owned by root to keep other users from tampering with it.
+ # Default: disabled
+-#PidFile /var/run/freshclam.pid
++#PidFile @RUNSTATEDIR@/freshclam.pid
+ 
+ # By default when started freshclam drops privileges and switches to the
+ # "clamav" user. This directive allows you to change the database owner.
+diff --git a/freshclam/Makefile.am b/freshclam/Makefile.am
+index 9e48119..46ef224 100644
+--- a/freshclam/Makefile.am
++++ b/freshclam/Makefile.am
+@@ -32,6 +32,26 @@ if INSTALL_SYSTEMD_UNITS
+ systemdsystemunit_DATA = clamav-freshclam.service
+ endif
+ 
++if INSTALL_OPENRC_SERVICES
++
++openrcdir = $(sysconfdir)/init.d
++
++# The next rule allows us to replace @RUNSTATEDIR@ and friends within
++# our OpenRC service scripts. This example is taken from the autoconf
++# documentation in the "Installation Directory Variables" section.
++openrc_SCRIPTS_src = openrc/freshclam.in.in
++openrc_SCRIPTS_intermediate = openrc/freshclam.in
++nodist_openrc_SCRIPTS = openrc/freshclam
++DISTCLEANFILES = $(nodist_openrc_SCRIPTS) $(openrc_SCRIPTS_intermediate)
++$(nodist_openrc_SCRIPTS): $(openrc_SCRIPTS_src) $(openrc_SCRIPTS_intermediate) Makefile
++	rm -f $@ $@.tmp
++	$(editgnudirs) $@.in > $@.tmp
++	mv $@.tmp $@
++
++endif
++EXTRA_DIST = $(openrc_SCRIPTS_src)
++
++
+ AM_CFLAGS=@WERR_CFLAGS@
+ DEFS = @DEFS@
+ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav -I$(top_builddir)/libclamav -I$(top_srcdir)/libclamunrar_iface -I$(top_srcdir)/libfreshclam @CURL_CPPFLAGS@ @SSL_CPPFLAGS@ @FRESHCLAM_CPPFLAGS@ @ZLIB_CFLAGS@ @JSON_CPPFLAGS@ @PCRE_CPPFLAGS@
+diff --git a/freshclam/openrc/freshclam.in.in b/freshclam/openrc/freshclam.in.in
+new file mode 100644
+index 0000000..9feb737
+--- /dev/null
++++ b/freshclam/openrc/freshclam.in.in
+@@ -0,0 +1,8 @@
++#!/sbin/openrc-run
++
++command="@BINDIR@/freshclam"
++pidfile="@RUNSTATEDIR@/${RC_SVCNAME}.pid"
++
++# Ignore the value of "PidFile" set in freshclam.conf.
++command_args="-p ${pidfile}"
++command_args_background="--daemon"
+diff --git a/m4/reorganization/libs/openrc.m4 b/m4/reorganization/libs/openrc.m4
+new file mode 100644
+index 0000000..1a73d15
+--- /dev/null
++++ b/m4/reorganization/libs/openrc.m4
+@@ -0,0 +1,8 @@
++dnl Should we install our OpenRC service files?
++AC_ARG_ENABLE([openrc],
++              AS_HELP_STRING([--enable-openrc],
++                             [Install OpenRC service files]),
++              [],
++              [enable_openrc=no])
++AM_CONDITIONAL(INSTALL_OPENRC_SERVICES,
++               [test "x$enable_openrc" = "xyes"])
+-- 
+2.26.2
+
-- 
cgit v1.2.3-65-gdbad