From: Nicolas Graves via Guix-patches via <guix-patches@gnu.org>
To: 73896@debbugs.gnu.org
Cc: Nicolas Graves <ngraves@ngraves.fr>
Subject: [bug#73896] [PATCH v4 20/20] gnu: clamav: Unbundle rust dependencies.
Date: Wed, 6 Nov 2024 00:15:08 +0100 [thread overview]
Message-ID: <20241105231519.22378-20-ngraves@ngraves.fr> (raw)
In-Reply-To: <20241105231519.22378-1-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(-)
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
prev parent reply other threads:[~2024-11-05 23:17 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-19 23:08 [bug#73896] [PATCH] gnu: clamav: Add release-monitoring-url property Nicolas Graves via Guix-patches via
2024-10-21 9:05 ` [bug#73896] [PATCH v2 1/2] " Nicolas Graves via Guix-patches via
2024-10-21 9:05 ` [bug#73896] [PATCH v2 2/2] gnu: clamav: Update to 1.4.1 Nicolas Graves via Guix-patches via
2024-11-03 1:30 ` [bug#73896] [PATCH v3 00/20] Clamav update [security fixes] Nicolas Graves via Guix-patches via
2024-11-03 1:30 ` [bug#73896] [PATCH v3 01/20] gnu: rust-widestring-0.4: Update to 0.4.3 Nicolas Graves via Guix-patches via
2024-11-03 1:30 ` [bug#73896] [PATCH v3 02/20] gnu: rust-enum-primitive-derive-0.2: Update to 0.2.2 Nicolas Graves via Guix-patches via
2024-11-03 1:30 ` [bug#73896] [PATCH v3 03/20] gnu: Add rust-onenote-parser-0.3 Nicolas Graves via Guix-patches via
2024-11-03 1:30 ` [bug#73896] [PATCH v3 04/20] gnu: Add rust-onenote-parser-for-clamav Nicolas Graves via Guix-patches via
2024-11-03 1:30 ` [bug#73896] [PATCH v3 05/20] gnu: clamav: Add release-monitoring-url property Nicolas Graves via Guix-patches via
2024-11-03 1:30 ` [bug#73896] [PATCH v3 06/20] gnu: clamav: Update to 1.4.1 Nicolas Graves via Guix-patches via
2024-11-03 1:30 ` [bug#73896] [PATCH v3 07/20] gnu: Add rust-hamming-0.1 Nicolas Graves via Guix-patches via
2024-11-03 1:30 ` [bug#73896] [PATCH v3 08/20] gnu: Add rust-primal-bit-0.3 Nicolas Graves via Guix-patches via
2024-11-03 1:30 ` [bug#73896] [PATCH v3 09/20] gnu: Add rust-primal-check-0.3 Nicolas Graves via Guix-patches via
2024-11-03 1:30 ` [bug#73896] [PATCH v3 10/20] gnu: Add rust-primal-estimate-0.3 Nicolas Graves via Guix-patches via
2024-11-03 1:30 ` [bug#73896] [PATCH v3 11/20] gnu: Add rust-primal-sieve-0.3 Nicolas Graves via Guix-patches via
2024-11-03 1:30 ` [bug#73896] [PATCH v3 12/20] gnu: Add rust-primal-slowsieve-0.3 Nicolas Graves via Guix-patches via
2024-11-03 1:30 ` [bug#73896] [PATCH v3 13/20] gnu: Add rust-primal-0.3 Nicolas Graves via Guix-patches via
2024-11-03 1:30 ` [bug#73896] [PATCH v3 14/20] gnu: rust-crc-any-2: Update to 2.5.0 Nicolas Graves via Guix-patches via
2024-11-03 1:30 ` [bug#73896] [PATCH v3 15/20] gnu: Add rust-delharc-0.6 Nicolas Graves via Guix-patches via
2024-11-03 1:30 ` [bug#73896] [PATCH v3 16/20] gnu: Add rust-transpose-0.2 Nicolas Graves via Guix-patches via
2024-11-03 1:30 ` [bug#73896] [PATCH v3 17/20] gnu: rust-strength-reduce-0.2: Update to 0.2.4 Nicolas Graves via Guix-patches via
2024-11-03 1:30 ` [bug#73896] [PATCH v3 18/20] gnu: Add rust-rustfft-6 Nicolas Graves via Guix-patches via
2024-11-03 1:30 ` [bug#73896] [PATCH v3 19/20] gnu: Add rust-rustdct-0.7 Nicolas Graves via Guix-patches via
2024-11-03 1:30 ` [bug#73896] [PATCH v3 20/20] gnu: clamav: Unbundle rust dependencies Nicolas Graves via Guix-patches via
2024-11-05 23:14 ` [bug#73896] [PATCH v4 01/20] gnu: rust-widestring-0.4: Update to 0.4.3 Nicolas Graves via Guix-patches via
2024-11-05 23:14 ` [bug#73896] [PATCH v4 02/20] gnu: rust-enum-primitive-derive-0.2: Update to 0.2.2 Nicolas Graves via Guix-patches via
2024-11-05 23:14 ` [bug#73896] [PATCH v4 03/20] gnu: Add rust-onenote-parser-0.3 Nicolas Graves via Guix-patches via
2024-11-05 23:14 ` [bug#73896] [PATCH v4 04/20] gnu: Add rust-onenote-parser-for-clamav Nicolas Graves via Guix-patches via
2024-11-05 23:14 ` [bug#73896] [PATCH v4 05/20] gnu: clamav: Add release-monitoring-url property Nicolas Graves via Guix-patches via
2024-11-05 23:14 ` [bug#73896] [PATCH v4 06/20] gnu: clamav: Update to 1.4.1 Nicolas Graves via Guix-patches via
2024-11-05 23:14 ` [bug#73896] [PATCH v4 07/20] gnu: Add rust-hamming-0.1 Nicolas Graves via Guix-patches via
2024-11-05 23:14 ` [bug#73896] [PATCH v4 08/20] gnu: Add rust-primal-bit-0.3 Nicolas Graves via Guix-patches via
2024-11-05 23:14 ` [bug#73896] [PATCH v4 09/20] gnu: Add rust-primal-check-0.3 Nicolas Graves via Guix-patches via
2024-11-05 23:14 ` [bug#73896] [PATCH v4 10/20] gnu: Add rust-primal-estimate-0.3 Nicolas Graves via Guix-patches via
2024-11-05 23:14 ` [bug#73896] [PATCH v4 11/20] gnu: Add rust-primal-sieve-0.3 Nicolas Graves via Guix-patches via
2024-11-05 23:15 ` [bug#73896] [PATCH v4 12/20] gnu: Add rust-primal-slowsieve-0.3 Nicolas Graves via Guix-patches via
2024-11-05 23:15 ` [bug#73896] [PATCH v4 13/20] gnu: Add rust-primal-0.3 Nicolas Graves via Guix-patches via
2024-11-05 23:15 ` [bug#73896] [PATCH v4 14/20] gnu: rust-crc-any-2: Update to 2.5.0 Nicolas Graves via Guix-patches via
2024-11-05 23:15 ` [bug#73896] [PATCH v4 15/20] gnu: Add rust-delharc-0.6 Nicolas Graves via Guix-patches via
2024-11-05 23:15 ` [bug#73896] [PATCH v4 16/20] gnu: Add rust-transpose-0.2 Nicolas Graves via Guix-patches via
2024-11-05 23:15 ` [bug#73896] [PATCH v4 17/20] gnu: rust-strength-reduce-0.2: Update to 0.2.4 Nicolas Graves via Guix-patches via
2024-11-05 23:15 ` [bug#73896] [PATCH v4 18/20] gnu: Add rust-rustfft-6 Nicolas Graves via Guix-patches via
2024-11-05 23:15 ` [bug#73896] [PATCH v4 19/20] gnu: Add rust-rustdct-0.7 Nicolas Graves via Guix-patches via
2024-11-05 23:15 ` Nicolas Graves via Guix-patches via [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241105231519.22378-20-ngraves@ngraves.fr \
--to=guix-patches@gnu.org \
--cc=73896@debbugs.gnu.org \
--cc=ngraves@ngraves.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).