@@ -2,6 +2,7 @@
;;; Copyright © 2016, 2017, 2018, 2019, 2020 Eric Bavier <bavier@posteo.net>
;;; Copyright © 2018 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2019–2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -20,24 +21,23 @@
(define-module (gnu packages antivirus)
#:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix build-system cargo)
+ #:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix utils)
#:use-module (gnu packages)
- #:use-module (gnu packages autotools)
- #:use-module (gnu packages bison)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
- #:use-module (gnu packages cyrus-sasl)
- #:use-module (gnu packages flex)
- #:use-module (gnu packages llvm)
- #:use-module (gnu packages multiprecision)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages pcre)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages python-check)
+ #:use-module (gnu packages rust)
#:use-module (gnu packages tls)
#:use-module (gnu packages web)
#:use-module (gnu packages xml))
@@ -45,7 +45,7 @@ (define-module (gnu packages antivirus)
(define-public clamav
(package
(name "clamav")
- (version "0.103.11")
+ (version "1.4.1")
(source (origin
(method url-fetch)
(uri
@@ -57,90 +57,63 @@ (define-public clamav
"/clamav-" version ".tar.gz")))
(sha256
(base32
- "04by1g3p6awhi3j1y6zpwzmasdnvjgi6lwm34l2gadlwgkdfpmv1"))
+ "1n3a87niad76h3mn3qxq9379gppdjqpkhwb9qkbb79irmj0ff653"))
(modules '((guix build utils)))
(snippet
'(begin
+ (delete-file "Cargo.lock")
+ (for-each
+ delete-file
+ (find-files ".cargo/vendor" ".cargo-checksum\\.json"))
(for-each delete-file-recursively
'("win32" ; unnecessary
- "libclamav/c++/llvm" ; use system llvm
- "libclamav/tomsfastmath" ; use system tomsfastmath
- "libclamunrar")))) ; non-free license
- (patches
- (search-patches "clamav-system-tomsfastmath.patch"
- "clamav-config-llvm-libs.patch"))))
- (build-system gnu-build-system)
+ "libclamunrar")))))) ; non-free license
+ (build-system cmake-build-system)
+ (arguments
+ (list
+ #:configure-flags
+ #~(list "-DENABLE_MILTER=OFF" "-DENABLE_UNRAR=OFF")
+ #:imported-modules `((guix build cargo-utils)
+ ,@%cmake-build-system-modules)
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'inject-rust-onenote
+ (lambda _
+ (substitute* "libclamav_rust/Cargo.toml"
+ (("onenote_parser = .*")
+ "onenote_parser = \"0.3.1\"\n"))))
+ (add-after 'patch-source-shebangs 'patch-cargo-checksums
+ (lambda _
+ (use-modules
+ (srfi srfi-1) (ice-9 ftw) (guix build cargo-utils))
+ (with-directory-excursion ".cargo/vendor"
+ (for-each generate-all-checksums
+ (delete "." (delete ".." (scandir ".")))))))
+ (add-after 'unpack 'skip-clamd-tests
+ ;; XXX: The check?_clamd tests fail inside the build
+ ;; chroot, but pass outside.
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (substitute* "unit_tests/CMakeLists.txt"
+ (("clamd_test\\.py" test)
+ (string-append
+ test " -k \"not test_clamd_08_VirusEvent\"")))))))))
(native-inputs
- (list autoconf
- automake
- check ; for tests
- libtool
- pkg-config))
+ (list check ; for tests
+ pkg-config
+ python-minimal
+ python-pytest
+ rust
+ (list rust "cargo")))
(inputs
(list bzip2
curl
json-c
- libltdl
- libmspack
- llvm-3.6 ; requires <3.7, for JIT/verifier
- ncurses
libressl
- pcre2
- cyrus-sasl ; for linking curl with libtool
- tomsfastmath
libxml2
+ ncurses
+ pcre2
zlib))
- (arguments
- (list #:configure-flags
- #~(let-syntax ((with (syntax-rules ()
- ((_ name use)
- (string-append "--with-" name "="
- (assoc-ref %build-inputs use))))))
- (list "--disable-unrar"
- "--enable-llvm"
- "--with-system-llvm"
- "--with-system-libmspack"
- "--without-included-ltdl"
- (with "xml" "libxml2")
- (with "openssl" "libressl")
- (with "libjson" "json-c")
- (with "pcre2" "pcre2")
- (with "zlib" "zlib")
- (with "libcurl" "curl")
- ;; For sanity, specifying --enable-* flags turns
- ;; "support unavailable" warnings into errors.
- "--enable-bzip2"
- "--enable-check"
- "--sysconfdir=/etc/clamav"
- ;; Default database directory needs to be writeable
- "--with-dbdir=/var/db/clamav"))
- ;; install sample .conf files to %output/etc rather than /etc/clamav
- #:make-flags
- #~(list (string-append "sysconfdir=" %output "/etc"))
- #:phases
- #~(modify-phases %standard-phases
- ;; Regenerate configure script. Without this we don't get
- ;; the correct value for LLVM linker variables.
- (add-after 'unpack 'reconf
- (lambda _ (invoke "autoreconf" "-vfi")))
- (add-before 'configure 'patch-llvm-config
- (lambda _
- (substitute* '("libclamav/c++/detect.cpp"
- "libclamav/c++/ClamBCRTChecks.cpp"
- "libclamav/c++/bytecode2llvm.cpp")
- (("llvm/Config/config.h") "llvm/Config/llvm-config.h"))
- ;; `llvm-config --libfiles` inappropriately lists lib*.a
- ;; libraries, rather than the lib*.so's that our llvm
- ;; contains. They're used only for listing extra build
- ;; dependencies, so ignore them until that's fixed.
- (substitute* "libclamav/c++/Makefile.in"
- (("@LLVMCONFIG_LIBFILES@") ""))))
- (add-before 'check 'skip-clamd-tests
- ;; XXX: The check?_clamd tests fail inside the build
- ;; chroot, but pass outside.
- (lambda _
- (substitute* "unit_tests/Makefile"
- (("check2_clamd.sh.*check4_clamd.sh") "")))))))
(home-page "https://www.clamav.net")
(synopsis "Antivirus engine")
(description