git: b3c25e5feed5 - main - graphics/dify: add new port

From: Jan Beich <jbeich_at_FreeBSD.org>
Date: Fri, 04 Nov 2022 23:57:30 UTC
The branch main has been updated by jbeich:

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

commit b3c25e5feed501eaacd2cfc04b0777384f18dcb2
Author:     Jan Beich <jbeich@FreeBSD.org>
AuthorDate: 1973-11-29 21:33:09 +0000
Commit:     Jan Beich <jbeich@FreeBSD.org>
CommitDate: 2022-11-04 23:56:17 +0000

    graphics/dify: add new port
    
    Dify is a fast pixel-by-pixel image comparison tool in Rust.
    
    Features:
    - .png, .jpg, .jpeg, or .bmp format supported
    - Compares different format, .png vs .jpg for example
    - Compares different dimensions
    - Anti-aliasing support
    - Blockout areas support
    - Supports macOS, Linux and Windows
    
    https://github.com/jihchi/dify
---
 graphics/Makefile             |   1 +
 graphics/dify/Makefile        |  18 ++++
 graphics/dify/Makefile.crates | 115 +++++++++++++++++++++
 graphics/dify/distinfo        | 233 ++++++++++++++++++++++++++++++++++++++++++
 graphics/dify/pkg-descr       |   9 ++
 5 files changed, 376 insertions(+)

diff --git a/graphics/Makefile b/graphics/Makefile
index 8e5cdd9324dd..9b11aa1a9411 100644
--- a/graphics/Makefile
+++ b/graphics/Makefile
@@ -131,6 +131,7 @@
     SUBDIR += dia
     SUBDIR += diff-pdf
     SUBDIR += diffpdf
+    SUBDIR += dify
     SUBDIR += digikam
     SUBDIR += dilay
     SUBDIR += diplib
diff --git a/graphics/dify/Makefile b/graphics/dify/Makefile
new file mode 100644
index 000000000000..e78b28c6b2cd
--- /dev/null
+++ b/graphics/dify/Makefile
@@ -0,0 +1,18 @@
+PORTNAME=	dify
+DISTVERSION=	0.5.1
+CATEGORIES=	graphics
+MASTER_SITES=	CRATESIO
+# XXX Teach USES=cargo to have proper default
+DISTFILES=	${CARGO_DIST_SUBDIR}/${DISTNAME}${CARGO_CRATE_EXT}
+
+MAINTAINER=	jbeich@FreeBSD.org
+COMMENT=	Fast pixel-by-pixel image comparison tool in Rust
+WWW=		https://github.com/jihchi/dify
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE.md
+
+USES=		cargo
+PLIST_FILES=	bin/${PORTNAME}
+
+.include <bsd.port.mk>
diff --git a/graphics/dify/Makefile.crates b/graphics/dify/Makefile.crates
new file mode 100644
index 000000000000..1e4cf6149475
--- /dev/null
+++ b/graphics/dify/Makefile.crates
@@ -0,0 +1,115 @@
+CARGO_CRATES=	adler-1.0.2 \
+		adler32-1.2.0 \
+		aho-corasick-0.7.18 \
+		anyhow-1.0.42 \
+		assert_cmd-2.0.0 \
+		assert_fs-1.0.3 \
+		atty-0.2.14 \
+		autocfg-1.0.1 \
+		bitflags-1.2.1 \
+		bstr-0.2.16 \
+		bumpalo-3.7.0 \
+		bytemuck-1.7.2 \
+		byteorder-1.4.3 \
+		cast-0.2.7 \
+		cfg-if-1.0.0 \
+		clap-2.33.3 \
+		color_quant-1.1.0 \
+		colored-2.0.0 \
+		crc32fast-1.2.1 \
+		criterion-0.3.5 \
+		criterion-plot-0.4.4 \
+		crossbeam-channel-0.5.1 \
+		crossbeam-deque-0.8.1 \
+		crossbeam-epoch-0.9.5 \
+		crossbeam-utils-0.8.5 \
+		csv-1.1.6 \
+		csv-core-0.1.10 \
+		deflate-0.8.6 \
+		difflib-0.4.0 \
+		doc-comment-0.3.3 \
+		either-1.6.1 \
+		float-cmp-0.9.0 \
+		fnv-1.0.7 \
+		getopts-0.2.21 \
+		getrandom-0.2.3 \
+		gif-0.11.2 \
+		globset-0.4.8 \
+		globwalk-0.8.1 \
+		half-1.7.1 \
+		hermit-abi-0.1.19 \
+		ignore-0.4.18 \
+		image-0.23.14 \
+		itertools-0.10.1 \
+		itoa-0.4.7 \
+		jpeg-decoder-0.1.22 \
+		js-sys-0.3.52 \
+		lazy_static-1.4.0 \
+		libc-0.2.98 \
+		log-0.4.14 \
+		memchr-2.4.0 \
+		memoffset-0.6.4 \
+		miniz_oxide-0.3.7 \
+		miniz_oxide-0.4.4 \
+		normalize-line-endings-0.3.0 \
+		num-integer-0.1.44 \
+		num-iter-0.1.42 \
+		num-rational-0.3.2 \
+		num-traits-0.2.14 \
+		num_cpus-1.13.0 \
+		once_cell-1.8.0 \
+		oorandom-11.1.3 \
+		plotters-0.3.1 \
+		plotters-backend-0.3.2 \
+		plotters-svg-0.3.1 \
+		png-0.16.8 \
+		ppv-lite86-0.2.10 \
+		predicates-2.0.1 \
+		predicates-core-1.0.2 \
+		predicates-tree-1.0.3 \
+		proc-macro2-1.0.28 \
+		quote-1.0.9 \
+		rand-0.8.4 \
+		rand_chacha-0.3.1 \
+		rand_core-0.6.3 \
+		rand_hc-0.3.1 \
+		rayon-1.5.1 \
+		rayon-core-1.9.1 \
+		redox_syscall-0.2.10 \
+		regex-1.5.4 \
+		regex-automata-0.1.10 \
+		regex-syntax-0.6.25 \
+		remove_dir_all-0.5.3 \
+		rustc_version-0.4.0 \
+		ryu-1.0.5 \
+		same-file-1.0.6 \
+		scoped_threadpool-0.1.9 \
+		scopeguard-1.1.0 \
+		semver-1.0.4 \
+		serde-1.0.127 \
+		serde_cbor-0.11.1 \
+		serde_derive-1.0.127 \
+		serde_json-1.0.66 \
+		syn-1.0.74 \
+		tempfile-3.2.0 \
+		textwrap-0.11.0 \
+		thread_local-1.1.3 \
+		tiff-0.6.1 \
+		tinytemplate-1.2.1 \
+		treeline-0.1.0 \
+		unicode-width-0.1.8 \
+		unicode-xid-0.2.2 \
+		wait-timeout-0.2.0 \
+		walkdir-2.3.2 \
+		wasi-0.10.2+wasi-snapshot-preview1 \
+		wasm-bindgen-0.2.75 \
+		wasm-bindgen-backend-0.2.75 \
+		wasm-bindgen-macro-0.2.75 \
+		wasm-bindgen-macro-support-0.2.75 \
+		wasm-bindgen-shared-0.2.75 \
+		web-sys-0.3.52 \
+		weezl-0.1.5 \
+		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
diff --git a/graphics/dify/distinfo b/graphics/dify/distinfo
new file mode 100644
index 000000000000..bab2afcf6927
--- /dev/null
+++ b/graphics/dify/distinfo
@@ -0,0 +1,233 @@
+TIMESTAMP = 123456789
+SHA256 (rust/crates/dify-0.5.1.crate) = b513fc8d3c2df2d6e09df3ee025f574993117ec1fd3eb0a7c5365edf4f57a7bd
+SIZE (rust/crates/dify-0.5.1.crate) = 17193
+SHA256 (rust/crates/adler-1.0.2.crate) = f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe
+SIZE (rust/crates/adler-1.0.2.crate) = 12778
+SHA256 (rust/crates/adler32-1.2.0.crate) = aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234
+SIZE (rust/crates/adler32-1.2.0.crate) = 6411
+SHA256 (rust/crates/aho-corasick-0.7.18.crate) = 1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f
+SIZE (rust/crates/aho-corasick-0.7.18.crate) = 112923
+SHA256 (rust/crates/anyhow-1.0.42.crate) = 595d3cfa7a60d4555cb5067b99f07142a08ea778de5cf993f7b75c7d8fabc486
+SIZE (rust/crates/anyhow-1.0.42.crate) = 34827
+SHA256 (rust/crates/assert_cmd-2.0.0.crate) = 54f002ce7d0c5e809ebb02be78fd503aeed4a511fd0fcaff6e6914cbdabbfa33
+SIZE (rust/crates/assert_cmd-2.0.0.crate) = 27912
+SHA256 (rust/crates/assert_fs-1.0.3.crate) = b0ca6aa3066e6c6f0357e056a25fa95e8737f15a04f9aead0b22d0d082a39465
+SIZE (rust/crates/assert_fs-1.0.3.crate) = 18900
+SHA256 (rust/crates/atty-0.2.14.crate) = d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8
+SIZE (rust/crates/atty-0.2.14.crate) = 5470
+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/bstr-0.2.16.crate) = 90682c8d613ad3373e66de8c6411e0ae2ab2571e879d2efbf73558cc66f21279
+SIZE (rust/crates/bstr-0.2.16.crate) = 330346
+SHA256 (rust/crates/bumpalo-3.7.0.crate) = 9c59e7af012c713f529e7a3ee57ce9b31ddd858d4b512923602f74608b009631
+SIZE (rust/crates/bumpalo-3.7.0.crate) = 134261
+SHA256 (rust/crates/bytemuck-1.7.2.crate) = 72957246c41db82b8ef88a5486143830adeb8227ef9837740bdec67724cf2c5b
+SIZE (rust/crates/bytemuck-1.7.2.crate) = 27489
+SHA256 (rust/crates/byteorder-1.4.3.crate) = 14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610
+SIZE (rust/crates/byteorder-1.4.3.crate) = 22512
+SHA256 (rust/crates/cast-0.2.7.crate) = 4c24dab4283a142afa2fdca129b80ad2c6284e073930f964c3a1293c225ee39a
+SIZE (rust/crates/cast-0.2.7.crate) = 11222
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/clap-2.33.3.crate) = 37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002
+SIZE (rust/crates/clap-2.33.3.crate) = 201925
+SHA256 (rust/crates/color_quant-1.1.0.crate) = 3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b
+SIZE (rust/crates/color_quant-1.1.0.crate) = 6649
+SHA256 (rust/crates/colored-2.0.0.crate) = b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd
+SIZE (rust/crates/colored-2.0.0.crate) = 21619
+SHA256 (rust/crates/crc32fast-1.2.1.crate) = 81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a
+SIZE (rust/crates/crc32fast-1.2.1.crate) = 38172
+SHA256 (rust/crates/criterion-0.3.5.crate) = 1604dafd25fba2fe2d5895a9da139f8dc9b319a5fe5354ca137cbbce4e178d10
+SIZE (rust/crates/criterion-0.3.5.crate) = 110662
+SHA256 (rust/crates/criterion-plot-0.4.4.crate) = d00996de9f2f7559f7f4dc286073197f83e92256a59ed395f9aac01fe717da57
+SIZE (rust/crates/criterion-plot-0.4.4.crate) = 22546
+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.8.1.crate) = 6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e
+SIZE (rust/crates/crossbeam-deque-0.8.1.crate) = 20852
+SHA256 (rust/crates/crossbeam-epoch-0.9.5.crate) = 4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd
+SIZE (rust/crates/crossbeam-epoch-0.9.5.crate) = 43883
+SHA256 (rust/crates/crossbeam-utils-0.8.5.crate) = d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db
+SIZE (rust/crates/crossbeam-utils-0.8.5.crate) = 38414
+SHA256 (rust/crates/csv-1.1.6.crate) = 22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1
+SIZE (rust/crates/csv-1.1.6.crate) = 886999
+SHA256 (rust/crates/csv-core-0.1.10.crate) = 2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90
+SIZE (rust/crates/csv-core-0.1.10.crate) = 25668
+SHA256 (rust/crates/deflate-0.8.6.crate) = 73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174
+SIZE (rust/crates/deflate-0.8.6.crate) = 62365
+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.6.1.crate) = e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457
+SIZE (rust/crates/either-1.6.1.crate) = 13641
+SHA256 (rust/crates/float-cmp-0.9.0.crate) = 98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4
+SIZE (rust/crates/float-cmp-0.9.0.crate) = 10102
+SHA256 (rust/crates/fnv-1.0.7.crate) = 3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1
+SIZE (rust/crates/fnv-1.0.7.crate) = 11266
+SHA256 (rust/crates/getopts-0.2.21.crate) = 14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5
+SIZE (rust/crates/getopts-0.2.21.crate) = 18457
+SHA256 (rust/crates/getrandom-0.2.3.crate) = 7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753
+SIZE (rust/crates/getrandom-0.2.3.crate) = 26261
+SHA256 (rust/crates/gif-0.11.2.crate) = 5a668f699973d0f573d15749b7002a9ac9e1f9c6b220e7b165601334c173d8de
+SIZE (rust/crates/gif-0.11.2.crate) = 34068
+SHA256 (rust/crates/globset-0.4.8.crate) = 10463d9ff00a2a068db14231982f5132edebad0d7660cd956a1c30292dbcbfbd
+SIZE (rust/crates/globset-0.4.8.crate) = 22886
+SHA256 (rust/crates/globwalk-0.8.1.crate) = 93e3af942408868f6934a7b85134a3230832b9977cf66125df2f9edcfce4ddcc
+SIZE (rust/crates/globwalk-0.8.1.crate) = 13705
+SHA256 (rust/crates/half-1.7.1.crate) = 62aca2aba2d62b4a7f5b33f3712cb1b0692779a56fb510499d5c0aa594daeaf3
+SIZE (rust/crates/half-1.7.1.crate) = 36168
+SHA256 (rust/crates/hermit-abi-0.1.19.crate) = 62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33
+SIZE (rust/crates/hermit-abi-0.1.19.crate) = 9979
+SHA256 (rust/crates/ignore-0.4.18.crate) = 713f1b139373f96a2e0ce3ac931cd01ee973c3c5dd7c40c0c2efe96ad2b6751d
+SIZE (rust/crates/ignore-0.4.18.crate) = 53174
+SHA256 (rust/crates/image-0.23.14.crate) = 24ffcb7e7244a9bf19d35bf2883b9c080c4ced3c07a9895572178cdb8f13f6a1
+SIZE (rust/crates/image-0.23.14.crate) = 226804
+SHA256 (rust/crates/itertools-0.10.1.crate) = 69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eaf
+SIZE (rust/crates/itertools-0.10.1.crate) = 116219
+SHA256 (rust/crates/itoa-0.4.7.crate) = dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736
+SIZE (rust/crates/itoa-0.4.7.crate) = 12099
+SHA256 (rust/crates/jpeg-decoder-0.1.22.crate) = 229d53d58899083193af11e15917b5640cd40b29ff475a1fe4ef725deb02d0f2
+SIZE (rust/crates/jpeg-decoder-0.1.22.crate) = 228366
+SHA256 (rust/crates/js-sys-0.3.52.crate) = ce791b7ca6638aae45be056e068fc756d871eb3b3b10b8efa62d1c9cec616752
+SIZE (rust/crates/js-sys-0.3.52.crate) = 67616
+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/log-0.4.14.crate) = 51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710
+SIZE (rust/crates/log-0.4.14.crate) = 34582
+SHA256 (rust/crates/memchr-2.4.0.crate) = b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc
+SIZE (rust/crates/memchr-2.4.0.crate) = 63392
+SHA256 (rust/crates/memoffset-0.6.4.crate) = 59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9
+SIZE (rust/crates/memoffset-0.6.4.crate) = 7664
+SHA256 (rust/crates/miniz_oxide-0.3.7.crate) = 791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435
+SIZE (rust/crates/miniz_oxide-0.3.7.crate) = 44996
+SHA256 (rust/crates/miniz_oxide-0.4.4.crate) = a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b
+SIZE (rust/crates/miniz_oxide-0.4.4.crate) = 49938
+SHA256 (rust/crates/normalize-line-endings-0.3.0.crate) = 61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be
+SIZE (rust/crates/normalize-line-endings-0.3.0.crate) = 5737
+SHA256 (rust/crates/num-integer-0.1.44.crate) = d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db
+SIZE (rust/crates/num-integer-0.1.44.crate) = 22216
+SHA256 (rust/crates/num-iter-0.1.42.crate) = b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59
+SIZE (rust/crates/num-iter-0.1.42.crate) = 10450
+SHA256 (rust/crates/num-rational-0.3.2.crate) = 12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07
+SIZE (rust/crates/num-rational-0.3.2.crate) = 26359
+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/oorandom-11.1.3.crate) = 0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575
+SIZE (rust/crates/oorandom-11.1.3.crate) = 10068
+SHA256 (rust/crates/plotters-0.3.1.crate) = 32a3fd9ec30b9749ce28cd91f255d569591cdf937fe280c312143e3c4bad6f2a
+SIZE (rust/crates/plotters-0.3.1.crate) = 8595577
+SHA256 (rust/crates/plotters-backend-0.3.2.crate) = d88417318da0eaf0fdcdb51a0ee6c3bed624333bff8f946733049380be67ac1c
+SIZE (rust/crates/plotters-backend-0.3.2.crate) = 13524
+SHA256 (rust/crates/plotters-svg-0.3.1.crate) = 521fa9638fa597e1dc53e9412a4f9cefb01187ee1f7413076f9e6749e2885ba9
+SIZE (rust/crates/plotters-svg-0.3.1.crate) = 7596
+SHA256 (rust/crates/png-0.16.8.crate) = 3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6
+SIZE (rust/crates/png-0.16.8.crate) = 52598
+SHA256 (rust/crates/ppv-lite86-0.2.10.crate) = ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857
+SIZE (rust/crates/ppv-lite86-0.2.10.crate) = 20915
+SHA256 (rust/crates/predicates-2.0.1.crate) = bc3d91237f5de3bcd9d927e24d03b495adb6135097b001cea7403e2d573d00a9
+SIZE (rust/crates/predicates-2.0.1.crate) = 27077
+SHA256 (rust/crates/predicates-core-1.0.2.crate) = 57e35a3326b75e49aa85f5dc6ec15b41108cf5aee58eabb1f274dd18b73c2451
+SIZE (rust/crates/predicates-core-1.0.2.crate) = 8185
+SHA256 (rust/crates/predicates-tree-1.0.3.crate) = d7dd0fd014130206c9352efbdc92be592751b2b9274dff685348341082c6ea3d
+SIZE (rust/crates/predicates-tree-1.0.3.crate) = 6370
+SHA256 (rust/crates/proc-macro2-1.0.28.crate) = 5c7ed8b8c7b886ea3ed7dde405212185f423ab44682667c8c6dd14aa1d9f6612
+SIZE (rust/crates/proc-macro2-1.0.28.crate) = 38732
+SHA256 (rust/crates/quote-1.0.9.crate) = c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7
+SIZE (rust/crates/quote-1.0.9.crate) = 25042
+SHA256 (rust/crates/rand-0.8.4.crate) = 2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8
+SIZE (rust/crates/rand-0.8.4.crate) = 87406
+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.3.crate) = d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7
+SIZE (rust/crates/rand_core-0.6.3.crate) = 21938
+SHA256 (rust/crates/rand_hc-0.3.1.crate) = d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7
+SIZE (rust/crates/rand_hc-0.3.1.crate) = 11891
+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.10.crate) = 8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff
+SIZE (rust/crates/redox_syscall-0.2.10.crate) = 23582
+SHA256 (rust/crates/regex-1.5.4.crate) = d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461
+SIZE (rust/crates/regex-1.5.4.crate) = 236581
+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.25.crate) = f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b
+SIZE (rust/crates/regex-syntax-0.6.25.crate) = 293293
+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/rustc_version-0.4.0.crate) = bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366
+SIZE (rust/crates/rustc_version-0.4.0.crate) = 12175
+SHA256 (rust/crates/ryu-1.0.5.crate) = 71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e
+SIZE (rust/crates/ryu-1.0.5.crate) = 49570
+SHA256 (rust/crates/same-file-1.0.6.crate) = 93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502
+SIZE (rust/crates/same-file-1.0.6.crate) = 10183
+SHA256 (rust/crates/scoped_threadpool-0.1.9.crate) = 1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8
+SIZE (rust/crates/scoped_threadpool-0.1.9.crate) = 7800
+SHA256 (rust/crates/scopeguard-1.1.0.crate) = d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd
+SIZE (rust/crates/scopeguard-1.1.0.crate) = 11470
+SHA256 (rust/crates/semver-1.0.4.crate) = 568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012
+SIZE (rust/crates/semver-1.0.4.crate) = 29375
+SHA256 (rust/crates/serde-1.0.127.crate) = f03b9878abf6d14e6779d3f24f07b2cfa90352cfec4acc5aab8f1ac7f146fae8
+SIZE (rust/crates/serde-1.0.127.crate) = 75162
+SHA256 (rust/crates/serde_cbor-0.11.1.crate) = 1e18acfa2f90e8b735b2836ab8d538de304cbb6729a7360729ea5a895d15a622
+SIZE (rust/crates/serde_cbor-0.11.1.crate) = 43947
+SHA256 (rust/crates/serde_derive-1.0.127.crate) = a024926d3432516606328597e0f224a51355a493b49fdd67e9209187cbe55ecc
+SIZE (rust/crates/serde_derive-1.0.127.crate) = 54201
+SHA256 (rust/crates/serde_json-1.0.66.crate) = 336b10da19a12ad094b59d870ebde26a45402e5b470add4b5fd03c5048a32127
+SIZE (rust/crates/serde_json-1.0.66.crate) = 115121
+SHA256 (rust/crates/syn-1.0.74.crate) = 1873d832550d4588c3dbc20f01361ab00bfe741048f71e3fecf145a7cc18b29c
+SIZE (rust/crates/syn-1.0.74.crate) = 232974
+SHA256 (rust/crates/tempfile-3.2.0.crate) = dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22
+SIZE (rust/crates/tempfile-3.2.0.crate) = 25892
+SHA256 (rust/crates/textwrap-0.11.0.crate) = d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060
+SIZE (rust/crates/textwrap-0.11.0.crate) = 17322
+SHA256 (rust/crates/thread_local-1.1.3.crate) = 8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd
+SIZE (rust/crates/thread_local-1.1.3.crate) = 13111
+SHA256 (rust/crates/tiff-0.6.1.crate) = 9a53f4706d65497df0c4349241deddf35f84cee19c87ed86ea8ca590f4464437
+SIZE (rust/crates/tiff-0.6.1.crate) = 1399263
+SHA256 (rust/crates/tinytemplate-1.2.1.crate) = be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc
+SIZE (rust/crates/tinytemplate-1.2.1.crate) = 26490
+SHA256 (rust/crates/treeline-0.1.0.crate) = a7f741b240f1a48843f9b8e0444fb55fb2a4ff67293b50a9179dfd5ea67f8d41
+SIZE (rust/crates/treeline-0.1.0.crate) = 3855
+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/wait-timeout-0.2.0.crate) = 9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6
+SIZE (rust/crates/wait-timeout-0.2.0.crate) = 12441
+SHA256 (rust/crates/walkdir-2.3.2.crate) = 808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56
+SIZE (rust/crates/walkdir-2.3.2.crate) = 23516
+SHA256 (rust/crates/wasi-0.10.2+wasi-snapshot-preview1.crate) = fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6
+SIZE (rust/crates/wasi-0.10.2+wasi-snapshot-preview1.crate) = 27505
+SHA256 (rust/crates/wasm-bindgen-0.2.75.crate) = b608ecc8f4198fe8680e2ed18eccab5f0cd4caaf3d83516fa5fb2e927fda2586
+SIZE (rust/crates/wasm-bindgen-0.2.75.crate) = 160048
+SHA256 (rust/crates/wasm-bindgen-backend-0.2.75.crate) = 580aa3a91a63d23aac5b6b267e2d13cb4f363e31dce6c352fca4752ae12e479f
+SIZE (rust/crates/wasm-bindgen-backend-0.2.75.crate) = 25521
+SHA256 (rust/crates/wasm-bindgen-macro-0.2.75.crate) = 171ebf0ed9e1458810dfcb31f2e766ad6b3a89dbda42d8901f2b268277e5f09c
+SIZE (rust/crates/wasm-bindgen-macro-0.2.75.crate) = 11550
+SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.75.crate) = 6c2657dd393f03aa2a659c25c6ae18a13a4048cebd220e147933ea837efc589f
+SIZE (rust/crates/wasm-bindgen-macro-support-0.2.75.crate) = 17883
+SHA256 (rust/crates/wasm-bindgen-shared-0.2.75.crate) = 2e0c4a743a309662d45f4ede961d7afa4ba4131a59a639f29b0069c3798bbcc2
+SIZE (rust/crates/wasm-bindgen-shared-0.2.75.crate) = 7177
+SHA256 (rust/crates/web-sys-0.3.52.crate) = 01c70a82d842c9979078c772d4a1344685045f1a5628f677c2b2eab4dd7d2696
+SIZE (rust/crates/web-sys-0.3.52.crate) = 663882
+SHA256 (rust/crates/weezl-0.1.5.crate) = d8b77fdfd5a253be4ab714e4ffa3c49caf146b4de743e97510c0656cf90f1e8e
+SIZE (rust/crates/weezl-0.1.5.crate) = 34944
+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
diff --git a/graphics/dify/pkg-descr b/graphics/dify/pkg-descr
new file mode 100644
index 000000000000..6aea4eb62143
--- /dev/null
+++ b/graphics/dify/pkg-descr
@@ -0,0 +1,9 @@
+Dify is a fast pixel-by-pixel image comparison tool in Rust.
+
+Features:
+- .png, .jpg, .jpeg, or .bmp format supported
+- Compares different format, .png vs .jpg for example
+- Compares different dimensions
+- Anti-aliasing support
+- Blockout areas support
+- Supports macOS, Linux and Windows