git: 0825a5664b20 - main - textproc/htmlq: Add new port: Command-line HTML processor, similar to jq

From: Mateusz Piotrowski <0mp_at_FreeBSD.org>
Date: Wed, 06 Oct 2021 19:12:40 UTC
The branch main has been updated by 0mp:

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

commit 0825a5664b202c72aa1aa6f4f84002531436a2fe
Author:     Mateusz Piotrowski <0mp@FreeBSD.org>
AuthorDate: 2021-10-06 19:11:09 +0000
Commit:     Mateusz Piotrowski <0mp@FreeBSD.org>
CommitDate: 2021-10-06 19:12:18 +0000

    textproc/htmlq: Add new port: Command-line HTML processor, similar to jq
---
 textproc/Makefile                  |   1 +
 textproc/htmlq/Makefile            |  98 +++++++++++++++++++++++
 textproc/htmlq/distinfo            | 155 +++++++++++++++++++++++++++++++++++++
 textproc/htmlq/files/patch-powerpc |  50 ++++++++++++
 textproc/htmlq/pkg-descr           |   4 +
 5 files changed, 308 insertions(+)

diff --git a/textproc/Makefile b/textproc/Makefile
index 5d56263af114..f844d4226370 100644
--- a/textproc/Makefile
+++ b/textproc/Makefile
@@ -275,6 +275,7 @@
     SUBDIR += htmlc
     SUBDIR += htmldoc
     SUBDIR += htmlise
+    SUBDIR += htmlq
     SUBDIR += htmltolatex
     SUBDIR += humanzip
     SUBDIR += hunspell
diff --git a/textproc/htmlq/Makefile b/textproc/htmlq/Makefile
new file mode 100644
index 000000000000..8f5145f7c3e0
--- /dev/null
+++ b/textproc/htmlq/Makefile
@@ -0,0 +1,98 @@
+PORTNAME=	htmlq
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.3.0
+CATEGORIES=	textproc
+
+MAINTAINER=	0mp@FreeBSD.org
+COMMENT=	Command-line HTML processor, similar to jq
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE.md
+
+USES=		cargo
+USE_GITHUB=	yes
+GH_ACCOUNT=	mgdm
+
+CARGO_CRATES=	ansi_term-0.11.0 \
+		atty-0.2.14 \
+		bitflags-1.3.2 \
+		byteorder-1.4.3 \
+		cfg-if-1.0.0 \
+		clap-2.33.3 \
+		convert_case-0.4.0 \
+		cssparser-0.27.2 \
+		cssparser-macros-0.6.0 \
+		derive_more-0.99.16 \
+		dtoa-0.4.8 \
+		dtoa-short-0.3.3 \
+		form_urlencoded-1.0.1 \
+		futf-0.1.4 \
+		fxhash-0.2.1 \
+		getrandom-0.1.16 \
+		hermit-abi-0.1.19 \
+		html5ever-0.25.1 \
+		idna-0.2.3 \
+		itoa-0.4.8 \
+		kuchiki-0.8.1 \
+		lazy_static-1.4.0 \
+		libc-0.2.101 \
+		log-0.4.14 \
+		mac-0.1.1 \
+		markup5ever-0.10.1 \
+		matches-0.1.9 \
+		new_debug_unreachable-1.0.4 \
+		nodrop-0.1.14 \
+		percent-encoding-2.1.0 \
+		pest-2.1.3 \
+		phf-0.8.0 \
+		phf_codegen-0.8.0 \
+		phf_generator-0.8.0 \
+		phf_macros-0.8.0 \
+		phf_shared-0.8.0 \
+		ppv-lite86-0.2.10 \
+		precomputed-hash-0.1.1 \
+		proc-macro-hack-0.5.19 \
+		proc-macro2-1.0.29 \
+		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 \
+		rustc_version-0.3.3 \
+		selectors-0.22.0 \
+		semver-0.11.0 \
+		semver-parser-0.10.2 \
+		serde-1.0.130 \
+		servo_arc-0.1.1 \
+		siphasher-0.3.7 \
+		smallvec-1.6.1 \
+		stable_deref_trait-1.2.0 \
+		string_cache-0.8.1 \
+		string_cache_codegen-0.5.1 \
+		strsim-0.8.0 \
+		syn-1.0.76 \
+		tendril-0.4.2 \
+		textwrap-0.11.0 \
+		thin-slice-0.1.1 \
+		tinyvec-1.3.1 \
+		tinyvec_macros-0.1.0 \
+		ucd-trie-0.1.3 \
+		unicode-bidi-0.3.6 \
+		unicode-normalization-0.1.19 \
+		unicode-width-0.1.8 \
+		unicode-xid-0.2.2 \
+		url-2.2.2 \
+		utf-8-0.7.6 \
+		vec_map-0.8.2 \
+		wasi-0.9.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
+
+PLIST_FILES=	bin/${PORTNAME}
+
+post-install:
+	${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
+
+.include <bsd.port.mk>
diff --git a/textproc/htmlq/distinfo b/textproc/htmlq/distinfo
new file mode 100644
index 000000000000..2f432b51ba55
--- /dev/null
+++ b/textproc/htmlq/distinfo
@@ -0,0 +1,155 @@
+TIMESTAMP = 1633547150
+SHA256 (rust/crates/ansi_term-0.11.0.crate) = ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b
+SIZE (rust/crates/ansi_term-0.11.0.crate) = 17087
+SHA256 (rust/crates/atty-0.2.14.crate) = d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8
+SIZE (rust/crates/atty-0.2.14.crate) = 5470
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/byteorder-1.4.3.crate) = 14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610
+SIZE (rust/crates/byteorder-1.4.3.crate) = 22512
+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/convert_case-0.4.0.crate) = 6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e
+SIZE (rust/crates/convert_case-0.4.0.crate) = 8098
+SHA256 (rust/crates/cssparser-0.27.2.crate) = 754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a
+SIZE (rust/crates/cssparser-0.27.2.crate) = 56792
+SHA256 (rust/crates/cssparser-macros-0.6.0.crate) = dfae75de57f2b2e85e8768c3ea840fd159c8f33e2b6522c7835b7abac81be16e
+SIZE (rust/crates/cssparser-macros-0.6.0.crate) = 6684
+SHA256 (rust/crates/derive_more-0.99.16.crate) = 40eebddd2156ce1bb37b20bbe5151340a31828b1f2d22ba4141f3531710e38df
+SIZE (rust/crates/derive_more-0.99.16.crate) = 56233
+SHA256 (rust/crates/dtoa-0.4.8.crate) = 56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0
+SIZE (rust/crates/dtoa-0.4.8.crate) = 16175
+SHA256 (rust/crates/dtoa-short-0.3.3.crate) = bde03329ae10e79ede66c9ce4dc930aa8599043b0743008548680f25b91502d6
+SIZE (rust/crates/dtoa-short-0.3.3.crate) = 8198
+SHA256 (rust/crates/form_urlencoded-1.0.1.crate) = 5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191
+SIZE (rust/crates/form_urlencoded-1.0.1.crate) = 8773
+SHA256 (rust/crates/futf-0.1.4.crate) = 7c9c1ce3fa9336301af935ab852c437817d14cd33690446569392e65170aac3b
+SIZE (rust/crates/futf-0.1.4.crate) = 11341
+SHA256 (rust/crates/fxhash-0.2.1.crate) = c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c
+SIZE (rust/crates/fxhash-0.2.1.crate) = 4102
+SHA256 (rust/crates/getrandom-0.1.16.crate) = 8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce
+SIZE (rust/crates/getrandom-0.1.16.crate) = 25077
+SHA256 (rust/crates/hermit-abi-0.1.19.crate) = 62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33
+SIZE (rust/crates/hermit-abi-0.1.19.crate) = 9979
+SHA256 (rust/crates/html5ever-0.25.1.crate) = aafcf38a1a36118242d29b92e1b08ef84e67e4a5ed06e0a80be20e6a32bfed6b
+SIZE (rust/crates/html5ever-0.25.1.crate) = 73165
+SHA256 (rust/crates/idna-0.2.3.crate) = 418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8
+SIZE (rust/crates/idna-0.2.3.crate) = 271023
+SHA256 (rust/crates/itoa-0.4.8.crate) = b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4
+SIZE (rust/crates/itoa-0.4.8.crate) = 11926
+SHA256 (rust/crates/kuchiki-0.8.1.crate) = 1ea8e9c6e031377cff82ee3001dc8026cdf431ed4e2e6b51f98ab8c73484a358
+SIZE (rust/crates/kuchiki-0.8.1.crate) = 22153
+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.101.crate) = 3cb00336871be5ed2c8ed44b60ae9959dc5b9f08539422ed43f09e34ecaeba21
+SIZE (rust/crates/libc-0.2.101.crate) = 530003
+SHA256 (rust/crates/log-0.4.14.crate) = 51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710
+SIZE (rust/crates/log-0.4.14.crate) = 34582
+SHA256 (rust/crates/mac-0.1.1.crate) = c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4
+SIZE (rust/crates/mac-0.1.1.crate) = 4838
+SHA256 (rust/crates/markup5ever-0.10.1.crate) = a24f40fb03852d1cdd84330cddcaf98e9ec08a7b7768e952fad3b4cf048ec8fd
+SIZE (rust/crates/markup5ever-0.10.1.crate) = 34668
+SHA256 (rust/crates/matches-0.1.9.crate) = a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f
+SIZE (rust/crates/matches-0.1.9.crate) = 2246
+SHA256 (rust/crates/new_debug_unreachable-1.0.4.crate) = e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54
+SIZE (rust/crates/new_debug_unreachable-1.0.4.crate) = 2561
+SHA256 (rust/crates/nodrop-0.1.14.crate) = 72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb
+SIZE (rust/crates/nodrop-0.1.14.crate) = 7667
+SHA256 (rust/crates/percent-encoding-2.1.0.crate) = d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e
+SIZE (rust/crates/percent-encoding-2.1.0.crate) = 9748
+SHA256 (rust/crates/pest-2.1.3.crate) = 10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53
+SIZE (rust/crates/pest-2.1.3.crate) = 77986
+SHA256 (rust/crates/phf-0.8.0.crate) = 3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12
+SIZE (rust/crates/phf-0.8.0.crate) = 3902
+SHA256 (rust/crates/phf_codegen-0.8.0.crate) = cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815
+SIZE (rust/crates/phf_codegen-0.8.0.crate) = 3192
+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/precomputed-hash-0.1.1.crate) = 925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c
+SIZE (rust/crates/precomputed-hash-0.1.1.crate) = 1640
+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.29.crate) = b9f5105d4fdaab20335ca9565e106a5d9b82b6219b5ba735731124ac6711d23d
+SIZE (rust/crates/proc-macro2-1.0.29.crate) = 38772
+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/rustc_version-0.3.3.crate) = f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee
+SIZE (rust/crates/rustc_version-0.3.3.crate) = 12119
+SHA256 (rust/crates/selectors-0.22.0.crate) = df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe
+SIZE (rust/crates/selectors-0.22.0.crate) = 44199
+SHA256 (rust/crates/semver-0.11.0.crate) = f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6
+SIZE (rust/crates/semver-0.11.0.crate) = 20826
+SHA256 (rust/crates/semver-parser-0.10.2.crate) = 00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7
+SIZE (rust/crates/semver-parser-0.10.2.crate) = 23176
+SHA256 (rust/crates/serde-1.0.130.crate) = f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913
+SIZE (rust/crates/serde-1.0.130.crate) = 75305
+SHA256 (rust/crates/servo_arc-0.1.1.crate) = d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432
+SIZE (rust/crates/servo_arc-0.1.1.crate) = 9817
+SHA256 (rust/crates/siphasher-0.3.7.crate) = 533494a8f9b724d33625ab53c6c4800f7cc445895924a8ef649222dcb76e938b
+SIZE (rust/crates/siphasher-0.3.7.crate) = 10097
+SHA256 (rust/crates/smallvec-1.6.1.crate) = fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e
+SIZE (rust/crates/smallvec-1.6.1.crate) = 26444
+SHA256 (rust/crates/stable_deref_trait-1.2.0.crate) = a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3
+SIZE (rust/crates/stable_deref_trait-1.2.0.crate) = 8054
+SHA256 (rust/crates/string_cache-0.8.1.crate) = 8ddb1139b5353f96e429e1a5e19fbaf663bddedaa06d1dbd49f82e352601209a
+SIZE (rust/crates/string_cache-0.8.1.crate) = 14423
+SHA256 (rust/crates/string_cache_codegen-0.5.1.crate) = f24c8e5e19d22a726626f1a5e16fe15b132dcf21d10177fa5a45ce7962996b97
+SIZE (rust/crates/string_cache_codegen-0.5.1.crate) = 8243
+SHA256 (rust/crates/strsim-0.8.0.crate) = 8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a
+SIZE (rust/crates/strsim-0.8.0.crate) = 9309
+SHA256 (rust/crates/syn-1.0.76.crate) = c6f107db402c2c2055242dbf4d2af0e69197202e9faacbef9571bbe47f5a1b84
+SIZE (rust/crates/syn-1.0.76.crate) = 233723
+SHA256 (rust/crates/tendril-0.4.2.crate) = a9ef557cb397a4f0a5a3a628f06515f78563f2209e64d47055d9dc6052bf5e33
+SIZE (rust/crates/tendril-0.4.2.crate) = 37138
+SHA256 (rust/crates/textwrap-0.11.0.crate) = d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060
+SIZE (rust/crates/textwrap-0.11.0.crate) = 17322
+SHA256 (rust/crates/thin-slice-0.1.1.crate) = 8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c
+SIZE (rust/crates/thin-slice-0.1.1.crate) = 4484
+SHA256 (rust/crates/tinyvec-1.3.1.crate) = 848a1e1181b9f6753b5e96a092749e29b11d19ede67dfbbd6c7dc7e0f49b5338
+SIZE (rust/crates/tinyvec-1.3.1.crate) = 42386
+SHA256 (rust/crates/tinyvec_macros-0.1.0.crate) = cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c
+SIZE (rust/crates/tinyvec_macros-0.1.0.crate) = 1817
+SHA256 (rust/crates/ucd-trie-0.1.3.crate) = 56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c
+SIZE (rust/crates/ucd-trie-0.1.3.crate) = 44615
+SHA256 (rust/crates/unicode-bidi-0.3.6.crate) = 246f4c42e67e7a4e3c6106ff716a5d067d4132a642840b242e357e468a2a0085
+SIZE (rust/crates/unicode-bidi-0.3.6.crate) = 33737
+SHA256 (rust/crates/unicode-normalization-0.1.19.crate) = d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9
+SIZE (rust/crates/unicode-normalization-0.1.19.crate) = 107353
+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/url-2.2.2.crate) = a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c
+SIZE (rust/crates/url-2.2.2.crate) = 68555
+SHA256 (rust/crates/utf-8-0.7.6.crate) = 09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9
+SIZE (rust/crates/utf-8-0.7.6.crate) = 10422
+SHA256 (rust/crates/vec_map-0.8.2.crate) = f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191
+SIZE (rust/crates/vec_map-0.8.2.crate) = 14466
+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/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 (mgdm-htmlq-v0.3.0_GH0.tar.gz) = df07a3afbd61824d382961620782c10b0c839d33dbd4d9a2dda261091c830f60
+SIZE (mgdm-htmlq-v0.3.0_GH0.tar.gz) = 12165
diff --git a/textproc/htmlq/files/patch-powerpc b/textproc/htmlq/files/patch-powerpc
new file mode 100644
index 000000000000..a6b33fb4d135
--- /dev/null
+++ b/textproc/htmlq/files/patch-powerpc
@@ -0,0 +1,50 @@
+--- cargo-crates/libc-0.2.101/src/unix/bsd/freebsdlike/freebsd/powerpc.rs.orig	2021-06-23 22:40:24 UTC
++++ cargo-crates/libc-0.2.101/src/unix/bsd/freebsdlike/freebsd/powerpc.rs
+@@ -0,0 +1,47 @@
++pub type c_char = u8;
++pub type c_long = i32;
++pub type c_ulong = u32;
++pub type wchar_t = i32;
++pub type time_t = i64;
++pub type suseconds_t = i32;
++pub type register_t = i32;
++
++s! {
++    pub struct stat {
++        pub st_dev: ::dev_t,
++        pub st_ino: ::ino_t,
++        pub st_mode: ::mode_t,
++        pub st_nlink: ::nlink_t,
++        pub st_uid: ::uid_t,
++        pub st_gid: ::gid_t,
++        pub st_rdev: ::dev_t,
++        pub st_atime: ::time_t,
++        pub st_atime_nsec: ::c_long,
++        pub st_mtime: ::time_t,
++        pub st_mtime_nsec: ::c_long,
++        pub st_ctime: ::time_t,
++        pub st_ctime_nsec: ::c_long,
++        pub st_size: ::off_t,
++        pub st_blocks: ::blkcnt_t,
++        pub st_blksize: ::blksize_t,
++        pub st_flags: ::fflags_t,
++        pub st_gen: u32,
++        pub st_lspare: i32,
++        pub st_birthtime: ::time_t,
++        pub st_birthtime_nsec: ::c_long,
++    }
++}
++
++// should be pub(crate), but that requires Rust 1.18.0
++cfg_if! {
++    if #[cfg(libc_const_size_of)] {
++        #[doc(hidden)]
++        pub const _ALIGNBYTES: usize = ::mem::size_of::<::c_int>() - 1;
++    } else {
++        #[doc(hidden)]
++        pub const _ALIGNBYTES: usize = 4 - 1;
++    }
++}
++
++pub const MAP_32BIT: ::c_int = 0x00080000;
++pub const MINSIGSTKSZ: ::size_t = 2048; // 512 * 4
diff --git a/textproc/htmlq/pkg-descr b/textproc/htmlq/pkg-descr
new file mode 100644
index 000000000000..d1e0ca50f8bd
--- /dev/null
+++ b/textproc/htmlq/pkg-descr
@@ -0,0 +1,4 @@
+Like jq, but for HTML. It uses CSS selectors to extract bits of content
+from HTML files.
+
+WWW: https://github.com/mgdm/htmlq