From dba22f4f865daa5dd4a26ce07dabb347bd27f44c Mon Sep 17 00:00:00 2001 From: Matt Jolly Date: Fri, 9 Sep 2022 12:57:26 +1000 Subject: [PATCH] app-antivirus/clamav: add 0.105.1 Signed-off-by: Matt Jolly Closes: https://github.com/gentoo/gentoo/pull/27153 Signed-off-by: Thomas Raschbacher --- app-antivirus/clamav/Manifest | 1 + app-antivirus/clamav/clamav-0.105.1.ebuild | 246 ++++++++++++++++++ .../files/clamav-0.105.1-cmake-llvm-fix.patch | 73 ++++++ app-antivirus/clamav/metadata.xml | 1 + profiles/arch/hppa/package.mask | 2 +- profiles/base/package.use.mask | 5 + profiles/features/wd40/package.mask | 1 + 7 files changed, 328 insertions(+), 1 deletion(-) create mode 100644 app-antivirus/clamav/clamav-0.105.1.ebuild create mode 100644 app-antivirus/clamav/files/clamav-0.105.1-cmake-llvm-fix.patch diff --git a/app-antivirus/clamav/Manifest b/app-antivirus/clamav/Manifest index c25f657957993..563f2972fc66a 100644 --- a/app-antivirus/clamav/Manifest +++ b/app-antivirus/clamav/Manifest @@ -1,3 +1,4 @@ DIST clamav-0.103.6.tar.gz 16491761 BLAKE2B 3c43bcda4a613f81d1b31036e7323a7af7708e54af94ad30a659a8fb318d8f79f357086ce70703659298524d778374df886495cd8c75280bbbe4bae30795a85a SHA512 d39e1964678b8251bde3a9f3db30fe3d3d76cc566a86834297f4dd8489086dc9cc4c6541ca128089159f4c071d2d85b530455bd942987d3929ea0082b8ab272b DIST clamav-0.103.7.tar.gz 16501741 BLAKE2B 49fc1c8c42ee8168dbaec4aa13ab0dfef7fa285e335cb38b17bc020df7400ee1daae49e06ba5b4ae0364d47d707cb83c0b1a8442d5b01d2bba5827606fe27fb4 SHA512 d426169889d94411b20a2c9c9579fc22a15090c9847849822c63fc6b404075feba0ff3663ee1382b2af5300394c7a93669844736f7473bfdce3250e1fd130326 DIST clamav-0.104.4.tar.gz 12027448 BLAKE2B e8627b49b46e9bf5669b7186d829fd2caa76d9071b1533da252fea1bdeed1b78ec4a138db8957b0d121df1180eb37a6230f5f0db1e4d3f2de80bf7dddad5b47e SHA512 5aa8abe96ff49548cf74df47a7e56279c3082dc8ca98cab02f64f44b2da0230e75b5f634b3086ba8ca155052cbc22a2a47ab3dd159ae033d3f599dcde1f2420e +DIST clamav-0.105.1.tar.gz 29467856 BLAKE2B be46d9afd76fb536d7de7363a45d38fef6a5983011e3cd0dcc25c2a209c8d37a2bbe1f7f4a5694152cabf622ef83e072b892ae12ba404da1955bb5b654e5216d SHA512 dcaa3eb90e5a8951f1750f0676791c33507206ae0d58a3da0d07f6f86b559799db09a4aed83fbd9d3eed8f1f17654f8304070e6770ba7e02de6f2be2cda65bec diff --git a/app-antivirus/clamav/clamav-0.105.1.ebuild b/app-antivirus/clamav/clamav-0.105.1.ebuild new file mode 100644 index 0000000000000..0d62bc5c14c06 --- /dev/null +++ b/app-antivirus/clamav/clamav-0.105.1.ebuild @@ -0,0 +1,246 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LLVM_MAX_SLOT=13 +PYTHON_COMPAT=( python3_{8..11} ) +inherit cmake flag-o-matic llvm python-any-r1 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 ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~sparc-solaris ~x86-solaris" +IUSE="doc clamonacc +clamapp experimental jit libclamav-only milter rar selinux systemd test" + +REQUIRED_USE="libclamav-only? ( !clamonacc !clamapp !milter ) + clamonacc? ( clamapp ) + milter? ( clamapp ) + test? ( !libclamav-only )" + +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 + app-arch/bzip2 + dev-libs/json-c:= + dev-libs/libltdl + dev-libs/libmspack + dev-libs/libpcre2:= + dev-libs/libxml2 + dev-libs/openssl:= + dev-libs/tomsfastmath:= + >=sys-libs/zlib-1.2.2:= + virtual/libiconv + !libclamav-only? ( net-misc/curl ) + clamapp? ( sys-libs/ncurses:= net-misc/curl ) + elibc_musl? ( sys-libs/fts-standalone ) + jit? ( \ + "${ED}"/etc/clamav/clamd.conf || die + + sed -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/clamav/clamd.conf:" \ + -e "s:^\#\(ScriptedUpdates\).*:\1 yes:" \ + -e "s/^#\(DatabaseDirectory .*\)/\1/" \ + "${ED}"/etc/clamav/freshclam.conf.sample > \ + "${ED}"/etc/clamav/freshclam.conf || die + + if use milter ; then + # Note: only keep the "unix" ClamdSocket and MilterSocket! + sed -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/clamav-milter.conf.sample > \ + "${ED}"/etc/clamav/clamav-milter.conf || die + + systemd_newunit "${FILESDIR}/clamav-milter.service-0.104.0" 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 + fi + + if use doc ; then + local HTML_DOCS=( docs/html/. ) + einstalldocs + fi + + # Don't install man pages for utilities we didn't install + if use libclamav-only ; then + rm -r "${ED}"/usr/share/man || die + fi + + find "${ED}" -name '*.la' -delete || die +} + +pkg_postinst() { + if ! use libclamav-only ; then + if use systemd ; then + tmpfiles_process clamav.conf + fi + fi + + 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 + + if ! systemd_is_booted ; then + 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." + fi +} diff --git a/app-antivirus/clamav/files/clamav-0.105.1-cmake-llvm-fix.patch b/app-antivirus/clamav/files/clamav-0.105.1-cmake-llvm-fix.patch new file mode 100644 index 0000000000000..b73a2e066ef17 --- /dev/null +++ b/app-antivirus/clamav/files/clamav-0.105.1-cmake-llvm-fix.patch @@ -0,0 +1,73 @@ +clamav 0.105.1 doesn't support LLVM version detection + +See: https://github.com/Cisco-Talos/clamav/pull/692 + +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -480,39 +480,43 @@ find_package(JSONC REQUIRED) + # Set variable required by libclamav to use libjson-c + set(HAVE_JSON 1) + ++set(LLVM_MAX_VER "14.0.0") ++set(LLVM_MIN_VER "8.0.0") ++ + string (TOLOWER ${BYTECODE_RUNTIME} bytecodeRuntime) + if(${bytecodeRuntime} STREQUAL "llvm") +- set (LLVM_FIND_VERSION "8.0.0") +- find_package(LLVM REQUIRED) ++ if(DEFINED LLVM_ROOT_DIR AND DEFINED LLVM_FIND_VERSION) ++ find_package(LLVM EXACT ${LLVM_FIND_VERSION} REQUIRED HINTS ${LLVM_ROOT_DIR}) ++ elseif(DEFINED LLVM_ROOT_DIR) ++ find_package(LLVM REQUIRED HINTS ${LLVM_ROOT_DIR}) ++ elseif(DEFINED LLVM_FIND_VERSION) ++ find_package(LLVM EXACT ${LLVM_FIND_VERSION} REQUIRED) ++ else() ++ set (LLVM_FIND_VERSION ${LLVM_MIN_VER}) ++ find_package(LLVM REQUIRED) ++ endif() + if(LLVM_FOUND) + if (LLVM_AVAILABLE_LIBS) +- # Found using LLVMConfig.cmake +- message("LLVM found using LLVMConfig.cmake") +- set(LLVM_VERSION ${LLVM_VERSION_MAJOR}${LLVM_VERSION_MINOR}) ++ message(STATUS "LLVM found using LLVMConfig.cmake") + set(LLVM_LIBRARIES ${LLVM_AVAILABLE_LIBS}) +- +- if (${LLVM_PACKAGE_VERSION} VERSION_LESS "8.0.0") +- message(FATAL "LLVM version ${LLVM_PACKAGE_VERSION} is too old") +- endif() +- + else() +- # Found using FindLLVM.cmake +- message("LLVM found using FindLLVM.cmake") +- +- # Set variable required by libclamav to use llvm instead of interpreter +- set(LLVM_VERSION ${LLVM_VERSION_MAJOR}${LLVM_VERSION_MINOR}) +- message("LLVM_FOUND ${LLVM_FOUND}") ++ message(STATUS "LLVM found using FindLLVM.cmake") ++ set(LLVM_PACKAGE_VERSION ${LLVM_VERSION_STRING}) + +- if (${LLVM_VERSION_STRING} VERSION_GREATER_EQUAL "9.0.0") +- if (${LLVM_VERSION_STRING} VERSION_LESS "10.0.0") +- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNDEBUG") +- endif() ++ if (${LLVM_VERSION_STRING} VERSION_GREATER_EQUAL "9.0.0" AND ${LLVM_VERSION_STRING} VERSION_LESS "10.0.0") ++ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNDEBUG") + endif() ++ endif() + +- if (${LLVM_VERSION_STRING} VERSION_LESS "8.0.0") +- message(FATAL "LLVM version ${LLVM_VERSION_STRING} is too old") +- endif() ++ if (${LLVM_PACKAGE_VERSION} VERSION_LESS ${LLVM_MIN_VER}) ++ message(FATAL_ERROR "LLVM version ${LLVM_PACKAGE_VERSION} is too old") ++ elseif (${LLVM_PACKAGE_VERSION} VERSION_GREATER_EQUAL ${LLVM_MAX_VER} ) ++ message(FATAL_ERROR "LLVM version ${LLVM_PACKAGE_VERSION} is too new") ++ else() ++ message(STATUS "LLVM version ${LLVM_PACKAGE_VERSION} found") + endif() ++ # Set variable required by libclamav to use llvm instead of interpreter ++ set(LLVM_VERSION ${LLVM_VERSION_MAJOR}${LLVM_VERSION_MINOR}) + endif() + endif() + diff --git a/app-antivirus/clamav/metadata.xml b/app-antivirus/clamav/metadata.xml index 7a3fe540cf8de..ea313c4a98689 100644 --- a/app-antivirus/clamav/metadata.xml +++ b/app-antivirus/clamav/metadata.xml @@ -16,6 +16,7 @@ Build the clamonacc on-access scanner A Top like tool which shows what clamd is currently scanning amongst other things A tool to submit false positives / negatives + Enable experimental features Bypass building of libfreshclam and the ClamAV CLI applications. Enables collection of file property metadata using ClamAV API for analysis by ClamAV bytecode programs. DMG and XAR support diff --git a/profiles/arch/hppa/package.mask b/profiles/arch/hppa/package.mask index b6b7d0f1baa3d..1ff307a672b36 100644 --- a/profiles/arch/hppa/package.mask +++ b/profiles/arch/hppa/package.mask @@ -2,6 +2,6 @@ # Distributed under the terms of the GNU General Public License v2 # Quote from : -# "Compilation fails with: #error You need to define CycleTimer for +# "Compilation fails with: #error You need to define CycleTimer for # your OS and CPU" dev-cpp/benchmark diff --git a/profiles/base/package.use.mask b/profiles/base/package.use.mask index 5497dea044f99..25a7ce9973b32 100644 --- a/profiles/base/package.use.mask +++ b/profiles/base/package.use.mask @@ -6,6 +6,11 @@ # This file is only for generic masks. For arch-specific masks (i.e. # mask everywhere, unmask on arch/*) use arch/base. +# Matt Jolly (2022-09-06) # Incompatible with merged-usr and is a fundamentally flaky approach. # - app-arch/lbzip2: bug #868318 (possible solution in bug #868651) diff --git a/profiles/features/wd40/package.mask b/profiles/features/wd40/package.mask index 7ef53b96fb465..6f46776db0a7d 100644 --- a/profiles/features/wd40/package.mask +++ b/profiles/features/wd40/package.mask @@ -4,6 +4,7 @@ # Various packages requiring Rust. app-admin/ansible app-admin/ansible-core +>=app-antivirus/clamav-0.105.1 app-crypt/acme app-crypt/certbot app-crypt/certbot-nginx