~ruther/guix-local

d77c800157e0c5050e8d0e77dc9b42c39d2117dc — Nicolas Graves 1 year, 7 months ago f8c6d5c
gnu: clamav: Update to 1.4.1.

* gnu/packages/antivirus.scm (clamav): Update to 1.4.1.
[source]<origin>: Adapt source. This currently is not unbundling all
cargo vendored packages.
[build-system]: Switch to cmake-build-system.
[arguments]: Move field up.
<#:configure-flags>: Set option.
<#:imported-modules>: Set option for patching cargo checksums.
<#:phases>: Remove all phases except adapted 'skip-clamd_tests. Add
phases 'inject-rust-onenote and 'patch-cargo-checksums.
[native-inputs]: Remove autoconf, automake, libtool. Add
python-minimal, python-pytest, rust and rust:cargo.
[inputs]: Remove libltdl, libmspack, llvm-3.6, cyrus-sasl,
tomsfastmath.

Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
Change-Id: I6084c3c6974599e5df9b0f822066f3b2155a7bf7
1 files changed, 51 insertions(+), 78 deletions(-)

M gnu/packages/antivirus.scm
M gnu/packages/antivirus.scm => gnu/packages/antivirus.scm +51 -78
@@ 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-public clamav
  (package
    (name "clamav")
    (version "0.103.11")
    (version "1.4.1")
    (source (origin
              (method url-fetch)
              (uri


@@ 57,90 57,63 @@
                               "/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