gnu: clamav: Use cmake-build-system.

* gnu/packages/antivirus.scm (clamav)[build-system]: Use cmake-build-system.
[native-inputs]: Add rust, rust:cargo.
Add rust-sysroot when cross-compiling.
Remove cmake-minimal.
Move check to...
[inputs]: ...here.
Use ‘cargo-inputs’.
[arguments]: Add #:configure-flags from phases.
Remove #:install-source?, #:cargo-inputs, #:vendor-dir.
<#:phases>: Keep ‘check-for-pregenerated-files’.
Add ‘prepare-cargo-build-system’.
In ‘patch-rust-requirements’, don't patch cbindgen version.
Remove ‘cmake-configure’, ‘fix-cargo-inputs-vendoring’, ‘cmake-configure’.
* gnu/packages/rust-crates.scm (lookup-cargo-inputs)[clamav]: New entry.

Change-Id: I1583ad0c907e8f74dcf42bd0a0e7f4cef7400cd9
This commit is contained in:
Hilton Chain 2025-04-07 16:16:57 +08:00
parent 67220f795c
commit dbc006ed83
No known key found for this signature in database
GPG key ID: ACC66D09CA528292
2 changed files with 251 additions and 61 deletions

View file

@ -47,6 +47,7 @@
#:use-module (gnu packages protobuf)
#:use-module (gnu packages python)
#:use-module (gnu packages python-check)
#:use-module (gnu packages rust)
#:use-module (gnu packages rust-apps)
#:use-module (gnu packages rust)
#:use-module (gnu packages tls)
@ -76,71 +77,36 @@
'(".cargo" ; vendored rust inputs
"win32" ; unnecessary
"libclamunrar")))))) ; non-free license
(build-system cargo-build-system)
(build-system cmake-build-system)
(arguments
(list
#: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"
#:configure-flags ''("-DENABLE_MILTER=OFF" "-DENABLE_UNRAR=OFF")
#:imported-modules `(,@%cmake-build-system-modules
,@%cargo-build-system-modules)
#:modules '((guix build cargo-build-system)
((guix build cmake-build-system) #:prefix cmake:)
#:modules '(((guix build cargo-build-system) #:prefix cargo:)
(guix build cmake-build-system)
(guix build utils))
#:phases
#~(modify-phases %standard-phases
;; 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")))
(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
(add-after 'unpack 'prepare-cargo-build-system
(lambda args
(for-each
(lambda (phase)
(format #t "Running cargo phase: ~a~%" phase)
(apply (assoc-ref cargo:%standard-phases phase)
#:vendor-dir ".cargo/vendor"
#:cargo-target #$(cargo-triplet)
args))
'(unpack-rust-crates
configure
check-for-pregenerated-files
patch-cargo-checksums))))
(add-after 'prepare-cargo-build-system 'patch-rust-requirements
(lambda _
(substitute* "libclamav_rust/Cargo.toml"
;; We make sure we use their fork.
(("onenote_parser = .*")
"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")))
"onenote_parser = \"*\"\n"))))
(add-after 'unpack 'skip-clamd-tests
;; XXX: The check?_clamd tests fail inside the build
;; chroot, but pass outside.
@ -151,20 +117,26 @@
(string-append
test " -k \"not test_clamd_08_VirusEvent\"")))))))))
(native-inputs
(list check ; for tests
cmake-minimal
pkg-config
python-minimal
python-pytest))
(append
(list pkg-config
python-minimal
python-pytest
rust
`(,rust "cargo"))
(or (and=> (%current-target-system)
(compose list make-rust-sysroot))
'())))
(inputs
(list bzip2
(cons* bzip2
check ;For tests.
curl
json-c
libressl
libxml2
ncurses
pcre2
zlib))
zlib
(cargo-inputs 'clamav)))
(home-page "https://www.clamav.net")
(synopsis "Antivirus engine")
(description

View file

@ -64,6 +64,10 @@
(crate-source "adler2" "2.0.0"
"09r6drylvgy8vv8k20lnbvwq8gp09h7smfn6h1rxsy15pgh629si"))
(define rust-adler32-1.2.0
(crate-source "adler32" "1.2.0"
"0d7jq7jsjyhsgbhnfq5fvrlh9j0i9g1fqrl2735ibv5f75yjgqda"))
(define rust-ahash-0.8.11
(crate-source "ahash" "0.8.11"
"04chdfkls5xmhp1d48gnjsmglbqibizs3bpbj6rsj604m10si7g8"))
@ -378,6 +382,10 @@
(crate-source "bincode" "1.3.3"
"1bfw3mnwzx5g1465kiqllp5n4r10qrqy88kdlp3jfwnq2ya5xx5i"))
(define rust-bindgen-0.65.1
(crate-source "bindgen" "0.65.1"
"1i9wci1h3xnk8hi7cf06capgifnmpk9dd59zqznh6jcsdx37ppyg"))
(define rust-bindgen-0.69.5
(crate-source "bindgen" "0.69.5"
"1240snlcfj663k04bjsg629g4wx6f83flgbjh5rzpgyagk3864r7"))
@ -499,6 +507,11 @@
"0iya6nbj0p2y8jss0z05yncc5hadry164fw3zva01y06v4igpv29"
#:snippet '(delete-file-recursively "tests")))
(define rust-bzip2-rs-0.1.2
(crate-source "bzip2-rs" "0.1.2"
"0dgp83kixqrqj6q6574qr5zsfpbsiiwhqs3krhvsn4f8wkkmksxy"
#:snippet '(delete-file-recursively "tests")))
(define rust-bzip2-sys-0.1.13+1.0.8
(crate-source "bzip2-sys" "0.1.13+1.0.8"
"056c39pgjh4272bdslv445f5ry64xvb0f7nph3z7860ln8rzynr2"
@ -615,6 +628,10 @@
(crate-source "cast" "0.3.0"
"1dbyngbyz2qkk0jn2sxil8vrz3rnpcj142y184p9l4nbl9radcip"))
(define rust-cbindgen-0.25.0
(crate-source "cbindgen" "0.25.0"
"1jl82k816rxwi2ks9smnzlqv02fbq0sqy6r1g5d9f9x7wn9sdsps"))
(define rust-cbindgen-0.27.0
(crate-source "cbindgen" "0.27.0"
"1sqm3axr678d72yihgmpr9d17mj99ccibxfqhw53mgzwzkbqvkiz"))
@ -966,6 +983,10 @@
(crate-source "deadpool-runtime" "0.1.4"
"0arbchl5j887hcfvjy4gq38d32055s5cf7pkpmwn0lfw3ss6ca89"))
(define rust-delharc-0.6.1
(crate-source "delharc" "0.6.1"
"18g5haj6bj92azif4jifhdy9vrv6blg3wyvpmxslh2gm2wkbm4qw"))
(define rust-der-0.7.9
(crate-source "der" "0.7.9"
"1h4vzjfa1lczxdf8avfj9qlwh1qianqlxdy1g5rn762qnvkzhnzm"
@ -1137,6 +1158,10 @@
(crate-source "enquote" "1.1.0"
"0clrjghlfkkb7sndabs5wch0fz2nif6nj4b117s8kqxx3nqnrhq6"))
(define rust-enum-primitive-derive-0.2.2
(crate-source "enum-primitive-derive" "0.2.2"
"03ibjjx8dc4akpq8ck24qda5ix4jybz9jagfxykd0s6vxb2vjxf3"))
(define rust-enumflags2-0.7.11
(crate-source "enumflags2" "0.7.11"
"0iwi60d54lgby0f29b5isikxraf0wvnqdmlddx68a62kbx34nbxs"))
@ -1969,6 +1994,10 @@
(crate-source "hex" "0.4.3"
"0w1a4davm1lgzpamwnba907aysmlrnygbqmfis2mqjx5m552a93z"))
(define rust-hex-literal-0.4.1
(crate-source "hex-literal" "0.4.1"
"0iny5inkixsdr41pm2vkqh3fl66752z5j5c0cdxw16yl9ryjdqkg"))
(define rust-hkdf-0.12.4
(crate-source "hkdf" "0.12.4"
"1xxxzcarz151p1b858yn5skmhyrvn8fs4ivx5km3i1kjmnr8wpvv"
@ -2152,6 +2181,11 @@
(crate-source "indoc" "2.0.6"
"1gbn2pkx5sgbd9lp05d2bkqpbfgazi0z3nvharh5ajah11d29izl"))
(define rust-inflate-0.4.5
(crate-source "inflate" "0.4.5"
"1zxjdn8iwa0ssxrnjmywm3r1v284wryvzrf8vkc7nyf5ijbjknqw"
#:snippet '(delete-file-recursively "tests")))
(define rust-input-0.9.1
(crate-source "input" "0.9.1"
"1abmv1djhynihipjppgsmw6nbp6pcgzk8rzi4v6wmyci9990kp7v"))
@ -2908,6 +2942,16 @@
(crate-source "once_cell" "1.21.3"
"0b9x77lb9f1j6nqgf5aka4s2qj0nly176bpbrv6f9iakk5ff3xa2"))
(define rust-onenote-parser-0.3.1.29c0853
(origin
(method git-fetch)
(uri (git-reference (url "https://github.com/Cisco-Talos/onenote.rs.git")
(commit "29c08532252b917543ff268284f926f30876bb79")))
(file-name (git-file-name "rust-onenote-parser" "0.3.1.29c0853"))
(sha256 (base32 "1sfx3jgj1vgwh00kckl5hfbmdpp4wmvszsxwzi1k10nihryvkdy5"))
(modules '((guix build utils)))
(snippet '(delete-file-recursively "tests"))))
(define rust-oorandom-11.1.5
(crate-source "oorandom" "11.1.5"
"07mlf13z453fq01qff38big1lh83j8l6aaglf63ksqzzqxc0yyfn"))
@ -3103,6 +3147,10 @@
(define rust-pcre2-sys-0.2.9.85b7afb rust-pcre2-utf32-0.2)
(define rust-peeking-take-while-0.1.2
(crate-source "peeking_take_while" "0.1.2"
"16bhqr6rdyrp12zv381cxaaqqd0pwysvm1q8h2ygihvypvfprc8r"))
(define rust-pem-3.0.5
(crate-source "pem" "3.0.5"
"1wwfk8sbyi9l18fvvn6z9p2gy7v7q7wimbhvrvixxj8a8zl3ibrq"))
@ -3300,6 +3348,10 @@
(crate-source "prettyplease" "0.2.32"
"1xmdmwhsvqc8l5ns029vzjida4k3lp5ynin0xra43qsiki0wakk6"))
(define rust-primal-check-0.3.4
(crate-source "primal-check" "0.3.4"
"025xnak4rhkwa4h970bjb3cvp2k853wviyr84n8gjfhy65dqj3fw"))
(define rust-primeorder-0.13.6
(crate-source "primeorder" "0.13.6"
"1rp16710mxksagcjnxqjjq9r9wf5vf72fs8wxffnvhb6i6hiqgim"))
@ -3755,6 +3807,14 @@
(crate-source "rustc_version" "0.4.1"
"14lvdsmr5si5qbqzrajgb6vfn69k0sfygrvfvr2mps26xwi3mjyg"))
(define rust-rustdct-0.7.1
(crate-source "rustdct" "0.7.1"
"0lcm1191xx8wizima5j3n25fs90x58v3q1kwg6cbzafn0m8maqcb"))
(define rust-rustfft-6.2.0
(crate-source "rustfft" "6.2.0"
"11hx83yr2h2jszkba9qhq2d08q9i5rsashq62rfhqvahpihnb023"))
(define rust-rustfix-0.9.0
(crate-source "rustfix" "0.9.0"
"1a79gyag6w459qani0a1m6asadz6vxvgvmrw4l94zzvifiniarkz"))
@ -4152,6 +4212,10 @@
(crate-source "stfu8" "0.2.7"
"0y0rzzphh2mzfhjz0sxymnjn0s4ap21c74f469s9xycky24iw7z5"))
(define rust-strength-reduce-0.2.4
(crate-source "strength_reduce" "0.2.4"
"10jdq9dijjdkb20wg1dmwg447rnj37jbq0mwvbadvqi2gys5x2gy"))
(define rust-string-cache-0.8.9
(crate-source "string_cache" "0.8.9"
"03z7km2kzlwiv2r2qifq5riv4g8phazwng9wnvs3py3lzainnxxz"))
@ -4528,6 +4592,10 @@
(crate-source "tracy-client-sys" "0.24.3"
"0ps3iwb7q1fzs9pir6b0nqi8n7i67lci4jp6z4xrq8s8lmyz7zv9"))
(define rust-transpose-0.2.3
(crate-source "transpose" "0.2.3"
"0zp74v7jrjg4jr654dncdj6hqvacicsywyhc62jawgxwhvnimmhs"))
(define rust-triomphe-0.1.14
(crate-source "triomphe" "0.1.14"
"11fciha522hrz6pkafy3xlq20w405w9dqvy9ln7ba1s8v8k7g3zg"))
@ -5869,6 +5937,156 @@
rust-windows-x86-64-gnullvm-0.52.6
rust-windows-x86-64-msvc-0.52.6
rust-winnow-0.7.4))
(clamav =>
(list rust-adler2-2.0.0
rust-adler32-1.2.0
rust-aho-corasick-1.1.3
rust-android-tzdata-0.1.1
rust-android-system-properties-0.1.5
rust-autocfg-1.4.0
rust-base64-0.21.7
rust-bindgen-0.65.1
rust-bit-field-0.10.2
rust-bitflags-1.3.2
rust-bitflags-2.9.0
rust-block-buffer-0.10.4
rust-bumpalo-3.17.0
rust-bytemuck-1.22.0
rust-byteorder-1.5.0
rust-bytes-1.10.1
rust-bzip2-rs-0.1.2
rust-cbindgen-0.25.0
rust-cc-1.2.18
rust-cexpr-0.6.0
rust-cfg-if-1.0.0
rust-chrono-0.4.40
rust-clang-sys-1.8.1
rust-color-quant-1.1.0
rust-core-foundation-sys-0.8.7
rust-cpufeatures-0.2.17
rust-crc32fast-1.4.2
rust-crossbeam-deque-0.8.6
rust-crossbeam-epoch-0.9.18
rust-crossbeam-utils-0.8.21
rust-crunchy-0.2.3
rust-crypto-common-0.1.6
rust-delharc-0.6.1
rust-digest-0.10.7
rust-either-1.15.0
rust-encoding-rs-0.8.35
rust-enum-primitive-derive-0.2.2
rust-errno-0.3.11
rust-exr-1.73.0
rust-fastrand-2.3.0
rust-fdeflate-0.3.7
rust-flate2-1.1.1
rust-generic-array-0.14.7
rust-getrandom-0.3.2
rust-gif-0.13.1
rust-glob-0.3.2
rust-half-2.5.0
rust-hashbrown-0.12.3
rust-heck-0.4.1
rust-hex-0.4.3
rust-hex-literal-0.4.1
rust-home-0.5.11
rust-iana-time-zone-0.1.63
rust-iana-time-zone-haiku-0.1.2
rust-image-0.24.9
rust-indexmap-1.9.3
rust-inflate-0.4.5
rust-itertools-0.10.5
rust-itoa-1.0.15
rust-jpeg-decoder-0.3.1
rust-js-sys-0.3.77
rust-lazy-static-1.5.0
rust-lazycell-1.3.0
rust-lebe-0.5.2
rust-libc-0.2.171
rust-libloading-0.8.6
rust-linux-raw-sys-0.4.15
rust-linux-raw-sys-0.9.3
rust-log-0.4.27
rust-memchr-2.7.4
rust-minimal-lexical-0.2.1
rust-miniz-oxide-0.8.7
rust-nom-7.1.3
rust-num-complex-0.4.6
rust-num-integer-0.1.46
rust-num-traits-0.2.19
rust-once-cell-1.21.3
rust-onenote-parser-0.3.1.29c0853
rust-paste-1.0.15
rust-peeking-take-while-0.1.2
rust-png-0.17.16
rust-prettyplease-0.2.32
rust-primal-check-0.3.4
rust-proc-macro2-1.0.94
rust-qoi-0.4.1
rust-quote-1.0.40
rust-r-efi-5.2.0
rust-rayon-1.10.0
rust-rayon-core-1.12.1
rust-regex-1.11.1
rust-regex-automata-0.4.9
rust-regex-syntax-0.8.5
rust-rustc-hash-1.1.0
rust-rustdct-0.7.1
rust-rustfft-6.2.0
rust-rustix-0.38.44
rust-rustix-1.0.5
rust-rustversion-1.0.20
rust-ryu-1.0.20
rust-serde-1.0.219
rust-serde-derive-1.0.219
rust-serde-json-1.0.140
rust-sha1-0.10.6
rust-sha2-0.10.8
rust-shlex-1.3.0
rust-simd-adler32-0.3.7
rust-smallvec-1.15.0
rust-strength-reduce-0.2.4
rust-syn-1.0.109
rust-syn-2.0.100
rust-tempfile-3.19.1
rust-thiserror-1.0.69
rust-thiserror-impl-1.0.69
rust-tiff-0.9.1
rust-tinyvec-1.9.0
rust-toml-0.5.11
rust-transpose-0.2.3
rust-typenum-1.18.0
rust-unicode-ident-1.0.18
rust-unicode-segmentation-1.12.0
rust-uuid-1.16.0
rust-version-check-0.9.5
rust-wasi-0.14.2+wasi-0.2.4
rust-wasm-bindgen-0.2.100
rust-wasm-bindgen-backend-0.2.100
rust-wasm-bindgen-macro-0.2.100
rust-wasm-bindgen-macro-support-0.2.100
rust-wasm-bindgen-shared-0.2.100
rust-weezl-0.1.8
rust-which-4.4.2
rust-widestring-1.2.0
rust-windows-core-0.61.0
rust-windows-implement-0.60.0
rust-windows-interface-0.59.1
rust-windows-link-0.1.1
rust-windows-result-0.3.2
rust-windows-strings-0.4.0
rust-windows-sys-0.59.0
rust-windows-targets-0.52.6
rust-windows-aarch64-gnullvm-0.52.6
rust-windows-aarch64-msvc-0.52.6
rust-windows-i686-gnu-0.52.6
rust-windows-i686-gnullvm-0.52.6
rust-windows-i686-msvc-0.52.6
rust-windows-x86-64-gnu-0.52.6
rust-windows-x86-64-gnullvm-0.52.6
rust-windows-x86-64-msvc-0.52.6
rust-wit-bindgen-rt-0.39.0
rust-zune-inflate-0.2.54))
(du-dust =>
(list rust-aho-corasick-1.1.3
rust-android-tzdata-0.1.1