git: 14127c04002b - main - devel/cpu_rec_rs: new port: determine CPU architecture of a binary

From: Stefan Eßer <se_at_FreeBSD.org>
Date: Wed, 28 Jun 2023 12:12:16 UTC
The branch main has been updated by se:

URL: https://cgit.FreeBSD.org/ports/commit/?id=14127c04002b1ce43339055d638829861e9d9a48

commit 14127c04002b1ce43339055d638829861e9d9a48
Author:     Stefan Eßer <se@FreeBSD.org>
AuthorDate: 2023-06-28 12:11:03 +0000
Commit:     Stefan Eßer <se@FreeBSD.org>
CommitDate: 2023-06-28 12:11:03 +0000

    devel/cpu_rec_rs: new port: determine CPU architecture of a binary
---
 devel/Makefile                           |   1 +
 devel/cpu_rec_rs/Makefile                |  27 +++++
 devel/cpu_rec_rs/Makefile.crates         |  89 ++++++++++++++++
 devel/cpu_rec_rs/distinfo                | 167 +++++++++++++++++++++++++++++++
 devel/cpu_rec_rs/files/patch-src_main.rs |  11 ++
 devel/cpu_rec_rs/pkg-descr               |  12 +++
 devel/cpu_rec_rs/pkg-plist               |  87 ++++++++++++++++
 7 files changed, 394 insertions(+)

diff --git a/devel/Makefile b/devel/Makefile
index c4a24c60f3fb..b9ccc66ccd92 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -460,6 +460,7 @@
     SUBDIR += cpputest
     SUBDIR += cproto
     SUBDIR += cpu_features
+    SUBDIR += cpu_rec_rs
     SUBDIR += cquery
     SUBDIR += cram
     SUBDIR += crc32c
diff --git a/devel/cpu_rec_rs/Makefile b/devel/cpu_rec_rs/Makefile
new file mode 100644
index 000000000000..bc1c4d8d7f6f
--- /dev/null
+++ b/devel/cpu_rec_rs/Makefile
@@ -0,0 +1,27 @@
+PORTNAME=	cpu_rec_rs
+DISTVERSION=	1.0.0
+CATEGORIES=	devel
+
+MAINTAINER=	se@FreeBSD.org
+COMMENT=	Determine which CPU architecture is used in a binary file
+WWW=		https://github.com/trou/cpu_rec_rs/
+
+LICENSE=	APACHE20
+LICENSE_FILE=	${WRKSRC}/LICENCE
+
+USES=		cargo
+USE_GITHUB=	yes
+GH_ACCOUNT=	trou
+GH_TAGNAME=	2b0cf54
+
+OPTIONS_DEFINE=	DOCS
+
+pre-build:
+		${REINPLACE_CMD} 's!%%CORPUS_DIR%%!${DATADIR}!' ${WRKSRC}/src/main.rs
+
+pre-install:
+		${MKDIR} ${STAGEDIR}${DATADIR} ${STAGEDIR}${DOCSDIR}
+		${INSTALL_DATA} ${WRKSRC}/cpu_rec_corpus/*.corpus ${STAGEDIR}${DATADIR}
+		${INSTALL_DATA} ${WRKSRC}/README.md ${STAGEDIR}${DOCSDIR}
+
+.include <bsd.port.mk>
diff --git a/devel/cpu_rec_rs/Makefile.crates b/devel/cpu_rec_rs/Makefile.crates
new file mode 100644
index 000000000000..b68273b40f33
--- /dev/null
+++ b/devel/cpu_rec_rs/Makefile.crates
@@ -0,0 +1,89 @@
+===>  License APACHE20 accepted by the user
+===>   cpu_rec_rs-1.0.0 depends on file: /usr/local/sbin/pkg - found
+===> Fetching all distfiles required by cpu_rec_rs-1.0.0 for building
+===>  Extracting for cpu_rec_rs-1.0.0
+=> SHA256 Checksum OK for trou-cpu_rec_rs-1.0.0-2b0cf54_GH0.tar.gz.
+===>  Moving crates to /usr/work/usr/git/ports/sysutils/cpu_rec_rs/work/cpu_rec_rs-2b0cf54/cargo-crates
+===> /usr/work/usr/git/ports/sysutils/cpu_rec_rs/work/cpu_rec_rs-2b0cf54/Cargo.lock not found.  Trying to generate it...
+CARGO_CRATES=	anstream-0.3.2 \
+		anstyle-1.0.1 \
+		anstyle-parse-0.2.1 \
+		anstyle-query-1.0.0 \
+		anstyle-wincon-1.0.1 \
+		anyhow-1.0.71 \
+		assert_approx_eq-1.1.0 \
+		atty-0.2.14 \
+		autocfg-1.1.0 \
+		bitflags-1.3.2 \
+		cc-1.0.79 \
+		cfg-if-1.0.0 \
+		clap-4.3.8 \
+		clap_builder-4.3.8 \
+		clap_lex-0.5.0 \
+		colorchoice-1.0.0 \
+		colored-2.0.0 \
+		crossterm-0.20.0 \
+		crossterm_winapi-0.8.0 \
+		errno-0.3.1 \
+		errno-dragonfly-0.1.2 \
+		getrandom-0.2.10 \
+		glob-0.3.1 \
+		hermit-abi-0.1.19 \
+		hermit-abi-0.3.1 \
+		instant-0.1.12 \
+		io-lifetimes-1.0.11 \
+		is-terminal-0.4.7 \
+		itoa-1.0.6 \
+		lazy_static-1.4.0 \
+		libc-0.2.147 \
+		linux-raw-sys-0.3.8 \
+		lock_api-0.4.10 \
+		log-0.4.19 \
+		mio-0.7.14 \
+		miow-0.3.7 \
+		ntapi-0.3.7 \
+		num_threads-0.1.6 \
+		parking_lot-0.11.2 \
+		parking_lot_core-0.8.6 \
+		ppv-lite86-0.2.17 \
+		rand-0.8.5 \
+		rand_chacha-0.3.1 \
+		rand_core-0.6.4 \
+		redox_syscall-0.2.16 \
+		rustix-0.37.20 \
+		scopeguard-1.1.0 \
+		serde-1.0.164 \
+		signal-hook-0.3.15 \
+		signal-hook-mio-0.2.3 \
+		signal-hook-registry-1.4.1 \
+		simple_logger-4.2.0 \
+		smallvec-1.10.0 \
+		strsim-0.10.0 \
+		tablestream-0.1.3 \
+		time-0.3.22 \
+		time-core-0.1.1 \
+		time-macros-0.2.9 \
+		unicode-truncate-0.2.0 \
+		unicode-width-0.1.10 \
+		utf8parse-0.2.1 \
+		wasi-0.11.0+wasi-snapshot-preview1 \
+		winapi-0.3.9 \
+		winapi-i686-pc-windows-gnu-0.4.0 \
+		winapi-x86_64-pc-windows-gnu-0.4.0 \
+		windows-sys-0.42.0 \
+		windows-sys-0.48.0 \
+		windows-targets-0.48.0 \
+		windows_aarch64_gnullvm-0.42.2 \
+		windows_aarch64_gnullvm-0.48.0 \
+		windows_aarch64_msvc-0.42.2 \
+		windows_aarch64_msvc-0.48.0 \
+		windows_i686_gnu-0.42.2 \
+		windows_i686_gnu-0.48.0 \
+		windows_i686_msvc-0.42.2 \
+		windows_i686_msvc-0.48.0 \
+		windows_x86_64_gnu-0.42.2 \
+		windows_x86_64_gnu-0.48.0 \
+		windows_x86_64_gnullvm-0.42.2 \
+		windows_x86_64_gnullvm-0.48.0 \
+		windows_x86_64_msvc-0.42.2 \
+		windows_x86_64_msvc-0.48.0
diff --git a/devel/cpu_rec_rs/distinfo b/devel/cpu_rec_rs/distinfo
new file mode 100644
index 000000000000..bf806c156ab0
--- /dev/null
+++ b/devel/cpu_rec_rs/distinfo
@@ -0,0 +1,167 @@
+TIMESTAMP = 1687951246
+SHA256 (rust/crates/anstream-0.3.2.crate) = 0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163
+SIZE (rust/crates/anstream-0.3.2.crate) = 19504
+SHA256 (rust/crates/anstyle-1.0.1.crate) = 3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd
+SIZE (rust/crates/anstyle-1.0.1.crate) = 13977
+SHA256 (rust/crates/anstyle-parse-0.2.1.crate) = 938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333
+SIZE (rust/crates/anstyle-parse-0.2.1.crate) = 24802
+SHA256 (rust/crates/anstyle-query-1.0.0.crate) = 5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b
+SIZE (rust/crates/anstyle-query-1.0.0.crate) = 8620
+SHA256 (rust/crates/anstyle-wincon-1.0.1.crate) = 180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188
+SIZE (rust/crates/anstyle-wincon-1.0.1.crate) = 11718
+SHA256 (rust/crates/anyhow-1.0.71.crate) = 9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8
+SIZE (rust/crates/anyhow-1.0.71.crate) = 43808
+SHA256 (rust/crates/assert_approx_eq-1.1.0.crate) = 3c07dab4369547dbe5114677b33fbbf724971019f3818172d59a97a61c774ffd
+SIZE (rust/crates/assert_approx_eq-1.1.0.crate) = 7512
+SHA256 (rust/crates/atty-0.2.14.crate) = d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8
+SIZE (rust/crates/atty-0.2.14.crate) = 5470
+SHA256 (rust/crates/autocfg-1.1.0.crate) = d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa
+SIZE (rust/crates/autocfg-1.1.0.crate) = 13272
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/cc-1.0.79.crate) = 50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f
+SIZE (rust/crates/cc-1.0.79.crate) = 62624
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/clap-4.3.8.crate) = d9394150f5b4273a1763355bd1c2ec54cc5a2593f790587bcd6b2c947cfa9211
+SIZE (rust/crates/clap-4.3.8.crate) = 54806
+SHA256 (rust/crates/clap_builder-4.3.8.crate) = 9a78fbdd3cc2914ddf37ba444114bc7765bbdcb55ec9cbe6fa054f0137400717
+SIZE (rust/crates/clap_builder-4.3.8.crate) = 162239
+SHA256 (rust/crates/clap_lex-0.5.0.crate) = 2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b
+SIZE (rust/crates/clap_lex-0.5.0.crate) = 11792
+SHA256 (rust/crates/colorchoice-1.0.0.crate) = acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7
+SIZE (rust/crates/colorchoice-1.0.0.crate) = 6857
+SHA256 (rust/crates/colored-2.0.0.crate) = b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd
+SIZE (rust/crates/colored-2.0.0.crate) = 21619
+SHA256 (rust/crates/crossterm-0.20.0.crate) = c0ebde6a9dd5e331cd6c6f48253254d117642c31653baa475e394657c59c1f7d
+SIZE (rust/crates/crossterm-0.20.0.crate) = 103025
+SHA256 (rust/crates/crossterm_winapi-0.8.0.crate) = 3a6966607622438301997d3dac0d2f6e9a90c68bb6bc1785ea98456ab93c0507
+SIZE (rust/crates/crossterm_winapi-0.8.0.crate) = 15531
+SHA256 (rust/crates/errno-0.3.1.crate) = 4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a
+SIZE (rust/crates/errno-0.3.1.crate) = 10348
+SHA256 (rust/crates/errno-dragonfly-0.1.2.crate) = aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf
+SIZE (rust/crates/errno-dragonfly-0.1.2.crate) = 1810
+SHA256 (rust/crates/getrandom-0.2.10.crate) = be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427
+SIZE (rust/crates/getrandom-0.2.10.crate) = 34955
+SHA256 (rust/crates/glob-0.3.1.crate) = d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b
+SIZE (rust/crates/glob-0.3.1.crate) = 18880
+SHA256 (rust/crates/hermit-abi-0.1.19.crate) = 62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33
+SIZE (rust/crates/hermit-abi-0.1.19.crate) = 9979
+SHA256 (rust/crates/hermit-abi-0.3.1.crate) = fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286
+SIZE (rust/crates/hermit-abi-0.3.1.crate) = 13793
+SHA256 (rust/crates/instant-0.1.12.crate) = 7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c
+SIZE (rust/crates/instant-0.1.12.crate) = 6128
+SHA256 (rust/crates/io-lifetimes-1.0.11.crate) = eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2
+SIZE (rust/crates/io-lifetimes-1.0.11.crate) = 37346
+SHA256 (rust/crates/is-terminal-0.4.7.crate) = adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f
+SIZE (rust/crates/is-terminal-0.4.7.crate) = 8356
+SHA256 (rust/crates/itoa-1.0.6.crate) = 453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6
+SIZE (rust/crates/itoa-1.0.6.crate) = 10410
+SHA256 (rust/crates/lazy_static-1.4.0.crate) = e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646
+SIZE (rust/crates/lazy_static-1.4.0.crate) = 10443
+SHA256 (rust/crates/libc-0.2.147.crate) = b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3
+SIZE (rust/crates/libc-0.2.147.crate) = 686772
+SHA256 (rust/crates/linux-raw-sys-0.3.8.crate) = ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519
+SIZE (rust/crates/linux-raw-sys-0.3.8.crate) = 1013776
+SHA256 (rust/crates/lock_api-0.4.10.crate) = c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16
+SIZE (rust/crates/lock_api-0.4.10.crate) = 26713
+SHA256 (rust/crates/log-0.4.19.crate) = b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4
+SIZE (rust/crates/log-0.4.19.crate) = 38073
+SHA256 (rust/crates/mio-0.7.14.crate) = 8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc
+SIZE (rust/crates/mio-0.7.14.crate) = 87429
+SHA256 (rust/crates/miow-0.3.7.crate) = b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21
+SIZE (rust/crates/miow-0.3.7.crate) = 24563
+SHA256 (rust/crates/ntapi-0.3.7.crate) = c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f
+SIZE (rust/crates/ntapi-0.3.7.crate) = 126994
+SHA256 (rust/crates/num_threads-0.1.6.crate) = 2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44
+SIZE (rust/crates/num_threads-0.1.6.crate) = 7334
+SHA256 (rust/crates/parking_lot-0.11.2.crate) = 7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99
+SIZE (rust/crates/parking_lot-0.11.2.crate) = 39869
+SHA256 (rust/crates/parking_lot_core-0.8.6.crate) = 60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc
+SIZE (rust/crates/parking_lot_core-0.8.6.crate) = 32567
+SHA256 (rust/crates/ppv-lite86-0.2.17.crate) = 5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de
+SIZE (rust/crates/ppv-lite86-0.2.17.crate) = 22242
+SHA256 (rust/crates/rand-0.8.5.crate) = 34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404
+SIZE (rust/crates/rand-0.8.5.crate) = 87113
+SHA256 (rust/crates/rand_chacha-0.3.1.crate) = e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88
+SIZE (rust/crates/rand_chacha-0.3.1.crate) = 15251
+SHA256 (rust/crates/rand_core-0.6.4.crate) = ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c
+SIZE (rust/crates/rand_core-0.6.4.crate) = 22666
+SHA256 (rust/crates/redox_syscall-0.2.16.crate) = fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a
+SIZE (rust/crates/redox_syscall-0.2.16.crate) = 24012
+SHA256 (rust/crates/rustix-0.37.20.crate) = b96e891d04aa506a6d1f318d2771bcb1c7dfda84e126660ace067c9b474bb2c0
+SIZE (rust/crates/rustix-0.37.20.crate) = 327665
+SHA256 (rust/crates/scopeguard-1.1.0.crate) = d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd
+SIZE (rust/crates/scopeguard-1.1.0.crate) = 11470
+SHA256 (rust/crates/serde-1.0.164.crate) = 9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d
+SIZE (rust/crates/serde-1.0.164.crate) = 77057
+SHA256 (rust/crates/signal-hook-0.3.15.crate) = 732768f1176d21d09e076c23a93123d40bba92d50c4058da34d45c8de8e682b9
+SIZE (rust/crates/signal-hook-0.3.15.crate) = 50138
+SHA256 (rust/crates/signal-hook-mio-0.2.3.crate) = 29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af
+SIZE (rust/crates/signal-hook-mio-0.2.3.crate) = 9064
+SHA256 (rust/crates/signal-hook-registry-1.4.1.crate) = d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1
+SIZE (rust/crates/signal-hook-registry-1.4.1.crate) = 17987
+SHA256 (rust/crates/simple_logger-4.2.0.crate) = 2230cd5c29b815c9b699fb610b49a5ed65588f3509d9f0108be3a885da629333
+SIZE (rust/crates/simple_logger-4.2.0.crate) = 10680
+SHA256 (rust/crates/smallvec-1.10.0.crate) = a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0
+SIZE (rust/crates/smallvec-1.10.0.crate) = 31564
+SHA256 (rust/crates/strsim-0.10.0.crate) = 73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623
+SIZE (rust/crates/strsim-0.10.0.crate) = 11355
+SHA256 (rust/crates/tablestream-0.1.3.crate) = fea0bec6adf9f8917160e9db43da4ba1ec58b640dda5edab9a7ca74d22641b65
+SIZE (rust/crates/tablestream-0.1.3.crate) = 13281
+SHA256 (rust/crates/time-0.3.22.crate) = ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd
+SIZE (rust/crates/time-0.3.22.crate) = 113792
+SHA256 (rust/crates/time-core-0.1.1.crate) = 7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb
+SIZE (rust/crates/time-core-0.1.1.crate) = 7197
+SHA256 (rust/crates/time-macros-0.2.9.crate) = 372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b
+SIZE (rust/crates/time-macros-0.2.9.crate) = 23684
+SHA256 (rust/crates/unicode-truncate-0.2.0.crate) = a04be5ca5f7a4a7270ffea82bc41c59b87c611ed04f20e77c338e8d3c2348e42
+SIZE (rust/crates/unicode-truncate-0.2.0.crate) = 9835
+SHA256 (rust/crates/unicode-width-0.1.10.crate) = c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b
+SIZE (rust/crates/unicode-width-0.1.10.crate) = 18968
+SHA256 (rust/crates/utf8parse-0.2.1.crate) = 711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a
+SIZE (rust/crates/utf8parse-0.2.1.crate) = 13435
+SHA256 (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423
+SIZE (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 28131
+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-sys-0.42.0.crate) = 5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7
+SIZE (rust/crates/windows-sys-0.42.0.crate) = 3006791
+SHA256 (rust/crates/windows-sys-0.48.0.crate) = 677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9
+SIZE (rust/crates/windows-sys-0.48.0.crate) = 2628884
+SHA256 (rust/crates/windows-targets-0.48.0.crate) = 7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5
+SIZE (rust/crates/windows-targets-0.48.0.crate) = 7466
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.42.2.crate) = 597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8
+SIZE (rust/crates/windows_aarch64_gnullvm-0.42.2.crate) = 364071
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.48.0.crate) = 91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc
+SIZE (rust/crates/windows_aarch64_gnullvm-0.48.0.crate) = 366543
+SHA256 (rust/crates/windows_aarch64_msvc-0.42.2.crate) = e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43
+SIZE (rust/crates/windows_aarch64_msvc-0.42.2.crate) = 666981
+SHA256 (rust/crates/windows_aarch64_msvc-0.48.0.crate) = b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3
+SIZE (rust/crates/windows_aarch64_msvc-0.48.0.crate) = 671479
+SHA256 (rust/crates/windows_i686_gnu-0.42.2.crate) = c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f
+SIZE (rust/crates/windows_i686_gnu-0.42.2.crate) = 736236
+SHA256 (rust/crates/windows_i686_gnu-0.48.0.crate) = 622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241
+SIZE (rust/crates/windows_i686_gnu-0.48.0.crate) = 741490
+SHA256 (rust/crates/windows_i686_msvc-0.42.2.crate) = 44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060
+SIZE (rust/crates/windows_i686_msvc-0.42.2.crate) = 724951
+SHA256 (rust/crates/windows_i686_msvc-0.48.0.crate) = 4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00
+SIZE (rust/crates/windows_i686_msvc-0.48.0.crate) = 730056
+SHA256 (rust/crates/windows_x86_64_gnu-0.42.2.crate) = 8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36
+SIZE (rust/crates/windows_x86_64_gnu-0.42.2.crate) = 699373
+SHA256 (rust/crates/windows_x86_64_gnu-0.48.0.crate) = ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1
+SIZE (rust/crates/windows_x86_64_gnu-0.48.0.crate) = 703595
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.42.2.crate) = 26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3
+SIZE (rust/crates/windows_x86_64_gnullvm-0.42.2.crate) = 364068
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.48.0.crate) = 7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953
+SIZE (rust/crates/windows_x86_64_gnullvm-0.48.0.crate) = 366536
+SHA256 (rust/crates/windows_x86_64_msvc-0.42.2.crate) = 9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0
+SIZE (rust/crates/windows_x86_64_msvc-0.42.2.crate) = 666936
+SHA256 (rust/crates/windows_x86_64_msvc-0.48.0.crate) = 1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a
+SIZE (rust/crates/windows_x86_64_msvc-0.48.0.crate) = 671422
+SHA256 (trou-cpu_rec_rs-1.0.0-2b0cf54_GH0.tar.gz) = a897ca3f53986577a3700654e5191bb09219e2439b3068f6ddf802f1f53eab15
+SIZE (trou-cpu_rec_rs-1.0.0-2b0cf54_GH0.tar.gz) = 10789793
diff --git a/devel/cpu_rec_rs/files/patch-src_main.rs b/devel/cpu_rec_rs/files/patch-src_main.rs
new file mode 100644
index 000000000000..a99cbddc87c3
--- /dev/null
+++ b/devel/cpu_rec_rs/files/patch-src_main.rs
@@ -0,0 +1,11 @@
+--- src/main.rs.orig	2023-06-22 09:40:27 UTC
++++ src/main.rs
+@@ -198,7 +198,7 @@ fn main() -> Result<()> {
+         .propagate_version(true)
+         .author("Raphaël Rigo <devel@syscall.eu>")
+         .about("Identifies CPU architectures in binaries")
+-        .arg(arg!(--corpus <corpus_dir>).default_value("cpu_rec_corpus"))
++        .arg(arg!(--corpus <corpus_dir>).default_value("%%CORPUS_DIR%%"))
+         .arg(arg!(-d - -debug))
+         .arg(arg!(-v - -verbose))
+         .arg(
diff --git a/devel/cpu_rec_rs/pkg-descr b/devel/cpu_rec_rs/pkg-descr
new file mode 100644
index 000000000000..2f133c840996
--- /dev/null
+++ b/devel/cpu_rec_rs/pkg-descr
@@ -0,0 +1,12 @@
+cpu_rec_rs is a Rust reimplementation of the original cpu_rec.
+Why reimplement it?
+
+ - Performance
+ - Code simplification
+ - Rust practice
+
+The original cpu_rec contains a lot of code necessary for experimenting
+and updating the corpus.
+
+If you want to play with various settings for prediction, please use
+cpu_rec (github.com/airbus-seclab/cpu_rec).
diff --git a/devel/cpu_rec_rs/pkg-plist b/devel/cpu_rec_rs/pkg-plist
new file mode 100644
index 000000000000..e0d609a21ce1
--- /dev/null
+++ b/devel/cpu_rec_rs/pkg-plist
@@ -0,0 +1,87 @@
+bin/cpu_rec_rs
+%%DATADIR%%/#6502#cc65.corpus
+%%DATADIR%%/6502.corpus
+%%DATADIR%%/68HC08.corpus
+%%DATADIR%%/68HC11.corpus
+%%DATADIR%%/8051.corpus
+%%DATADIR%%/ARC32eb.corpus
+%%DATADIR%%/ARC32el.corpus
+%%DATADIR%%/ARM64.corpus
+%%DATADIR%%/ARMeb.corpus
+%%DATADIR%%/ARMel.corpus
+%%DATADIR%%/ARMhf.corpus
+%%DATADIR%%/ARcompact.corpus
+%%DATADIR%%/AVR.corpus
+%%DATADIR%%/Alpha.corpus
+%%DATADIR%%/AxisCris.corpus
+%%DATADIR%%/Blackfin.corpus
+%%DATADIR%%/CLIPPER.corpus
+%%DATADIR%%/CUDA.corpus
+%%DATADIR%%/Cell-SPU.corpus
+%%DATADIR%%/CompactRISC.corpus
+%%DATADIR%%/Cray.corpus
+%%DATADIR%%/Epiphany.corpus
+%%DATADIR%%/FR-V.corpus
+%%DATADIR%%/FR30.corpus
+%%DATADIR%%/FT32.corpus
+%%DATADIR%%/H8-300.corpus
+%%DATADIR%%/H8S.corpus
+%%DATADIR%%/HP-Focus.corpus
+%%DATADIR%%/HP-PA.corpus
+%%DATADIR%%/IA-64.corpus
+%%DATADIR%%/IQ2000.corpus
+%%DATADIR%%/M32C.corpus
+%%DATADIR%%/M32R.corpus
+%%DATADIR%%/M68k.corpus
+%%DATADIR%%/M88k.corpus
+%%DATADIR%%/MCore.corpus
+%%DATADIR%%/MIPS16.corpus
+%%DATADIR%%/MIPSeb.corpus
+%%DATADIR%%/MIPSel.corpus
+%%DATADIR%%/MMIX.corpus
+%%DATADIR%%/MN10300.corpus
+%%DATADIR%%/MSP430.corpus
+%%DATADIR%%/Mico32.corpus
+%%DATADIR%%/MicroBlaze.corpus
+%%DATADIR%%/Moxie.corpus
+%%DATADIR%%/NDS32.corpus
+%%DATADIR%%/NIOS-II.corpus
+%%DATADIR%%/OCaml.corpus
+%%DATADIR%%/PDP-11.corpus
+%%DATADIR%%/PIC10.corpus
+%%DATADIR%%/PIC16.corpus
+%%DATADIR%%/PIC18.corpus
+%%DATADIR%%/PIC24.corpus
+%%DATADIR%%/PPCeb.corpus
+%%DATADIR%%/PPCel.corpus
+%%DATADIR%%/RISC-V.corpus
+%%DATADIR%%/RL78.corpus
+%%DATADIR%%/ROMP.corpus
+%%DATADIR%%/RX.corpus
+%%DATADIR%%/S-390.corpus
+%%DATADIR%%/SPARC.corpus
+%%DATADIR%%/STM8.corpus
+%%DATADIR%%/Stormy16.corpus
+%%DATADIR%%/SuperH.corpus
+%%DATADIR%%/TILEPro.corpus
+%%DATADIR%%/TLCS-90.corpus
+%%DATADIR%%/TMS320C2x.corpus
+%%DATADIR%%/TMS320C6x.corpus
+%%DATADIR%%/TriMedia.corpus
+%%DATADIR%%/V850.corpus
+%%DATADIR%%/VAX.corpus
+%%DATADIR%%/Visium.corpus
+%%DATADIR%%/WASM.corpus
+%%DATADIR%%/WE32000.corpus
+%%DATADIR%%/X86-64.corpus
+%%DATADIR%%/X86.corpus
+%%DATADIR%%/Xtensa.corpus
+%%DATADIR%%/Z80.corpus
+%%DATADIR%%/_mask1.corpus
+%%DATADIR%%/_ones.corpus
+%%DATADIR%%/_words.corpus
+%%DATADIR%%/_words_ucs2.corpus
+%%DATADIR%%/_zero.corpus
+%%DATADIR%%/i860.corpus
+%%DATADIR%%/xmos_xs2a.corpus
+%%PORTDOCS%%%%DOCSDIR%%/README.md