summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Graves <ngraves@ngraves.fr>2024-11-06 00:15:08 +0100
committerEfraim Flashner <efraim@flashner.co.il>2025-01-07 10:20:14 +0200
commit986245daca2fb50d58cf0f2b9273f0d670d38af2 (patch)
tree3aec82d349c3b0622d52d40d79ef715188deb928
parentd77c800157e0c5050e8d0e77dc9b42c39d2117dc (diff)
gnu: clamav: Unbundle rust dependencies.
* 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. Signed-off-by: Efraim Flashner <efraim@flashner.co.il> Change-Id: Ibcd53f61e51e8a099050e98ca89371f9af243753
-rw-r--r--gnu/packages/antivirus.scm93
1 files changed, 71 insertions, 22 deletions
diff --git a/gnu/packages/antivirus.scm b/gnu/packages/antivirus.scm
index 1a23657a61..7ee4adddec 100644
--- a/gnu/packages/antivirus.scm
+++ b/gnu/packages/antivirus.scm
@@ -31,12 +31,18 @@
#:use-module (gnu packages)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages cmake)
+ #:use-module (gnu packages crates-compression)
+ #: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)
@@ -61,34 +67,78 @@
(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
+ '(".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)
+ #:install-source? #f
+ #: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.65)
+ ("rust-onenote-parser-for-clamav" ,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)
+ ("rust-cbindgen" ,rust-cbindgen))
+ #: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
- (add-after 'unpack 'inject-rust-onenote
+ ;; There is a test.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"
+ ;; We make sure we use their fork.
(("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 ".")))))))
+ "onenote_parser = \"*\"\n")
+ ;; As long as it builds later versions of (c)bindgen are fine
+ (("cbindgen = \\{ version =\".*\",")
+ "cbindgen = { version = \"*\","))))
+ (replace 'install
+ (assoc-ref cmake:%standard-phases 'install))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ ((assoc-ref cmake:%standard-phases 'check)
+ #:tests? tests?
+ #:test-target "test")))
(add-after 'unpack 'skip-clamd-tests
;; XXX: The check?_clamd tests fail inside the build
;; chroot, but pass outside.
@@ -100,11 +150,10 @@
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