git: 0fe0d014a700 - main - sysutils/magika: New port: Fast and accurate AI powered file content types detection
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 07 Aug 2026 05:09:35 UTC
The branch main has been updated by yuri:
URL: https://cgit.FreeBSD.org/ports/commit/?id=0fe0d014a7006bec3465b9a7600e87dbd32a5a61
commit 0fe0d014a7006bec3465b9a7600e87dbd32a5a61
Author: Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2026-08-07 02:53:01 +0000
Commit: Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2026-08-07 05:09:29 +0000
sysutils/magika: New port: Fast and accurate AI powered file content types detection
---
sysutils/Makefile | 1 +
sysutils/magika/Makefile | 187 ++++++++++++++++++++
sysutils/magika/distinfo | 305 ++++++++++++++++++++++++++++++++
sysutils/magika/files/patch-src_main.rs | 48 +++++
sysutils/magika/pkg-descr | 11 ++
5 files changed, 552 insertions(+)
diff --git a/sysutils/Makefile b/sysutils/Makefile
index e12f9b727052..18d751484b28 100644
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -715,6 +715,7 @@
SUBDIR += mac_rtprio
SUBDIR += mackerel-agent
SUBDIR += magicrescue
+ SUBDIR += magika
SUBDIR += manck
SUBDIR += mapchan
SUBDIR += mapdir
diff --git a/sysutils/magika/Makefile b/sysutils/magika/Makefile
new file mode 100644
index 000000000000..303aa3ecdd38
--- /dev/null
+++ b/sysutils/magika/Makefile
@@ -0,0 +1,187 @@
+PORTNAME= magika
+DISTVERSIONPREFIX= cli/v
+DISTVERSION= 1.1.0
+CATEGORIES= sysutils # machine-learning
+
+MAINTAINER= yuri@FreeBSD.org
+COMMENT= Fast and accurate AI powered file content types detection
+WWW= https://securityresearch.google/magika/ \
+ https://github.com/google/magika
+
+LICENSE= APACHE20
+LICENSE_FILE= ${WRKSRC}/../../LICENSE
+
+LIB_DEPENDS= libonnxruntime.so:misc/onnxruntime
+
+USES= cargo
+
+USE_GITHUB= yes
+GH_ACCOUNT= google
+
+WRKSRC_SUBDIR= rust/cli
+
+CARGO_CRATES= addr2line-0.25.1 \
+ adler2-2.0.1 \
+ anstream-0.6.21 \
+ anstyle-1.0.13 \
+ anstyle-parse-0.2.7 \
+ anstyle-query-1.1.4 \
+ anstyle-wincon-3.0.10 \
+ anyhow-1.0.100 \
+ async-channel-2.5.0 \
+ autocfg-1.5.0 \
+ backtrace-0.3.76 \
+ base64-0.22.1 \
+ base64ct-1.8.0 \
+ bitflags-2.9.4 \
+ byteorder-1.5.0 \
+ bytes-1.11.1 \
+ cc-1.2.40 \
+ cfg-if-1.0.3 \
+ clap-4.5.48 \
+ clap_builder-4.5.48 \
+ clap_derive-4.5.47 \
+ clap_lex-0.7.5 \
+ colorchoice-1.0.4 \
+ colored-3.0.0 \
+ concurrent-queue-2.5.0 \
+ core-foundation-0.9.4 \
+ core-foundation-sys-0.8.7 \
+ crossbeam-utils-0.8.21 \
+ der-0.7.10 \
+ errno-0.3.14 \
+ event-listener-5.4.1 \
+ event-listener-strategy-0.5.4 \
+ fastrand-2.3.0 \
+ find-msvc-tools-0.1.3 \
+ fnv-1.0.7 \
+ foreign-types-0.3.2 \
+ foreign-types-shared-0.1.1 \
+ futures-core-0.3.31 \
+ getrandom-0.3.3 \
+ gimli-0.32.3 \
+ heck-0.5.0 \
+ hermit-abi-0.5.2 \
+ hmac-sha256-1.1.14 \
+ http-1.3.1 \
+ httparse-1.10.1 \
+ io-uring-0.7.10 \
+ is_terminal_polyfill-1.70.1 \
+ itoa-1.0.15 \
+ libc-0.2.176 \
+ linux-raw-sys-0.11.0 \
+ lock_api-0.4.14 \
+ log-0.4.28 \
+ lzma-rust2-0.15.7 \
+ matrixmultiply-0.3.10 \
+ memchr-2.7.6 \
+ miniz_oxide-0.8.9 \
+ mio-1.0.4 \
+ native-tls-0.2.14 \
+ ndarray-0.17.1 \
+ num-complex-0.4.6 \
+ num-integer-0.1.46 \
+ num-traits-0.2.19 \
+ num_cpus-1.17.0 \
+ object-0.37.3 \
+ once_cell-1.21.3 \
+ once_cell_polyfill-1.70.1 \
+ openssl-0.10.78 \
+ openssl-macros-0.1.1 \
+ openssl-probe-0.1.6 \
+ openssl-sys-0.9.114 \
+ ort-2.0.0-rc.12 \
+ ort-sys-2.0.0-rc.12 \
+ parking-2.2.1 \
+ parking_lot-0.12.5 \
+ parking_lot_core-0.9.12 \
+ pem-rfc7468-0.7.0 \
+ percent-encoding-2.3.2 \
+ pin-project-lite-0.2.16 \
+ pkg-config-0.3.32 \
+ portable-atomic-1.11.1 \
+ portable-atomic-util-0.2.4 \
+ proc-macro2-1.0.101 \
+ quote-1.0.41 \
+ r-efi-5.3.0 \
+ rawpointer-0.2.1 \
+ redox_syscall-0.5.18 \
+ rustc-demangle-0.1.26 \
+ rustix-1.1.2 \
+ rustls-pemfile-2.2.0 \
+ rustls-pki-types-1.12.0 \
+ ryu-1.0.20 \
+ schannel-0.1.28 \
+ scopeguard-1.2.0 \
+ security-framework-2.11.1 \
+ security-framework-sys-2.15.0 \
+ serde-1.0.228 \
+ serde_core-1.0.228 \
+ serde_derive-1.0.228 \
+ serde_json-1.0.145 \
+ shlex-1.3.0 \
+ signal-hook-registry-1.4.6 \
+ slab-0.4.11 \
+ smallvec-1.15.1 \
+ socket2-0.6.0 \
+ socks-0.3.4 \
+ strsim-0.11.1 \
+ syn-2.0.106 \
+ tempfile-3.23.0 \
+ thiserror-1.0.69 \
+ thiserror-impl-1.0.69 \
+ tokio-1.47.1 \
+ tokio-macros-2.5.0 \
+ tracing-0.1.41 \
+ tracing-core-0.1.34 \
+ unicode-ident-1.0.19 \
+ ureq-3.1.2 \
+ ureq-proto-0.5.2 \
+ utf-8-0.7.6 \
+ utf8parse-0.2.2 \
+ vcpkg-0.2.15 \
+ wasi-0.11.1+wasi-snapshot-preview1 \
+ wasi-0.14.7+wasi-0.2.4 \
+ wasip2-1.0.1+wasi-0.2.4 \
+ webpki-root-certs-1.0.2 \
+ winapi-0.3.9 \
+ winapi-i686-pc-windows-gnu-0.4.0 \
+ winapi-x86_64-pc-windows-gnu-0.4.0 \
+ windows-link-0.2.0 \
+ windows-sys-0.59.0 \
+ windows-sys-0.60.2 \
+ windows-sys-0.61.1 \
+ windows-targets-0.52.6 \
+ windows-targets-0.53.4 \
+ windows_aarch64_gnullvm-0.52.6 \
+ windows_aarch64_gnullvm-0.53.0 \
+ windows_aarch64_msvc-0.52.6 \
+ windows_aarch64_msvc-0.53.0 \
+ windows_i686_gnu-0.52.6 \
+ windows_i686_gnu-0.53.0 \
+ windows_i686_gnullvm-0.52.6 \
+ windows_i686_gnullvm-0.53.0 \
+ windows_i686_msvc-0.52.6 \
+ windows_i686_msvc-0.53.0 \
+ windows_x86_64_gnu-0.52.6 \
+ windows_x86_64_gnu-0.53.0 \
+ windows_x86_64_gnullvm-0.52.6 \
+ windows_x86_64_gnullvm-0.53.0 \
+ windows_x86_64_msvc-0.52.6 \
+ windows_x86_64_msvc-0.53.0 \
+ wit-bindgen-0.46.0 \
+ zeroize-1.8.2
+
+OPENSSLINC= /usr/include
+OPENSSLLIB= /usr/lib
+
+MAKE_ENV+= ORT_STRATEGY=compile \
+ ORT_LIB_PATH=${LOCALBASE}/lib \
+ ORT_PREFER_DYNAMIC_LINK=1
+
+PLIST_FILES= bin/${PORTNAME}
+
+post-install:
+ @${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
+
+.include <bsd.port.mk>
diff --git a/sysutils/magika/distinfo b/sysutils/magika/distinfo
new file mode 100644
index 000000000000..14a11b21d112
--- /dev/null
+++ b/sysutils/magika/distinfo
@@ -0,0 +1,305 @@
+TIMESTAMP = 1786057853
+SHA256 (rust/crates/addr2line-0.25.1.crate) = 1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b
+SIZE (rust/crates/addr2line-0.25.1.crate) = 43134
+SHA256 (rust/crates/adler2-2.0.1.crate) = 320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa
+SIZE (rust/crates/adler2-2.0.1.crate) = 13366
+SHA256 (rust/crates/anstream-0.6.21.crate) = 43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a
+SIZE (rust/crates/anstream-0.6.21.crate) = 29516
+SHA256 (rust/crates/anstyle-1.0.13.crate) = 5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78
+SIZE (rust/crates/anstyle-1.0.13.crate) = 17651
+SHA256 (rust/crates/anstyle-parse-0.2.7.crate) = 4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2
+SIZE (rust/crates/anstyle-parse-0.2.7.crate) = 21707
+SHA256 (rust/crates/anstyle-query-1.1.4.crate) = 9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2
+SIZE (rust/crates/anstyle-query-1.1.4.crate) = 10192
+SHA256 (rust/crates/anstyle-wincon-3.0.10.crate) = 3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a
+SIZE (rust/crates/anstyle-wincon-3.0.10.crate) = 12558
+SHA256 (rust/crates/anyhow-1.0.100.crate) = a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61
+SIZE (rust/crates/anyhow-1.0.100.crate) = 54059
+SHA256 (rust/crates/async-channel-2.5.0.crate) = 924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2
+SIZE (rust/crates/async-channel-2.5.0.crate) = 18624
+SHA256 (rust/crates/autocfg-1.5.0.crate) = c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8
+SIZE (rust/crates/autocfg-1.5.0.crate) = 18729
+SHA256 (rust/crates/backtrace-0.3.76.crate) = bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6
+SIZE (rust/crates/backtrace-0.3.76.crate) = 89458
+SHA256 (rust/crates/base64-0.22.1.crate) = 72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6
+SIZE (rust/crates/base64-0.22.1.crate) = 81597
+SHA256 (rust/crates/base64ct-1.8.0.crate) = 55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba
+SIZE (rust/crates/base64ct-1.8.0.crate) = 31211
+SHA256 (rust/crates/bitflags-2.9.4.crate) = 2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394
+SIZE (rust/crates/bitflags-2.9.4.crate) = 47950
+SHA256 (rust/crates/byteorder-1.5.0.crate) = 1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b
+SIZE (rust/crates/byteorder-1.5.0.crate) = 23288
+SHA256 (rust/crates/bytes-1.11.1.crate) = 1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33
+SIZE (rust/crates/bytes-1.11.1.crate) = 78584
+SHA256 (rust/crates/cc-1.2.40.crate) = e1d05d92f4b1fd76aad469d46cdd858ca761576082cd37df81416691e50199fb
+SIZE (rust/crates/cc-1.2.40.crate) = 91094
+SHA256 (rust/crates/cfg-if-1.0.3.crate) = 2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9
+SIZE (rust/crates/cfg-if-1.0.3.crate) = 8719
+SHA256 (rust/crates/clap-4.5.48.crate) = e2134bb3ea021b78629caa971416385309e0131b351b25e01dc16fb54e1b5fae
+SIZE (rust/crates/clap-4.5.48.crate) = 61935
+SHA256 (rust/crates/clap_builder-4.5.48.crate) = c2ba64afa3c0a6df7fa517765e31314e983f51dda798ffba27b988194fb65dc9
+SIZE (rust/crates/clap_builder-4.5.48.crate) = 170133
+SHA256 (rust/crates/clap_derive-4.5.47.crate) = bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c
+SIZE (rust/crates/clap_derive-4.5.47.crate) = 33550
+SHA256 (rust/crates/clap_lex-0.7.5.crate) = b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675
+SIZE (rust/crates/clap_lex-0.7.5.crate) = 13469
+SHA256 (rust/crates/colorchoice-1.0.4.crate) = b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75
+SIZE (rust/crates/colorchoice-1.0.4.crate) = 8196
+SHA256 (rust/crates/colored-3.0.0.crate) = fde0e0ec90c9dfb3b4b1a0891a7dcd0e2bffde2f7efed5fe7c9bb00e5bfb915e
+SIZE (rust/crates/colored-3.0.0.crate) = 34497
+SHA256 (rust/crates/concurrent-queue-2.5.0.crate) = 4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973
+SIZE (rust/crates/concurrent-queue-2.5.0.crate) = 22654
+SHA256 (rust/crates/core-foundation-0.9.4.crate) = 91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f
+SIZE (rust/crates/core-foundation-0.9.4.crate) = 27743
+SHA256 (rust/crates/core-foundation-sys-0.8.7.crate) = 773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b
+SIZE (rust/crates/core-foundation-sys-0.8.7.crate) = 37712
+SHA256 (rust/crates/crossbeam-utils-0.8.21.crate) = d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28
+SIZE (rust/crates/crossbeam-utils-0.8.21.crate) = 42691
+SHA256 (rust/crates/der-0.7.10.crate) = e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb
+SIZE (rust/crates/der-0.7.10.crate) = 90111
+SHA256 (rust/crates/errno-0.3.14.crate) = 39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb
+SIZE (rust/crates/errno-0.3.14.crate) = 12002
+SHA256 (rust/crates/event-listener-5.4.1.crate) = e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab
+SIZE (rust/crates/event-listener-5.4.1.crate) = 43782
+SHA256 (rust/crates/event-listener-strategy-0.5.4.crate) = 8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93
+SIZE (rust/crates/event-listener-strategy-0.5.4.crate) = 16179
+SHA256 (rust/crates/fastrand-2.3.0.crate) = 37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be
+SIZE (rust/crates/fastrand-2.3.0.crate) = 15076
+SHA256 (rust/crates/find-msvc-tools-0.1.3.crate) = 0399f9d26e5191ce32c498bebd31e7a3ceabc2745f0ac54af3f335126c3f24b3
+SIZE (rust/crates/find-msvc-tools-0.1.3.crate) = 30486
+SHA256 (rust/crates/fnv-1.0.7.crate) = 3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1
+SIZE (rust/crates/fnv-1.0.7.crate) = 11266
+SHA256 (rust/crates/foreign-types-0.3.2.crate) = f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1
+SIZE (rust/crates/foreign-types-0.3.2.crate) = 7504
+SHA256 (rust/crates/foreign-types-shared-0.1.1.crate) = 00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b
+SIZE (rust/crates/foreign-types-shared-0.1.1.crate) = 5672
+SHA256 (rust/crates/futures-core-0.3.31.crate) = 05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e
+SIZE (rust/crates/futures-core-0.3.31.crate) = 14318
+SHA256 (rust/crates/getrandom-0.3.3.crate) = 26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4
+SIZE (rust/crates/getrandom-0.3.3.crate) = 49493
+SHA256 (rust/crates/gimli-0.32.3.crate) = e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7
+SIZE (rust/crates/gimli-0.32.3.crate) = 289789
+SHA256 (rust/crates/heck-0.5.0.crate) = 2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea
+SIZE (rust/crates/heck-0.5.0.crate) = 11517
+SHA256 (rust/crates/hermit-abi-0.5.2.crate) = fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c
+SIZE (rust/crates/hermit-abi-0.5.2.crate) = 17435
+SHA256 (rust/crates/hmac-sha256-1.1.14.crate) = ec9d92d097f4749b64e8cc33d924d9f40a2d4eb91402b458014b781f5733d60f
+SIZE (rust/crates/hmac-sha256-1.1.14.crate) = 10732
+SHA256 (rust/crates/http-1.3.1.crate) = f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565
+SIZE (rust/crates/http-1.3.1.crate) = 106063
+SHA256 (rust/crates/httparse-1.10.1.crate) = 6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87
+SIZE (rust/crates/httparse-1.10.1.crate) = 45190
+SHA256 (rust/crates/io-uring-0.7.10.crate) = 046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b
+SIZE (rust/crates/io-uring-0.7.10.crate) = 103070
+SHA256 (rust/crates/is_terminal_polyfill-1.70.1.crate) = 7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf
+SIZE (rust/crates/is_terminal_polyfill-1.70.1.crate) = 7492
+SHA256 (rust/crates/itoa-1.0.15.crate) = 4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c
+SIZE (rust/crates/itoa-1.0.15.crate) = 11231
+SHA256 (rust/crates/libc-0.2.176.crate) = 58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174
+SIZE (rust/crates/libc-0.2.176.crate) = 790040
+SHA256 (rust/crates/linux-raw-sys-0.11.0.crate) = df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039
+SIZE (rust/crates/linux-raw-sys-0.11.0.crate) = 2659624
+SHA256 (rust/crates/lock_api-0.4.14.crate) = 224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965
+SIZE (rust/crates/lock_api-0.4.14.crate) = 29249
+SHA256 (rust/crates/log-0.4.28.crate) = 34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432
+SIZE (rust/crates/log-0.4.28.crate) = 51131
+SHA256 (rust/crates/lzma-rust2-0.15.7.crate) = 1670343e58806300d87950e3401e820b519b9384281bbabfb15e3636689ffd69
+SIZE (rust/crates/lzma-rust2-0.15.7.crate) = 253988
+SHA256 (rust/crates/matrixmultiply-0.3.10.crate) = a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08
+SIZE (rust/crates/matrixmultiply-0.3.10.crate) = 58170
+SHA256 (rust/crates/memchr-2.7.6.crate) = f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273
+SIZE (rust/crates/memchr-2.7.6.crate) = 97616
+SHA256 (rust/crates/miniz_oxide-0.8.9.crate) = 1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316
+SIZE (rust/crates/miniz_oxide-0.8.9.crate) = 67132
+SHA256 (rust/crates/mio-1.0.4.crate) = 78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c
+SIZE (rust/crates/mio-1.0.4.crate) = 104212
+SHA256 (rust/crates/native-tls-0.2.14.crate) = 87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e
+SIZE (rust/crates/native-tls-0.2.14.crate) = 29385
+SHA256 (rust/crates/ndarray-0.17.1.crate) = 0c7c9125e8f6f10c9da3aad044cc918cf8784fa34de857b1aa68038eb05a50a9
+SIZE (rust/crates/ndarray-0.17.1.crate) = 316954
+SHA256 (rust/crates/num-complex-0.4.6.crate) = 73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495
+SIZE (rust/crates/num-complex-0.4.6.crate) = 30352
+SHA256 (rust/crates/num-integer-0.1.46.crate) = 7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f
+SIZE (rust/crates/num-integer-0.1.46.crate) = 22331
+SHA256 (rust/crates/num-traits-0.2.19.crate) = 071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841
+SIZE (rust/crates/num-traits-0.2.19.crate) = 51631
+SHA256 (rust/crates/num_cpus-1.17.0.crate) = 91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b
+SIZE (rust/crates/num_cpus-1.17.0.crate) = 15874
+SHA256 (rust/crates/object-0.37.3.crate) = ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe
+SIZE (rust/crates/object-0.37.3.crate) = 344032
+SHA256 (rust/crates/once_cell-1.21.3.crate) = 42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d
+SIZE (rust/crates/once_cell-1.21.3.crate) = 34534
+SHA256 (rust/crates/once_cell_polyfill-1.70.1.crate) = a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad
+SIZE (rust/crates/once_cell_polyfill-1.70.1.crate) = 7510
+SHA256 (rust/crates/openssl-0.10.78.crate) = f38c4372413cdaaf3cc79dd92d29d7d9f5ab09b51b10dded508fb90bb70b9222
+SIZE (rust/crates/openssl-0.10.78.crate) = 292622
+SHA256 (rust/crates/openssl-macros-0.1.1.crate) = a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c
+SIZE (rust/crates/openssl-macros-0.1.1.crate) = 5601
+SHA256 (rust/crates/openssl-probe-0.1.6.crate) = d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e
+SIZE (rust/crates/openssl-probe-0.1.6.crate) = 8128
+SHA256 (rust/crates/openssl-sys-0.9.114.crate) = 13ce1245cd07fcc4cfdb438f7507b0c7e4f3849a69fd84d52374c66d83741bb6
+SIZE (rust/crates/openssl-sys-0.9.114.crate) = 75617
+SHA256 (rust/crates/ort-2.0.0-rc.12.crate) = d7de3af33d24a745ffb8fab904b13478438d1cd52868e6f17735ef6e1f8bf133
+SIZE (rust/crates/ort-2.0.0-rc.12.crate) = 149216
+SHA256 (rust/crates/ort-sys-2.0.0-rc.12.crate) = d7b497d21a8b6fbb4b5a544f8fadb77e801a09ae0add9e411d31c6f89e3c1e90
+SIZE (rust/crates/ort-sys-2.0.0-rc.12.crate) = 55131
+SHA256 (rust/crates/parking-2.2.1.crate) = f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba
+SIZE (rust/crates/parking-2.2.1.crate) = 10685
+SHA256 (rust/crates/parking_lot-0.12.5.crate) = 93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a
+SIZE (rust/crates/parking_lot-0.12.5.crate) = 46735
+SHA256 (rust/crates/parking_lot_core-0.9.12.crate) = 2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1
+SIZE (rust/crates/parking_lot_core-0.9.12.crate) = 34110
+SHA256 (rust/crates/pem-rfc7468-0.7.0.crate) = 88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412
+SIZE (rust/crates/pem-rfc7468-0.7.0.crate) = 24159
+SHA256 (rust/crates/percent-encoding-2.3.2.crate) = 9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220
+SIZE (rust/crates/percent-encoding-2.3.2.crate) = 11583
+SHA256 (rust/crates/pin-project-lite-0.2.16.crate) = 3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b
+SIZE (rust/crates/pin-project-lite-0.2.16.crate) = 30504
+SHA256 (rust/crates/pkg-config-0.3.32.crate) = 7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c
+SIZE (rust/crates/pkg-config-0.3.32.crate) = 21370
+SHA256 (rust/crates/portable-atomic-1.11.1.crate) = f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483
+SIZE (rust/crates/portable-atomic-1.11.1.crate) = 185506
+SHA256 (rust/crates/portable-atomic-util-0.2.4.crate) = d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507
+SIZE (rust/crates/portable-atomic-util-0.2.4.crate) = 47043
+SHA256 (rust/crates/proc-macro2-1.0.101.crate) = 89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de
+SIZE (rust/crates/proc-macro2-1.0.101.crate) = 53886
+SHA256 (rust/crates/quote-1.0.41.crate) = ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1
+SIZE (rust/crates/quote-1.0.41.crate) = 31408
+SHA256 (rust/crates/r-efi-5.3.0.crate) = 69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f
+SIZE (rust/crates/r-efi-5.3.0.crate) = 64532
+SHA256 (rust/crates/rawpointer-0.2.1.crate) = 60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3
+SIZE (rust/crates/rawpointer-0.2.1.crate) = 7490
+SHA256 (rust/crates/redox_syscall-0.5.18.crate) = ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d
+SIZE (rust/crates/redox_syscall-0.5.18.crate) = 30747
+SHA256 (rust/crates/rustc-demangle-0.1.26.crate) = 56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace
+SIZE (rust/crates/rustc-demangle-0.1.26.crate) = 30340
+SHA256 (rust/crates/rustix-1.1.2.crate) = cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e
+SIZE (rust/crates/rustix-1.1.2.crate) = 422717
+SHA256 (rust/crates/rustls-pemfile-2.2.0.crate) = dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50
+SIZE (rust/crates/rustls-pemfile-2.2.0.crate) = 25849
+SHA256 (rust/crates/rustls-pki-types-1.12.0.crate) = 229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79
+SIZE (rust/crates/rustls-pki-types-1.12.0.crate) = 64740
+SHA256 (rust/crates/ryu-1.0.20.crate) = 28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f
+SIZE (rust/crates/ryu-1.0.20.crate) = 48738
+SHA256 (rust/crates/schannel-0.1.28.crate) = 891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1
+SIZE (rust/crates/schannel-0.1.28.crate) = 42312
+SHA256 (rust/crates/scopeguard-1.2.0.crate) = 94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49
+SIZE (rust/crates/scopeguard-1.2.0.crate) = 11619
+SHA256 (rust/crates/security-framework-2.11.1.crate) = 897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02
+SIZE (rust/crates/security-framework-2.11.1.crate) = 80188
+SHA256 (rust/crates/security-framework-sys-2.15.0.crate) = cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0
+SIZE (rust/crates/security-framework-sys-2.15.0.crate) = 20718
+SHA256 (rust/crates/serde-1.0.228.crate) = 9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e
+SIZE (rust/crates/serde-1.0.228.crate) = 83652
+SHA256 (rust/crates/serde_core-1.0.228.crate) = 41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad
+SIZE (rust/crates/serde_core-1.0.228.crate) = 63111
+SHA256 (rust/crates/serde_derive-1.0.228.crate) = d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79
+SIZE (rust/crates/serde_derive-1.0.228.crate) = 59605
+SHA256 (rust/crates/serde_json-1.0.145.crate) = 402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c
+SIZE (rust/crates/serde_json-1.0.145.crate) = 155748
+SHA256 (rust/crates/shlex-1.3.0.crate) = 0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64
+SIZE (rust/crates/shlex-1.3.0.crate) = 18713
+SHA256 (rust/crates/signal-hook-registry-1.4.6.crate) = b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b
+SIZE (rust/crates/signal-hook-registry-1.4.6.crate) = 19277
+SHA256 (rust/crates/slab-0.4.11.crate) = 7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589
+SIZE (rust/crates/slab-0.4.11.crate) = 18549
+SHA256 (rust/crates/smallvec-1.15.1.crate) = 67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03
+SIZE (rust/crates/smallvec-1.15.1.crate) = 38116
+SHA256 (rust/crates/socket2-0.6.0.crate) = 233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807
+SIZE (rust/crates/socket2-0.6.0.crate) = 57974
+SHA256 (rust/crates/socks-0.3.4.crate) = f0c3dbbd9ae980613c6dd8e28a9407b50509d3803b57624d5dfe8315218cd58b
+SIZE (rust/crates/socks-0.3.4.crate) = 13172
+SHA256 (rust/crates/strsim-0.11.1.crate) = 7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f
+SIZE (rust/crates/strsim-0.11.1.crate) = 14266
+SHA256 (rust/crates/syn-2.0.106.crate) = ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6
+SIZE (rust/crates/syn-2.0.106.crate) = 301514
+SHA256 (rust/crates/tempfile-3.23.0.crate) = 2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16
+SIZE (rust/crates/tempfile-3.23.0.crate) = 43063
+SHA256 (rust/crates/thiserror-1.0.69.crate) = b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52
+SIZE (rust/crates/thiserror-1.0.69.crate) = 22198
+SHA256 (rust/crates/thiserror-impl-1.0.69.crate) = 4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1
+SIZE (rust/crates/thiserror-impl-1.0.69.crate) = 18365
+SHA256 (rust/crates/tokio-1.47.1.crate) = 89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038
+SIZE (rust/crates/tokio-1.47.1.crate) = 829790
+SHA256 (rust/crates/tokio-macros-2.5.0.crate) = 6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8
+SIZE (rust/crates/tokio-macros-2.5.0.crate) = 12617
+SHA256 (rust/crates/tracing-0.1.41.crate) = 784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0
+SIZE (rust/crates/tracing-0.1.41.crate) = 82448
+SHA256 (rust/crates/tracing-core-0.1.34.crate) = b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678
+SIZE (rust/crates/tracing-core-0.1.34.crate) = 63760
+SHA256 (rust/crates/unicode-ident-1.0.19.crate) = f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d
+SIZE (rust/crates/unicode-ident-1.0.19.crate) = 47480
+SHA256 (rust/crates/ureq-3.1.2.crate) = 99ba1025f18a4a3fc3e9b48c868e9beb4f24f4b4b1a325bada26bd4119f46537
+SIZE (rust/crates/ureq-3.1.2.crate) = 133481
+SHA256 (rust/crates/ureq-proto-0.5.2.crate) = 60b4531c118335662134346048ddb0e54cc86bd7e81866757873055f0e38f5d2
+SIZE (rust/crates/ureq-proto-0.5.2.crate) = 64346
+SHA256 (rust/crates/utf-8-0.7.6.crate) = 09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9
+SIZE (rust/crates/utf-8-0.7.6.crate) = 10422
+SHA256 (rust/crates/utf8parse-0.2.2.crate) = 06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821
+SIZE (rust/crates/utf8parse-0.2.2.crate) = 13499
+SHA256 (rust/crates/vcpkg-0.2.15.crate) = accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426
+SIZE (rust/crates/vcpkg-0.2.15.crate) = 228735
+SHA256 (rust/crates/wasi-0.11.1+wasi-snapshot-preview1.crate) = ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b
+SIZE (rust/crates/wasi-0.11.1+wasi-snapshot-preview1.crate) = 28477
+SHA256 (rust/crates/wasi-0.14.7+wasi-0.2.4.crate) = 883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c
+SIZE (rust/crates/wasi-0.14.7+wasi-0.2.4.crate) = 18219
+SHA256 (rust/crates/wasip2-1.0.1+wasi-0.2.4.crate) = 0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7
+SIZE (rust/crates/wasip2-1.0.1+wasi-0.2.4.crate) = 132087
+SHA256 (rust/crates/webpki-root-certs-1.0.2.crate) = 4e4ffd8df1c57e87c325000a3d6ef93db75279dc3a231125aac571650f22b12a
+SIZE (rust/crates/webpki-root-certs-1.0.2.crate) = 173652
+SHA256 (rust/crates/winapi-0.3.9.crate) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419
+SIZE (rust/crates/winapi-0.3.9.crate) = 1200382
+SHA256 (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6
+SIZE (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = 2918815
+SHA256 (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f
+SIZE (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 2947998
+SHA256 (rust/crates/windows-link-0.2.0.crate) = 45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65
+SIZE (rust/crates/windows-link-0.2.0.crate) = 6170
+SHA256 (rust/crates/windows-sys-0.59.0.crate) = 1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b
+SIZE (rust/crates/windows-sys-0.59.0.crate) = 2387323
+SHA256 (rust/crates/windows-sys-0.60.2.crate) = f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb
+SIZE (rust/crates/windows-sys-0.60.2.crate) = 2518479
+SHA256 (rust/crates/windows-sys-0.61.1.crate) = 6f109e41dd4a3c848907eb83d5a42ea98b3769495597450cf6d153507b166f0f
+SIZE (rust/crates/windows-sys-0.61.1.crate) = 2517255
+SHA256 (rust/crates/windows-targets-0.52.6.crate) = 9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973
+SIZE (rust/crates/windows-targets-0.52.6.crate) = 6403
+SHA256 (rust/crates/windows-targets-0.53.4.crate) = 2d42b7b7f66d2a06854650af09cfdf8713e427a439c97ad65a6375318033ac4b
+SIZE (rust/crates/windows-targets-0.53.4.crate) = 7161
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.52.6.crate) = 32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3
+SIZE (rust/crates/windows_aarch64_gnullvm-0.52.6.crate) = 435718
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.53.0.crate) = 86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764
+SIZE (rust/crates/windows_aarch64_gnullvm-0.53.0.crate) = 782443
+SHA256 (rust/crates/windows_aarch64_msvc-0.52.6.crate) = 09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469
+SIZE (rust/crates/windows_aarch64_msvc-0.52.6.crate) = 832615
+SHA256 (rust/crates/windows_aarch64_msvc-0.53.0.crate) = c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c
+SIZE (rust/crates/windows_aarch64_msvc-0.53.0.crate) = 834446
+SHA256 (rust/crates/windows_i686_gnu-0.52.6.crate) = 8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b
+SIZE (rust/crates/windows_i686_gnu-0.52.6.crate) = 880402
+SHA256 (rust/crates/windows_i686_gnu-0.53.0.crate) = c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3
+SIZE (rust/crates/windows_i686_gnu-0.53.0.crate) = 936973
+SHA256 (rust/crates/windows_i686_gnullvm-0.52.6.crate) = 0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66
+SIZE (rust/crates/windows_i686_gnullvm-0.52.6.crate) = 475940
+SHA256 (rust/crates/windows_i686_gnullvm-0.53.0.crate) = 9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11
+SIZE (rust/crates/windows_i686_gnullvm-0.53.0.crate) = 854056
+SHA256 (rust/crates/windows_i686_msvc-0.52.6.crate) = 240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66
+SIZE (rust/crates/windows_i686_msvc-0.52.6.crate) = 901163
+SHA256 (rust/crates/windows_i686_msvc-0.53.0.crate) = 581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d
+SIZE (rust/crates/windows_i686_msvc-0.53.0.crate) = 903450
+SHA256 (rust/crates/windows_x86_64_gnu-0.52.6.crate) = 147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78
+SIZE (rust/crates/windows_x86_64_gnu-0.52.6.crate) = 836363
+SHA256 (rust/crates/windows_x86_64_gnu-0.53.0.crate) = 2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba
+SIZE (rust/crates/windows_x86_64_gnu-0.53.0.crate) = 902585
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d
+SIZE (rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 435707
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.53.0.crate) = 0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57
+SIZE (rust/crates/windows_x86_64_gnullvm-0.53.0.crate) = 782434
+SHA256 (rust/crates/windows_x86_64_msvc-0.52.6.crate) = 589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec
+SIZE (rust/crates/windows_x86_64_msvc-0.52.6.crate) = 832564
+SHA256 (rust/crates/windows_x86_64_msvc-0.53.0.crate) = 271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486
+SIZE (rust/crates/windows_x86_64_msvc-0.53.0.crate) = 834400
+SHA256 (rust/crates/wit-bindgen-0.46.0.crate) = f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59
+SIZE (rust/crates/wit-bindgen-0.46.0.crate) = 60508
+SHA256 (rust/crates/zeroize-1.8.2.crate) = b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0
+SIZE (rust/crates/zeroize-1.8.2.crate) = 20907
+SHA256 (google-magika-cli-v1.1.0_GH0.tar.gz) = 87fd85f33d2c644d657de024b83cdc36bbdcf4a2961be5e93fe74e081477076c
+SIZE (google-magika-cli-v1.1.0_GH0.tar.gz) = 84264523
diff --git a/sysutils/magika/files/patch-src_main.rs b/sysutils/magika/files/patch-src_main.rs
new file mode 100644
index 000000000000..2b5083b604e4
--- /dev/null
+++ b/sysutils/magika/files/patch-src_main.rs
@@ -0,0 +1,48 @@
+-- Avoid assertions in the end of the process due to incorrect onnxruntime
+-- un-initialization order.
+-- Other distros have the same problem.
+
+--- src/main.rs.orig 2026-04-24 10:28:49 UTC
++++ src/main.rs
+@@ -157,12 +157,40 @@ struct Experimental {
+ parallel_execution: Option<bool>,
+ }
+
++// 1. Declare the raw Unix system call directly so we don't need the external libc crate
++extern "C" {
++ fn _exit(status: i32) -> !;
++}
++
+ #[tokio::main]
+ async fn main() -> Result<()> {
+ let mut tasks = JoinSet::new();
+ let result = start(&mut tasks).await;
+ while tasks.join_next().await.is_some() {}
+- result
++
++ // 2. Flush standard streams to ensure all printed results hit the terminal
++ use std::io::Write;
++ let _ = std::io::stdout().flush();
++ let _ = std::io::stderr().flush();
++
++ // 3. Determine the correct status code based on execution success
++ let code = match result {
++ Ok(_) => 0,
++ Err(e) => {
++ eprintln!("Error: {:?}", e);
++ 1
++ }
++ };
++
++ // 4. Invoke the raw kernel-level exit. This drops the process image instantly,
++ // preventing the broken C++ ONNX static destructors from ever running.
++ unsafe {
++ _exit(code);
++ }
++
++ // 5. Satisfy the compiler's expected return type contract
++ #[allow(unreachable_code)]
++ Ok(())
+ }
+
+ async fn start(tasks: &mut JoinSet<()>) -> Result<()> {
diff --git a/sysutils/magika/pkg-descr b/sysutils/magika/pkg-descr
new file mode 100644
index 000000000000..5cc0287320e3
--- /dev/null
+++ b/sysutils/magika/pkg-descr
@@ -0,0 +1,11 @@
+Magika is a novel AI-powered file type detection tool that relies on the recent
+advance of deep learning to provide accurate detection. Under the hood, Magika
+employs a custom, highly optimized model that only weighs about a few MBs, and
+enables precise file identification within milliseconds, even when running on a
+single CPU. Magika has been trained and evaluated on a dataset of ~100M samples
+across 200+ content types (covering both binary and textual file formats), and
+it achieves an average ~99% accuracy on our test set.
+
+Magika is used at scale to help improve Google users' safety by routing Gmail,
+Drive, and Safe Browsing files to the proper security and content policy
+scanners, processing hundreds billions samples on a weekly basis.