git: ce36d72b308b - main - devel/fsx: new port

From: Alan Somers <asomers_at_FreeBSD.org>
Date: Sat, 14 Jan 2023 21:38:44 UTC
The branch main has been updated by asomers (src committer):

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

commit ce36d72b308ba0f2f891382cedd9b100da15a124
Author:     Alan Somers <asomers@FreeBSD.org>
AuthorDate: 2023-01-13 17:23:35 +0000
Commit:     Alan Somers <asomers@FreeBSD.org>
CommitDate: 2023-01-14 21:36:56 +0000

    devel/fsx: new port
    
    The fsx utility tests file system I/O routines for correctness, with
    random input.  This port is a Rust rewrite of the classic C utility, as
    stored in freebsd-src in tools/regression/fsx.
    
    PR:             268938
    Approved by:    mikael (ports)
---
 devel/Makefile      |   1 +
 devel/fsx/Makefile  | 111 ++++++++++++++++++++++++++++++++++
 devel/fsx/distinfo  | 169 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 devel/fsx/pkg-descr |   5 ++
 4 files changed, 286 insertions(+)

diff --git a/devel/Makefile b/devel/Makefile
index 1df08c170c68..724226dbaef5 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -704,6 +704,7 @@
     SUBDIR += fsmtrie
     SUBDIR += fstrcmp
     SUBDIR += fstrm
+    SUBDIR += fsx
     SUBDIR += ftjam
     SUBDIR += ftnchek
     SUBDIR += ftxui
diff --git a/devel/fsx/Makefile b/devel/fsx/Makefile
new file mode 100644
index 000000000000..266804f2d533
--- /dev/null
+++ b/devel/fsx/Makefile
@@ -0,0 +1,111 @@
+PORTNAME=	fsx
+DISTVERSION=	0.1.0
+CATEGORIES=	devel
+MASTER_SITES=	CRATESIO
+DISTFILES=	${CARGO_DIST_SUBDIR}/${DISTNAME}${CARGO_CRATE_EXT}
+
+MAINTAINER=	asomers@FreeBSD.org
+COMMENT=	File System eXerciser
+WWW=		https://github.com/asomers/fsx-rs
+
+LICENSE=	APSL-2.0
+LICENSE_NAME=	Apple Public Source License 2.0
+LICENSE_FILE=	${WRKSRC}/LICENSE
+LICENSE_PERMS=	dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
+
+BUILD_DEPENDS=	llvm-config${LLVM_DEFAULT}:devel/llvm${LLVM_DEFAULT}
+
+USES=		cargo
+
+CARGO_CRATES=	aho-corasick-0.7.20 \
+		assert_cmd-2.0.7 \
+		bitflags-1.3.2 \
+		bstr-1.1.0 \
+		cc-1.0.78 \
+		cfg-if-1.0.0 \
+		clap-4.0.32 \
+		clap_derive-4.0.21 \
+		clap_lex-0.3.0 \
+		const_panic-0.2.7 \
+		ctor-0.1.26 \
+		diff-0.1.13 \
+		difflib-0.4.0 \
+		doc-comment-0.3.3 \
+		either-1.8.0 \
+		env_logger-0.10.0 \
+		errno-0.2.8 \
+		errno-dragonfly-0.1.2 \
+		fastrand-1.8.0 \
+		getrandom-0.2.8 \
+		heck-0.4.0 \
+		hermit-abi-0.2.6 \
+		humantime-2.1.0 \
+		instant-0.1.12 \
+		io-lifetimes-1.0.3 \
+		is-terminal-0.4.2 \
+		itertools-0.10.5 \
+		konst_kernel-0.3.4 \
+		libc-0.2.139 \
+		linux-raw-sys-0.1.4 \
+		log-0.4.17 \
+		memchr-2.5.0 \
+		nix-0.26.1 \
+		once_cell-1.17.0 \
+		os_str_bytes-6.4.1 \
+		output_vt100-0.1.3 \
+		ppv-lite86-0.2.17 \
+		predicates-2.1.5 \
+		predicates-core-1.0.5 \
+		predicates-tree-1.0.7 \
+		pretty_assertions-1.3.0 \
+		proc-macro-error-1.0.4 \
+		proc-macro-error-attr-1.0.4 \
+		proc-macro2-1.0.49 \
+		quote-1.0.23 \
+		rand-0.8.5 \
+		rand_chacha-0.3.1 \
+		rand_core-0.6.4 \
+		redox_syscall-0.2.16 \
+		regex-1.7.0 \
+		regex-automata-0.1.10 \
+		regex-syntax-0.6.28 \
+		remove_dir_all-0.5.3 \
+		ringbuffer-0.11.1 \
+		rstest-0.11.0 \
+		rustc_version-0.4.0 \
+		rustix-0.36.6 \
+		safemem-0.3.3 \
+		semver-1.0.16 \
+		serde-1.0.152 \
+		static_assertions-1.1.0 \
+		strsim-0.10.0 \
+		syn-1.0.107 \
+		tempfile-3.3.0 \
+		termcolor-1.1.3 \
+		termtree-0.4.0 \
+		unicode-ident-1.0.6 \
+		version_check-0.9.4 \
+		wait-timeout-0.2.0 \
+		wasi-0.11.0+wasi-snapshot-preview1 \
+		winapi-0.3.9 \
+		winapi-i686-pc-windows-gnu-0.4.0 \
+		winapi-util-0.1.5 \
+		winapi-x86_64-pc-windows-gnu-0.4.0 \
+		windows-sys-0.42.0 \
+		windows_aarch64_gnullvm-0.42.0 \
+		windows_aarch64_msvc-0.42.0 \
+		windows_i686_gnu-0.42.0 \
+		windows_i686_msvc-0.42.0 \
+		windows_x86_64_gnu-0.42.0 \
+		windows_x86_64_gnullvm-0.42.0 \
+		windows_x86_64_msvc-0.42.0 \
+		yansi-0.5.1
+
+PLIST_FILES=	bin/${PORTNAME} \
+		man/man1/${PORTNAME}.1.gz
+
+post-install:
+	${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
+	${INSTALL_MAN} ${WRKSRC}/doc/${PORTNAME}.1 ${STAGEDIR}${MAN1PREFIX}/man/man1
+
+.include <bsd.port.mk>
diff --git a/devel/fsx/distinfo b/devel/fsx/distinfo
new file mode 100644
index 000000000000..0be302955725
--- /dev/null
+++ b/devel/fsx/distinfo
@@ -0,0 +1,169 @@
+TIMESTAMP = 1673584965
+SHA256 (rust/crates/fsx-0.1.0.crate) = 169f92805af0d507cabc54e19c9723872dfe5a1fecee1440553a2f1463ecedfb
+SIZE (rust/crates/fsx-0.1.0.crate) = 28952
+SHA256 (rust/crates/aho-corasick-0.7.20.crate) = cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac
+SIZE (rust/crates/aho-corasick-0.7.20.crate) = 111440
+SHA256 (rust/crates/assert_cmd-2.0.7.crate) = fa3d466004a8b4cb1bc34044240a2fd29d17607e2e3bd613eb44fd48e8100da3
+SIZE (rust/crates/assert_cmd-2.0.7.crate) = 23600
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/bstr-1.1.0.crate) = b45ea9b00a7b3f2988e9a65ad3917e62123c38dba709b666506207be96d1790b
+SIZE (rust/crates/bstr-1.1.0.crate) = 340878
+SHA256 (rust/crates/cc-1.0.78.crate) = a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d
+SIZE (rust/crates/cc-1.0.78.crate) = 61375
+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.0.32.crate) = a7db700bc935f9e43e88d00b0850dae18a63773cfbec6d8e070fccf7fef89a39
+SIZE (rust/crates/clap-4.0.32.crate) = 207531
+SHA256 (rust/crates/clap_derive-4.0.21.crate) = 0177313f9f02afc995627906bbd8967e2be069f5261954222dac78290c2b9014
+SIZE (rust/crates/clap_derive-4.0.21.crate) = 27567
+SHA256 (rust/crates/clap_lex-0.3.0.crate) = 0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8
+SIZE (rust/crates/clap_lex-0.3.0.crate) = 9671
+SHA256 (rust/crates/const_panic-0.2.7.crate) = 58baae561b85ca19b3122a9ddd35c8ec40c3bcd14fe89921824eae73f7baffbf
+SIZE (rust/crates/const_panic-0.2.7.crate) = 48088
+SHA256 (rust/crates/ctor-0.1.26.crate) = 6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096
+SIZE (rust/crates/ctor-0.1.26.crate) = 10803
+SHA256 (rust/crates/diff-0.1.13.crate) = 56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8
+SIZE (rust/crates/diff-0.1.13.crate) = 46216
+SHA256 (rust/crates/difflib-0.4.0.crate) = 6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8
+SIZE (rust/crates/difflib-0.4.0.crate) = 7638
+SHA256 (rust/crates/doc-comment-0.3.3.crate) = fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10
+SIZE (rust/crates/doc-comment-0.3.3.crate) = 4123
+SHA256 (rust/crates/either-1.8.0.crate) = 90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797
+SIZE (rust/crates/either-1.8.0.crate) = 15992
+SHA256 (rust/crates/env_logger-0.10.0.crate) = 85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0
+SIZE (rust/crates/env_logger-0.10.0.crate) = 36574
+SHA256 (rust/crates/errno-0.2.8.crate) = f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1
+SIZE (rust/crates/errno-0.2.8.crate) = 9276
+SHA256 (rust/crates/errno-dragonfly-0.1.2.crate) = aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf
+SIZE (rust/crates/errno-dragonfly-0.1.2.crate) = 1810
+SHA256 (rust/crates/fastrand-1.8.0.crate) = a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499
+SIZE (rust/crates/fastrand-1.8.0.crate) = 11369
+SHA256 (rust/crates/getrandom-0.2.8.crate) = c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31
+SIZE (rust/crates/getrandom-0.2.8.crate) = 30553
+SHA256 (rust/crates/heck-0.4.0.crate) = 2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9
+SIZE (rust/crates/heck-0.4.0.crate) = 11161
+SHA256 (rust/crates/hermit-abi-0.2.6.crate) = ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7
+SIZE (rust/crates/hermit-abi-0.2.6.crate) = 13027
+SHA256 (rust/crates/humantime-2.1.0.crate) = 9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4
+SIZE (rust/crates/humantime-2.1.0.crate) = 16749
+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.3.crate) = 46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c
+SIZE (rust/crates/io-lifetimes-1.0.3.crate) = 35650
+SHA256 (rust/crates/is-terminal-0.4.2.crate) = 28dfb6c8100ccc63462345b67d1bbc3679177c75ee4bf59bf29c8b1d110b8189
+SIZE (rust/crates/is-terminal-0.4.2.crate) = 7577
+SHA256 (rust/crates/itertools-0.10.5.crate) = b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473
+SIZE (rust/crates/itertools-0.10.5.crate) = 115354
+SHA256 (rust/crates/konst_kernel-0.3.4.crate) = 7771682454392dfe62a909aba2c6efc6674e2ad0b678fbc33b154e2e1bd59b89
+SIZE (rust/crates/konst_kernel-0.3.4.crate) = 23365
+SHA256 (rust/crates/libc-0.2.139.crate) = 201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79
+SIZE (rust/crates/libc-0.2.139.crate) = 638983
+SHA256 (rust/crates/linux-raw-sys-0.1.4.crate) = f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4
+SIZE (rust/crates/linux-raw-sys-0.1.4.crate) = 878981
+SHA256 (rust/crates/log-0.4.17.crate) = abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e
+SIZE (rust/crates/log-0.4.17.crate) = 38028
+SHA256 (rust/crates/memchr-2.5.0.crate) = 2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d
+SIZE (rust/crates/memchr-2.5.0.crate) = 65812
+SHA256 (rust/crates/nix-0.26.1.crate) = 46a58d1d356c6597d08cde02c2f09d785b09e28711837b1ed667dc652c08a694
+SIZE (rust/crates/nix-0.26.1.crate) = 277805
+SHA256 (rust/crates/once_cell-1.17.0.crate) = 6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66
+SIZE (rust/crates/once_cell-1.17.0.crate) = 32736
+SHA256 (rust/crates/os_str_bytes-6.4.1.crate) = 9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee
+SIZE (rust/crates/os_str_bytes-6.4.1.crate) = 23101
+SHA256 (rust/crates/output_vt100-0.1.3.crate) = 628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66
+SIZE (rust/crates/output_vt100-0.1.3.crate) = 4473
+SHA256 (rust/crates/ppv-lite86-0.2.17.crate) = 5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de
+SIZE (rust/crates/ppv-lite86-0.2.17.crate) = 22242
+SHA256 (rust/crates/predicates-2.1.5.crate) = 59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd
+SIZE (rust/crates/predicates-2.1.5.crate) = 24165
+SHA256 (rust/crates/predicates-core-1.0.5.crate) = 72f883590242d3c6fc5bf50299011695fa6590c2c70eac95ee1bdb9a733ad1a2
+SIZE (rust/crates/predicates-core-1.0.5.crate) = 7773
+SHA256 (rust/crates/predicates-tree-1.0.7.crate) = 54ff541861505aabf6ea722d2131ee980b8276e10a1297b94e896dd8b621850d
+SIZE (rust/crates/predicates-tree-1.0.7.crate) = 8145
+SHA256 (rust/crates/pretty_assertions-1.3.0.crate) = a25e9bcb20aa780fd0bb16b72403a9064d6b3f22f026946029acb941a50af755
+SIZE (rust/crates/pretty_assertions-1.3.0.crate) = 79441
+SHA256 (rust/crates/proc-macro-error-1.0.4.crate) = da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c
+SIZE (rust/crates/proc-macro-error-1.0.4.crate) = 25293
+SHA256 (rust/crates/proc-macro-error-attr-1.0.4.crate) = a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869
+SIZE (rust/crates/proc-macro-error-attr-1.0.4.crate) = 7971
+SHA256 (rust/crates/proc-macro2-1.0.49.crate) = 57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5
+SIZE (rust/crates/proc-macro2-1.0.49.crate) = 41977
+SHA256 (rust/crates/quote-1.0.23.crate) = 8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b
+SIZE (rust/crates/quote-1.0.23.crate) = 28058
+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/regex-1.7.0.crate) = e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a
+SIZE (rust/crates/regex-1.7.0.crate) = 239421
+SHA256 (rust/crates/regex-automata-0.1.10.crate) = 6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132
+SIZE (rust/crates/regex-automata-0.1.10.crate) = 114533
+SHA256 (rust/crates/regex-syntax-0.6.28.crate) = 456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848
+SIZE (rust/crates/regex-syntax-0.6.28.crate) = 299288
+SHA256 (rust/crates/remove_dir_all-0.5.3.crate) = 3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7
+SIZE (rust/crates/remove_dir_all-0.5.3.crate) = 9184
+SHA256 (rust/crates/ringbuffer-0.11.1.crate) = 034f2f6835eab90a8942169db360776272fe3fce9eb13b9bdefaceea67cabd68
+SIZE (rust/crates/ringbuffer-0.11.1.crate) = 15646
+SHA256 (rust/crates/rstest-0.11.0.crate) = 2288c66aeafe3b2ed227c981f364f9968fa952ef0b30e84ada4486e7ee24d00a
+SIZE (rust/crates/rstest-0.11.0.crate) = 917046
+SHA256 (rust/crates/rustc_version-0.4.0.crate) = bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366
+SIZE (rust/crates/rustc_version-0.4.0.crate) = 12175
+SHA256 (rust/crates/rustix-0.36.6.crate) = 4feacf7db682c6c329c4ede12649cd36ecab0f3be5b7d74e6a20304725db4549
+SIZE (rust/crates/rustix-0.36.6.crate) = 288718
+SHA256 (rust/crates/safemem-0.3.3.crate) = ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072
+SIZE (rust/crates/safemem-0.3.3.crate) = 7778
+SHA256 (rust/crates/semver-1.0.16.crate) = 58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a
+SIZE (rust/crates/semver-1.0.16.crate) = 29850
+SHA256 (rust/crates/serde-1.0.152.crate) = bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb
+SIZE (rust/crates/serde-1.0.152.crate) = 77091
+SHA256 (rust/crates/static_assertions-1.1.0.crate) = a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f
+SIZE (rust/crates/static_assertions-1.1.0.crate) = 18480
+SHA256 (rust/crates/strsim-0.10.0.crate) = 73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623
+SIZE (rust/crates/strsim-0.10.0.crate) = 11355
+SHA256 (rust/crates/syn-1.0.107.crate) = 1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5
+SIZE (rust/crates/syn-1.0.107.crate) = 237539
+SHA256 (rust/crates/tempfile-3.3.0.crate) = 5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4
+SIZE (rust/crates/tempfile-3.3.0.crate) = 27578
+SHA256 (rust/crates/termcolor-1.1.3.crate) = bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755
+SIZE (rust/crates/termcolor-1.1.3.crate) = 17242
+SHA256 (rust/crates/termtree-0.4.0.crate) = 95059e91184749cb66be6dc994f67f182b6d897cb3df74a5bf66b5e709295fd8
+SIZE (rust/crates/termtree-0.4.0.crate) = 4449
+SHA256 (rust/crates/unicode-ident-1.0.6.crate) = 84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc
+SIZE (rust/crates/unicode-ident-1.0.6.crate) = 42158
+SHA256 (rust/crates/version_check-0.9.4.crate) = 49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f
+SIZE (rust/crates/version_check-0.9.4.crate) = 14895
+SHA256 (rust/crates/wait-timeout-0.2.0.crate) = 9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6
+SIZE (rust/crates/wait-timeout-0.2.0.crate) = 12441
+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-util-0.1.5.crate) = 70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178
+SIZE (rust/crates/winapi-util-0.1.5.crate) = 10164
+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_aarch64_gnullvm-0.42.0.crate) = 41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e
+SIZE (rust/crates/windows_aarch64_gnullvm-0.42.0.crate) = 357917
+SHA256 (rust/crates/windows_aarch64_msvc-0.42.0.crate) = dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4
+SIZE (rust/crates/windows_aarch64_msvc-0.42.0.crate) = 659424
+SHA256 (rust/crates/windows_i686_gnu-0.42.0.crate) = fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7
+SIZE (rust/crates/windows_i686_gnu-0.42.0.crate) = 728570
+SHA256 (rust/crates/windows_i686_msvc-0.42.0.crate) = 84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246
+SIZE (rust/crates/windows_i686_msvc-0.42.0.crate) = 717477
+SHA256 (rust/crates/windows_x86_64_gnu-0.42.0.crate) = bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed
+SIZE (rust/crates/windows_x86_64_gnu-0.42.0.crate) = 692493
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.42.0.crate) = 09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028
+SIZE (rust/crates/windows_x86_64_gnullvm-0.42.0.crate) = 357906
+SHA256 (rust/crates/windows_x86_64_msvc-0.42.0.crate) = f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5
+SIZE (rust/crates/windows_x86_64_msvc-0.42.0.crate) = 659377
+SHA256 (rust/crates/yansi-0.5.1.crate) = 09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec
+SIZE (rust/crates/yansi-0.5.1.crate) = 16525
diff --git a/devel/fsx/pkg-descr b/devel/fsx/pkg-descr
new file mode 100644
index 000000000000..16899c7a3753
--- /dev/null
+++ b/devel/fsx/pkg-descr
@@ -0,0 +1,5 @@
+File System eXerciser
+
+The fsx utility tests file system I/O routines for correctness, with random
+input.  This is a Rust-based rewrite of the classic C utility, originally from
+Apple Computer.