[PATCH] gnu: clamav: Add release-monitoring-url property.

  • Open
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • Nicolas Graves
Owner
unassigned
Submitted by
Nicolas Graves
Severity
normal
N
N
Nicolas Graves wrote on 20 Oct 01:08 +0200
(address . guix-patches@gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241019230841.993-1-ngraves@ngraves.fr
* gnu/packages/antivirus.scm (clamav)
[source]<uri>: Add secondary release URI.
[properties]: Add release-monitoring-url.
---
gnu/packages/antivirus.scm | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)

Toggle diff (31 lines)
diff --git a/gnu/packages/antivirus.scm b/gnu/packages/antivirus.scm
index d061b18b11..2161d60398 100644
--- a/gnu/packages/antivirus.scm
+++ b/gnu/packages/antivirus.scm
@@ -48,8 +48,13 @@ (define-public clamav
(version "0.103.11")
(source (origin
(method url-fetch)
- (uri (string-append "https://www.clamav.net/downloads/production/"
- "clamav-" version ".tar.gz"))
+ (uri
+ (list
+ (string-append "https://www.clamav.net/downloads/production/"
+ "clamav-" version ".tar.gz")
+ (string-append "https://github.com/Cisco-Talos/clamav/"
+ "releases/download/clamav-" version
+ "/clamav-" version ".tar.gz")))
(sha256
(base32
"04by1g3p6awhi3j1y6zpwzmasdnvjgi6lwm34l2gadlwgkdfpmv1"))
@@ -144,6 +149,8 @@ (define-public clamav
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.")
+ (properties `((release-monitoring-url
+ . "https://github.com/Cisco-Talos/clamav/releases")))
(license (list license:gpl2+ ;ClamAV itself
license:lgpl2.1 ;libclamav/mspack.[ch]
license:public-domain ;libclamav/7z/*, libclamav/rijndael.[ch], etc...
--
2.46.0
N
N
Nicolas Graves wrote on 21 Oct 11:05 +0200
[PATCH v2 1/2] gnu: clamav: Add release-monitoring-url property.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241021090600.20076-1-ngraves@ngraves.fr
* gnu/packages/antivirus.scm (clamav)
[source]<uri>: Add secondary release URI.
[properties]: Add release-monitoring-url.
---
gnu/packages/antivirus.scm | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)

Toggle diff (31 lines)
diff --git a/gnu/packages/antivirus.scm b/gnu/packages/antivirus.scm
index d061b18b11..2161d60398 100644
--- a/gnu/packages/antivirus.scm
+++ b/gnu/packages/antivirus.scm
@@ -48,8 +48,13 @@ (define-public clamav
(version "0.103.11")
(source (origin
(method url-fetch)
- (uri (string-append "https://www.clamav.net/downloads/production/"
- "clamav-" version ".tar.gz"))
+ (uri
+ (list
+ (string-append "https://www.clamav.net/downloads/production/"
+ "clamav-" version ".tar.gz")
+ (string-append "https://github.com/Cisco-Talos/clamav/"
+ "releases/download/clamav-" version
+ "/clamav-" version ".tar.gz")))
(sha256
(base32
"04by1g3p6awhi3j1y6zpwzmasdnvjgi6lwm34l2gadlwgkdfpmv1"))
@@ -144,6 +149,8 @@ (define-public clamav
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.")
+ (properties `((release-monitoring-url
+ . "https://github.com/Cisco-Talos/clamav/releases")))
(license (list license:gpl2+ ;ClamAV itself
license:lgpl2.1 ;libclamav/mspack.[ch]
license:public-domain ;libclamav/7z/*, libclamav/rijndael.[ch], etc...
--
2.46.0
N
N
Nicolas Graves wrote on 21 Oct 11:05 +0200
[PATCH v2 2/2] gnu: clamav: Update to 1.4.1.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241021090600.20076-2-ngraves@ngraves.fr
* 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.
---
gnu/packages/antivirus.scm | 129 +++++++++++++++----------------------
1 file changed, 51 insertions(+), 78 deletions(-)

Toggle diff (188 lines)
diff --git a/gnu/packages/antivirus.scm b/gnu/packages/antivirus.scm
index 2161d60398..1a23657a61 100644
--- a/gnu/packages/antivirus.scm
+++ b/gnu/packages/antivirus.scm
@@ -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
--
2.46.0
N
N
Nicolas Graves wrote on 3 Nov 02:30 +0100
[PATCH v3 00/20] Clamav update [security fixes]
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241103013258.26141-1-ngraves@ngraves.fr
This patch series completes the work on clamav update with a complete
unbundling of its rust dependencies.

Nicolas Graves (20):
gnu: rust-widestring-0.4: Update to 0.4.3.
gnu: rust-enum-primitive-derive-0.2: Update to 0.2.2.
gnu: Add rust-onenote-parser-0.3.
gnu: Add rust-onenote-parser-for-clamav.
gnu: clamav: Add release-monitoring-url property.
gnu: clamav: Update to 1.4.1.
gnu: Add rust-hamming-0.1.
gnu: Add rust-primal-bit-0.3.
gnu: Add rust-primal-check-0.3.
gnu: Add rust-primal-estimate-0.3.
gnu: Add rust-primal-sieve-0.3.
gnu: Add rust-primal-slowsieve-0.3.
gnu: Add rust-primal-0.3.
gnu: rust-crc-any-2: Update to 2.5.0.
gnu: Add rust-delharc-0.6.
gnu: Add rust-transpose-0.2.
gnu: rust-strength-reduce-0.2: Update to 0.2.4.
gnu: Add rust-rustfft-6.
gnu: Add rust-rustdct-0.7.
gnu: clamav: Unbundle rust dependencies.

gnu/local.mk | 3 +
gnu/packages/antivirus.scm | 205 ++++++-----
gnu/packages/crates-io.scm | 342 +++++++++++++++++-
.../rust-onenote-parser-for-clamav-deps.patch | 88 +++++
...er-for-clamav-parse-in-memory-buffer.patch | 52 +++
...note-parser-for-clamav-property-type.patch | 30 ++
6 files changed, 630 insertions(+), 90 deletions(-)
create mode 100644 gnu/packages/patches/rust-onenote-parser-for-clamav-deps.patch
create mode 100644 gnu/packages/patches/rust-onenote-parser-for-clamav-parse-in-memory-buffer.patch
create mode 100644 gnu/packages/patches/rust-onenote-parser-for-clamav-property-type.patch

--
2.46.0
N
N
Nicolas Graves wrote on 3 Nov 02:30 +0100
[PATCH v3 01/20] gnu: rust-widestring-0.4: Update to 0.4.3.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241103013258.26141-2-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-widestring-0.4): Update to 0.4.3.
---
gnu/packages/crates-io.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 90761bb626..474a2a7bfe 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -90694,7 +90694,7 @@ (define-public rust-widestring-0.4
(package
(inherit rust-widestring-0.5)
(name "rust-widestring")
- (version "0.4.2")
+ (version "0.4.3")
(source
(origin
(method url-fetch)
@@ -90702,7 +90702,7 @@ (define-public rust-widestring-0.4
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "13565qy4jhpg4x0xw8mwxzzsh0p8c93p5208lh6kpwp0q01y6qx7"))))
+ "0z3ba8qrxb62vpfgk7n2xs2grm9kdaj1cz4q8s0gs8fx8h0r8s61"))))
(arguments
`(#:cargo-development-inputs
(("rust-winapi" ,rust-winapi-0.3))))))
--
2.46.0
N
N
Nicolas Graves wrote on 3 Nov 02:30 +0100
[PATCH v3 02/20] gnu: rust-enum-primitive-derive-0.2: Update to 0.2.2.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241103013258.26141-3-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-enum-primitive-derive-0.2): Update to 0.2.2.
---
gnu/packages/crates-io.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 474a2a7bfe..621aeb6c21 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -24068,7 +24068,7 @@ (define-public rust-enum-primitive-0.1
(define-public rust-enum-primitive-derive-0.2
(package
(name "rust-enum-primitive-derive")
- (version "0.2.1")
+ (version "0.2.2")
(source
(origin
(method url-fetch)
@@ -24077,7 +24077,7 @@ (define-public rust-enum-primitive-derive-0.2
(string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0h1k2izdl5lf2na8xnj7rgwjm8gawxc2p1w8j6ahifvyka7jhljz"))))
+ "03ibjjx8dc4akpq8ck24qda5ix4jybz9jagfxykd0s6vxb2vjxf3"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
--
2.46.0
N
N
Nicolas Graves wrote on 3 Nov 02:30 +0100
[PATCH v3 03/20] gnu: Add rust-onenote-parser-0.3.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241103013258.26141-4-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-onenote-parser-0.3): New variable.
---
gnu/packages/crates-io.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (43 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 621aeb6c21..d3815e7f28 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -49317,6 +49317,36 @@ (define-public rust-omnipath-0.1
(description "This package provides a path utility library.")
(license (list license:expat license:asl2.0))))
+(define-public rust-onenote-parser-0.3
+ (package
+ (name "rust-onenote-parser")
+ (version "0.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "onenote_parser" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "12rj3ixhnxvl2mpkad3ng4b8fx4ynxhdlwzxba36c8i98ls57zzf"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs
+ (("rust-bytes" ,rust-bytes-0.5)
+ ("rust-encoding-rs" ,rust-encoding-rs-0.8)
+ ("rust-enum-primitive-derive" ,rust-enum-primitive-derive-0.2)
+ ("rust-itertools" ,rust-itertools-0.9)
+ ("rust-num-traits" ,rust-num-traits-0.2)
+ ("rust-paste" ,rust-paste-1)
+ ("rust-thiserror" ,rust-thiserror-1)
+ ("rust-uuid" ,rust-uuid-0.8)
+ ("rust-widestring" ,rust-widestring-0.4))
+ #:cargo-development-inputs (("rust-insta" ,rust-insta-1))))
+ (home-page "https://github.com/msiemens/onenote.rs")
+ (synopsis "Parser for Microsoft OneNote files")
+ (description
+ "This package provides a parser for Microsoft OneNote files.")
+ (license license:mpl2.0)))
+
(define-public rust-onig-6
(package
(name "rust-onig")
--
2.46.0
N
N
Nicolas Graves wrote on 3 Nov 02:30 +0100
[PATCH v3 04/20] gnu: Add rust-onenote-parser-for-clamav.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241103013258.26141-5-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-onenote-parser-for-clamav): New
variable.
* gnu/packages/patches/rust-onenote-parser-for-clamav-deps.patch
* gnu/packages/patches/rust-onenote-parser-for-clamav-parse-in-memory-buffer.patch
* gnu/packages/patches/rust-onenote-parser-for-clamav-property-type.patch
Add patches here...
* gnu/local.mk: ...and here.
---
gnu/local.mk | 3 +
gnu/packages/crates-io.scm | 27 ++++++
.../rust-onenote-parser-for-clamav-deps.patch | 88 +++++++++++++++++++
...er-for-clamav-parse-in-memory-buffer.patch | 52 +++++++++++
...note-parser-for-clamav-property-type.patch | 30 +++++++
5 files changed, 200 insertions(+)
create mode 100644 gnu/packages/patches/rust-onenote-parser-for-clamav-deps.patch
create mode 100644 gnu/packages/patches/rust-onenote-parser-for-clamav-parse-in-memory-buffer.patch
create mode 100644 gnu/packages/patches/rust-onenote-parser-for-clamav-property-type.patch

Toggle diff (242 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 7e5fb2948e..3c7f27a3d3 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2133,6 +2133,9 @@ dist_patch_DATA = \
%D%/packages/patches/rust-ndarray-0.13-remove-blas-src.patch \
%D%/packages/patches/rust-ndarray-0.14-remove-blas-src.patch \
%D%/packages/patches/rust-nettle-disable-vendor.patch \
+ %D%/packages/patches/rust-onenote-parser-for-clamav-deps.patch \
+ %D%/packages/patches/rust-onenote-parser-for-clamav-parse-in-memory-buffer.patch \
+ %D%/packages/patches/rust-onenote-parser-for-clamav-property-type.patch \
%D%/packages/patches/rust-poem-1-fewer-deps.patch \
%D%/packages/patches/rust-rspec-1-remove-clippy.patch \
%D%/packages/patches/rust-trash-2-update-windows.patch \
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index d3815e7f28..2a66385d10 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -49347,6 +49347,33 @@ (define-public rust-onenote-parser-0.3
"This package provides a parser for Microsoft OneNote files.")
(license license:mpl2.0)))
+(define-public rust-onenote-parser-for-clamav
+ (package
+ (inherit rust-onenote-parser-0.3)
+ (name "rust-onenote-parser-for-clamav")
+ (source (origin
+ (inherit (package-source rust-onenote-parser-0.3))
+ (patches
+ (search-patches
+ "rust-onenote-parser-for-clamav-deps.patch"
+ "rust-onenote-parser-for-clamav-parse-in-memory-buffer.patch"
+ "rust-onenote-parser-for-clamav-property-type.patch"))
+ (snippet #~(begin
+ (delete-file "Cargo.toml")
+ (rename-file "Cargo.toml.orig" "Cargo.toml")))))
+ (arguments
+ `(#:cargo-inputs
+ (("rust-bytes" ,rust-bytes-1)
+ ("rust-encoding-rs" ,rust-encoding-rs-0.8)
+ ("rust-enum-primitive-derive" ,rust-enum-primitive-derive-0.2)
+ ("rust-itertools" ,rust-itertools-0.10)
+ ("rust-num-traits" ,rust-num-traits-0.2)
+ ("rust-paste" ,rust-paste-1)
+ ("rust-thiserror" ,rust-thiserror-1)
+ ("rust-uuid" ,rust-uuid-1)
+ ("rust-widestring" ,rust-widestring-1))
+ #:cargo-development-inputs (("rust-insta" ,rust-insta-1))))))
+
(define-public rust-onig-6
(package
(name "rust-onig")
diff --git a/gnu/packages/patches/rust-onenote-parser-for-clamav-deps.patch b/gnu/packages/patches/rust-onenote-parser-for-clamav-deps.patch
new file mode 100644
index 0000000000..24d5692573
--- /dev/null
+++ b/gnu/packages/patches/rust-onenote-parser-for-clamav-deps.patch
@@ -0,0 +1,88 @@
+From f940d8c8fa087554583158d50df071af89c516db Mon Sep 17 00:00:00 2001
+From: Simon Lamon <32477463+silamon@users.noreply.github.com>
+Date: Sat, 19 Nov 2022 20:32:07 +0100
+Subject: [PATCH] chore: upgrade dependencies (#9)
+
+Co-authored-by: Markus Siemens <markus@m-siemens.de>
+---
+ Cargo.toml.orig | 8 ++++----
+ src/errors.rs | 6 +++---
+ src/reader.rs | 2 +-
+ src/utils.rs | 5 ++---
+ 4 files changed, 10 insertions(+), 11 deletions(-)
+
+diff --git a/Cargo.toml.orig b/Cargo.toml.orig
+index 9afddd0..e302436 100644
+--- a/Cargo.toml.orig
++++ b/Cargo.toml.orig
+@@ -14,15 +14,15 @@ categories = ["parser-implementations"]
+ backtrace = []
+
+ [dependencies]
+-bytes = "0.5"
++bytes = "1.2.0"
+ encoding_rs = "0.8.31"
+ enum-primitive-derive = "0.2.2"
+-itertools = "0.9.0"
++itertools = "0.10.3"
+ num-traits = "0.2"
+ paste = "1.0"
+ thiserror = "1.0"
+-uuid = "0.8"
+-widestring = "0.4.3"
++uuid = "1.1.2"
++widestring = "1.0.2"
+
+ [dev-dependencies]
+ insta = "1.21.1"
+diff --git a/src/errors.rs b/src/errors.rs
+index 91477b3..50079a3 100644
+--- a/src/errors.rs
++++ b/src/errors.rs
+@@ -51,8 +51,8 @@ impl From<std::string::FromUtf16Error> for Error {
+ }
+ }
+
+-impl From<widestring::MissingNulError<u16>> for Error {
+- fn from(err: widestring::MissingNulError<u16>) -> Self {
++impl From<widestring::error::MissingNulTerminator> for Error {
++ fn from(err: widestring::error::MissingNulTerminator) -> Self {
+ ErrorKind::from(err).into()
+ }
+ }
+@@ -128,6 +128,6 @@ pub enum ErrorKind {
+ #[error("UTF-16 string is missing null terminator: {err}")]
+ Utf16MissingNull {
+ #[from]
+- err: widestring::MissingNulError<u16>,
++ err: widestring::error::MissingNulTerminator,
+ },
+ }
+diff --git a/src/reader.rs b/src/reader.rs
+index 64730d0..318c280 100644
+--- a/src/reader.rs
++++ b/src/reader.rs
+@@ -40,7 +40,7 @@ impl<'a> Reader<'a> {
+ }
+
+ pub(crate) fn bytes(&self) -> &[u8] {
+- self.0.bytes()
++ self.0.chunk()
+ }
+
+ pub(crate) fn remaining(&self) -> usize {
+diff --git a/src/utils.rs b/src/utils.rs
+index fd77181..074ff50 100644
+--- a/src/utils.rs
++++ b/src/utils.rs
+@@ -12,8 +12,7 @@ impl Utf16ToString for &[u8] {
+ .map(|v| u16::from_le_bytes([v[0], v[1]]))
+ .collect();
+
+- let value = U16CString::from_vec_with_nul(data)?;
+-
+- Ok(value.to_string()?)
++ let value = U16CString::from_vec_truncate(data);
++ Ok(value.to_string().unwrap())
+ }
+ }
diff --git a/gnu/packages/patches/rust-onenote-parser-for-clamav-parse-in-memory-buffer.patch b/gnu/packages/patches/rust-onenote-parser-for-clamav-parse-in-memory-buffer.patch
new file mode 100644
index 0000000000..77adc550ca
--- /dev/null
+++ b/gnu/packages/patches/rust-onenote-parser-for-clamav-parse-in-memory-buffer.patch
@@ -0,0 +1,52 @@
+From 8b450447e58143004b68dd21c11b710fdb79be92 Mon Sep 17 00:00:00 2001
+From: Micah Snyder <micasnyd@cisco.com>
+Date: Mon, 3 Jul 2023 21:44:57 -0700
+Subject: [PATCH] Add ability to parse section from in memory buffer
+
+Resolves: https://github.com/msiemens/onenote.rs/issues/12
+---
+ src/onenote/mod.rs | 23 ++++++++++++++++++++++-
+ 1 file changed, 22 insertions(+), 1 deletion(-)
+
+diff --git a/src/onenote/mod.rs b/src/onenote/mod.rs
+index de172c9..8bcb62b 100644
+--- a/src/onenote/mod.rs
++++ b/src/onenote/mod.rs
+@@ -6,8 +6,9 @@ use crate::onestore::parse_store;
+ use crate::reader::Reader;
+ use std::ffi::OsStr;
+ use std::fs::File;
+-use std::io::{BufReader, Read};
++use std::io::{BufReader, Read, Cursor};
+ use std::path::Path;
++use std::str::FromStr;
+
+ pub(crate) mod content;
+ pub(crate) mod embedded_file;
+@@ -76,6 +77,26 @@ impl Parser {
+ Ok(Notebook { entries: sections })
+ }
+
++ /// Parse a OneNote section buffer.
++ ///
++ /// The `data` argument must contain a OneNote section.
++ pub fn parse_section_buffer(&mut self, data: &[u8], file_name: &Path) -> Result<Section> {
++ let packaging = OneStorePackaging::parse(&mut Reader::new(data))?;
++ let store = parse_store(&packaging)?;
++
++ if store.schema_guid() != guid!({1F937CB4-B26F-445F-B9F8-17E20160E461}) {
++ return Err(ErrorKind::NotASectionFile {
++ file: file_name.to_string_lossy().into_owned(),
++ }
++ .into());
++ }
++
++ section::parse_section(
++ store,
++ file_name.to_string_lossy().into_owned(),
++ )
++ }
++
+ /// Parse a OneNote section file.
+ ///
+ /// The `path` argument must point to a `.one` file that contains a
diff --git a/gnu/packages/patches/rust-onenote-parser-for-clamav-property-type.patch b/gnu/packages/patches/rust-onenote-parser-for-clamav-property-type.patch
new file mode 100644
index 0000000000..ff94fa2630
--- /dev/null
+++ b/gnu/packages/patches/rust-onenote-parser-for-clamav-property-type.patch
@@ -0,0 +1,30 @@
+From 29c08532252b917543ff268284f926f30876bb79 Mon Sep 17 00:00:00 2001
+From: Matt Jolly <Matt.Jolly@footclan.ninja>
+Date: Mon, 24 Jun 2024 17:34:05 +1000
+Subject: [PATCH] PropertType: Specify type for custom discriminant values
+
+We use custom discriminant values for enum variants for "PropertType" without specifying the type.
+This causes it to default to "isize" which on 64bit platforms is big enough to hold the 32bit constants,
+but causes overflow when isize is 32bit.
+
+This issue was uncovered due to build failures on arm for Gentoo Linux as a dependency of ClamAV.
+
+Bug: https://bugs.gentoo.org/927214
+Signed-off-by: Matt Jolly <kangie@gentoo.org>
+Co-authored-by: Steven Newbury <steve@snewbury.org.uk>
+---
+ src/one/property/mod.rs | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/one/property/mod.rs b/src/one/property/mod.rs
+index 42841c6..fcc0481 100644
+--- a/src/one/property/mod.rs
++++ b/src/one/property/mod.rs
+@@ -23,6 +23,7 @@ mod references;
+ pub(crate) mod simple;
+ pub(crate) mod time;
+
++#[repr(u32)]
+ #[derive(Debug, Copy, Clone, PartialEq)]
+ #[allow(dead_code)]
+ #[allow(clippy::enum_clike_unportable_variant)]
--
2.46.0
N
N
Nicolas Graves wrote on 3 Nov 02:30 +0100
[PATCH v3 05/20] gnu: clamav: Add release-monitoring-url property.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241103013258.26141-6-ngraves@ngraves.fr
* gnu/packages/antivirus.scm (clamav)
[source]<uri>: Add secondary release URI.
[properties]: Add release-monitoring-url.
---
gnu/packages/antivirus.scm | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)

Toggle diff (31 lines)
diff --git a/gnu/packages/antivirus.scm b/gnu/packages/antivirus.scm
index d061b18b11..2161d60398 100644
--- a/gnu/packages/antivirus.scm
+++ b/gnu/packages/antivirus.scm
@@ -48,8 +48,13 @@ (define-public clamav
(version "0.103.11")
(source (origin
(method url-fetch)
- (uri (string-append "https://www.clamav.net/downloads/production/"
- "clamav-" version ".tar.gz"))
+ (uri
+ (list
+ (string-append "https://www.clamav.net/downloads/production/"
+ "clamav-" version ".tar.gz")
+ (string-append "https://github.com/Cisco-Talos/clamav/"
+ "releases/download/clamav-" version
+ "/clamav-" version ".tar.gz")))
(sha256
(base32
"04by1g3p6awhi3j1y6zpwzmasdnvjgi6lwm34l2gadlwgkdfpmv1"))
@@ -144,6 +149,8 @@ (define-public clamav
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.")
+ (properties `((release-monitoring-url
+ . "https://github.com/Cisco-Talos/clamav/releases")))
(license (list license:gpl2+ ;ClamAV itself
license:lgpl2.1 ;libclamav/mspack.[ch]
license:public-domain ;libclamav/7z/*, libclamav/rijndael.[ch], etc...
--
2.46.0
N
N
Nicolas Graves wrote on 3 Nov 02:30 +0100
[PATCH v3 06/20] gnu: clamav: Update to 1.4.1.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241103013258.26141-7-ngraves@ngraves.fr
* 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.
---
gnu/packages/antivirus.scm | 129 +++++++++++++++----------------------
1 file changed, 51 insertions(+), 78 deletions(-)

Toggle diff (188 lines)
diff --git a/gnu/packages/antivirus.scm b/gnu/packages/antivirus.scm
index 2161d60398..1a23657a61 100644
--- a/gnu/packages/antivirus.scm
+++ b/gnu/packages/antivirus.scm
@@ -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
--
2.46.0
N
N
Nicolas Graves wrote on 3 Nov 02:30 +0100
[PATCH v3 07/20] gnu: Add rust-hamming-0.1.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241103013258.26141-8-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-hamming-0.1): New variable.
---
gnu/packages/crates-io.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (37 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 2a66385d10..5dc34eaa18 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -31388,6 +31388,30 @@ (define-public rust-hamcrest2-0.3
"This package provides a port of the Hamcrest testing library.")
(license (list license:expat license:asl2.0))))
+(define-public rust-hamming-0.1
+ (package
+ (name "rust-hamming")
+ (version "0.1.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "hamming" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1q9hri1l1x1y7vv153kvdw9lkqslmbwgia5r3qj6i39pfji3s135"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-development-inputs
+ (("rust-quickcheck" ,rust-quickcheck-0.2)
+ ("rust-rand" ,rust-rand-0.3))))
+ (home-page "https://github.com/huonw/hamming")
+ (synopsis "Count ones fast")
+ (description
+ "This package provides a tool to count ones, using rapid popcount
+(hamming weight) techniques. This provides a performant popcount and bitwise
+hamming distance for a slice of bytes.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-hash-hasher-2
(package
(name "rust-hash-hasher")
--
2.46.0
N
N
Nicolas Graves wrote on 3 Nov 02:30 +0100
[PATCH v3 08/20] gnu: Add rust-primal-bit-0.3.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241103013258.26141-9-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-primal-bit-0.3): New variable.
---
gnu/packages/crates-io.scm | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 5dc34eaa18..b4559865b7 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -56601,6 +56601,27 @@ (define-public rust-prettytable-rs-0.8
formatted tables in terminal.")
(license license:bsd-3)))
+(define-public rust-primal-bit-0.3
+ (package
+ (name "rust-primal-bit")
+ (version "0.3.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "primal-bit" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "0mb0cdxhlm6phhl2f4d7nf7g4yrnd8xdq07m7liw7b5fp3djj915"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs (("rust-hamming" ,rust-hamming-0.1))))
+ (home-page "https://github.com/huonw/primal")
+ (synopsis "Bit-vector specialised for rust-primal")
+ (description
+ "This package provides a bit-vector specialised to the
+prime-number-related needs of @code{rust-primal}.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-print-bytes-1
(package
(name "rust-print-bytes")
--
2.46.0
N
N
Nicolas Graves wrote on 3 Nov 02:30 +0100
[PATCH v3 09/20] gnu: Add rust-primal-check-0.3.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241103013258.26141-10-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-primal-check-0.3): New variable.
---
gnu/packages/crates-io.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (35 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index b4559865b7..89ce5e176a 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -56622,6 +56622,28 @@ (define-public rust-primal-bit-0.3
prime-number-related needs of @code{rust-primal}.")
(license (list license:expat license:asl2.0))))
+(define-public rust-primal-check-0.3
+ (package
+ (name "rust-primal-check")
+ (version "0.3.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "primal-check" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "025xnak4rhkwa4h970bjb3cvp2k853wviyr84n8gjfhy65dqj3fw"))))
+ (build-system cargo-build-system)
+ ;; Circular development input rust-primal
+ (arguments
+ `(#:skip-build? #t
+ #:cargo-inputs (("rust-num-integer" ,rust-num-integer-0.1))))
+ (home-page "https://github.com/huonw/primal")
+ (synopsis "Test primality")
+ (description
+ "This package provides a standalone primality testing tool.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-print-bytes-1
(package
(name "rust-print-bytes")
--
2.46.0
N
N
Nicolas Graves wrote on 3 Nov 02:30 +0100
[PATCH v3 10/20] gnu: Add rust-primal-estimate-0.3.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241103013258.26141-11-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-primal-estimate-0.3): New variable.
---
gnu/packages/crates-io.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (35 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 89ce5e176a..fccbd97f56 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -56644,6 +56644,28 @@ (define-public rust-primal-check-0.3
"This package provides a standalone primality testing tool.")
(license (list license:expat license:asl2.0))))
+(define-public rust-primal-estimate-0.3
+ (package
+ (name "rust-primal-estimate")
+ (version "0.3.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "primal-estimate" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "08nq0n0r35rni65h79fynync0wyy8agrxy5mfmg0hq9s1c510cm4"))))
+ (build-system cargo-build-system)
+ ;; Circular development input rust-primal
+ (arguments
+ `(#:skip-build? #t))
+ (home-page "https://github.com/huonw/primal")
+ (synopsis "Estimate upper and lower bounds for the k-th prime")
+ (description
+ "This package provides a state-of-the-art estimation of upper and lower
+bounds for the number of primes below n and the k-th prime.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-print-bytes-1
(package
(name "rust-print-bytes")
--
2.46.0
N
N
Nicolas Graves wrote on 3 Nov 02:30 +0100
[PATCH v3 11/20] gnu: Add rust-primal-sieve-0.3.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241103013258.26141-12-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-primal-sieve-0.3): New variable.
---
gnu/packages/crates-io.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

Toggle diff (36 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index fccbd97f56..8c336f5f12 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -56666,6 +56666,29 @@ (define-public rust-primal-estimate-0.3
bounds for the number of primes below n and the k-th prime.")
(license (list license:expat license:asl2.0))))
+(define-public rust-primal-sieve-0.3
+ (package
+ (name "rust-primal-sieve")
+ (version "0.3.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "primal-sieve" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1lzdllk78jqdp93h15l69s4xglbjcf6jlq6khccka0r2v2b2g64f"))))
+ (build-system cargo-build-system)
+ (arguments
+ ;; Circular development input rust-primal
+ `(#:skip-build? #t
+ #:cargo-inputs (("rust-primal-bit" ,rust-primal-bit-0.3)
+ ("rust-primal-estimate" ,rust-primal-estimate-0.3)
+ ("rust-smallvec" ,rust-smallvec-1))))
+ (home-page "https://github.com/huonw/primal")
+ (synopsis "Prime sieve")
+ (description "This package provides a high performance prime sieve.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-print-bytes-1
(package
(name "rust-print-bytes")
--
2.46.0
N
N
Nicolas Graves wrote on 3 Nov 02:30 +0100
[PATCH v3 12/20] gnu: Add rust-primal-slowsieve-0.3.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241103013258.26141-13-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-primal-slowsieve-0.3): New variable.
---
gnu/packages/crates-io.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (37 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 8c336f5f12..455d8d2608 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -56689,6 +56689,30 @@ (define-public rust-primal-sieve-0.3
(description "This package provides a high performance prime sieve.")
(license (list license:expat license:asl2.0))))
+(define-public rust-primal-slowsieve-0.3
+ (package
+ (name "rust-primal-slowsieve")
+ (version "0.3.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "primal-slowsieve" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "02pixp7xprkmj0fvjgg6n4dn5f8syr6xj2m2dxn0nyg06b8lipy9"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs (("rust-primal-bit" ,rust-primal-bit-0.3)
+ ("rust-primal-estimate" ,rust-primal-estimate-0.3))
+ #:cargo-development-inputs (("rust-criterion" ,rust-criterion-0.3))))
+ (home-page "https://github.com/huonw/primal")
+ (synopsis "Simple sieve of Eratosthenes")
+ (description
+ "This package provides a simple sieve of Eratosthenes designed for
+testing faster sieves. For use in Rust crates, use @code{rust-primal-sieve}
+or @code{rust-primal} instead.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-print-bytes-1
(package
(name "rust-print-bytes")
--
2.46.0
N
N
Nicolas Graves wrote on 3 Nov 02:30 +0100
[PATCH v3 13/20] gnu: Add rust-primal-0.3.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241103013258.26141-14-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-primal-0.3): New variable.
---
gnu/packages/crates-io.scm | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)

Toggle diff (40 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 455d8d2608..108c9a126e 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -56601,6 +56601,33 @@ (define-public rust-prettytable-rs-0.8
formatted tables in terminal.")
(license license:bsd-3)))
+(define-public rust-primal-0.3
+ (package
+ (name "rust-primal")
+ (version "0.3.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "primal" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1s6n396cssbr86f9w31sppdf06xsymgrl7y9gw0yccl5jiag7rdi"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs (("rust-primal-check" ,rust-primal-check-0.3)
+ ("rust-primal-estimate" ,rust-primal-estimate-0.3)
+ ("rust-primal-sieve" ,rust-primal-sieve-0.3))
+ #:cargo-development-inputs
+ (("rust-primal-slowsieve" ,rust-primal-slowsieve-0.3))))
+ (home-page "https://github.com/huonw/primal")
+ (synopsis "Various tools for prime numbers")
+ (description
+ "This package provides various tools to work with prime numbers. It
+includes: optimised prime sieves, checking for primality, enumerating primes,
+factorising numbers, and state-of-the-art estimation of upper and lower bounds
+for the number of primes below n and the k-th prime.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-primal-bit-0.3
(package
(name "rust-primal-bit")
--
2.46.0
N
N
Nicolas Graves wrote on 3 Nov 02:30 +0100
[PATCH v3 14/20] gnu: rust-crc-any-2: Update to 2.5.0.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241103013258.26141-15-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-crc-any-2): Update to 2.5.0.
---
gnu/packages/crates-io.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 108c9a126e..be8153b11d 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -16925,7 +16925,7 @@ (define-public rust-crc-1
(define-public rust-crc-any-2
(package
(name "rust-crc-any")
- (version "2.3.12")
+ (version "2.5.0")
(source
(origin
(method url-fetch)
@@ -16933,7 +16933,7 @@ (define-public rust-crc-any-2
(file-name
(string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0fq85y5akcadahnj5nqbs47qhgp5cpfn2z19zc3gp4wpxr3989kr"))))
+ (base32 "0wzs26q5cf29fhfnrkrjsr8dpai0rlm4im8b53by8rbrbzzwjbm6"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
--
2.46.0
N
N
Nicolas Graves wrote on 3 Nov 02:30 +0100
[PATCH v3 15/20] gnu: Add rust-delharc-0.6.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241103013258.26141-16-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-delharc-0.6): New variable.
---
gnu/packages/crates-io.scm | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)

Toggle diff (40 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index be8153b11d..fac8c5f581 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -20408,6 +20408,33 @@ (define-public rust-dejavu-2
"This package provides the @code{DejaVu} font family for embedding.")
(license (list license:expat license:asl2.0))))
+(define-public rust-delharc-0.6
+ (package
+ (name "rust-delharc")
+ (version "0.6.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "delharc" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "18g5haj6bj92azif4jifhdy9vrv6blg3wyvpmxslh2gm2wkbm4qw"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:tests? #f ; Missing files
+ #:cargo-inputs (("rust-bitflags" ,rust-bitflags-2)
+ ("rust-chrono" ,rust-chrono-0.4)
+ ("rust-memchr" ,rust-memchr-2))
+ #:cargo-development-inputs (("rust-crc-any" ,rust-crc-any-2)
+ ("rust-rand" ,rust-rand-0.8))))
+ (home-page "https://github.com/royaltm/rust-delharc")
+ (synopsis
+ "Parse and extract files from LHA/LZH archives.")
+ (description
+ "This package provides a Rust library for parsing and extracting files
+from LHA/LZH archives, which are often suffixed @code{.lha} or @code{.lzh}. ")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-demo-hack-0.0
(package
(name "rust-demo-hack")
--
2.46.0
N
N
Nicolas Graves wrote on 3 Nov 02:30 +0100
[PATCH v3 16/20] gnu: Add rust-transpose-0.2.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241103013258.26141-17-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-transpose-0.2): New variable.
---
gnu/packages/crates-io.scm | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index fac8c5f581..725fa329e6 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -85035,6 +85035,27 @@ (define-public rust-traitobject-0.1
(license (list license:asl2.0
license:expat))))
+(define-public rust-transpose-0.2
+ (package
+ (name "rust-transpose")
+ (version "0.2.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "transpose" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "0zp74v7jrjg4jr654dncdj6hqvacicsywyhc62jawgxwhvnimmhs"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs (("rust-num-integer" ,rust-num-integer-0.1)
+ ("rust-strength-reduce" ,rust-strength-reduce-0.2))))
+ (home-page "https://github.com/ejmahler/transpose")
+ (synopsis "Utility for transposing multi-dimensional data")
+ (description
+ "This package provides utilities for transposing multi-dimensional data.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-trash-3
(package
(name "rust-trash")
--
2.46.0
N
N
Nicolas Graves wrote on 3 Nov 02:30 +0100
[PATCH v3 17/20] gnu: rust-strength-reduce-0.2: Update to 0.2.4.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241103013258.26141-18-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-strength-reduce-0.2): Update to 0.2.4.
[arguments]<#:skip-build?>: Drop option.
<#:cargo-development-inputs>: Add rust-num-bigint.
---
gnu/packages/crates-io.scm | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)

Toggle diff (28 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 725fa329e6..8f515590cb 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -75177,16 +75177,18 @@ (define-public rust-streaming-stats-0.2
(define-public rust-strength-reduce-0.2
(package
(name "rust-strength-reduce")
- (version "0.2.3")
+ (version "0.2.4")
(source
(origin
(method url-fetch)
(uri (crate-uri "strength_reduce" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0m12phq654mfxpmh2h5akqkag5ha6nlhjc2bp9jwarr5r1qjzzx3"))))
+ (base32 "10jdq9dijjdkb20wg1dmwg447rnj37jbq0mwvbadvqi2gys5x2gy"))))
(build-system cargo-build-system)
- (arguments `(#:skip-build? #t))
+ (arguments
+ `(#:cargo-development-inputs
+ (("rust-num-bigint" ,rust-num-bigint-0.4))))
(home-page "http://github.com/ejmahler/strength_reduce")
(synopsis "Faster integer division and modulus operations")
(description "Strength_reduce implements integer division and modulo via
--
2.46.0
N
N
Nicolas Graves wrote on 3 Nov 02:30 +0100
[PATCH v3 18/20] gnu: Add rust-rustfft-6.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241103013258.26141-19-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-rustfft-6): New variable.
---
gnu/packages/crates-io.scm | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)

Toggle diff (45 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 8f515590cb..7f78804380 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -66459,6 +66459,38 @@ (define-public rust-rustdoc-types-0.23
(description "Types for rustdoc's json output.")
(license (list license:expat license:asl2.0))))
+(define-public rust-rustfft-6
+ (package
+ (name "rust-rustfft")
+ (version "6.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "rustfft" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "11hx83yr2h2jszkba9qhq2d08q9i5rsashq62rfhqvahpihnb023"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-development-inputs
+ (("rust-rand" ,rust-rand-0.8)
+ ("rust-paste" ,rust-paste-1)
+ ("rust-getrandom" ,rust-getrandom-0.2)
+ ("rust-wasm-bindgen-test" ,rust-wasm-bindgen-test-0.3))
+ #:cargo-inputs (("rust-num-complex" ,rust-num-complex-0.4)
+ ("rust-num-integer" ,rust-num-integer-0.1)
+ ("rust-num-traits" ,rust-num-traits-0.2)
+ ("rust-primal-check" ,rust-primal-check-0.3)
+ ("rust-strength-reduce" ,rust-strength-reduce-0.2)
+ ("rust-transpose" ,rust-transpose-0.2)
+ ("rust-version-check" ,rust-version-check-0.9))))
+ (home-page "https://github.com/ejmahler/RustFFT")
+ (synopsis "Rust FFT library")
+ (description
+ "This package provides a high-performance FFT (Fast Fourier Transform)
+library written in pure Rust.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-rustfix-0.8
(package
(name "rust-rustfix")
--
2.46.0
N
N
Nicolas Graves wrote on 3 Nov 02:30 +0100
[PATCH v3 19/20] gnu: Add rust-rustdct-0.7.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241103013258.26141-20-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-rustdct-0.7): New variable.
---
gnu/packages/crates-io.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (35 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 7f78804380..7b276676ff 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -66386,6 +66386,28 @@ (define-public rust-rustc-version-0.1
`(#:cargo-inputs
(("rust-semver" ,rust-semver-0.1))))))
+(define-public rust-rustdct-0.7
+ (package
+ (name "rust-rustdct")
+ (version "0.7.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "rustdct" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "0lcm1191xx8wizima5j3n25fs90x58v3q1kwg6cbzafn0m8maqcb"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs (("rust-rustfft" ,rust-rustfft-6))
+ #:cargo-development-inputs (("rust-rand" ,rust-rand-0.8))))
+ (home-page "https://github.com/ejmahler/rust_dct")
+ (synopsis "Compute Discrete Cosine Transforms (DCT) in pure Rust")
+ (description
+ "This package provides a Rust library to compute the main Discrete Cosine
+Transforms (DCT) of any size in O(nlogn) time.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-rustdoc-json-0.8
(package
(name "rust-rustdoc-json")
--
2.46.0
N
N
Nicolas Graves wrote on 3 Nov 02:30 +0100
[PATCH v3 20/20] gnu: clamav: Unbundle rust dependencies.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241103013258.26141-21-ngraves@ngraves.fr
* gnu/packages/antivirus.scm (clamav)
[origin]<snippet>: Unbundle rust dependencies.
[build-system]: Switch to cargo-build-system.
[arguments]: Adapt to the change of base build-system.
[native-inputs]: Add cmake-minimal. Remove rust and rust:cargo.
---
gnu/packages/antivirus.scm | 135 +++++++++++++++++++++++++++----------
1 file changed, 99 insertions(+), 36 deletions(-)

Toggle diff (168 lines)
diff --git a/gnu/packages/antivirus.scm b/gnu/packages/antivirus.scm
index 1a23657a61..b561ff060a 100644
--- a/gnu/packages/antivirus.scm
+++ b/gnu/packages/antivirus.scm
@@ -31,12 +31,17 @@ (define-module (gnu packages antivirus)
#:use-module (gnu packages)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages cmake)
+ #:use-module (gnu packages crates-crypto)
+ #:use-module (gnu packages crates-graphics)
+ #:use-module (gnu packages crates-io)
#:use-module (gnu packages curl)
#: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-apps)
#:use-module (gnu packages rust)
#:use-module (gnu packages tls)
#:use-module (gnu packages web)
@@ -62,49 +67,107 @@ (define-public clamav
(snippet
'(begin
(delete-file "Cargo.lock")
- (for-each
- delete-file
- (find-files ".cargo/vendor" ".cargo-checksum\\.json"))
(for-each delete-file-recursively
- '("win32" ; unnecessary
+ '(".cargo" ; vendored rust inputs
+ "win32" ; unnecessary
"libclamunrar")))))) ; non-free license
- (build-system cmake-build-system)
+ (build-system cargo-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\"")))))))))
+ (let ((cargo-inputs
+ `(("rust-flate2" ,rust-flate2-1)
+ ("rust-hex" ,rust-hex-0.4)
+ ("rust-libc" ,rust-libc-0.2)
+ ("rust-log" ,rust-log-0.4)
+ ("rust-sha2" ,rust-sha2-0.10)
+ ("rust-tempfile" ,rust-tempfile-3)
+ ("rust-thiserror" ,rust-thiserror-1)
+ ("rust-image" ,rust-image-0.24)
+ ("rust-rustdct" ,rust-rustdct-0.7)
+ ("rust-transpose" ,rust-transpose-0.2)
+ ("rust-num-traits" ,rust-num-traits-0.2)
+ ("rust-base64" ,rust-base64-0.21)
+ ("rust-sha1" ,rust-sha1-0.10)
+ ("rust-unicode-segmentation" ,rust-unicode-segmentation-1)
+ ("rust-bindgen" ,rust-bindgen-0.66)
+ ("rust-onenote-parser" ,rust-onenote-parser-for-clamav)
+ ("rust-hex-literal" ,rust-hex-literal-0.4)
+ ("rust-inflate" ,rust-inflate-0.4)
+ ("rust-bzip2-rs" ,rust-bzip2-rs-0.1)
+ ("rust-byteorder" ,rust-byteorder-1)
+ ("rust-delharc" ,rust-delharc-0.6)))
+ (cargo-development-inputs
+ `(("rust-cbindgen" ,rust-cbindgen-0.26)
+ ("rust-bindgen" ,rust-bindgen-0.66))))
+ (list
+ #:cargo-inputs cargo-inputs
+ #:cargo-development-inputs cargo-development-inputs
+ #:vendor-dir ".cargo/vendor"
+ #:imported-modules `(,@%cmake-build-system-modules
+ ,@%cargo-build-system-modules)
+ #:modules '((guix build cargo-build-system)
+ ((guix build cmake-build-system) #:prefix cmake:)
+ (guix build utils))
+ #:phases
+ #~(modify-phases %standard-phases
+ ;; There is a .exe file used in unit tests.
+ (delete 'check-for-pregenerated-files)
+ (add-after 'configure 'fix-cargo-inputs-vendoring
+ (lambda _
+ ;; Reproduce the original layout, fails with config.
+ (rename-file ".cargo/config" ".cargo/config.toml")
+ ;; Wrongly placed by configure
+ (delete-file-recursively
+ (string-append ".cargo/vendor/clamav-" #$version ".tar.zst"))))
+ (add-after 'patch-cargo-checksums 'cmake-configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ ((assoc-ref cmake:%standard-phases 'configure)
+ #:configure-flags
+ (list "-DENABLE_MILTER=OFF" "-DENABLE_UNRAR=OFF")
+ #:outputs outputs)))
+ (replace 'build
+ (assoc-ref cmake:%standard-phases 'build))
+ (add-after 'patch-cargo-checksums 'patch-rust-requirements
+ (lambda _
+ (substitute* "libclamav_rust/Cargo.toml"
+ (("onenote_parser = .*")
+ (format #f "onenote_parser = ~s~%"
+ #$(package-version
+ (car (assoc-ref cargo-inputs
+ "rust-onenote-parser")))))
+ (("^bindgen = .*")
+ (format #f "bindgen = ~s~%"
+ #$(package-version
+ (car (assoc-ref cargo-inputs
+ "rust-bindgen")))))
+ (("cbindgen = \\{ version =\".*\",")
+ (format #f "cbindgen = { version =~s,"
+ #$(package-version
+ (car (assoc-ref cargo-development-inputs
+ "rust-cbindgen"))))))))
+ (delete 'package)
+ (replace 'install
+ (assoc-ref cmake:%standard-phases 'install))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ ((assoc-ref cmake:%standard-phases 'check)
+ #:tests? tests?
+ #:parallel-tests? #t
+ #:test-target "test")))
+ (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 check ; for tests
+ cmake-minimal
pkg-config
python-minimal
- python-pytest
- rust
- (list rust "cargo")))
+ python-pytest))
(inputs
(list bzip2
curl
--
2.46.0
N
N
Nicolas Graves wrote on 6 Nov 00:14 +0100
[PATCH v4 01/20] gnu: rust-widestring-0.4: Update to 0.4.3.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241105231519.22378-1-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-widestring-0.4): Update to 0.4.3.
---
gnu/packages/crates-io.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index a377d300c4..f66399c2eb 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -90699,7 +90699,7 @@ (define-public rust-widestring-0.4
(package
(inherit rust-widestring-0.5)
(name "rust-widestring")
- (version "0.4.2")
+ (version "0.4.3")
(source
(origin
(method url-fetch)
@@ -90707,7 +90707,7 @@ (define-public rust-widestring-0.4
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "13565qy4jhpg4x0xw8mwxzzsh0p8c93p5208lh6kpwp0q01y6qx7"))))
+ "0z3ba8qrxb62vpfgk7n2xs2grm9kdaj1cz4q8s0gs8fx8h0r8s61"))))
(arguments
`(#:cargo-development-inputs
(("rust-winapi" ,rust-winapi-0.3))))))
--
2.46.0
N
N
Nicolas Graves wrote on 6 Nov 00:14 +0100
[PATCH v4 02/20] gnu: rust-enum-primitive-derive-0.2: Update to 0.2.2.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241105231519.22378-2-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-enum-primitive-derive-0.2): Update to 0.2.2.
---
gnu/packages/crates-io.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index f66399c2eb..0659a10ca1 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -24068,7 +24068,7 @@ (define-public rust-enum-primitive-0.1
(define-public rust-enum-primitive-derive-0.2
(package
(name "rust-enum-primitive-derive")
- (version "0.2.1")
+ (version "0.2.2")
(source
(origin
(method url-fetch)
@@ -24077,7 +24077,7 @@ (define-public rust-enum-primitive-derive-0.2
(string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0h1k2izdl5lf2na8xnj7rgwjm8gawxc2p1w8j6ahifvyka7jhljz"))))
+ "03ibjjx8dc4akpq8ck24qda5ix4jybz9jagfxykd0s6vxb2vjxf3"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
--
2.46.0
N
N
Nicolas Graves wrote on 6 Nov 00:14 +0100
[PATCH v4 03/20] gnu: Add rust-onenote-parser-0.3.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241105231519.22378-3-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-onenote-parser-0.3): New variable.
---
gnu/packages/crates-io.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (43 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 0659a10ca1..2ba9ca3bf0 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -49317,6 +49317,36 @@ (define-public rust-omnipath-0.1
(description "This package provides a path utility library.")
(license (list license:expat license:asl2.0))))
+(define-public rust-onenote-parser-0.3
+ (package
+ (name "rust-onenote-parser")
+ (version "0.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "onenote_parser" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "12rj3ixhnxvl2mpkad3ng4b8fx4ynxhdlwzxba36c8i98ls57zzf"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs
+ (("rust-bytes" ,rust-bytes-0.5)
+ ("rust-encoding-rs" ,rust-encoding-rs-0.8)
+ ("rust-enum-primitive-derive" ,rust-enum-primitive-derive-0.2)
+ ("rust-itertools" ,rust-itertools-0.9)
+ ("rust-num-traits" ,rust-num-traits-0.2)
+ ("rust-paste" ,rust-paste-1)
+ ("rust-thiserror" ,rust-thiserror-1)
+ ("rust-uuid" ,rust-uuid-0.8)
+ ("rust-widestring" ,rust-widestring-0.4))
+ #:cargo-development-inputs (("rust-insta" ,rust-insta-1))))
+ (home-page "https://github.com/msiemens/onenote.rs")
+ (synopsis "Parser for Microsoft OneNote files")
+ (description
+ "This package provides a parser for Microsoft OneNote files.")
+ (license license:mpl2.0)))
+
(define-public rust-onig-6
(package
(name "rust-onig")
--
2.46.0
N
N
Nicolas Graves wrote on 6 Nov 00:14 +0100
[PATCH v4 04/20] gnu: Add rust-onenote-parser-for-clamav.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241105231519.22378-4-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-onenote-parser-for-clamav): New
variable.
* gnu/packages/patches/rust-onenote-parser-for-clamav-deps.patch
* gnu/packages/patches/rust-onenote-parser-for-clamav-parse-in-memory-buffer.patch
* gnu/packages/patches/rust-onenote-parser-for-clamav-property-type.patch
Add patches here...
* gnu/local.mk: ...and here.
---
gnu/local.mk | 3 +
gnu/packages/crates-io.scm | 27 ++++++
.../rust-onenote-parser-for-clamav-deps.patch | 88 +++++++++++++++++++
...er-for-clamav-parse-in-memory-buffer.patch | 52 +++++++++++
...note-parser-for-clamav-property-type.patch | 30 +++++++
5 files changed, 200 insertions(+)
create mode 100644 gnu/packages/patches/rust-onenote-parser-for-clamav-deps.patch
create mode 100644 gnu/packages/patches/rust-onenote-parser-for-clamav-parse-in-memory-buffer.patch
create mode 100644 gnu/packages/patches/rust-onenote-parser-for-clamav-property-type.patch

Toggle diff (242 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 6eb01ca466..8bb2b41e2f 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2136,6 +2136,9 @@ dist_patch_DATA = \
%D%/packages/patches/rust-ndarray-0.13-remove-blas-src.patch \
%D%/packages/patches/rust-ndarray-0.14-remove-blas-src.patch \
%D%/packages/patches/rust-nettle-disable-vendor.patch \
+ %D%/packages/patches/rust-onenote-parser-for-clamav-deps.patch \
+ %D%/packages/patches/rust-onenote-parser-for-clamav-parse-in-memory-buffer.patch \
+ %D%/packages/patches/rust-onenote-parser-for-clamav-property-type.patch \
%D%/packages/patches/rust-poem-1-fewer-deps.patch \
%D%/packages/patches/rust-rspec-1-remove-clippy.patch \
%D%/packages/patches/rust-trash-2-update-windows.patch \
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 2ba9ca3bf0..e7124b088d 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -49347,6 +49347,33 @@ (define-public rust-onenote-parser-0.3
"This package provides a parser for Microsoft OneNote files.")
(license license:mpl2.0)))
+(define-public rust-onenote-parser-for-clamav
+ (package
+ (inherit rust-onenote-parser-0.3)
+ (name "rust-onenote-parser-for-clamav")
+ (source (origin
+ (inherit (package-source rust-onenote-parser-0.3))
+ (patches
+ (search-patches
+ "rust-onenote-parser-for-clamav-deps.patch"
+ "rust-onenote-parser-for-clamav-parse-in-memory-buffer.patch"
+ "rust-onenote-parser-for-clamav-property-type.patch"))
+ (snippet #~(begin
+ (delete-file "Cargo.toml")
+ (rename-file "Cargo.toml.orig" "Cargo.toml")))))
+ (arguments
+ `(#:cargo-inputs
+ (("rust-bytes" ,rust-bytes-1)
+ ("rust-encoding-rs" ,rust-encoding-rs-0.8)
+ ("rust-enum-primitive-derive" ,rust-enum-primitive-derive-0.2)
+ ("rust-itertools" ,rust-itertools-0.10)
+ ("rust-num-traits" ,rust-num-traits-0.2)
+ ("rust-paste" ,rust-paste-1)
+ ("rust-thiserror" ,rust-thiserror-1)
+ ("rust-uuid" ,rust-uuid-1)
+ ("rust-widestring" ,rust-widestring-1))
+ #:cargo-development-inputs (("rust-insta" ,rust-insta-1))))))
+
(define-public rust-onig-6
(package
(name "rust-onig")
diff --git a/gnu/packages/patches/rust-onenote-parser-for-clamav-deps.patch b/gnu/packages/patches/rust-onenote-parser-for-clamav-deps.patch
new file mode 100644
index 0000000000..24d5692573
--- /dev/null
+++ b/gnu/packages/patches/rust-onenote-parser-for-clamav-deps.patch
@@ -0,0 +1,88 @@
+From f940d8c8fa087554583158d50df071af89c516db Mon Sep 17 00:00:00 2001
+From: Simon Lamon <32477463+silamon@users.noreply.github.com>
+Date: Sat, 19 Nov 2022 20:32:07 +0100
+Subject: [PATCH] chore: upgrade dependencies (#9)
+
+Co-authored-by: Markus Siemens <markus@m-siemens.de>
+---
+ Cargo.toml.orig | 8 ++++----
+ src/errors.rs | 6 +++---
+ src/reader.rs | 2 +-
+ src/utils.rs | 5 ++---
+ 4 files changed, 10 insertions(+), 11 deletions(-)
+
+diff --git a/Cargo.toml.orig b/Cargo.toml.orig
+index 9afddd0..e302436 100644
+--- a/Cargo.toml.orig
++++ b/Cargo.toml.orig
+@@ -14,15 +14,15 @@ categories = ["parser-implementations"]
+ backtrace = []
+
+ [dependencies]
+-bytes = "0.5"
++bytes = "1.2.0"
+ encoding_rs = "0.8.31"
+ enum-primitive-derive = "0.2.2"
+-itertools = "0.9.0"
++itertools = "0.10.3"
+ num-traits = "0.2"
+ paste = "1.0"
+ thiserror = "1.0"
+-uuid = "0.8"
+-widestring = "0.4.3"
++uuid = "1.1.2"
++widestring = "1.0.2"
+
+ [dev-dependencies]
+ insta = "1.21.1"
+diff --git a/src/errors.rs b/src/errors.rs
+index 91477b3..50079a3 100644
+--- a/src/errors.rs
++++ b/src/errors.rs
+@@ -51,8 +51,8 @@ impl From<std::string::FromUtf16Error> for Error {
+ }
+ }
+
+-impl From<widestring::MissingNulError<u16>> for Error {
+- fn from(err: widestring::MissingNulError<u16>) -> Self {
++impl From<widestring::error::MissingNulTerminator> for Error {
++ fn from(err: widestring::error::MissingNulTerminator) -> Self {
+ ErrorKind::from(err).into()
+ }
+ }
+@@ -128,6 +128,6 @@ pub enum ErrorKind {
+ #[error("UTF-16 string is missing null terminator: {err}")]
+ Utf16MissingNull {
+ #[from]
+- err: widestring::MissingNulError<u16>,
++ err: widestring::error::MissingNulTerminator,
+ },
+ }
+diff --git a/src/reader.rs b/src/reader.rs
+index 64730d0..318c280 100644
+--- a/src/reader.rs
++++ b/src/reader.rs
+@@ -40,7 +40,7 @@ impl<'a> Reader<'a> {
+ }
+
+ pub(crate) fn bytes(&self) -> &[u8] {
+- self.0.bytes()
++ self.0.chunk()
+ }
+
+ pub(crate) fn remaining(&self) -> usize {
+diff --git a/src/utils.rs b/src/utils.rs
+index fd77181..074ff50 100644
+--- a/src/utils.rs
++++ b/src/utils.rs
+@@ -12,8 +12,7 @@ impl Utf16ToString for &[u8] {
+ .map(|v| u16::from_le_bytes([v[0], v[1]]))
+ .collect();
+
+- let value = U16CString::from_vec_with_nul(data)?;
+-
+- Ok(value.to_string()?)
++ let value = U16CString::from_vec_truncate(data);
++ Ok(value.to_string().unwrap())
+ }
+ }
diff --git a/gnu/packages/patches/rust-onenote-parser-for-clamav-parse-in-memory-buffer.patch b/gnu/packages/patches/rust-onenote-parser-for-clamav-parse-in-memory-buffer.patch
new file mode 100644
index 0000000000..77adc550ca
--- /dev/null
+++ b/gnu/packages/patches/rust-onenote-parser-for-clamav-parse-in-memory-buffer.patch
@@ -0,0 +1,52 @@
+From 8b450447e58143004b68dd21c11b710fdb79be92 Mon Sep 17 00:00:00 2001
+From: Micah Snyder <micasnyd@cisco.com>
+Date: Mon, 3 Jul 2023 21:44:57 -0700
+Subject: [PATCH] Add ability to parse section from in memory buffer
+
+Resolves: https://github.com/msiemens/onenote.rs/issues/12
+---
+ src/onenote/mod.rs | 23 ++++++++++++++++++++++-
+ 1 file changed, 22 insertions(+), 1 deletion(-)
+
+diff --git a/src/onenote/mod.rs b/src/onenote/mod.rs
+index de172c9..8bcb62b 100644
+--- a/src/onenote/mod.rs
++++ b/src/onenote/mod.rs
+@@ -6,8 +6,9 @@ use crate::onestore::parse_store;
+ use crate::reader::Reader;
+ use std::ffi::OsStr;
+ use std::fs::File;
+-use std::io::{BufReader, Read};
++use std::io::{BufReader, Read, Cursor};
+ use std::path::Path;
++use std::str::FromStr;
+
+ pub(crate) mod content;
+ pub(crate) mod embedded_file;
+@@ -76,6 +77,26 @@ impl Parser {
+ Ok(Notebook { entries: sections })
+ }
+
++ /// Parse a OneNote section buffer.
++ ///
++ /// The `data` argument must contain a OneNote section.
++ pub fn parse_section_buffer(&mut self, data: &[u8], file_name: &Path) -> Result<Section> {
++ let packaging = OneStorePackaging::parse(&mut Reader::new(data))?;
++ let store = parse_store(&packaging)?;
++
++ if store.schema_guid() != guid!({1F937CB4-B26F-445F-B9F8-17E20160E461}) {
++ return Err(ErrorKind::NotASectionFile {
++ file: file_name.to_string_lossy().into_owned(),
++ }
++ .into());
++ }
++
++ section::parse_section(
++ store,
++ file_name.to_string_lossy().into_owned(),
++ )
++ }
++
+ /// Parse a OneNote section file.
+ ///
+ /// The `path` argument must point to a `.one` file that contains a
diff --git a/gnu/packages/patches/rust-onenote-parser-for-clamav-property-type.patch b/gnu/packages/patches/rust-onenote-parser-for-clamav-property-type.patch
new file mode 100644
index 0000000000..ff94fa2630
--- /dev/null
+++ b/gnu/packages/patches/rust-onenote-parser-for-clamav-property-type.patch
@@ -0,0 +1,30 @@
+From 29c08532252b917543ff268284f926f30876bb79 Mon Sep 17 00:00:00 2001
+From: Matt Jolly <Matt.Jolly@footclan.ninja>
+Date: Mon, 24 Jun 2024 17:34:05 +1000
+Subject: [PATCH] PropertType: Specify type for custom discriminant values
+
+We use custom discriminant values for enum variants for "PropertType" without specifying the type.
+This causes it to default to "isize" which on 64bit platforms is big enough to hold the 32bit constants,
+but causes overflow when isize is 32bit.
+
+This issue was uncovered due to build failures on arm for Gentoo Linux as a dependency of ClamAV.
+
+Bug: https://bugs.gentoo.org/927214
+Signed-off-by: Matt Jolly <kangie@gentoo.org>
+Co-authored-by: Steven Newbury <steve@snewbury.org.uk>
+---
+ src/one/property/mod.rs | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/one/property/mod.rs b/src/one/property/mod.rs
+index 42841c6..fcc0481 100644
+--- a/src/one/property/mod.rs
++++ b/src/one/property/mod.rs
+@@ -23,6 +23,7 @@ mod references;
+ pub(crate) mod simple;
+ pub(crate) mod time;
+
++#[repr(u32)]
+ #[derive(Debug, Copy, Clone, PartialEq)]
+ #[allow(dead_code)]
+ #[allow(clippy::enum_clike_unportable_variant)]
--
2.46.0
N
N
Nicolas Graves wrote on 6 Nov 00:14 +0100
[PATCH v4 05/20] gnu: clamav: Add release-monitoring-url property.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241105231519.22378-5-ngraves@ngraves.fr
* gnu/packages/antivirus.scm (clamav)
[source]<uri>: Add secondary release URI.
[properties]: Add release-monitoring-url.
---
gnu/packages/antivirus.scm | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)

Toggle diff (31 lines)
diff --git a/gnu/packages/antivirus.scm b/gnu/packages/antivirus.scm
index d061b18b11..2161d60398 100644
--- a/gnu/packages/antivirus.scm
+++ b/gnu/packages/antivirus.scm
@@ -48,8 +48,13 @@ (define-public clamav
(version "0.103.11")
(source (origin
(method url-fetch)
- (uri (string-append "https://www.clamav.net/downloads/production/"
- "clamav-" version ".tar.gz"))
+ (uri
+ (list
+ (string-append "https://www.clamav.net/downloads/production/"
+ "clamav-" version ".tar.gz")
+ (string-append "https://github.com/Cisco-Talos/clamav/"
+ "releases/download/clamav-" version
+ "/clamav-" version ".tar.gz")))
(sha256
(base32
"04by1g3p6awhi3j1y6zpwzmasdnvjgi6lwm34l2gadlwgkdfpmv1"))
@@ -144,6 +149,8 @@ (define-public clamav
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.")
+ (properties `((release-monitoring-url
+ . "https://github.com/Cisco-Talos/clamav/releases")))
(license (list license:gpl2+ ;ClamAV itself
license:lgpl2.1 ;libclamav/mspack.[ch]
license:public-domain ;libclamav/7z/*, libclamav/rijndael.[ch], etc...
--
2.46.0
N
N
Nicolas Graves wrote on 6 Nov 00:14 +0100
[PATCH v4 06/20] gnu: clamav: Update to 1.4.1.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241105231519.22378-6-ngraves@ngraves.fr
* 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.
---
gnu/packages/antivirus.scm | 129 +++++++++++++++----------------------
1 file changed, 51 insertions(+), 78 deletions(-)

Toggle diff (188 lines)
diff --git a/gnu/packages/antivirus.scm b/gnu/packages/antivirus.scm
index 2161d60398..1a23657a61 100644
--- a/gnu/packages/antivirus.scm
+++ b/gnu/packages/antivirus.scm
@@ -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
--
2.46.0
N
N
Nicolas Graves wrote on 6 Nov 00:14 +0100
[PATCH v4 07/20] gnu: Add rust-hamming-0.1.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241105231519.22378-7-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-hamming-0.1): New variable.
---
gnu/packages/crates-io.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (37 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index e7124b088d..e551600dc7 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -31388,6 +31388,30 @@ (define-public rust-hamcrest2-0.3
"This package provides a port of the Hamcrest testing library.")
(license (list license:expat license:asl2.0))))
+(define-public rust-hamming-0.1
+ (package
+ (name "rust-hamming")
+ (version "0.1.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "hamming" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1q9hri1l1x1y7vv153kvdw9lkqslmbwgia5r3qj6i39pfji3s135"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-development-inputs
+ (("rust-quickcheck" ,rust-quickcheck-0.2)
+ ("rust-rand" ,rust-rand-0.3))))
+ (home-page "https://github.com/huonw/hamming")
+ (synopsis "Count ones fast")
+ (description
+ "This package provides a tool to count ones, using rapid popcount
+(hamming weight) techniques. This provides a performant popcount and bitwise
+hamming distance for a slice of bytes.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-hash-hasher-2
(package
(name "rust-hash-hasher")
--
2.46.0
N
N
Nicolas Graves wrote on 6 Nov 00:14 +0100
[PATCH v4 08/20] gnu: Add rust-primal-bit-0.3.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241105231519.22378-8-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-primal-bit-0.3): New variable.
---
gnu/packages/crates-io.scm | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index e551600dc7..03375f4fe4 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -56602,6 +56602,27 @@ (define-public rust-prettytable-rs-0.8
formatted tables in terminal.")
(license license:bsd-3)))
+(define-public rust-primal-bit-0.3
+ (package
+ (name "rust-primal-bit")
+ (version "0.3.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "primal-bit" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "0mb0cdxhlm6phhl2f4d7nf7g4yrnd8xdq07m7liw7b5fp3djj915"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs (("rust-hamming" ,rust-hamming-0.1))))
+ (home-page "https://github.com/huonw/primal")
+ (synopsis "Bit-vector specialised for rust-primal")
+ (description
+ "This package provides a bit-vector specialised to the
+prime-number-related needs of @code{rust-primal}.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-print-bytes-1
(package
(name "rust-print-bytes")
--
2.46.0
N
N
Nicolas Graves wrote on 6 Nov 00:14 +0100
[PATCH v4 09/20] gnu: Add rust-primal-check-0.3.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241105231519.22378-9-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-primal-check-0.3): New variable.
---
gnu/packages/crates-io.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (35 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 03375f4fe4..a025472d5e 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -56623,6 +56623,28 @@ (define-public rust-primal-bit-0.3
prime-number-related needs of @code{rust-primal}.")
(license (list license:expat license:asl2.0))))
+(define-public rust-primal-check-0.3
+ (package
+ (name "rust-primal-check")
+ (version "0.3.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "primal-check" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "025xnak4rhkwa4h970bjb3cvp2k853wviyr84n8gjfhy65dqj3fw"))))
+ (build-system cargo-build-system)
+ ;; Circular development input rust-primal
+ (arguments
+ `(#:skip-build? #t
+ #:cargo-inputs (("rust-num-integer" ,rust-num-integer-0.1))))
+ (home-page "https://github.com/huonw/primal")
+ (synopsis "Test primality")
+ (description
+ "This package provides a standalone primality testing tool.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-print-bytes-1
(package
(name "rust-print-bytes")
--
2.46.0
N
N
Nicolas Graves wrote on 6 Nov 00:14 +0100
[PATCH v4 10/20] gnu: Add rust-primal-estimate-0.3.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241105231519.22378-10-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-primal-estimate-0.3): New variable.
---
gnu/packages/crates-io.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (35 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index a025472d5e..eb26506de7 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -56645,6 +56645,28 @@ (define-public rust-primal-check-0.3
"This package provides a standalone primality testing tool.")
(license (list license:expat license:asl2.0))))
+(define-public rust-primal-estimate-0.3
+ (package
+ (name "rust-primal-estimate")
+ (version "0.3.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "primal-estimate" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "08nq0n0r35rni65h79fynync0wyy8agrxy5mfmg0hq9s1c510cm4"))))
+ (build-system cargo-build-system)
+ ;; Circular development input rust-primal
+ (arguments
+ `(#:skip-build? #t))
+ (home-page "https://github.com/huonw/primal")
+ (synopsis "Estimate upper and lower bounds for the k-th prime")
+ (description
+ "This package provides a state-of-the-art estimation of upper and lower
+bounds for the number of primes below n and the k-th prime.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-print-bytes-1
(package
(name "rust-print-bytes")
--
2.46.0
N
N
Nicolas Graves wrote on 6 Nov 00:14 +0100
[PATCH v4 11/20] gnu: Add rust-primal-sieve-0.3.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241105231519.22378-11-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-primal-sieve-0.3): New variable.
---
gnu/packages/crates-io.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

Toggle diff (36 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index eb26506de7..40681cee8a 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -56667,6 +56667,29 @@ (define-public rust-primal-estimate-0.3
bounds for the number of primes below n and the k-th prime.")
(license (list license:expat license:asl2.0))))
+(define-public rust-primal-sieve-0.3
+ (package
+ (name "rust-primal-sieve")
+ (version "0.3.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "primal-sieve" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1lzdllk78jqdp93h15l69s4xglbjcf6jlq6khccka0r2v2b2g64f"))))
+ (build-system cargo-build-system)
+ (arguments
+ ;; Circular development input rust-primal
+ `(#:skip-build? #t
+ #:cargo-inputs (("rust-primal-bit" ,rust-primal-bit-0.3)
+ ("rust-primal-estimate" ,rust-primal-estimate-0.3)
+ ("rust-smallvec" ,rust-smallvec-1))))
+ (home-page "https://github.com/huonw/primal")
+ (synopsis "Prime sieve")
+ (description "This package provides a high performance prime sieve.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-print-bytes-1
(package
(name "rust-print-bytes")
--
2.46.0
N
N
Nicolas Graves wrote on 6 Nov 00:15 +0100
[PATCH v4 12/20] gnu: Add rust-primal-slowsieve-0.3.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241105231519.22378-12-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-primal-slowsieve-0.3): New variable.
---
gnu/packages/crates-io.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (37 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 40681cee8a..8bab66850e 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -56690,6 +56690,30 @@ (define-public rust-primal-sieve-0.3
(description "This package provides a high performance prime sieve.")
(license (list license:expat license:asl2.0))))
+(define-public rust-primal-slowsieve-0.3
+ (package
+ (name "rust-primal-slowsieve")
+ (version "0.3.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "primal-slowsieve" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "02pixp7xprkmj0fvjgg6n4dn5f8syr6xj2m2dxn0nyg06b8lipy9"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs (("rust-primal-bit" ,rust-primal-bit-0.3)
+ ("rust-primal-estimate" ,rust-primal-estimate-0.3))
+ #:cargo-development-inputs (("rust-criterion" ,rust-criterion-0.3))))
+ (home-page "https://github.com/huonw/primal")
+ (synopsis "Simple sieve of Eratosthenes")
+ (description
+ "This package provides a simple sieve of Eratosthenes designed for
+testing faster sieves. For use in Rust crates, use @code{rust-primal-sieve}
+or @code{rust-primal} instead.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-print-bytes-1
(package
(name "rust-print-bytes")
--
2.46.0
N
N
Nicolas Graves wrote on 6 Nov 00:15 +0100
[PATCH v4 13/20] gnu: Add rust-primal-0.3.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241105231519.22378-13-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-primal-0.3): New variable.
---
gnu/packages/crates-io.scm | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)

Toggle diff (40 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 8bab66850e..4cb6de28b3 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -56602,6 +56602,33 @@ (define-public rust-prettytable-rs-0.8
formatted tables in terminal.")
(license license:bsd-3)))
+(define-public rust-primal-0.3
+ (package
+ (name "rust-primal")
+ (version "0.3.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "primal" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1s6n396cssbr86f9w31sppdf06xsymgrl7y9gw0yccl5jiag7rdi"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs (("rust-primal-check" ,rust-primal-check-0.3)
+ ("rust-primal-estimate" ,rust-primal-estimate-0.3)
+ ("rust-primal-sieve" ,rust-primal-sieve-0.3))
+ #:cargo-development-inputs
+ (("rust-primal-slowsieve" ,rust-primal-slowsieve-0.3))))
+ (home-page "https://github.com/huonw/primal")
+ (synopsis "Various tools for prime numbers")
+ (description
+ "This package provides various tools to work with prime numbers. It
+includes: optimised prime sieves, checking for primality, enumerating primes,
+factorising numbers, and state-of-the-art estimation of upper and lower bounds
+for the number of primes below n and the k-th prime.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-primal-bit-0.3
(package
(name "rust-primal-bit")
--
2.46.0
N
N
Nicolas Graves wrote on 6 Nov 00:15 +0100
[PATCH v4 14/20] gnu: rust-crc-any-2: Update to 2.5.0.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241105231519.22378-14-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-crc-any-2): Update to 2.5.0.
---
gnu/packages/crates-io.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 4cb6de28b3..bc585b20a5 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -16925,7 +16925,7 @@ (define-public rust-crc-1
(define-public rust-crc-any-2
(package
(name "rust-crc-any")
- (version "2.3.12")
+ (version "2.5.0")
(source
(origin
(method url-fetch)
@@ -16933,7 +16933,7 @@ (define-public rust-crc-any-2
(file-name
(string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0fq85y5akcadahnj5nqbs47qhgp5cpfn2z19zc3gp4wpxr3989kr"))))
+ (base32 "0wzs26q5cf29fhfnrkrjsr8dpai0rlm4im8b53by8rbrbzzwjbm6"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs
--
2.46.0
N
N
Nicolas Graves wrote on 6 Nov 00:15 +0100
[PATCH v4 15/20] gnu: Add rust-delharc-0.6.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241105231519.22378-15-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-delharc-0.6): New variable.
---
gnu/packages/crates-io.scm | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)

Toggle diff (40 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index bc585b20a5..95d29aff87 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -20408,6 +20408,33 @@ (define-public rust-dejavu-2
"This package provides the @code{DejaVu} font family for embedding.")
(license (list license:expat license:asl2.0))))
+(define-public rust-delharc-0.6
+ (package
+ (name "rust-delharc")
+ (version "0.6.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "delharc" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "18g5haj6bj92azif4jifhdy9vrv6blg3wyvpmxslh2gm2wkbm4qw"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:tests? #f ; Missing files
+ #:cargo-inputs (("rust-bitflags" ,rust-bitflags-2)
+ ("rust-chrono" ,rust-chrono-0.4)
+ ("rust-memchr" ,rust-memchr-2))
+ #:cargo-development-inputs (("rust-crc-any" ,rust-crc-any-2)
+ ("rust-rand" ,rust-rand-0.8))))
+ (home-page "https://github.com/royaltm/rust-delharc")
+ (synopsis
+ "Parse and extract files from LHA/LZH archives.")
+ (description
+ "This package provides a Rust library for parsing and extracting files
+from LHA/LZH archives, which are often suffixed @code{.lha} or @code{.lzh}. ")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-demo-hack-0.0
(package
(name "rust-demo-hack")
--
2.46.0
N
N
Nicolas Graves wrote on 6 Nov 00:15 +0100
[PATCH v4 16/20] gnu: Add rust-transpose-0.2.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241105231519.22378-16-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-transpose-0.2): New variable.
---
gnu/packages/crates-io.scm | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 95d29aff87..e3a8609e4f 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -85039,6 +85039,27 @@ (define-public rust-traitobject-0.1
(license (list license:asl2.0
license:expat))))
+(define-public rust-transpose-0.2
+ (package
+ (name "rust-transpose")
+ (version "0.2.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "transpose" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "0zp74v7jrjg4jr654dncdj6hqvacicsywyhc62jawgxwhvnimmhs"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs (("rust-num-integer" ,rust-num-integer-0.1)
+ ("rust-strength-reduce" ,rust-strength-reduce-0.2))))
+ (home-page "https://github.com/ejmahler/transpose")
+ (synopsis "Utility for transposing multi-dimensional data")
+ (description
+ "This package provides utilities for transposing multi-dimensional data.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-trash-3
(package
(name "rust-trash")
--
2.46.0
N
N
Nicolas Graves wrote on 6 Nov 00:15 +0100
[PATCH v4 17/20] gnu: rust-strength-reduce-0.2: Update to 0.2.4.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241105231519.22378-17-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-strength-reduce-0.2): Update to 0.2.4.
[arguments]<#:skip-build?>: Drop option.
<#:cargo-development-inputs>: Add rust-num-bigint.
---
gnu/packages/crates-io.scm | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)

Toggle diff (28 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index e3a8609e4f..aaaa1102fe 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -75180,16 +75180,18 @@ (define-public rust-streaming-stats-0.2
(define-public rust-strength-reduce-0.2
(package
(name "rust-strength-reduce")
- (version "0.2.3")
+ (version "0.2.4")
(source
(origin
(method url-fetch)
(uri (crate-uri "strength_reduce" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0m12phq654mfxpmh2h5akqkag5ha6nlhjc2bp9jwarr5r1qjzzx3"))))
+ (base32 "10jdq9dijjdkb20wg1dmwg447rnj37jbq0mwvbadvqi2gys5x2gy"))))
(build-system cargo-build-system)
- (arguments `(#:skip-build? #t))
+ (arguments
+ `(#:cargo-development-inputs
+ (("rust-num-bigint" ,rust-num-bigint-0.4))))
(home-page "http://github.com/ejmahler/strength_reduce")
(synopsis "Faster integer division and modulus operations")
(description "Strength_reduce implements integer division and modulo via
--
2.46.0
N
N
Nicolas Graves wrote on 6 Nov 00:15 +0100
[PATCH v4 18/20] gnu: Add rust-rustfft-6.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241105231519.22378-18-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-rustfft-6): New variable.
---
gnu/packages/crates-io.scm | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)

Toggle diff (45 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index aaaa1102fe..cb71f71b85 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -66462,6 +66462,38 @@ (define-public rust-rustdoc-types-0.23
(description "Types for rustdoc's json output.")
(license (list license:expat license:asl2.0))))
+(define-public rust-rustfft-6
+ (package
+ (name "rust-rustfft")
+ (version "6.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "rustfft" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "11hx83yr2h2jszkba9qhq2d08q9i5rsashq62rfhqvahpihnb023"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-development-inputs
+ (("rust-rand" ,rust-rand-0.8)
+ ("rust-paste" ,rust-paste-1)
+ ("rust-getrandom" ,rust-getrandom-0.2)
+ ("rust-wasm-bindgen-test" ,rust-wasm-bindgen-test-0.3))
+ #:cargo-inputs (("rust-num-complex" ,rust-num-complex-0.4)
+ ("rust-num-integer" ,rust-num-integer-0.1)
+ ("rust-num-traits" ,rust-num-traits-0.2)
+ ("rust-primal-check" ,rust-primal-check-0.3)
+ ("rust-strength-reduce" ,rust-strength-reduce-0.2)
+ ("rust-transpose" ,rust-transpose-0.2)
+ ("rust-version-check" ,rust-version-check-0.9))))
+ (home-page "https://github.com/ejmahler/RustFFT")
+ (synopsis "Rust FFT library")
+ (description
+ "This package provides a high-performance FFT (Fast Fourier Transform)
+library written in pure Rust.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-rustfix-0.8
(package
(name "rust-rustfix")
--
2.46.0
N
N
Nicolas Graves wrote on 6 Nov 00:15 +0100
[PATCH v4 20/20] gnu: clamav: Unbundle rust dependencies.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241105231519.22378-20-ngraves@ngraves.fr
* gnu/packages/antivirus.scm (clamav)
[origin]<snippet>: Unbundle rust dependencies.
[build-system]: Switch to cargo-build-system.
[arguments]: Adapt to the change of base build-system.
[native-inputs]: Add cmake-minimal. Remove rust and rust:cargo.
---
gnu/packages/antivirus.scm | 135 +++++++++++++++++++++++++++----------
1 file changed, 99 insertions(+), 36 deletions(-)

Toggle diff (168 lines)
diff --git a/gnu/packages/antivirus.scm b/gnu/packages/antivirus.scm
index 1a23657a61..b561ff060a 100644
--- a/gnu/packages/antivirus.scm
+++ b/gnu/packages/antivirus.scm
@@ -31,12 +31,17 @@ (define-module (gnu packages antivirus)
#:use-module (gnu packages)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages cmake)
+ #:use-module (gnu packages crates-crypto)
+ #:use-module (gnu packages crates-graphics)
+ #:use-module (gnu packages crates-io)
#:use-module (gnu packages curl)
#: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-apps)
#:use-module (gnu packages rust)
#:use-module (gnu packages tls)
#:use-module (gnu packages web)
@@ -62,49 +67,107 @@ (define-public clamav
(snippet
'(begin
(delete-file "Cargo.lock")
- (for-each
- delete-file
- (find-files ".cargo/vendor" ".cargo-checksum\\.json"))
(for-each delete-file-recursively
- '("win32" ; unnecessary
+ '(".cargo" ; vendored rust inputs
+ "win32" ; unnecessary
"libclamunrar")))))) ; non-free license
- (build-system cmake-build-system)
+ (build-system cargo-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\"")))))))))
+ (let ((cargo-inputs
+ `(("rust-flate2" ,rust-flate2-1)
+ ("rust-hex" ,rust-hex-0.4)
+ ("rust-libc" ,rust-libc-0.2)
+ ("rust-log" ,rust-log-0.4)
+ ("rust-sha2" ,rust-sha2-0.10)
+ ("rust-tempfile" ,rust-tempfile-3)
+ ("rust-thiserror" ,rust-thiserror-1)
+ ("rust-image" ,rust-image-0.24)
+ ("rust-rustdct" ,rust-rustdct-0.7)
+ ("rust-transpose" ,rust-transpose-0.2)
+ ("rust-num-traits" ,rust-num-traits-0.2)
+ ("rust-base64" ,rust-base64-0.21)
+ ("rust-sha1" ,rust-sha1-0.10)
+ ("rust-unicode-segmentation" ,rust-unicode-segmentation-1)
+ ("rust-bindgen" ,rust-bindgen-0.66)
+ ("rust-onenote-parser" ,rust-onenote-parser-for-clamav)
+ ("rust-hex-literal" ,rust-hex-literal-0.4)
+ ("rust-inflate" ,rust-inflate-0.4)
+ ("rust-bzip2-rs" ,rust-bzip2-rs-0.1)
+ ("rust-byteorder" ,rust-byteorder-1)
+ ("rust-delharc" ,rust-delharc-0.6)))
+ (cargo-development-inputs
+ `(("rust-cbindgen" ,rust-cbindgen-0.26)
+ ("rust-bindgen" ,rust-bindgen-0.66))))
+ (list
+ #:cargo-inputs cargo-inputs
+ #:cargo-development-inputs cargo-development-inputs
+ #:vendor-dir ".cargo/vendor"
+ #:imported-modules `(,@%cmake-build-system-modules
+ ,@%cargo-build-system-modules)
+ #:modules '((guix build cargo-build-system)
+ ((guix build cmake-build-system) #:prefix cmake:)
+ (guix build utils))
+ #:phases
+ #~(modify-phases %standard-phases
+ ;; There is a .exe file used in unit tests.
+ (delete 'check-for-pregenerated-files)
+ (add-after 'configure 'fix-cargo-inputs-vendoring
+ (lambda _
+ ;; Reproduce the original layout, fails with config.
+ (rename-file ".cargo/config" ".cargo/config.toml")
+ ;; Wrongly placed by configure
+ (delete-file-recursively
+ (string-append ".cargo/vendor/clamav-" #$version ".tar.zst"))))
+ (add-after 'patch-cargo-checksums 'cmake-configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ ((assoc-ref cmake:%standard-phases 'configure)
+ #:configure-flags
+ (list "-DENABLE_MILTER=OFF" "-DENABLE_UNRAR=OFF")
+ #:outputs outputs)))
+ (replace 'build
+ (assoc-ref cmake:%standard-phases 'build))
+ (add-after 'patch-cargo-checksums 'patch-rust-requirements
+ (lambda _
+ (substitute* "libclamav_rust/Cargo.toml"
+ (("onenote_parser = .*")
+ (format #f "onenote_parser = ~s~%"
+ #$(package-version
+ (car (assoc-ref cargo-inputs
+ "rust-onenote-parser")))))
+ (("^bindgen = .*")
+ (format #f "bindgen = ~s~%"
+ #$(package-version
+ (car (assoc-ref cargo-inputs
+ "rust-bindgen")))))
+ (("cbindgen = \\{ version =\".*\",")
+ (format #f "cbindgen = { version =~s,"
+ #$(package-version
+ (car (assoc-ref cargo-development-inputs
+ "rust-cbindgen"))))))))
+ (delete 'package)
+ (replace 'install
+ (assoc-ref cmake:%standard-phases 'install))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ ((assoc-ref cmake:%standard-phases 'check)
+ #:tests? tests?
+ #:parallel-tests? #t
+ #:test-target "test")))
+ (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 check ; for tests
+ cmake-minimal
pkg-config
python-minimal
- python-pytest
- rust
- (list rust "cargo")))
+ python-pytest))
(inputs
(list bzip2
curl
--
2.46.0
N
N
Nicolas Graves wrote on 6 Nov 00:15 +0100
[PATCH v4 19/20] gnu: Add rust-rustdct-0.7.
(address . 73896@debbugs.gnu.org)(name . Nicolas Graves)(address . ngraves@ngraves.fr)
20241105231519.22378-19-ngraves@ngraves.fr
* gnu/packages/crates-io.scm (rust-rustdct-0.7): New variable.
---
gnu/packages/crates-io.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (35 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index cb71f71b85..b8d544f6b3 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -66389,6 +66389,28 @@ (define-public rust-rustc-version-0.1
`(#:cargo-inputs
(("rust-semver" ,rust-semver-0.1))))))
+(define-public rust-rustdct-0.7
+ (package
+ (name "rust-rustdct")
+ (version "0.7.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "rustdct" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "0lcm1191xx8wizima5j3n25fs90x58v3q1kwg6cbzafn0m8maqcb"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs (("rust-rustfft" ,rust-rustfft-6))
+ #:cargo-development-inputs (("rust-rand" ,rust-rand-0.8))))
+ (home-page "https://github.com/ejmahler/rust_dct")
+ (synopsis "Compute Discrete Cosine Transforms (DCT) in pure Rust")
+ (description
+ "This package provides a Rust library to compute the main Discrete Cosine
+Transforms (DCT) of any size in O(nlogn) time.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-rustdoc-json-0.8
(package
(name "rust-rustdoc-json")
--
2.46.0
L
L
Ludovic Courtès wrote on 18 Nov 10:18 +0100
Re: [bug#73896] [PATCH v4 01/20] gnu: rust-widestring-0.4: Update to 0.4.3.
(name . Nicolas Graves)(address . ngraves@ngraves.fr)(address . 73896@debbugs.gnu.org)
87jzd0gart.fsf@gnu.org
Hi Nicolas,

This series involves triggers a world rebuilds (more or less), as can be
seen by running ‘guix build inkscape’.

Do you think we could avoid that?

Ludo’.
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 73896@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 73896
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch