aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; 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>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu packages antivirus)
  #:use-module ((guix licenses) #:prefix license:)
  #: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 tls)
  #:use-module (gnu packages web)
  #:use-module (gnu packages xml))

(define-public clamav
  (package
    (name "clamav")
    (version "0.103.11")
    (source (origin
              (method url-fetch)
              (uri (string-append "https://www.clamav.net/downloads/production/"
                                  "clamav-" version ".tar.gz"))
              (sha256
               (base32
                "04by1g3p6awhi3j1y6zpwzmasdnvjgi6lwm34l2gadlwgkdfpmv1"))
              (modules '((guix build utils)))
              (snippet
               '(begin
                  (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)
    (native-inputs
     (list autoconf
           automake
           check ; for tests
           libtool
           pkg-config))
    (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
            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
     "Clam AntiVirus is an anti-virus toolkit, designed especially for e-mail
scanning on mail gateways.  It provides a number of utilities including a
flexible and scalable multi-threaded daemon, a command line scanner, and
advanced tool for automatic database updates.  The core of the package is an
anti-virus engine available in the form of a shared library.")
    (license (list license:gpl2+        ;ClamAV itself
                   license:lgpl2.1      ;libclamav/mspack.[ch]
                   license:public-domain ;libclamav/7z/*, libclamav/rijndael.[ch], etc...
                   (package-license bzip2) ;modified bzip2 source in libclamav/nsis
                   license:bsd-2        ;several files in libclamav
                   license:bsd-3        ;libclamav/{regex,qsort.c,swf.[ch]
                   license:ncsa         ;libclamav/c++/PointerTracking.cpp
                   license:zlib         ;libclamav/inf*.h
                   license:x11          ;libclamav/lzw
                   (license:non-copyleft "libclamav/strlcat.c") ;"OpenBSD" license
                   license:asl2.0       ;libclamav/yara*
                   license:expat))))    ;shared/getopt.[ch]
-0500'>2022-11-24doc: Add a security keys section to the cookbook....* doc/guix-cookbook.texi (Top): Register new menu. (System Configuration): Likewise. (Using security keys): New section. Maxim Cournoyer 2022-11-06doc: cookbook: Add section on MPD with bluealsa....* doc/guix-cookbook.texi (Music Server with Bluetooth Audio): New section under System Configuration. Ricardo Wurmus 2022-11-06doc: cookbook: Update detailed menu for "System Configuration"....* doc/guix-cookbook.texi: Update menu. Ricardo Wurmus 2022-10-13doc: Add chapter on containers to Cookbook....* doc/guix-cookbook.texi (Containers): New chapter. Ricardo Wurmus 2022-07-08doc: cookbook: Link to "A Scheme Primer"....* doc/guix-cookbook.texi (A Scheme Crash Course): Link to "A Scheme Primer". Group references in @quotation for clarity. Ludovic Courtès 2022-07-08doc: cookbook: Suggest 'guix shell'....* doc/guix-cookbook.texi (A Scheme Crash Course): Suggest 'guix shell' instead of 'guix environment'. (Customizing the Kernel, The benefits of manifests): Likewise. Ludovic Courtès 2022-06-01doc: cookbook: Refer to the "Writing Manifests" manual node....* doc/guix-cookbook.texi (Basic setup with manifests): Tweak introductory paragraph. Refer to the new "Writing Manifests" node of the manual. Ludovic Courtès 2022-04-08doc: cookbook: Fix cross-reference to SICP....Reported by Greg Hogan <code@greghogan.com>. * doc/guix-cookbook.texi (A Scheme Crash Course): Fix xref to SICP. Ludovic Courtès 2022-04-08doc: cookbook: Fix cross-reference to the manual....Reported by Greg Hogan <code@greghogan.com>. * doc/guix-cookbook.texi (Extended example): Fix node name in xref to "package Reference". Ludovic Courtès 2022-03-18doc: cookbook: Update Tor onion service name....* doc/guix-cookbook.texi: New variable. (Getting substitutes from Tor): Use it. Ludovic Courtès 2021-12-30doc: cookbook: Update custom kernel guide....* doc/guix-cookbook.texi (Customizing the Kernel): Adjust to new interface. Leo Famulari 2021-12-20doc: cookbook: Simplify inputs in examples....* doc/guix-cookbook.texi (Recursive importers, Inheritance): Use the simplified input style. Ludovic Courtès 2021-10-12Merge remote-tracking branch 'origin/master' into core-updates-frozen.Mathieu Othacehe 2021-10-04doc: cookbook: Mention translations of the cookbook....* doc/guix-cookbook.texi (Top): Add note about l10n. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Sarah Morgensen 2021-09-17Merge branch 'master' into core-updates-frozen... Conflicts: gnu/packages/bioinformatics.scm gnu/packages/chez.scm gnu/packages/docbook.scm gnu/packages/ebook.scm gnu/packages/gnome.scm gnu/packages/linux.scm gnu/packages/networking.scm gnu/packages/python-web.scm gnu/packages/python-xyz.scm gnu/packages/tex.scm gnu/packages/version-control.scm gnu/packages/xml.scm guix/build-system/dune.scm guix/build-system/go.scm guix/build-system/linux-module.scm guix/packages.scm Marius Bakke 2021-09-08doc: add clarifications to Linode cookbook recipe...* doc/guix-cookbook.texi: clarify Linode recipe Reword paragraph about adding the Guix device disk to Debian config. Improve example commands for sftp-ing files to the server. Minor wording fixes Signed-off-by: Ludovic Courtès <ludo@gnu.org> Grant Shangreaux 2021-09-07Merge branch 'master' into core-updates-frozenLudovic Courtès 2021-08-29Migrate to the new 'targets' field of bootloader-configuration....The old 'target' field is deprecated; adjust the sources to use the new 'targets' one instead. * doc/guix-cookbook.texi<target>: Replace by 'targets'. * gnu/bootloader/grub.scm: Likewise. * gnu/installer/parted.scm: Likewise. * gnu/machine/digital-ocean.scm: Likewise. * gnu/system/examples/asus-c201.tmpl: Likewise * gnu/system/examples/bare-bones.tmpl: Likewise * gnu/system/examples/bare-hurd.tmpl: Likewise * gnu/system/examples/beaglebone-black.tmpl: Likewise * gnu/system/examples/desktop.tmpl: Likewise * gnu/system/examples/docker-image.tmpl: Likewise * gnu/system/examples/lightweight-desktop.tmpl: Likewise * gnu/system/examples/vm-image.tmpl: Likewise * gnu/system/examples/yggdrasil.tmpl: Likewise * gnu/system/hurd.scm: Likewise * gnu/system/images/hurd.scm: Likewise * gnu/system/images/novena.scm: Likewise * gnu/system/images/pine64.scm: Likewise * gnu/system/images/pinebook-pro.scm: Likewise * gnu/system/images/rock64.scm: Likewise * gnu/system/install.scm: Likewise * gnu/system/vm.scm: Likewise * gnu/tests.scm: Likewise * gnu/tests/ganeti.scm: Likewise * gnu/tests/install.scm: Likewise * gnu/tests/nfs.scm: Likewise * gnu/tests/telephony.scm: Likewise * tests/boot-parameters.scm: Likewise * tests/system.scm: Likewise Maxim Cournoyer 2021-08-15Update copyright/name notices for Christine Lemmer-Webber....* doc/guix-cookbook.texi: Update copyright/name for Christine Lemmer-Webber. * gnu/build/image.scm: Likewise. * gnu/build/vm.scm: Likewise. * gnu/packages/admin.scm: Likewise. * gnu/packages/assembly.scm: Likewise. * gnu/packages/audio.scm: Likewise. * gnu/packages/backup.scm: Likewise. * gnu/packages/check.scm: Likewise. * gnu/packages/databases.scm: Likewise. * gnu/packages/emacs-xyz.scm: Likewise. * gnu/packages/finance.scm: Likewise. * gnu/packages/gnupg.scm: Likewise. * gnu/packages/guile-xyz.scm: Likewise. * gnu/packages/guile.scm: Likewise. * gnu/packages/haskell-xyz.scm: Likewise. * gnu/packages/linux.scm: Likewise. * gnu/packages/mail.scm: Likewise. * gnu/packages/password-utils.scm: Likewise. * gnu/packages/perl.scm: Likewise. * gnu/packages/python-web.scm: Likewise. * gnu/packages/python-xyz.scm: Likewise. * gnu/packages/python.scm: Likewise. * gnu/packages/sphinx.scm: Likewise. * gnu/packages/ssh.scm: Likewise. * gnu/packages/xdisorg.scm: Likewise. * gnu/services/networking.scm: Likewise. * gnu/system/vm.scm: Likewise. Christopher Lemmer Webber 2021-08-15doc: Fix typo....* doc/guix-cookbook.texi (GUIX_PACKAGE_PATH): Fix typo in file name. Reported-by: breathein on IRC. Ricardo Wurmus 2021-07-18Merge branch 'master' into core-updatesLudovic Courtès 2021-07-12doc: cookbook: Adjust example to simplified input style....* doc/guix-cookbook.texi (Extended example): Adjust example to new input style and adjust "Inputs" section. Ludovic Courtès 2021-07-12doc: cookbook: Remove trailing #t from extended example....* doc/guix-cookbook.texi (Extended example): Remove trailing #t from snippet and phases. Ludovic Courtès 2021-07-07doc: Add guide showing auto-login on a specific TTY to the cookbook....This is a follow-up to the discussion in <https://bugs.gnu.org/48974>. * doc/guix-cookbook.texi (System Configuration): Add a brief guide that explains auto login a user to one TTY. * doc/guix.texi (System Services): Add an texinfo anchor, so that the cookbook entry "Auto Login a User to a Specific TTY" can refer back to the precise point that the GNU Guix Reference manual. Also add a reference to the cookbook that shows how to auto login a specific user to one TTY. Signed-off-by: Leo Prikler <leo.prikler@student.tugraz.at> Joshua Branson