git: 0ca478062eb3 - main - multimedia/helvum: add new port

From: Jan Beich <jbeich_at_FreeBSD.org>
Date: Tue, 23 Nov 2021 13:47:15 UTC
The branch main has been updated by jbeich:

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

commit 0ca478062eb33eecf34a0dfc7dcdcf52531a45d5
Author:     Jan Beich <jbeich@FreeBSD.org>
AuthorDate: 2021-09-30 06:45:11 +0000
Commit:     Jan Beich <jbeich@FreeBSD.org>
CommitDate: 2021-11-23 13:46:57 +0000

    multimedia/helvum: add new port
    
    Helvum is a GTK-based patchbay for PipeWire, inspired by Catia for JACK.
    
    https://gitlab.freedesktop.org/ryuukyu/helvum
---
 multimedia/Makefile                              |   1 +
 multimedia/helvum/Makefile                       | 163 +++++++++++++++
 multimedia/helvum/distinfo                       | 249 +++++++++++++++++++++++
 multimedia/helvum/files/patch-build-aux_cargo.sh |  16 ++
 multimedia/helvum/files/patch-pipewire_32bit     |  27 +++
 multimedia/helvum/files/patch-pipewire_eventfd   |  29 +++
 multimedia/helvum/files/patch-pipewire_init      |  59 ++++++
 multimedia/helvum/pkg-descr                      |   3 +
 8 files changed, 547 insertions(+)

diff --git a/multimedia/Makefile b/multimedia/Makefile
index 470bf54880ed..efd564042ee3 100644
--- a/multimedia/Makefile
+++ b/multimedia/Makefile
@@ -132,6 +132,7 @@
     SUBDIR += handbrake
     SUBDIR += haruna
     SUBDIR += harvid
+    SUBDIR += helvum
     SUBDIR += hypnotix
     SUBDIR += imagination
     SUBDIR += intel-media-sdk
diff --git a/multimedia/helvum/Makefile b/multimedia/helvum/Makefile
new file mode 100644
index 000000000000..79a484b9bee5
--- /dev/null
+++ b/multimedia/helvum/Makefile
@@ -0,0 +1,163 @@
+PORTNAME=	helvum
+DISTVERSION=	0.3.1
+CATEGORIES=	multimedia
+
+PATCH_SITES=	${GL_SITE}/${GL_ACCOUNT}/${GL_PROJECT}/-/commit/
+PATCHFILES+=	c17bc2674d4e.patch:-p1 # https://gitlab.freedesktop.org/ryuukyu/helvum/-/merge_requests/19
+
+MAINTAINER=	jbeich@FreeBSD.org
+COMMENT=	GTK patchbay for PipeWire
+
+LICENSE=	GPLv3
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	llvm${LLVM_DEFAULT}>0:devel/llvm${LLVM_DEFAULT}
+LIB_DEPENDS=	libgraphene-1.0.so:graphics/graphene \
+		libpipewire-0.3.so:multimedia/pipewire
+
+USES=		cargo gnome meson pkgconfig python:build shebangfix
+USE_GITLAB=	yes
+USE_GNOME=	cairo gtk40
+GL_SITE=	https://gitlab.freedesktop.org
+GL_ACCOUNT=	ryuukyu
+GL_COMMIT=	958fa1523034d7fe9f8f3b858cbdc3dfd93edc3e
+SHEBANG_FILES=	build-aux/meson_post_install.py
+MAKE_ENV=	${CARGO_ENV}
+PLIST_FILES=	bin/${PORTNAME}
+
+CARGO_CRATES=	aho-corasick-0.7.15 \
+		ansi_term-0.11.0 \
+		anyhow-1.0.44 \
+		arrayvec-0.5.2 \
+		atty-0.2.14 \
+		autocfg-1.0.1 \
+		bindgen-0.59.1 \
+		bitflags-1.3.2 \
+		bitvec-0.19.5 \
+		cairo-rs-0.14.7 \
+		cairo-sys-rs-0.14.0 \
+		cc-1.0.70 \
+		cexpr-0.5.0 \
+		cfg-expr-0.8.1 \
+		cfg-expr-0.9.0 \
+		cfg-if-0.1.10 \
+		cfg-if-1.0.0 \
+		clang-sys-1.2.2 \
+		clap-2.33.3 \
+		cookie-factory-0.3.2 \
+		either-1.6.1 \
+		env_logger-0.8.4 \
+		env_logger-0.9.0 \
+		errno-0.2.7 \
+		errno-dragonfly-0.1.2 \
+		field-offset-0.3.4 \
+		funty-1.1.0 \
+		futures-channel-0.3.17 \
+		futures-core-0.3.17 \
+		futures-executor-0.3.17 \
+		futures-io-0.3.17 \
+		futures-task-0.3.17 \
+		futures-util-0.3.17 \
+		gdk-pixbuf-0.14.0 \
+		gdk-pixbuf-sys-0.14.0 \
+		gdk4-0.3.0 \
+		gdk4-sys-0.3.0 \
+		gio-0.14.6 \
+		gio-sys-0.14.0 \
+		glib-0.14.5 \
+		glib-macros-0.14.1 \
+		glib-sys-0.14.0 \
+		glob-0.3.0 \
+		gobject-sys-0.14.0 \
+		graphene-rs-0.14.0 \
+		graphene-sys-0.14.0 \
+		gsk4-0.3.0 \
+		gsk4-sys-0.3.0 \
+		gtk4-0.3.0 \
+		gtk4-macros-0.3.0 \
+		gtk4-sys-0.3.0 \
+		heck-0.3.3 \
+		hermit-abi-0.1.19 \
+		humantime-2.1.0 \
+		itertools-0.10.1 \
+		lazy_static-1.4.0 \
+		lazycell-1.3.0 \
+		lexical-core-0.7.6 \
+		libc-0.2.103 \
+		libloading-0.7.0 \
+		libspa-0.4.1 \
+		libspa-sys-0.4.1 \
+		log-0.4.14 \
+		memchr-2.3.4 \
+		memoffset-0.6.4 \
+		nix-0.14.1 \
+		nom-6.2.1 \
+		once_cell-1.8.0 \
+		pango-0.14.3 \
+		pango-sys-0.14.0 \
+		peeking_take_while-0.1.2 \
+		pest-2.1.3 \
+		pin-project-lite-0.2.7 \
+		pin-utils-0.1.0 \
+		pipewire-0.4.1 \
+		pipewire-sys-0.4.1 \
+		pkg-config-0.3.20 \
+		proc-macro-crate-1.1.0 \
+		proc-macro-error-1.0.4 \
+		proc-macro-error-attr-1.0.4 \
+		proc-macro2-1.0.29 \
+		quote-1.0.9 \
+		radium-0.5.3 \
+		regex-1.4.6 \
+		regex-syntax-0.6.25 \
+		rustc-hash-1.1.0 \
+		rustc_version-0.3.3 \
+		ryu-1.0.5 \
+		semver-0.11.0 \
+		semver-parser-0.10.2 \
+		serde-1.0.130 \
+		shlex-1.1.0 \
+		signal-0.7.0 \
+		slab-0.4.4 \
+		smallvec-1.7.0 \
+		static_assertions-1.1.0 \
+		strsim-0.8.0 \
+		strum-0.21.0 \
+		strum_macros-0.21.1 \
+		syn-1.0.77 \
+		system-deps-3.2.0 \
+		system-deps-4.0.0 \
+		tap-1.0.1 \
+		termcolor-1.1.2 \
+		textwrap-0.11.0 \
+		thiserror-1.0.29 \
+		thiserror-impl-1.0.29 \
+		toml-0.5.8 \
+		ucd-trie-0.1.3 \
+		unicode-segmentation-1.8.0 \
+		unicode-width-0.1.9 \
+		unicode-xid-0.2.2 \
+		vec_map-0.8.2 \
+		version-compare-0.0.11 \
+		version_check-0.9.3 \
+		void-1.0.2 \
+		which-3.1.1 \
+		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 \
+		wyz-0.2.0
+
+post-patch:
+# Make each cargo subcommand very verbose
+	@${REINPLACE_CMD} -e '/cargo/s/ --/&verbose&verbose&/' \
+		${WRKSRC}/build-aux/cargo.sh
+
+.include <bsd.port.options.mk>
+
+.if ${OPSYS} != FreeBSD || ${OSVERSION} < 1300134
+LIB_DEPENDS+=	libepoll-shim.so:devel/libepoll-shim
+LDFLAGS+=	-lepoll-shim
+.endif
+
+.include <bsd.port.mk>
diff --git a/multimedia/helvum/distinfo b/multimedia/helvum/distinfo
new file mode 100644
index 000000000000..b71f0cd7ea75
--- /dev/null
+++ b/multimedia/helvum/distinfo
@@ -0,0 +1,249 @@
+TIMESTAMP = 1632984311
+SHA256 (rust/crates/aho-corasick-0.7.15.crate) = 7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5
+SIZE (rust/crates/aho-corasick-0.7.15.crate) = 113071
+SHA256 (rust/crates/ansi_term-0.11.0.crate) = ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b
+SIZE (rust/crates/ansi_term-0.11.0.crate) = 17087
+SHA256 (rust/crates/anyhow-1.0.44.crate) = 61604a8f862e1d5c3229fdd78f8b02c68dcf73a4c4b05fd636d12240aaa242c1
+SIZE (rust/crates/anyhow-1.0.44.crate) = 35067
+SHA256 (rust/crates/arrayvec-0.5.2.crate) = 23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b
+SIZE (rust/crates/arrayvec-0.5.2.crate) = 27838
+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/bindgen-0.59.1.crate) = 453c49e5950bb0eb63bb3df640e31618846c89d5b7faa54040d76e98e0134375
+SIZE (rust/crates/bindgen-0.59.1.crate) = 205256
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/bitvec-0.19.5.crate) = 8942c8d352ae1838c9dda0b0ca2ab657696ef2232a20147cf1b30ae1a9cb4321
+SIZE (rust/crates/bitvec-0.19.5.crate) = 148200
+SHA256 (rust/crates/cairo-rs-0.14.7.crate) = 9164355c892b026d6257e696dde5f3cb39beb3718297f0f161b562fe2ee3ab86
+SIZE (rust/crates/cairo-rs-0.14.7.crate) = 48408
+SHA256 (rust/crates/cairo-sys-rs-0.14.0.crate) = d7c9c3928781e8a017ece15eace05230f04b647457d170d2d9641c94a444ff80
+SIZE (rust/crates/cairo-sys-rs-0.14.0.crate) = 10560
+SHA256 (rust/crates/cc-1.0.70.crate) = d26a6ce4b6a484fa3edb70f7efa6fc430fd2b87285fe8b84304fd0936faa0dc0
+SIZE (rust/crates/cc-1.0.70.crate) = 57200
+SHA256 (rust/crates/cexpr-0.5.0.crate) = db507a7679252d2276ed0dd8113c6875ec56d3089f9225b2b42c30cc1f8e5c89
+SIZE (rust/crates/cexpr-0.5.0.crate) = 17964
+SHA256 (rust/crates/cfg-expr-0.8.1.crate) = b412e83326147c2bb881f8b40edfbf9905b9b8abaebd0e47ca190ba62fda8f0e
+SIZE (rust/crates/cfg-expr-0.8.1.crate) = 34539
+SHA256 (rust/crates/cfg-expr-0.9.0.crate) = edae0b9625d1fce32f7d64b71784d9b1bf8469ec1a9c417e44aaf16a9cbd7571
+SIZE (rust/crates/cfg-expr-0.9.0.crate) = 36384
+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/clang-sys-1.2.2.crate) = 10612c0ec0e0a1ff0e97980647cb058a6e7aedb913d01d009c406b8b7d0b26ee
+SIZE (rust/crates/clang-sys-1.2.2.crate) = 37661
+SHA256 (rust/crates/clap-2.33.3.crate) = 37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002
+SIZE (rust/crates/clap-2.33.3.crate) = 201925
+SHA256 (rust/crates/cookie-factory-0.3.2.crate) = 396de984970346b0d9e93d1415082923c679e5ae5c3ee3dcbd104f5610af126b
+SIZE (rust/crates/cookie-factory-0.3.2.crate) = 14325
+SHA256 (rust/crates/either-1.6.1.crate) = e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457
+SIZE (rust/crates/either-1.6.1.crate) = 13641
+SHA256 (rust/crates/env_logger-0.8.4.crate) = a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3
+SIZE (rust/crates/env_logger-0.8.4.crate) = 33342
+SHA256 (rust/crates/env_logger-0.9.0.crate) = 0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3
+SIZE (rust/crates/env_logger-0.9.0.crate) = 33573
+SHA256 (rust/crates/errno-0.2.7.crate) = fa68f2fb9cae9d37c9b2b3584aba698a2e97f72d7aef7b9f7aa71d8b54ce46fe
+SIZE (rust/crates/errno-0.2.7.crate) = 8960
+SHA256 (rust/crates/errno-dragonfly-0.1.2.crate) = aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf
+SIZE (rust/crates/errno-dragonfly-0.1.2.crate) = 1810
+SHA256 (rust/crates/field-offset-0.3.4.crate) = 1e1c54951450cbd39f3dbcf1005ac413b49487dabf18a720ad2383eccfeffb92
+SIZE (rust/crates/field-offset-0.3.4.crate) = 6046
+SHA256 (rust/crates/funty-1.1.0.crate) = fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7
+SIZE (rust/crates/funty-1.1.0.crate) = 11631
+SHA256 (rust/crates/futures-channel-0.3.17.crate) = 5da6ba8c3bb3c165d3c7319fc1cc8304facf1fb8db99c5de877183c08a273888
+SIZE (rust/crates/futures-channel-0.3.17.crate) = 31765
+SHA256 (rust/crates/futures-core-0.3.17.crate) = 88d1c26957f23603395cd326b0ffe64124b818f4449552f960d815cfba83a53d
+SIZE (rust/crates/futures-core-0.3.17.crate) = 14478
+SHA256 (rust/crates/futures-executor-0.3.17.crate) = 45025be030969d763025784f7f355043dc6bc74093e4ecc5000ca4dc50d8745c
+SIZE (rust/crates/futures-executor-0.3.17.crate) = 17102
+SHA256 (rust/crates/futures-io-0.3.17.crate) = 522de2a0fe3e380f1bc577ba0474108faf3f6b18321dbf60b3b9c39a75073377
+SIZE (rust/crates/futures-io-0.3.17.crate) = 9050
+SHA256 (rust/crates/futures-task-0.3.17.crate) = 1d3d00f4eddb73e498a54394f228cd55853bdf059259e8e7bc6e69d408892e99
+SIZE (rust/crates/futures-task-0.3.17.crate) = 11712
+SHA256 (rust/crates/futures-util-0.3.17.crate) = 36568465210a3a6ee45e1f165136d68671471a501e632e9a98d96872222b5481
+SIZE (rust/crates/futures-util-0.3.17.crate) = 147679
+SHA256 (rust/crates/gdk-pixbuf-0.14.0.crate) = 534192cb8f01daeb8fab2c8d4baa8f9aae5b7a39130525779f5c2608e235b10f
+SIZE (rust/crates/gdk-pixbuf-0.14.0.crate) = 14554
+SHA256 (rust/crates/gdk-pixbuf-sys-0.14.0.crate) = f097c0704201fbc8f69c1762dc58c6947c8bb188b8ed0bc7e65259f1894fe590
+SIZE (rust/crates/gdk-pixbuf-sys-0.14.0.crate) = 9110
+SHA256 (rust/crates/gdk4-0.3.0.crate) = 4c0f7f98ad25b81ac9462f74a091b0e4c0983ed1e74d19a38230c772b4dcef81
+SIZE (rust/crates/gdk4-0.3.0.crate) = 80579
+SHA256 (rust/crates/gdk4-sys-0.3.0.crate) = 262a79666b42e1884577f11a050439a964b95dec55343ac6ace7930e1415fa18
+SIZE (rust/crates/gdk4-sys-0.3.0.crate) = 62107
+SHA256 (rust/crates/gio-0.14.6.crate) = f3a29d8062af72045518271a2cd98b4e1617ce43f5b4223ad0fb9a0eff8f718c
+SIZE (rust/crates/gio-0.14.6.crate) = 177602
+SHA256 (rust/crates/gio-sys-0.14.0.crate) = c0a41df66e57fcc287c4bcf74fc26b884f31901ea9792ec75607289b456f48fa
+SIZE (rust/crates/gio-sys-0.14.0.crate) = 76499
+SHA256 (rust/crates/glib-0.14.5.crate) = d4a930b7208e6e0ab839eea5f65ac2b82109f729621430d47fe905e2e09d33f4
+SIZE (rust/crates/glib-0.14.5.crate) = 165321
+SHA256 (rust/crates/glib-macros-0.14.1.crate) = 2aad66361f66796bfc73f530c51ef123970eb895ffba991a234fcf7bea89e518
+SIZE (rust/crates/glib-macros-0.14.1.crate) = 20018
+SHA256 (rust/crates/glib-sys-0.14.0.crate) = 1c1d60554a212445e2a858e42a0e48cece1bd57b311a19a9468f70376cf554ae
+SIZE (rust/crates/glib-sys-0.14.0.crate) = 57390
+SHA256 (rust/crates/glob-0.3.0.crate) = 9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574
+SIZE (rust/crates/glob-0.3.0.crate) = 18724
+SHA256 (rust/crates/gobject-sys-0.14.0.crate) = aa92cae29759dae34ab5921d73fff5ad54b3d794ab842c117e36cafc7994c3f5
+SIZE (rust/crates/gobject-sys-0.14.0.crate) = 17399
+SHA256 (rust/crates/graphene-rs-0.14.0.crate) = f1460a39f06e491e6112f27e71e51435c833ba370723224dd1743dfd1f201f19
+SIZE (rust/crates/graphene-rs-0.14.0.crate) = 19285
+SHA256 (rust/crates/graphene-sys-0.14.0.crate) = e7d23fb7a9547e5f072a7e0cd49cd648fedeb786d122b106217511980cbb8962
+SIZE (rust/crates/graphene-sys-0.14.0.crate) = 10264
+SHA256 (rust/crates/gsk4-0.3.0.crate) = 20b71f2e2cc699c2e0fbfa22899eeaffd84f9c1dc01e9263deac8664eec22dc0
+SIZE (rust/crates/gsk4-0.3.0.crate) = 21291
+SHA256 (rust/crates/gsk4-sys-0.3.0.crate) = 30468aff80e4faadf22f9ba164ea17511a69a9995d7a13827a13424ef47b2472
+SIZE (rust/crates/gsk4-sys-0.3.0.crate) = 11605
+SHA256 (rust/crates/gtk4-0.3.0.crate) = 906f9308d15789d96a736881582181d710ae0937197119df459f3d2b46ef6776
+SIZE (rust/crates/gtk4-0.3.0.crate) = 525949
+SHA256 (rust/crates/gtk4-macros-0.3.0.crate) = 4d0d008cdf23214c697482415dd20f666bdf3cc9f5e803b017223c17c5b59a6e
+SIZE (rust/crates/gtk4-macros-0.3.0.crate) = 6056
+SHA256 (rust/crates/gtk4-sys-0.3.0.crate) = d06be0a6322aa77dd372f726e97efbcbb192d9a824a414a8874f238effd7747c
+SIZE (rust/crates/gtk4-sys-0.3.0.crate) = 98796
+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/humantime-2.1.0.crate) = 9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4
+SIZE (rust/crates/humantime-2.1.0.crate) = 16749
+SHA256 (rust/crates/itertools-0.10.1.crate) = 69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eaf
+SIZE (rust/crates/itertools-0.10.1.crate) = 116219
+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/lexical-core-0.7.6.crate) = 6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe
+SIZE (rust/crates/lexical-core-0.7.6.crate) = 494385
+SHA256 (rust/crates/libc-0.2.103.crate) = dd8f7255a17a627354f321ef0055d63b898c6fb27eff628af4d1b66b7331edf6
+SIZE (rust/crates/libc-0.2.103.crate) = 540563
+SHA256 (rust/crates/libloading-0.7.0.crate) = 6f84d96438c15fcd6c3f244c8fce01d1e2b9c6b5623e9c711dc9286d8fc92d6a
+SIZE (rust/crates/libloading-0.7.0.crate) = 26216
+SHA256 (rust/crates/libspa-0.4.1.crate) = aeb373e8b03740369c5fe48a557c6408b6898982d57e17940de144375d472743
+SIZE (rust/crates/libspa-0.4.1.crate) = 32491
+SHA256 (rust/crates/libspa-sys-0.4.1.crate) = d301a2fc2fed0a97c13836408a4d98f419af0c2695ecf74e634a214c17beefa6
+SIZE (rust/crates/libspa-sys-0.4.1.crate) = 2603
+SHA256 (rust/crates/log-0.4.14.crate) = 51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710
+SIZE (rust/crates/log-0.4.14.crate) = 34582
+SHA256 (rust/crates/memchr-2.3.4.crate) = 0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525
+SIZE (rust/crates/memchr-2.3.4.crate) = 23077
+SHA256 (rust/crates/memoffset-0.6.4.crate) = 59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9
+SIZE (rust/crates/memoffset-0.6.4.crate) = 7664
+SHA256 (rust/crates/nix-0.14.1.crate) = 6c722bee1037d430d0f8e687bbdbf222f27cc6e4e68d5caf630857bb2b6dbdce
+SIZE (rust/crates/nix-0.14.1.crate) = 185227
+SHA256 (rust/crates/nom-6.2.1.crate) = 9c5c51b9083a3c620fa67a2a635d1ce7d95b897e957d6b28ff9a5da960a103a6
+SIZE (rust/crates/nom-6.2.1.crate) = 148362
+SHA256 (rust/crates/once_cell-1.8.0.crate) = 692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56
+SIZE (rust/crates/once_cell-1.8.0.crate) = 28925
+SHA256 (rust/crates/pango-0.14.3.crate) = e1fc88307d9797976ea62722ff2ec5de3fae279c6e20100ed3f49ca1a4bf3f96
+SIZE (rust/crates/pango-0.14.3.crate) = 37665
+SHA256 (rust/crates/pango-sys-0.14.0.crate) = 2367099ca5e761546ba1d501955079f097caa186bb53ce0f718dca99ac1942fe
+SIZE (rust/crates/pango-sys-0.14.0.crate) = 23109
+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/pest-2.1.3.crate) = 10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53
+SIZE (rust/crates/pest-2.1.3.crate) = 77986
+SHA256 (rust/crates/pin-project-lite-0.2.7.crate) = 8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443
+SIZE (rust/crates/pin-project-lite-0.2.7.crate) = 27212
+SHA256 (rust/crates/pin-utils-0.1.0.crate) = 8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184
+SIZE (rust/crates/pin-utils-0.1.0.crate) = 7580
+SHA256 (rust/crates/pipewire-0.4.1.crate) = 5de050d879e7b8d9313429ec314b88b26fe48ba29a6ecc3bc8289d3673fee6c8
+SIZE (rust/crates/pipewire-0.4.1.crate) = 36546
+SHA256 (rust/crates/pipewire-sys-0.4.1.crate) = 9b4aa5ef9f3afef7dbb335106f69bd6bb541259e8796c693810cde20db1eb949
+SIZE (rust/crates/pipewire-sys-0.4.1.crate) = 2297
+SHA256 (rust/crates/pkg-config-0.3.20.crate) = 7c9b1041b4387893b91ee6746cddfc28516aff326a3519fb2adf820932c5e6cb
+SIZE (rust/crates/pkg-config-0.3.20.crate) = 15395
+SHA256 (rust/crates/proc-macro-crate-1.1.0.crate) = 1ebace6889caf889b4d3f76becee12e90353f2b8c7d875534a71e5742f8f6f83
+SIZE (rust/crates/proc-macro-crate-1.1.0.crate) = 8535
+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.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/radium-0.5.3.crate) = 941ba9d78d8e2f7ce474c015eea4d9c6d25b6a3327f9832ee29a4de27f91bbb8
+SIZE (rust/crates/radium-0.5.3.crate) = 7588
+SHA256 (rust/crates/regex-1.4.6.crate) = 2a26af418b574bd56588335b3a3659a65725d4e636eb1016c2f9e3b38c7cc759
+SIZE (rust/crates/regex-1.4.6.crate) = 242248
+SHA256 (rust/crates/regex-syntax-0.6.25.crate) = f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b
+SIZE (rust/crates/regex-syntax-0.6.25.crate) = 293293
+SHA256 (rust/crates/rustc-hash-1.1.0.crate) = 08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2
+SIZE (rust/crates/rustc-hash-1.1.0.crate) = 9331
+SHA256 (rust/crates/rustc_version-0.3.3.crate) = f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee
+SIZE (rust/crates/rustc_version-0.3.3.crate) = 12119
+SHA256 (rust/crates/ryu-1.0.5.crate) = 71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e
+SIZE (rust/crates/ryu-1.0.5.crate) = 49570
+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/shlex-1.1.0.crate) = 43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3
+SIZE (rust/crates/shlex-1.1.0.crate) = 5199
+SHA256 (rust/crates/signal-0.7.0.crate) = 2f6ce83b159ab6984d2419f495134972b48754d13ff2e3f8c998339942b56ed9
+SIZE (rust/crates/signal-0.7.0.crate) = 11974
+SHA256 (rust/crates/slab-0.4.4.crate) = c307a32c1c5c437f38c7fd45d753050587732ba8628319fbdf12a7e289ccc590
+SIZE (rust/crates/slab-0.4.4.crate) = 15725
+SHA256 (rust/crates/smallvec-1.7.0.crate) = 1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309
+SIZE (rust/crates/smallvec-1.7.0.crate) = 27459
+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.8.0.crate) = 8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a
+SIZE (rust/crates/strsim-0.8.0.crate) = 9309
+SHA256 (rust/crates/strum-0.21.0.crate) = aaf86bbcfd1fa9670b7a129f64fc0c9fcbbfe4f1bc4210e9e98fe71ffc12cde2
+SIZE (rust/crates/strum-0.21.0.crate) = 5296
+SHA256 (rust/crates/strum_macros-0.21.1.crate) = d06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ec
+SIZE (rust/crates/strum_macros-0.21.1.crate) = 16280
+SHA256 (rust/crates/syn-1.0.77.crate) = 5239bc68e0fef57495900cfea4e8dc75596d9a319d7e16b1e0a440d24e6fe0a0
+SIZE (rust/crates/syn-1.0.77.crate) = 233424
+SHA256 (rust/crates/system-deps-3.2.0.crate) = 480c269f870722b3b08d2f13053ce0c2ab722839f472863c3e2d61ff3a1c2fa6
+SIZE (rust/crates/system-deps-3.2.0.crate) = 21476
+SHA256 (rust/crates/system-deps-4.0.0.crate) = 6c1889ab44c2a423ba9ba4d64cd04989b25c0280ca7ade813f05368418722a04
+SIZE (rust/crates/system-deps-4.0.0.crate) = 22092
+SHA256 (rust/crates/tap-1.0.1.crate) = 55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369
+SIZE (rust/crates/tap-1.0.1.crate) = 11316
+SHA256 (rust/crates/termcolor-1.1.2.crate) = 2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4
+SIZE (rust/crates/termcolor-1.1.2.crate) = 17287
+SHA256 (rust/crates/textwrap-0.11.0.crate) = d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060
+SIZE (rust/crates/textwrap-0.11.0.crate) = 17322
+SHA256 (rust/crates/thiserror-1.0.29.crate) = 602eca064b2d83369e2b2f34b09c70b605402801927c65c11071ac911d299b88
+SIZE (rust/crates/thiserror-1.0.29.crate) = 17455
+SHA256 (rust/crates/thiserror-impl-1.0.29.crate) = bad553cc2c78e8de258400763a647e80e6d1b31ee237275d756f6836d204494c
+SIZE (rust/crates/thiserror-impl-1.0.29.crate) = 15201
+SHA256 (rust/crates/toml-0.5.8.crate) = a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa
+SIZE (rust/crates/toml-0.5.8.crate) = 54219
+SHA256 (rust/crates/ucd-trie-0.1.3.crate) = 56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c
+SIZE (rust/crates/ucd-trie-0.1.3.crate) = 44615
+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.9.crate) = 3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973
+SIZE (rust/crates/unicode-width-0.1.9.crate) = 16745
+SHA256 (rust/crates/unicode-xid-0.2.2.crate) = 8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3
+SIZE (rust/crates/unicode-xid-0.2.2.crate) = 14955
+SHA256 (rust/crates/vec_map-0.8.2.crate) = f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191
+SIZE (rust/crates/vec_map-0.8.2.crate) = 14466
+SHA256 (rust/crates/version-compare-0.0.11.crate) = 1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b
+SIZE (rust/crates/version-compare-0.0.11.crate) = 15208
+SHA256 (rust/crates/version_check-0.9.3.crate) = 5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe
+SIZE (rust/crates/version_check-0.9.3.crate) = 12547
+SHA256 (rust/crates/void-1.0.2.crate) = 6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d
+SIZE (rust/crates/void-1.0.2.crate) = 2356
+SHA256 (rust/crates/which-3.1.1.crate) = d011071ae14a2f6671d0b74080ae0cd8ebf3a6f8c9589a2cd45f23126fe29724
+SIZE (rust/crates/which-3.1.1.crate) = 8071
+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/wyz-0.2.0.crate) = 85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214
+SIZE (rust/crates/wyz-0.2.0.crate) = 12926
+SHA256 (ryuukyu-helvum-958fa1523034d7fe9f8f3b858cbdc3dfd93edc3e_GL0.tar.gz) = 6e4ef5af93d131bc60f8e132109445f74c7899602f1fb85bab8fac59b6d93d40
+SIZE (ryuukyu-helvum-958fa1523034d7fe9f8f3b858cbdc3dfd93edc3e_GL0.tar.gz) = 117353
+SHA256 (c17bc2674d4e.patch) = 66b454fded843aa51b27fe1eda1267117839294c1785e376e0b133f03a6ffc14
+SIZE (c17bc2674d4e.patch) = 733
diff --git a/multimedia/helvum/files/patch-build-aux_cargo.sh b/multimedia/helvum/files/patch-build-aux_cargo.sh
new file mode 100644
index 000000000000..09dcd4485789
--- /dev/null
+++ b/multimedia/helvum/files/patch-build-aux_cargo.sh
@@ -0,0 +1,16 @@
+--- build-aux/cargo.sh.orig	2021-09-30 06:45:11 UTC
++++ build-aux/cargo.sh
+@@ -10,11 +10,11 @@ then
+     echo "DEBUG MODE"
+     cargo build --manifest-path \
+         "$MESON_SOURCE_ROOT"/Cargo.toml && \
+-        cp "$CARGO_TARGET_DIR"/debug/$5 $3
++        cp "$CARGO_TARGET_DIR"/$CARGO_BUILD_TARGET/debug/$5 $3
+ else
+     echo "RELEASE MODE"
+     cargo build --manifest-path \
+         "$MESON_SOURCE_ROOT"/Cargo.toml --release && \
+-        cp "$CARGO_TARGET_DIR"/release/$5 $3
++        cp "$CARGO_TARGET_DIR"/$CARGO_BUILD_TARGET/release/$5 $3
+ fi
+ 
diff --git a/multimedia/helvum/files/patch-pipewire_32bit b/multimedia/helvum/files/patch-pipewire_32bit
new file mode 100644
index 000000000000..c163976525bc
--- /dev/null
+++ b/multimedia/helvum/files/patch-pipewire_32bit
@@ -0,0 +1,27 @@
+https://gitlab.freedesktop.org/pipewire/pipewire-rs/-/merge_requests/108
+
+error[E0277]: the trait bound `i32: From<u32>` is not satisfied
+   --> cargo-crates/pipewire-0.4.1/src/loop_.rs:414:50
+    |
+414 |                 tv_nsec: duration.subsec_nanos().into(),
+    |                                                  ^^^^ the trait `From<u32>` is not implemented for `i32`
+    |
+    = help: the following implementations were found:
+              <i32 as From<NonZeroI32>>
+              <i32 as From<bool>>
+              <i32 as From<i16>>
+              <i32 as From<i8>>
+            and 3 others
+    = note: required because of the requirements on the impl of `Into<i32>` for `u32`
+
+--- cargo-crates/pipewire-0.4.1/src/loop_.rs.orig	1973-11-29 21:33:09 UTC
++++ cargo-crates/pipewire-0.4.1/src/loop_.rs
+@@ -411,7 +411,7 @@ where
+         fn duration_to_timespec(duration: Duration) -> spa_sys::timespec {
+             spa_sys::timespec {
+                 tv_sec: duration.as_secs().try_into().expect("Duration too long"),
+-                tv_nsec: duration.subsec_nanos().into(),
++                tv_nsec: duration.subsec_nanos() as libc::c_long,
+             }
+         }
+ 
diff --git a/multimedia/helvum/files/patch-pipewire_eventfd b/multimedia/helvum/files/patch-pipewire_eventfd
new file mode 100644
index 000000000000..98f0eb26b222
--- /dev/null
+++ b/multimedia/helvum/files/patch-pipewire_eventfd
@@ -0,0 +1,29 @@
+https://gitlab.freedesktop.org/pipewire/pipewire-rs/-/commit/f1dd2f9f3086
+
+error[E0425]: cannot find function `eventfd` in crate `libc`
+   --> cargo-crates/pipewire-0.4.1/src/channel.rs:220:34
+    |
+220 |     let eventfd = unsafe { libc::eventfd(0, libc::EFD_CLOEXEC) };
+    |                                  ^^^^^^^ not found in `libc`
+
+
+--- cargo-crates/pipewire-0.4.1/src/channel.rs.orig	1973-11-29 21:33:09 UTC
++++ cargo-crates/pipewire-0.4.1/src/channel.rs
+@@ -217,7 +217,17 @@ where
+ {
+     // Manually open an eventfd that we can use to signal the loop thread to check for messages
+     // via an IoSource.
++    #[cfg(target_os = "linux")]
+     let eventfd = unsafe { libc::eventfd(0, libc::EFD_CLOEXEC) };
++    #[cfg(target_os = "freebsd")]
++    let eventfd = {
++        // Added in FreeBSD 13, libc crate doesn't target that yet
++        use std::os::raw::{c_int, c_uint};
++        extern "C" {
++            pub fn eventfd(name: c_uint, flags: c_int) -> c_int;
++        }
++        unsafe { eventfd(0, 0x00100000) }
++    };
+     if eventfd == -1 {
+         panic!("Failed to create eventfd: {}", errno::errno())
+     }
diff --git a/multimedia/helvum/files/patch-pipewire_init b/multimedia/helvum/files/patch-pipewire_init
new file mode 100644
index 000000000000..93aaa506357a
--- /dev/null
+++ b/multimedia/helvum/files/patch-pipewire_init
@@ -0,0 +1,59 @@
+Chase ABI from multimedia/pipewire/files/patch-src_pipewire_pipewire_init
+
+https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1819
+
+error[E0425]: cannot find function `pw_init` in crate `pw_sys`
+   --> cargo-crates/pipewire-0.4.1/src/lib.rs:156:49
+    |
+156 |     INITIALIZED.get_or_init(|| unsafe { pw_sys::pw_init(ptr::null_mut(), ptr::null_mut()) });
+    |                                                 ^^^^^^^ not found in `pw_sys`
+
+error[E0425]: cannot find function `pw_deinit` in crate `pw_sys`
+   --> cargo-crates/pipewire-0.4.1/src/lib.rs:165:13
+    |
+165 |     pw_sys::pw_deinit()
+    |             ^^^^^^^^^ not found in `pw_sys`
+
+--- cargo-crates/pipewire-0.4.1/src/lib.rs.orig	1973-11-29 21:33:09 UTC
++++ cargo-crates/pipewire-0.4.1/src/lib.rs
+@@ -153,7 +153,7 @@ pub mod prelude {
+ pub fn init() {
+     use once_cell::sync::OnceCell;
+     static INITIALIZED: OnceCell<()> = OnceCell::new();
+-    INITIALIZED.get_or_init(|| unsafe { pw_sys::pw_init(ptr::null_mut(), ptr::null_mut()) });
++    INITIALIZED.get_or_init(|| unsafe { pw_sys::pipewire_init(ptr::null_mut(), ptr::null_mut()) });
+ }
+ 
+ /// Deinitialize PipeWire
+@@ -162,7 +162,7 @@ pub fn init() {
+ /// This must only be called once during the lifetime of the process, once no PipeWire threads
+ /// are running anymore and all PipeWire resources are released.
+ pub unsafe fn deinit() {
+-    pw_sys::pw_deinit()
++    pw_sys::pipewire_deinit()
+ }
+ 
+ #[cfg(test)]
+--- cargo-crates/pipewire-sys-0.4.1/build.rs.orig	1973-11-29 21:33:09 UTC
++++ cargo-crates/pipewire-sys-0.4.1/build.rs
+@@ -19,6 +19,7 @@ fn main() {
+         // included header files changed.
+         .parse_callbacks(Box::new(bindgen::CargoCallbacks))
+         .size_t_is_usize(true)
++        .allowlist_function("pipewire_.*")
+         .allowlist_function("pw_.*")
+         .allowlist_type("pw_.*")
+         .allowlist_var("pw_.*")
+--- cargo-crates/pipewire-sys-0.4.1/src/lib.rs.orig	1973-11-29 21:33:09 UTC
++++ cargo-crates/pipewire-sys-0.4.1/src/lib.rs
+@@ -20,8 +20,8 @@ mod tests {
+     #[test]
+     fn init() {
+         unsafe {
+-            pw_init(std::ptr::null_mut(), std::ptr::null_mut());
+-            pw_deinit();
++            pipewire_init(std::ptr::null_mut(), std::ptr::null_mut());
++            pipewire_deinit();
+         }
+     }
+ }
diff --git a/multimedia/helvum/pkg-descr b/multimedia/helvum/pkg-descr
new file mode 100644
index 000000000000..616311600b12
--- /dev/null
+++ b/multimedia/helvum/pkg-descr
@@ -0,0 +1,3 @@
+Helvum is a GTK-based patchbay for PipeWire, inspired by Catia for JACK.
+
+WWW: https://gitlab.freedesktop.org/ryuukyu/helvum