git: 9e8d3408c9d2 - main - sysutils/backdown: Add new port

From: Emanuel Haupt <ehaupt_at_FreeBSD.org>
Date: Fri, 30 Jun 2023 21:43:54 UTC
The branch main has been updated by ehaupt:

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

commit 9e8d3408c9d2cc5f4c6ed51f031f30b18243f7df
Author:     Emanuel Haupt <ehaupt@FreeBSD.org>
AuthorDate: 2023-06-30 21:40:10 +0000
Commit:     Emanuel Haupt <ehaupt@FreeBSD.org>
CommitDate: 2023-06-30 21:43:50 +0000

    sysutils/backdown: Add new port
    
    Backdown helps you safely and ergonomically remove duplicate files.
    
    Its design is based upon the authors observation of frequent patterns
    regarding build-up of duplicates with time, especially images and other
    media files.
    
    Finding duplicates is easy. Cleaning the disk when there are thousands
    of them is the hard part. What Backdown brings is the easy way to select
    and remove the duplicates you don't want to keep.
---
 sysutils/Makefile                        |   1 +
 sysutils/backdown/Makefile               |  19 +++
 sysutils/backdown/Makefile.crates        | 107 +++++++++++++++
 sysutils/backdown/distinfo               | 217 +++++++++++++++++++++++++++++++
 sysutils/backdown/files/patch-Cargo.toml |   9 ++
 sysutils/backdown/pkg-descr              |   9 ++
 6 files changed, 362 insertions(+)

diff --git a/sysutils/Makefile b/sysutils/Makefile
index 282e177c17d0..494a7fcc6bde 100644
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -83,6 +83,7 @@
     SUBDIR += b2sum
     SUBDIR += b3sum
     SUBDIR += b43-fwcutter
+    SUBDIR += backdown
     SUBDIR += backuppc
     SUBDIR += backuppc-devel
     SUBDIR += backuppc4
diff --git a/sysutils/backdown/Makefile b/sysutils/backdown/Makefile
new file mode 100644
index 000000000000..9253a53363c7
--- /dev/null
+++ b/sysutils/backdown/Makefile
@@ -0,0 +1,19 @@
+PORTNAME=	backdown
+DISTVERSIONPREFIX=	v
+DISTVERSION=	1.1.0
+CATEGORIES=	sysutils
+
+MAINTAINER=	ehaupt@FreeBSD.org
+COMMENT=	Tool to safely and ergonomically remove duplicate files
+WWW=		https://github.com/Canop/backdown
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+USES=		cargo
+USE_GITHUB=	yes
+GH_ACCOUNT=	Canop
+
+PLIST_FILES=	bin/backdown
+
+.include <bsd.port.mk>
diff --git a/sysutils/backdown/Makefile.crates b/sysutils/backdown/Makefile.crates
new file mode 100644
index 000000000000..c94ce486656a
--- /dev/null
+++ b/sysutils/backdown/Makefile.crates
@@ -0,0 +1,107 @@
+CARGO_CRATES=	aho-corasick-0.7.18 \
+		ansi_colours-1.0.4 \
+		anyhow-1.0.49 \
+		argh-0.1.5 \
+		argh_derive-0.1.5 \
+		argh_shared-0.1.5 \
+		arrayref-0.3.6 \
+		arrayvec-0.5.2 \
+		autocfg-1.0.1 \
+		bitflags-1.2.1 \
+		blake3-0.3.8 \
+		cc-1.0.69 \
+		cfg-if-0.1.10 \
+		cfg-if-1.0.0 \
+		chrono-0.4.19 \
+		cli-log-2.0.0 \
+		constant_time_eq-0.1.5 \
+		coolor-0.3.0 \
+		crossbeam-0.7.3 \
+		crossbeam-0.8.1 \
+		crossbeam-channel-0.4.4 \
+		crossbeam-channel-0.5.1 \
+		crossbeam-deque-0.7.3 \
+		crossbeam-deque-0.8.0 \
+		crossbeam-epoch-0.8.2 \
+		crossbeam-epoch-0.9.5 \
+		crossbeam-queue-0.2.3 \
+		crossbeam-queue-0.3.2 \
+		crossbeam-utils-0.7.2 \
+		crossbeam-utils-0.8.5 \
+		crossterm-0.21.0 \
+		crossterm_winapi-0.8.0 \
+		crypto-mac-0.8.0 \
+		digest-0.9.0 \
+		either-1.6.1 \
+		file-size-1.0.3 \
+		fnv-1.0.7 \
+		generic-array-0.14.4 \
+		getrandom-0.1.16 \
+		heck-0.3.3 \
+		hermit-abi-0.1.19 \
+		instant-0.1.10 \
+		itoa-0.4.8 \
+		lazy-regex-2.2.2 \
+		lazy-regex-proc_macros-2.2.2 \
+		lazy_static-1.4.0 \
+		libc-0.2.98 \
+		lock_api-0.4.4 \
+		log-0.4.14 \
+		maybe-uninit-2.0.0 \
+		memchr-2.4.0 \
+		memoffset-0.5.6 \
+		memoffset-0.6.4 \
+		minimad-0.9.0 \
+		mio-0.7.13 \
+		miow-0.3.7 \
+		ntapi-0.3.6 \
+		num-integer-0.1.44 \
+		num-traits-0.2.14 \
+		num_cpus-1.13.0 \
+		once_cell-1.8.0 \
+		parking_lot-0.11.1 \
+		parking_lot_core-0.8.3 \
+		phf-0.8.0 \
+		phf_generator-0.8.0 \
+		phf_macros-0.8.0 \
+		phf_shared-0.8.0 \
+		ppv-lite86-0.2.10 \
+		proc-macro-hack-0.5.19 \
+		proc-macro2-1.0.27 \
+		proc-status-0.1.1 \
+		quote-1.0.9 \
+		rand-0.7.3 \
+		rand_chacha-0.2.2 \
+		rand_core-0.5.1 \
+		rand_hc-0.2.0 \
+		rand_pcg-0.2.1 \
+		rayon-1.5.1 \
+		rayon-core-1.9.1 \
+		redox_syscall-0.2.9 \
+		regex-1.5.4 \
+		regex-syntax-0.6.25 \
+		ryu-1.0.6 \
+		scopeguard-1.1.0 \
+		serde-1.0.130 \
+		serde_json-1.0.72 \
+		signal-hook-0.3.9 \
+		signal-hook-mio-0.2.1 \
+		signal-hook-registry-1.4.0 \
+		siphasher-0.3.5 \
+		smallvec-1.6.1 \
+		subtle-2.4.1 \
+		syn-1.0.73 \
+		termimad-0.19.0 \
+		thiserror-1.0.26 \
+		thiserror-impl-1.0.26 \
+		time-0.1.44 \
+		typenum-1.13.0 \
+		unicode-segmentation-1.8.0 \
+		unicode-width-0.1.8 \
+		unicode-xid-0.2.2 \
+		version_check-0.9.3 \
+		wasi-0.9.0+wasi-snapshot-preview1 \
+		wasi-0.10.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
diff --git a/sysutils/backdown/distinfo b/sysutils/backdown/distinfo
new file mode 100644
index 000000000000..b70990834f08
--- /dev/null
+++ b/sysutils/backdown/distinfo
@@ -0,0 +1,217 @@
+TIMESTAMP = 1688159085
+SHA256 (rust/crates/aho-corasick-0.7.18.crate) = 1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f
+SIZE (rust/crates/aho-corasick-0.7.18.crate) = 112923
+SHA256 (rust/crates/ansi_colours-1.0.4.crate) = 60e2fb6138a49ad9f1cb3c6d8f8ccbdd5e62b4dab317c1b435a47ecd7da1d28f
+SIZE (rust/crates/ansi_colours-1.0.4.crate) = 10525
+SHA256 (rust/crates/anyhow-1.0.49.crate) = 0a03e93e97a28fbc9f42fbc5ba0886a3c67eb637b476dbee711f80a6ffe8223d
+SIZE (rust/crates/anyhow-1.0.49.crate) = 41892
+SHA256 (rust/crates/argh-0.1.5.crate) = 2e7317a549bc17c5278d9e72bb6e62c6aa801ac2567048e39ebc1c194249323e
+SIZE (rust/crates/argh-0.1.5.crate) = 9745
+SHA256 (rust/crates/argh_derive-0.1.5.crate) = 60949c42375351e9442e354434b0cba2ac402c1237edf673cac3a4bf983b8d3c
+SIZE (rust/crates/argh_derive-0.1.5.crate) = 17472
+SHA256 (rust/crates/argh_shared-0.1.5.crate) = 8a61eb019cb8f415d162cb9f12130ee6bbe9168b7d953c17f4ad049e4051ca00
+SIZE (rust/crates/argh_shared-0.1.5.crate) = 4102
+SHA256 (rust/crates/arrayref-0.3.6.crate) = a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544
+SIZE (rust/crates/arrayref-0.3.6.crate) = 10035
+SHA256 (rust/crates/arrayvec-0.5.2.crate) = 23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b
+SIZE (rust/crates/arrayvec-0.5.2.crate) = 27838
+SHA256 (rust/crates/autocfg-1.0.1.crate) = cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a
+SIZE (rust/crates/autocfg-1.0.1.crate) = 12908
+SHA256 (rust/crates/bitflags-1.2.1.crate) = cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693
+SIZE (rust/crates/bitflags-1.2.1.crate) = 16745
+SHA256 (rust/crates/blake3-0.3.8.crate) = b64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3
+SIZE (rust/crates/blake3-0.3.8.crate) = 154058
+SHA256 (rust/crates/cc-1.0.69.crate) = e70cc2f62c6ce1868963827bd677764c62d07c3d9a3e1fb1177ee1a9ab199eb2
+SIZE (rust/crates/cc-1.0.69.crate) = 56044
+SHA256 (rust/crates/cfg-if-0.1.10.crate) = 4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822
+SIZE (rust/crates/cfg-if-0.1.10.crate) = 7933
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/chrono-0.4.19.crate) = 670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73
+SIZE (rust/crates/chrono-0.4.19.crate) = 155663
+SHA256 (rust/crates/cli-log-2.0.0.crate) = 3d2ab00dc4c82ec28af25ac085aecc11ffeabf353755715a3113a7aa044ca5cc
+SIZE (rust/crates/cli-log-2.0.0.crate) = 5302
+SHA256 (rust/crates/constant_time_eq-0.1.5.crate) = 245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc
+SIZE (rust/crates/constant_time_eq-0.1.5.crate) = 4936
+SHA256 (rust/crates/coolor-0.3.0.crate) = abae1f425167dae5fdb4c953e6205565a9a1cc252c33b7414cedd02e424243f4
+SIZE (rust/crates/coolor-0.3.0.crate) = 48181
+SHA256 (rust/crates/crossbeam-0.7.3.crate) = 69323bff1fb41c635347b8ead484a5ca6c3f11914d784170b158d8449ab07f8e
+SIZE (rust/crates/crossbeam-0.7.3.crate) = 9906
+SHA256 (rust/crates/crossbeam-0.8.1.crate) = 4ae5588f6b3c3cb05239e90bd110f257254aecd01e4635400391aeae07497845
+SIZE (rust/crates/crossbeam-0.8.1.crate) = 10429
+SHA256 (rust/crates/crossbeam-channel-0.4.4.crate) = b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87
+SIZE (rust/crates/crossbeam-channel-0.4.4.crate) = 86868
+SHA256 (rust/crates/crossbeam-channel-0.5.1.crate) = 06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4
+SIZE (rust/crates/crossbeam-channel-0.5.1.crate) = 86919
+SHA256 (rust/crates/crossbeam-deque-0.7.3.crate) = 9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285
+SIZE (rust/crates/crossbeam-deque-0.7.3.crate) = 19888
+SHA256 (rust/crates/crossbeam-deque-0.8.0.crate) = 94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9
+SIZE (rust/crates/crossbeam-deque-0.8.0.crate) = 20756
+SHA256 (rust/crates/crossbeam-epoch-0.8.2.crate) = 058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace
+SIZE (rust/crates/crossbeam-epoch-0.8.2.crate) = 39283
+SHA256 (rust/crates/crossbeam-epoch-0.9.5.crate) = 4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd
+SIZE (rust/crates/crossbeam-epoch-0.9.5.crate) = 43883
+SHA256 (rust/crates/crossbeam-queue-0.2.3.crate) = 774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570
+SIZE (rust/crates/crossbeam-queue-0.2.3.crate) = 14753
+SHA256 (rust/crates/crossbeam-queue-0.3.2.crate) = 9b10ddc024425c88c2ad148c1b0fd53f4c6d38db9697c9f1588381212fa657c9
+SIZE (rust/crates/crossbeam-queue-0.3.2.crate) = 14993
+SHA256 (rust/crates/crossbeam-utils-0.7.2.crate) = c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8
+SIZE (rust/crates/crossbeam-utils-0.7.2.crate) = 34338
+SHA256 (rust/crates/crossbeam-utils-0.8.5.crate) = d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db
+SIZE (rust/crates/crossbeam-utils-0.8.5.crate) = 38414
+SHA256 (rust/crates/crossterm-0.21.0.crate) = 486d44227f71a1ef39554c0dc47e44b9f4139927c75043312690c3f476d1d788
+SIZE (rust/crates/crossterm-0.21.0.crate) = 105045
+SHA256 (rust/crates/crossterm_winapi-0.8.0.crate) = 3a6966607622438301997d3dac0d2f6e9a90c68bb6bc1785ea98456ab93c0507
+SIZE (rust/crates/crossterm_winapi-0.8.0.crate) = 15531
+SHA256 (rust/crates/crypto-mac-0.8.0.crate) = b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab
+SIZE (rust/crates/crypto-mac-0.8.0.crate) = 9115
+SHA256 (rust/crates/digest-0.9.0.crate) = d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066
+SIZE (rust/crates/digest-0.9.0.crate) = 13247
+SHA256 (rust/crates/either-1.6.1.crate) = e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457
+SIZE (rust/crates/either-1.6.1.crate) = 13641
+SHA256 (rust/crates/file-size-1.0.3.crate) = 9544f10105d33957765016b8a9baea7e689bf1f0f2f32c2fa2f568770c38d2b3
+SIZE (rust/crates/file-size-1.0.3.crate) = 1819
+SHA256 (rust/crates/fnv-1.0.7.crate) = 3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1
+SIZE (rust/crates/fnv-1.0.7.crate) = 11266
+SHA256 (rust/crates/generic-array-0.14.4.crate) = 501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817
+SIZE (rust/crates/generic-array-0.14.4.crate) = 28916
+SHA256 (rust/crates/getrandom-0.1.16.crate) = 8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce
+SIZE (rust/crates/getrandom-0.1.16.crate) = 25077
+SHA256 (rust/crates/heck-0.3.3.crate) = 6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c
+SIZE (rust/crates/heck-0.3.3.crate) = 10260
+SHA256 (rust/crates/hermit-abi-0.1.19.crate) = 62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33
+SIZE (rust/crates/hermit-abi-0.1.19.crate) = 9979
+SHA256 (rust/crates/instant-0.1.10.crate) = bee0328b1209d157ef001c94dd85b4f8f64139adb0eac2659f4b08382b2f474d
+SIZE (rust/crates/instant-0.1.10.crate) = 5218
+SHA256 (rust/crates/itoa-0.4.8.crate) = b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4
+SIZE (rust/crates/itoa-0.4.8.crate) = 11926
+SHA256 (rust/crates/lazy-regex-2.2.2.crate) = 919a16773ebf2de27e95fc58460110932e55bb0780e23aa51fa5a6b59c9e2b3d
+SIZE (rust/crates/lazy-regex-2.2.2.crate) = 4114
+SHA256 (rust/crates/lazy-regex-proc_macros-2.2.2.crate) = 5fbe6bf0a04af51c07976625d5007e75ed9b8b955befc21c77b3947733496e36
+SIZE (rust/crates/lazy-regex-proc_macros-2.2.2.crate) = 3230
+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.98.crate) = 320cfe77175da3a483efed4bc0adc1968ca050b098ce4f2f1c13a56626128790
+SIZE (rust/crates/libc-0.2.98.crate) = 522087
+SHA256 (rust/crates/lock_api-0.4.4.crate) = 0382880606dff6d15c9476c416d18690b72742aa7b605bb6dd6ec9030fbf07eb
+SIZE (rust/crates/lock_api-0.4.4.crate) = 20356
+SHA256 (rust/crates/log-0.4.14.crate) = 51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710
+SIZE (rust/crates/log-0.4.14.crate) = 34582
+SHA256 (rust/crates/maybe-uninit-2.0.0.crate) = 60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00
+SIZE (rust/crates/maybe-uninit-2.0.0.crate) = 11809
+SHA256 (rust/crates/memchr-2.4.0.crate) = b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc
+SIZE (rust/crates/memchr-2.4.0.crate) = 63392
+SHA256 (rust/crates/memoffset-0.5.6.crate) = 043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa
+SIZE (rust/crates/memoffset-0.5.6.crate) = 7382
+SHA256 (rust/crates/memoffset-0.6.4.crate) = 59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9
+SIZE (rust/crates/memoffset-0.6.4.crate) = 7664
+SHA256 (rust/crates/minimad-0.9.0.crate) = cd37b2e65fbd459544194d8f52ed84027e031684335a062c708774c09d172b0b
+SIZE (rust/crates/minimad-0.9.0.crate) = 19223
+SHA256 (rust/crates/mio-0.7.13.crate) = 8c2bdb6314ec10835cd3293dd268473a835c02b7b352e788be788b3c6ca6bb16
+SIZE (rust/crates/mio-0.7.13.crate) = 87027
+SHA256 (rust/crates/miow-0.3.7.crate) = b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21
+SIZE (rust/crates/miow-0.3.7.crate) = 24563
+SHA256 (rust/crates/ntapi-0.3.6.crate) = 3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44
+SIZE (rust/crates/ntapi-0.3.6.crate) = 127221
+SHA256 (rust/crates/num-integer-0.1.44.crate) = d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db
+SIZE (rust/crates/num-integer-0.1.44.crate) = 22216
+SHA256 (rust/crates/num-traits-0.2.14.crate) = 9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290
+SIZE (rust/crates/num-traits-0.2.14.crate) = 45476
+SHA256 (rust/crates/num_cpus-1.13.0.crate) = 05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3
+SIZE (rust/crates/num_cpus-1.13.0.crate) = 14704
+SHA256 (rust/crates/once_cell-1.8.0.crate) = 692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56
+SIZE (rust/crates/once_cell-1.8.0.crate) = 28925
+SHA256 (rust/crates/parking_lot-0.11.1.crate) = 6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb
+SIZE (rust/crates/parking_lot-0.11.1.crate) = 39854
+SHA256 (rust/crates/parking_lot_core-0.8.3.crate) = fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018
+SIZE (rust/crates/parking_lot_core-0.8.3.crate) = 32147
+SHA256 (rust/crates/phf-0.8.0.crate) = 3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12
+SIZE (rust/crates/phf-0.8.0.crate) = 3902
+SHA256 (rust/crates/phf_generator-0.8.0.crate) = 17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526
+SIZE (rust/crates/phf_generator-0.8.0.crate) = 7604
+SHA256 (rust/crates/phf_macros-0.8.0.crate) = 7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c
+SIZE (rust/crates/phf_macros-0.8.0.crate) = 5814
+SHA256 (rust/crates/phf_shared-0.8.0.crate) = c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7
+SIZE (rust/crates/phf_shared-0.8.0.crate) = 2860
+SHA256 (rust/crates/ppv-lite86-0.2.10.crate) = ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857
+SIZE (rust/crates/ppv-lite86-0.2.10.crate) = 20915
+SHA256 (rust/crates/proc-macro-hack-0.5.19.crate) = dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5
+SIZE (rust/crates/proc-macro-hack-0.5.19.crate) = 15556
+SHA256 (rust/crates/proc-macro2-1.0.27.crate) = f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038
+SIZE (rust/crates/proc-macro2-1.0.27.crate) = 38625
+SHA256 (rust/crates/proc-status-0.1.1.crate) = f0e0c0ac915e7b76b47850ba4ffc377abde6c6ff9eeace61d0a89623db449712
+SIZE (rust/crates/proc-status-0.1.1.crate) = 4136
+SHA256 (rust/crates/quote-1.0.9.crate) = c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7
+SIZE (rust/crates/quote-1.0.9.crate) = 25042
+SHA256 (rust/crates/rand-0.7.3.crate) = 6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03
+SIZE (rust/crates/rand-0.7.3.crate) = 112246
+SHA256 (rust/crates/rand_chacha-0.2.2.crate) = f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402
+SIZE (rust/crates/rand_chacha-0.2.2.crate) = 13267
+SHA256 (rust/crates/rand_core-0.5.1.crate) = 90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19
+SIZE (rust/crates/rand_core-0.5.1.crate) = 21116
+SHA256 (rust/crates/rand_hc-0.2.0.crate) = ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c
+SIZE (rust/crates/rand_hc-0.2.0.crate) = 11670
+SHA256 (rust/crates/rand_pcg-0.2.1.crate) = 16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429
+SIZE (rust/crates/rand_pcg-0.2.1.crate) = 11291
+SHA256 (rust/crates/rayon-1.5.1.crate) = c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90
+SIZE (rust/crates/rayon-1.5.1.crate) = 160424
+SHA256 (rust/crates/rayon-core-1.9.1.crate) = d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e
+SIZE (rust/crates/rayon-core-1.9.1.crate) = 64961
+SHA256 (rust/crates/redox_syscall-0.2.9.crate) = 5ab49abadf3f9e1c4bc499e8845e152ad87d2ad2d30371841171169e9d75feee
+SIZE (rust/crates/redox_syscall-0.2.9.crate) = 23533
+SHA256 (rust/crates/regex-1.5.4.crate) = d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461
+SIZE (rust/crates/regex-1.5.4.crate) = 236581
+SHA256 (rust/crates/regex-syntax-0.6.25.crate) = f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b
+SIZE (rust/crates/regex-syntax-0.6.25.crate) = 293293
+SHA256 (rust/crates/ryu-1.0.6.crate) = 3c9613b5a66ab9ba26415184cfc41156594925a9cf3a2057e57f31ff145f6568
+SIZE (rust/crates/ryu-1.0.6.crate) = 50032
+SHA256 (rust/crates/scopeguard-1.1.0.crate) = d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd
+SIZE (rust/crates/scopeguard-1.1.0.crate) = 11470
+SHA256 (rust/crates/serde-1.0.130.crate) = f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913
+SIZE (rust/crates/serde-1.0.130.crate) = 75305
+SHA256 (rust/crates/serde_json-1.0.72.crate) = d0ffa0837f2dfa6fb90868c2b5468cad482e175f7dad97e7421951e663f2b527
+SIZE (rust/crates/serde_json-1.0.72.crate) = 115888
+SHA256 (rust/crates/signal-hook-0.3.9.crate) = 470c5a6397076fae0094aaf06a08e6ba6f37acb77d3b1b91ea92b4d6c8650c39
+SIZE (rust/crates/signal-hook-0.3.9.crate) = 48416
+SHA256 (rust/crates/signal-hook-mio-0.2.1.crate) = 29fd5867f1c4f2c5be079aee7a2adf1152ebb04a4bc4d341f504b7dece607ed4
+SIZE (rust/crates/signal-hook-mio-0.2.1.crate) = 8893
+SHA256 (rust/crates/signal-hook-registry-1.4.0.crate) = e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0
+SIZE (rust/crates/signal-hook-registry-1.4.0.crate) = 17912
+SHA256 (rust/crates/siphasher-0.3.5.crate) = cbce6d4507c7e4a3962091436e56e95290cb71fa302d0d270e32130b75fbff27
+SIZE (rust/crates/siphasher-0.3.5.crate) = 9455
+SHA256 (rust/crates/smallvec-1.6.1.crate) = fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e
+SIZE (rust/crates/smallvec-1.6.1.crate) = 26444
+SHA256 (rust/crates/subtle-2.4.1.crate) = 6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601
+SIZE (rust/crates/subtle-2.4.1.crate) = 12630
+SHA256 (rust/crates/syn-1.0.73.crate) = f71489ff30030d2ae598524f61326b902466f72a0fb1a8564c001cc63425bcc7
+SIZE (rust/crates/syn-1.0.73.crate) = 232706
+SHA256 (rust/crates/termimad-0.19.0.crate) = f6981ef35a70dfb4e78037a4ac33ce5a64233c6566592698a9d1c3bdda64271f
+SIZE (rust/crates/termimad-0.19.0.crate) = 351222
+SHA256 (rust/crates/thiserror-1.0.26.crate) = 93119e4feac1cbe6c798c34d3a53ea0026b0b1de6a120deef895137c0529bfe2
+SIZE (rust/crates/thiserror-1.0.26.crate) = 16711
+SHA256 (rust/crates/thiserror-impl-1.0.26.crate) = 060d69a0afe7796bf42e9e2ff91f5ee691fb15c53d38b4b62a9a53eb23164745
+SIZE (rust/crates/thiserror-impl-1.0.26.crate) = 13431
+SHA256 (rust/crates/time-0.1.44.crate) = 6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255
+SIZE (rust/crates/time-0.1.44.crate) = 28885
+SHA256 (rust/crates/typenum-1.13.0.crate) = 879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06
+SIZE (rust/crates/typenum-1.13.0.crate) = 40238
+SHA256 (rust/crates/unicode-segmentation-1.8.0.crate) = 8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b
+SIZE (rust/crates/unicode-segmentation-1.8.0.crate) = 94011
+SHA256 (rust/crates/unicode-width-0.1.8.crate) = 9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3
+SIZE (rust/crates/unicode-width-0.1.8.crate) = 16732
+SHA256 (rust/crates/unicode-xid-0.2.2.crate) = 8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3
+SIZE (rust/crates/unicode-xid-0.2.2.crate) = 14955
+SHA256 (rust/crates/version_check-0.9.3.crate) = 5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe
+SIZE (rust/crates/version_check-0.9.3.crate) = 12547
+SHA256 (rust/crates/wasi-0.9.0+wasi-snapshot-preview1.crate) = cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519
+SIZE (rust/crates/wasi-0.9.0+wasi-snapshot-preview1.crate) = 31521
+SHA256 (rust/crates/wasi-0.10.0+wasi-snapshot-preview1.crate) = 1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f
+SIZE (rust/crates/wasi-0.10.0+wasi-snapshot-preview1.crate) = 26964
+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 (Canop-backdown-v1.1.0_GH0.tar.gz) = 0ebad6a7839dc9a996c329cdb0023827897dce7b711cdc11ce1e348288d756f0
+SIZE (Canop-backdown-v1.1.0_GH0.tar.gz) = 259112
diff --git a/sysutils/backdown/files/patch-Cargo.toml b/sysutils/backdown/files/patch-Cargo.toml
new file mode 100644
index 000000000000..521fd0125d23
--- /dev/null
+++ b/sysutils/backdown/files/patch-Cargo.toml
@@ -0,0 +1,9 @@
+--- Cargo.toml.orig	2021-12-05 21:04:00 UTC
++++ Cargo.toml
+@@ -29,3 +29,6 @@ termimad = "0.19"
+ [patch.crates-io]
+ #minimad = { path = "../minimad" }
+ #termimad = { path = "../termimad" }
++
++[profile.release]
++strip = true
diff --git a/sysutils/backdown/pkg-descr b/sysutils/backdown/pkg-descr
new file mode 100644
index 000000000000..5810f1d272e5
--- /dev/null
+++ b/sysutils/backdown/pkg-descr
@@ -0,0 +1,9 @@
+Backdown helps you safely and ergonomically remove duplicate files.
+
+Its design is based upon the authors observation of frequent patterns
+regarding build-up of duplicates with time, especially images and other
+media files.
+
+Finding duplicates is easy. Cleaning the disk when there are thousands
+of them is the hard part. What Backdown brings is the easy way to select
+and remove the duplicates you don't want to keep.