git: f88877ed5dfa - main - multimedia/wl-screenrec: add new port

From: Jan Beich <jbeich_at_FreeBSD.org>
Date: Mon, 03 Jul 2023 04:16:45 UTC
The branch main has been updated by jbeich:

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

commit f88877ed5dfa34f9765be67de6a45b1a85733770
Author:     Jan Beich <jbeich@FreeBSD.org>
AuthorDate: 2023-06-25 23:51:35 +0000
Commit:     Jan Beich <jbeich@FreeBSD.org>
CommitDate: 2023-07-03 04:15:07 +0000

    multimedia/wl-screenrec: add new port
    
    High performance screen recorder for Wayland. Requres a wayland
    compositor supporting wlr-output-management-unstable-v1 and
    wlr-screencopy-unstable-v1 protocols, like sway and Hyprland.
    
    Uses dma-buf transfers to get surface, and uses the GPU to do both the
    pixel format conversion and the encoding, meaning the raw video data
    never touches the CPU, leaving it free to run your applications.
    
    https://github.com/russelltg/wl-screenrec
---
 multimedia/Makefile                        |   1 +
 multimedia/wl-screenrec/Makefile           |  27 +++++
 multimedia/wl-screenrec/Makefile.crates    |  87 ++++++++++++++
 multimedia/wl-screenrec/distinfo           | 177 +++++++++++++++++++++++++++++
 multimedia/wl-screenrec/files/patch-ffmpeg |  40 +++++++
 multimedia/wl-screenrec/pkg-descr          |   7 ++
 6 files changed, 339 insertions(+)

diff --git a/multimedia/Makefile b/multimedia/Makefile
index ad3c778868c1..4e137680a39f 100644
--- a/multimedia/Makefile
+++ b/multimedia/Makefile
@@ -396,6 +396,7 @@
     SUBDIR += webcamoid
     SUBDIR += wf-recorder
     SUBDIR += winff
+    SUBDIR += wl-screenrec
     SUBDIR += wlrobs
     SUBDIR += x264
     SUBDIR += x265
diff --git a/multimedia/wl-screenrec/Makefile b/multimedia/wl-screenrec/Makefile
new file mode 100644
index 000000000000..150ede9b2277
--- /dev/null
+++ b/multimedia/wl-screenrec/Makefile
@@ -0,0 +1,27 @@
+PORTNAME=	wl-screenrec
+PORTVERSION=	s20230625
+CATEGORIES=	multimedia wayland
+
+MAINTAINER=	jbeich@FreeBSD.org
+COMMENT=	High performance wlroots screen recording, featuring hardware encoding
+WWW=		https://github.com/russelltg/wl-screenrec
+
+LICENSE=	APACHE20
+
+LIB_DEPENDS=	libavformat.so:multimedia/ffmpeg
+
+USES=		cargo llvm
+USE_GITHUB=	yes
+GH_ACCOUNT=	russelltg
+GH_TAGNAME=	7ceafa9
+PLIST_FILES=	bin/${PORTNAME}
+
+post-patch:
+	@${REINPLACE_CMD} -e 's,"llvm-config,"${LLVM_CONFIG},' \
+		${WRKSRC_crate_clang-sys}/build/common.rs \
+		${WRKSRC_crate_clang-sys}/src/support.rs
+
+post-install:
+	@${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
+
+.include <bsd.port.mk>
diff --git a/multimedia/wl-screenrec/Makefile.crates b/multimedia/wl-screenrec/Makefile.crates
new file mode 100644
index 000000000000..3657be3ff4f6
--- /dev/null
+++ b/multimedia/wl-screenrec/Makefile.crates
@@ -0,0 +1,87 @@
+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 \
+		autocfg-1.1.0 \
+		bindgen-0.64.0 \
+		bitflags-1.3.2 \
+		cc-1.0.79 \
+		cexpr-0.6.0 \
+		cfg-if-1.0.0 \
+		clang-sys-1.6.1 \
+		clap-4.3.8 \
+		clap_builder-4.3.8 \
+		clap_derive-4.3.2 \
+		clap_lex-0.5.0 \
+		colorchoice-1.0.0 \
+		dlib-0.5.2 \
+		downcast-rs-1.2.0 \
+		drm-fourcc-2.2.0 \
+		errno-0.3.1 \
+		errno-dragonfly-0.1.2 \
+		ffmpeg-next-6.0.0 \
+		ffmpeg-sys-next-6.0.1 \
+		glob-0.3.1 \
+		heck-0.4.1 \
+		hermit-abi-0.2.6 \
+		hermit-abi-0.3.1 \
+		human-size-0.4.2 \
+		io-lifetimes-1.0.11 \
+		is-terminal-0.4.7 \
+		lazy_static-1.4.0 \
+		lazycell-1.3.0 \
+		libc-0.2.146 \
+		libloading-0.7.4 \
+		libloading-0.8.0 \
+		linux-raw-sys-0.3.8 \
+		log-0.4.19 \
+		memchr-2.5.0 \
+		memoffset-0.7.1 \
+		minimal-lexical-0.2.1 \
+		nix-0.26.2 \
+		nom-7.1.3 \
+		num_cpus-1.15.0 \
+		once_cell-1.18.0 \
+		peeking_take_while-0.1.2 \
+		pkg-config-0.3.27 \
+		proc-macro2-1.0.61 \
+		quick-xml-0.28.2 \
+		quote-1.0.28 \
+		regex-1.8.4 \
+		regex-syntax-0.7.2 \
+		rustc-hash-1.1.0 \
+		rustix-0.37.20 \
+		scoped-tls-1.0.1 \
+		shlex-1.1.0 \
+		signal-hook-0.3.15 \
+		signal-hook-registry-1.4.1 \
+		smallvec-1.10.0 \
+		static_assertions-1.1.0 \
+		strsim-0.10.0 \
+		syn-1.0.109 \
+		syn-2.0.21 \
+		thiserror-1.0.40 \
+		thiserror-impl-1.0.40 \
+		unicode-ident-1.0.9 \
+		utf8parse-0.2.1 \
+		vcpkg-0.2.15 \
+		wayland-backend-0.1.2 \
+		wayland-client-0.30.2 \
+		wayland-protocols-0.30.0 \
+		wayland-protocols-wlr-0.1.0 \
+		wayland-scanner-0.30.1 \
+		wayland-sys-0.30.1 \
+		winapi-0.3.9 \
+		winapi-i686-pc-windows-gnu-0.4.0 \
+		winapi-x86_64-pc-windows-gnu-0.4.0 \
+		windows-sys-0.48.0 \
+		windows-targets-0.48.0 \
+		windows_aarch64_gnullvm-0.48.0 \
+		windows_aarch64_msvc-0.48.0 \
+		windows_i686_gnu-0.48.0 \
+		windows_i686_msvc-0.48.0 \
+		windows_x86_64_gnu-0.48.0 \
+		windows_x86_64_gnullvm-0.48.0 \
+		windows_x86_64_msvc-0.48.0
diff --git a/multimedia/wl-screenrec/distinfo b/multimedia/wl-screenrec/distinfo
new file mode 100644
index 000000000000..6e4b64b36e74
--- /dev/null
+++ b/multimedia/wl-screenrec/distinfo
@@ -0,0 +1,177 @@
+TIMESTAMP = 1687737095
+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/autocfg-1.1.0.crate) = d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa
+SIZE (rust/crates/autocfg-1.1.0.crate) = 13272
+SHA256 (rust/crates/bindgen-0.64.0.crate) = c4243e6031260db77ede97ad86c27e501d646a27ab57b59a574f725d98ab1fb4
+SIZE (rust/crates/bindgen-0.64.0.crate) = 204700
+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/cexpr-0.6.0.crate) = 6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766
+SIZE (rust/crates/cexpr-0.6.0.crate) = 17966
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/clang-sys-1.6.1.crate) = c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f
+SIZE (rust/crates/clang-sys-1.6.1.crate) = 41346
+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_derive-4.3.2.crate) = b8cd2b2a819ad6eec39e8f1d6b53001af1e5469f8c177579cdaeb313115b825f
+SIZE (rust/crates/clap_derive-4.3.2.crate) = 29053
+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/dlib-0.5.2.crate) = 330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412
+SIZE (rust/crates/dlib-0.5.2.crate) = 5806
+SHA256 (rust/crates/downcast-rs-1.2.0.crate) = 9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650
+SIZE (rust/crates/downcast-rs-1.2.0.crate) = 11670
+SHA256 (rust/crates/drm-fourcc-2.2.0.crate) = 0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4
+SIZE (rust/crates/drm-fourcc-2.2.0.crate) = 12192
+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/ffmpeg-next-6.0.0.crate) = 8af03c47ad26832ab3aabc4cdbf210af3d3b878783edd5a7ba044ba33aab7a60
+SIZE (rust/crates/ffmpeg-next-6.0.0.crate) = 88807
+SHA256 (rust/crates/ffmpeg-sys-next-6.0.1.crate) = cf650f461ccf130f4eef4927affed703cc387b183bfc4a7dfee86a076c131127
+SIZE (rust/crates/ffmpeg-sys-next-6.0.1.crate) = 15688
+SHA256 (rust/crates/glob-0.3.1.crate) = d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b
+SIZE (rust/crates/glob-0.3.1.crate) = 18880
+SHA256 (rust/crates/heck-0.4.1.crate) = 95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8
+SIZE (rust/crates/heck-0.4.1.crate) = 11567
+SHA256 (rust/crates/hermit-abi-0.2.6.crate) = ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7
+SIZE (rust/crates/hermit-abi-0.2.6.crate) = 13027
+SHA256 (rust/crates/hermit-abi-0.3.1.crate) = fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286
+SIZE (rust/crates/hermit-abi-0.3.1.crate) = 13793
+SHA256 (rust/crates/human-size-0.4.2.crate) = 62eef4964b4e1c2d66981a5646d893768fd15d96957aae5e0e85c632503e9724
+SIZE (rust/crates/human-size-0.4.2.crate) = 14509
+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/lazy_static-1.4.0.crate) = e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646
+SIZE (rust/crates/lazy_static-1.4.0.crate) = 10443
+SHA256 (rust/crates/lazycell-1.3.0.crate) = 830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55
+SIZE (rust/crates/lazycell-1.3.0.crate) = 12502
+SHA256 (rust/crates/libc-0.2.146.crate) = f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b
+SIZE (rust/crates/libc-0.2.146.crate) = 684707
+SHA256 (rust/crates/libloading-0.7.4.crate) = b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f
+SIZE (rust/crates/libloading-0.7.4.crate) = 27580
+SHA256 (rust/crates/libloading-0.8.0.crate) = d580318f95776505201b28cf98eb1fa5e4be3b689633ba6a3e6cd880ff22d8cb
+SIZE (rust/crates/libloading-0.8.0.crate) = 27845
+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/log-0.4.19.crate) = b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4
+SIZE (rust/crates/log-0.4.19.crate) = 38073
+SHA256 (rust/crates/memchr-2.5.0.crate) = 2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d
+SIZE (rust/crates/memchr-2.5.0.crate) = 65812
+SHA256 (rust/crates/memoffset-0.7.1.crate) = 5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4
+SIZE (rust/crates/memoffset-0.7.1.crate) = 8556
+SHA256 (rust/crates/minimal-lexical-0.2.1.crate) = 68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a
+SIZE (rust/crates/minimal-lexical-0.2.1.crate) = 94841
+SHA256 (rust/crates/nix-0.26.2.crate) = bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a
+SIZE (rust/crates/nix-0.26.2.crate) = 277973
+SHA256 (rust/crates/nom-7.1.3.crate) = d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a
+SIZE (rust/crates/nom-7.1.3.crate) = 117570
+SHA256 (rust/crates/num_cpus-1.15.0.crate) = 0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b
+SIZE (rust/crates/num_cpus-1.15.0.crate) = 15680
+SHA256 (rust/crates/once_cell-1.18.0.crate) = dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d
+SIZE (rust/crates/once_cell-1.18.0.crate) = 32969
+SHA256 (rust/crates/peeking_take_while-0.1.2.crate) = 19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099
+SIZE (rust/crates/peeking_take_while-0.1.2.crate) = 6697
+SHA256 (rust/crates/pkg-config-0.3.27.crate) = 26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964
+SIZE (rust/crates/pkg-config-0.3.27.crate) = 18838
+SHA256 (rust/crates/proc-macro2-1.0.61.crate) = 363a6f739a0c0addeaf6ed75150b95743aa18643a3c6f40409ed7b6db3a6911f
+SIZE (rust/crates/proc-macro2-1.0.61.crate) = 44363
+SHA256 (rust/crates/quick-xml-0.28.2.crate) = 0ce5e73202a820a31f8a0ee32ada5e21029c81fd9e3ebf668a40832e4219d9d1
+SIZE (rust/crates/quick-xml-0.28.2.crate) = 156462
+SHA256 (rust/crates/quote-1.0.28.crate) = 1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488
+SIZE (rust/crates/quote-1.0.28.crate) = 28382
+SHA256 (rust/crates/regex-1.8.4.crate) = d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f
+SIZE (rust/crates/regex-1.8.4.crate) = 249562
+SHA256 (rust/crates/regex-syntax-0.7.2.crate) = 436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78
+SIZE (rust/crates/regex-syntax-0.7.2.crate) = 339778
+SHA256 (rust/crates/rustc-hash-1.1.0.crate) = 08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2
+SIZE (rust/crates/rustc-hash-1.1.0.crate) = 9331
+SHA256 (rust/crates/rustix-0.37.20.crate) = b96e891d04aa506a6d1f318d2771bcb1c7dfda84e126660ace067c9b474bb2c0
+SIZE (rust/crates/rustix-0.37.20.crate) = 327665
+SHA256 (rust/crates/scoped-tls-1.0.1.crate) = e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294
+SIZE (rust/crates/scoped-tls-1.0.1.crate) = 8202
+SHA256 (rust/crates/shlex-1.1.0.crate) = 43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3
+SIZE (rust/crates/shlex-1.1.0.crate) = 5199
+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-registry-1.4.1.crate) = d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1
+SIZE (rust/crates/signal-hook-registry-1.4.1.crate) = 17987
+SHA256 (rust/crates/smallvec-1.10.0.crate) = a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0
+SIZE (rust/crates/smallvec-1.10.0.crate) = 31564
+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.109.crate) = 72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237
+SIZE (rust/crates/syn-1.0.109.crate) = 237611
+SHA256 (rust/crates/syn-2.0.21.crate) = 1182caafaab7018eaea9b404afa8184c0baf42a04d5e10ae4f4843c2029c8aab
+SIZE (rust/crates/syn-2.0.21.crate) = 241193
+SHA256 (rust/crates/thiserror-1.0.40.crate) = 978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac
+SIZE (rust/crates/thiserror-1.0.40.crate) = 18709
+SHA256 (rust/crates/thiserror-impl-1.0.40.crate) = f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f
+SIZE (rust/crates/thiserror-impl-1.0.40.crate) = 15138
+SHA256 (rust/crates/unicode-ident-1.0.9.crate) = b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0
+SIZE (rust/crates/unicode-ident-1.0.9.crate) = 41978
+SHA256 (rust/crates/utf8parse-0.2.1.crate) = 711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a
+SIZE (rust/crates/utf8parse-0.2.1.crate) = 13435
+SHA256 (rust/crates/vcpkg-0.2.15.crate) = accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426
+SIZE (rust/crates/vcpkg-0.2.15.crate) = 228735
+SHA256 (rust/crates/wayland-backend-0.1.2.crate) = 41b48e27457e8da3b2260ac60d0a94512f5cba36448679f3747c0865b7893ed8
+SIZE (rust/crates/wayland-backend-0.1.2.crate) = 68748
+SHA256 (rust/crates/wayland-client-0.30.2.crate) = 489c9654770f674fc7e266b3c579f4053d7551df0ceb392f153adb1f9ed06ac8
+SIZE (rust/crates/wayland-client-0.30.2.crate) = 65289
+SHA256 (rust/crates/wayland-protocols-0.30.0.crate) = 7fefbeb8a360abe67ab7c2efe1d297a1a50ee011f5460791bc18870c26bb84e2
+SIZE (rust/crates/wayland-protocols-0.30.0.crate) = 127598
+SHA256 (rust/crates/wayland-protocols-wlr-0.1.0.crate) = fce991093320e4a6a525876e6b629ab24da25f9baef0c2e0080ad173ec89588a
+SIZE (rust/crates/wayland-protocols-wlr-0.1.0.crate) = 25759
+SHA256 (rust/crates/wayland-scanner-0.30.1.crate) = b9b873b257fbc32ec909c0eb80dea312076a67014e65e245f5eb69a6b8ab330e
+SIZE (rust/crates/wayland-scanner-0.30.1.crate) = 34633
+SHA256 (rust/crates/wayland-sys-0.30.1.crate) = 96b2a02ac608e07132978689a6f9bf4214949c85998c247abadd4f4129b1aa06
+SIZE (rust/crates/wayland-sys-0.30.1.crate) = 8358
+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.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.48.0.crate) = 91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc
+SIZE (rust/crates/windows_aarch64_gnullvm-0.48.0.crate) = 366543
+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.48.0.crate) = 622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241
+SIZE (rust/crates/windows_i686_gnu-0.48.0.crate) = 741490
+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.48.0.crate) = ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1
+SIZE (rust/crates/windows_x86_64_gnu-0.48.0.crate) = 703595
+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.48.0.crate) = 1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a
+SIZE (rust/crates/windows_x86_64_msvc-0.48.0.crate) = 671422
+SHA256 (russelltg-wl-screenrec-s20230625-7ceafa9_GH0.tar.gz) = 2758a9f8d62e6054c3a87196cf885f226fb25ffe56a5cd2ea8e4f7c3185fd63b
+SIZE (russelltg-wl-screenrec-s20230625-7ceafa9_GH0.tar.gz) = 22290
diff --git a/multimedia/wl-screenrec/files/patch-ffmpeg b/multimedia/wl-screenrec/files/patch-ffmpeg
new file mode 100644
index 000000000000..40031a0fe6f9
--- /dev/null
+++ b/multimedia/wl-screenrec/files/patch-ffmpeg
@@ -0,0 +1,40 @@
+https://github.com/zmwangx/rust-ffmpeg/issues/63
+
+error[E0432]: unresolved imports `libc::ENODATA`, `libc::ENOSR`, `libc::ENOSTR`, `libc::ETIME`
+  --> cargo-crates/ffmpeg-next-6.0.0/src/util/error.rs:20:22
+   |
+20 |     ENFILE, ENOBUFS, ENODATA, ENODEV, ENOENT, ENOEXEC, ENOLCK, ENOLINK, ENOMEM, ENOMSG,
+   |                      ^^^^^^^ no `ENODATA` in the root
+21 |     ENOPROTOOPT, ENOSPC, ENOSR, ENOSTR, ENOSYS, ENOTCONN, ENOTDIR, ENOTEMPTY, ENOTRECOVERABLE,
+   |                          ^^^^^  ^^^^^^ no `ENOSTR` in the root
+   |                          |
+   |                          no `ENOSR` in the root
+22 |     ENOTSOCK, ENOTSUP, ENOTTY, ENXIO, EOPNOTSUPP, EOVERFLOW, EOWNERDEAD, EPERM, EPIPE, EPROTO,
+23 |     EPROTONOSUPPORT, EPROTOTYPE, ERANGE, EROFS, ESPIPE, ESRCH, ETIME, ETIMEDOUT, ETXTBSY,
+   |                                                                ^^^^^ no `ETIME` in the root
+   |
+help: a similar name exists in the module
+   |
+21 |     ENOPROTOOPT, ENOSPC, ENOSR, NOSTR, ENOSYS, ENOTCONN, ENOTDIR, ENOTEMPTY, ENOTRECOVERABLE,
+   |                                 ~~~~~
+help: a similar name exists in the module
+   |
+23 |     EPROTONOSUPPORT, EPROTOTYPE, ERANGE, EROFS, ESPIPE, ESRCH, VTIME, ETIMEDOUT, ETXTBSY,
+   |                                                                ~~~~~
+
+--- cargo-crates/ffmpeg-next-6.0.0/src/util/error.rs.orig	2006-07-24 01:21:28 UTC
++++ cargo-crates/ffmpeg-next-6.0.0/src/util/error.rs
+@@ -17,10 +17,10 @@ pub use libc::{
+     EBUSY, ECANCELED, ECHILD, ECONNABORTED, ECONNREFUSED, ECONNRESET, EDEADLK, EDESTADDRREQ, EDOM,
+     EEXIST, EFAULT, EFBIG, EHOSTUNREACH, EIDRM, EILSEQ, EINPROGRESS, EINTR, EINVAL, EIO, EISCONN,
+     EISDIR, ELOOP, EMFILE, EMLINK, EMSGSIZE, ENAMETOOLONG, ENETDOWN, ENETRESET, ENETUNREACH,
+-    ENFILE, ENOBUFS, ENODATA, ENODEV, ENOENT, ENOEXEC, ENOLCK, ENOLINK, ENOMEM, ENOMSG,
+-    ENOPROTOOPT, ENOSPC, ENOSR, ENOSTR, ENOSYS, ENOTCONN, ENOTDIR, ENOTEMPTY, ENOTRECOVERABLE,
++    ENFILE, ENOBUFS, ENODEV, ENOENT, ENOEXEC, ENOLCK, ENOLINK, ENOMEM, ENOMSG,
++    ENOPROTOOPT, ENOSPC, ENOSYS, ENOTCONN, ENOTDIR, ENOTEMPTY, ENOTRECOVERABLE,
+     ENOTSOCK, ENOTSUP, ENOTTY, ENXIO, EOPNOTSUPP, EOVERFLOW, EOWNERDEAD, EPERM, EPIPE, EPROTO,
+-    EPROTONOSUPPORT, EPROTOTYPE, ERANGE, EROFS, ESPIPE, ESRCH, ETIME, ETIMEDOUT, ETXTBSY,
++    EPROTONOSUPPORT, EPROTOTYPE, ERANGE, EROFS, ESPIPE, ESRCH, ETIMEDOUT, ETXTBSY,
+     EWOULDBLOCK, EXDEV,
+ };
+ 
diff --git a/multimedia/wl-screenrec/pkg-descr b/multimedia/wl-screenrec/pkg-descr
new file mode 100644
index 000000000000..9431455da741
--- /dev/null
+++ b/multimedia/wl-screenrec/pkg-descr
@@ -0,0 +1,7 @@
+High performance screen recorder for Wayland. Requres a wayland
+compositor supporting wlr-output-management-unstable-v1 and
+wlr-screencopy-unstable-v1 protocols, like sway and Hyprland.
+
+Uses dma-buf transfers to get surface, and uses the GPU to do both the
+pixel format conversion and the encoding, meaning the raw video data
+never touches the CPU, leaving it free to run your applications.