mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
app-antivirus/clamav: Make clamav work with >=zlib-1.2.9
..in addition, an automagic on dev-libs/check was fixed. Closes: https://bugs.gentoo.org/649516 Package-Manager: Portage-2.3.26, Repoman-2.3.7
This commit is contained in:
159
app-antivirus/clamav/clamav-0.99.4-r1.ebuild
Normal file
159
app-antivirus/clamav/clamav-0.99.4-r1.ebuild
Normal file
@@ -0,0 +1,159 @@
|
||||
# Copyright 1999-2018 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=6
|
||||
|
||||
inherit autotools eutils flag-o-matic user systemd
|
||||
|
||||
DESCRIPTION="Clam Anti-Virus Scanner"
|
||||
HOMEPAGE="http://www.clamav.net/"
|
||||
SRC_URI="https://www.clamav.net/downloads/production/${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 libressl milter metadata-analysis-api selinux static-libs test uclibc"
|
||||
|
||||
CDEPEND="bzip2? ( app-arch/bzip2 )
|
||||
clamdtop? ( sys-libs/ncurses:0 )
|
||||
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:=
|
||||
!libressl? ( dev-libs/openssl:0= )
|
||||
libressl? ( dev-libs/libressl:0= )
|
||||
sys-devel/libtool
|
||||
|| ( dev-libs/libpcre2 >dev-libs/libpcre-6 )
|
||||
!!<app-antivirus/clamav-0.99"
|
||||
# hard block clamav < 0.99 due to linking problems Bug #567680
|
||||
# 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
|
||||
test? ( dev-libs/check )"
|
||||
RDEPEND="${CDEPEND}
|
||||
selinux? ( sec-policy/selinux-clamav )"
|
||||
|
||||
DOCS=( AUTHORS BUGS ChangeLog FAQ INSTALL NEWS README UPGRADE )
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/${PN}-0.99.4-fix-newer-zlib.patch
|
||||
"${FILESDIR}/${P}-pcre2-compile-erroffset.patch"
|
||||
)
|
||||
|
||||
pkg_setup() {
|
||||
enewgroup clamav
|
||||
enewuser clamav -1 -1 /dev/null clamav
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
|
||||
eautoconf
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
use ppc64 && append-flags -mminimal-toc
|
||||
use uclibc && export ac_cv_type_error_t=yes
|
||||
|
||||
econf \
|
||||
$(use_enable bzip2) \
|
||||
$(use_enable clamdtop) \
|
||||
$(use_enable ipv6) \
|
||||
$(use_enable milter) \
|
||||
$(use_enable static-libs static) \
|
||||
$(use_enable test check) \
|
||||
$(use_with iconv) \
|
||||
$(use_with metadata-analysis-api libjson /usr) \
|
||||
--cache-file="${S}"/config.cache \
|
||||
--disable-experimental \
|
||||
--disable-gcc-vcheck \
|
||||
--disable-zlib-vcheck \
|
||||
--enable-id-check \
|
||||
--with-dbdir="${EPREFIX}"/var/lib/clamav \
|
||||
--with-system-tommath \
|
||||
--with-zlib="${EPREFIX}"/usr \
|
||||
--disable-llvm
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
src_test() {
|
||||
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
|
||||
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
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
https://bugs.gentoo.org/649516
|
||||
|
||||
Description: fix compatibility with zlib 1.2.9 and newer
|
||||
Author: Marc Deslauriers <marc.deslauriers@canonical.com>
|
||||
Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/clamav/+bug/1692073
|
||||
|
||||
Index: clamav-0.99.2+dfsg/libclamav/bytecode_api.c
|
||||
===================================================================
|
||||
--- clamav-0.99.2+dfsg.orig/libclamav/bytecode_api.c 2017-08-08 15:20:06.651685637 -0400
|
||||
+++ clamav-0.99.2+dfsg/libclamav/bytecode_api.c 2017-08-15 15:45:14.645714766 -0400
|
||||
@@ -811,8 +811,20 @@ int32_t cli_bcapi_inflate_init(struct cl
|
||||
cli_dbgmsg("bytecode api: inflate_init: invalid buffers!\n");
|
||||
return -1;
|
||||
}
|
||||
- memset(&stream, 0, sizeof(stream));
|
||||
- ret = inflateInit2(&stream, windowBits);
|
||||
+
|
||||
+ b = cli_realloc(ctx->inflates, sizeof(*ctx->inflates)*n);
|
||||
+ if (!b) {
|
||||
+ return -1;
|
||||
+ }
|
||||
+ ctx->inflates = b;
|
||||
+ ctx->ninflates = n;
|
||||
+ b = &b[n-1];
|
||||
+
|
||||
+ b->from = from;
|
||||
+ b->to = to;
|
||||
+ b->needSync = 0;
|
||||
+ memset(&b->stream, 0, sizeof(stream));
|
||||
+ ret = inflateInit2(&b->stream, windowBits);
|
||||
switch (ret) {
|
||||
case Z_MEM_ERROR:
|
||||
cli_dbgmsg("bytecode api: inflateInit2: out of memory!\n");
|
||||
@@ -829,20 +841,6 @@ int32_t cli_bcapi_inflate_init(struct cl
|
||||
cli_dbgmsg("bytecode api: inflateInit2: unknown error %d\n", ret);
|
||||
return -1;
|
||||
}
|
||||
-
|
||||
- b = cli_realloc(ctx->inflates, sizeof(*ctx->inflates)*n);
|
||||
- if (!b) {
|
||||
- inflateEnd(&stream);
|
||||
- return -1;
|
||||
- }
|
||||
- ctx->inflates = b;
|
||||
- ctx->ninflates = n;
|
||||
- b = &b[n-1];
|
||||
-
|
||||
- b->from = from;
|
||||
- b->to = to;
|
||||
- b->needSync = 0;
|
||||
- memcpy(&b->stream, &stream, sizeof(stream));
|
||||
return n-1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user