From 2ce3d22bf85623e94cd55776a57b7c6f8128edcf Mon Sep 17 00:00:00 2001 From: Michal Vasilek Date: Sun, 20 Jun 2021 17:50:52 +0200 Subject: [PATCH] pipewire: update to 0.3.31. * add a libusb dependency to improve bluetooth device capabilities detection * add experimental system services for pipewire and pipewire-pulse --- srcpkgs/pipewire/files/README.voidlinux | 4 ++ srcpkgs/pipewire/files/pipewire-pulse/run | 7 +++ srcpkgs/pipewire/files/pipewire/run | 8 +++ srcpkgs/pipewire/patches/6df32666b4.patch | 62 ------------------- .../patches/autostart-media-session.patch | 10 +-- srcpkgs/pipewire/template | 15 +++-- 6 files changed, 34 insertions(+), 72 deletions(-) create mode 100644 srcpkgs/pipewire/files/pipewire-pulse/run create mode 100644 srcpkgs/pipewire/files/pipewire/run delete mode 100644 srcpkgs/pipewire/patches/6df32666b4.patch diff --git a/srcpkgs/pipewire/files/README.voidlinux b/srcpkgs/pipewire/files/README.voidlinux index 0c3d167f0aef95..33892fdef84bbe 100644 --- a/srcpkgs/pipewire/files/README.voidlinux +++ b/srcpkgs/pipewire/files/README.voidlinux @@ -7,3 +7,7 @@ Optional dependencies: * `libspa-jack` for running pipewire and jack side-by-side * `libspa-v4l2` for video camera support * `rtkit` for realtime priority acquisition + +The system services /etc/sv/pipewire and /etc/sv/pipewire-pulse are +experimental and only needed in rare cases so using them should be +avoided in most setups. diff --git a/srcpkgs/pipewire/files/pipewire-pulse/run b/srcpkgs/pipewire/files/pipewire-pulse/run new file mode 100644 index 00000000000000..f718570498a9c6 --- /dev/null +++ b/srcpkgs/pipewire/files/pipewire-pulse/run @@ -0,0 +1,7 @@ +#!/bin/sh +# this service is experimental and most setups should start pipewire as a user, +# for further information, please refer to the handbook +! [ -d /run/pulse ] && install -m 755 -g _pipewire -o _pipewire -d /run/pulse +umask 002 +export PULSE_RUNTIME_PATH=/run +exec chpst -u _pipewire:_pipewire pipewire-pulse diff --git a/srcpkgs/pipewire/files/pipewire/run b/srcpkgs/pipewire/files/pipewire/run new file mode 100644 index 00000000000000..359d9871e0d1c8 --- /dev/null +++ b/srcpkgs/pipewire/files/pipewire/run @@ -0,0 +1,8 @@ +#!/bin/sh +# this service is experimental and most setups should start pipewire as a user, +# for further information, please refer to the handbook +! [ -d /run/pipewire ] && install -m 755 -g _pipewire -o _pipewire -d /run/pipewire +umask 002 +export PIPEWIRE_RUNTIME_DIR=/run/pipewire +export XDG_CONFIG_HOME=/var/lib +exec chpst -u _pipewire:_pipewire:audio:video pipewire diff --git a/srcpkgs/pipewire/patches/6df32666b4.patch b/srcpkgs/pipewire/patches/6df32666b4.patch deleted file mode 100644 index ea42982b704ebc..00000000000000 --- a/srcpkgs/pipewire/patches/6df32666b4.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 6df32666b44b5174aace3dcff39f39a58eba508f Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Thu, 20 May 2021 11:22:04 +0200 -Subject: [PATCH] filter-chain: check external ports only once - -When we duplicate the pipeline to match the channels, only check -if a port was used only once for the first instance. Makes -demonic filter work again. ---- - src/modules/module-filter-chain.c | 18 ++++-------------- - 1 file changed, 4 insertions(+), 14 deletions(-) - -diff --git a/src/modules/module-filter-chain.c b/src/modules/module-filter-chain.c -index b1e727069..bb346b6d8 100644 ---- a/src/modules/module-filter-chain.c -+++ b/src/modules/module-filter-chain.c -@@ -972,16 +972,6 @@ static int parse_link(struct graph *graph, struct spa_json *json) - pw_log_error("unknown input port %s", input); - return -ENOENT; - } -- if (in_port->external != SPA_ID_INVALID) { -- pw_log_info("%s already used as graph input %d, use mixer", -- input, in_port->external); -- return -EINVAL; -- } -- if (out_port->external != SPA_ID_INVALID) { -- pw_log_info("%s already used as graph output %d, use copy", -- output, out_port->external); -- return -EINVAL; -- } - if (in_port->n_links > 0) { - pw_log_info("Can't have more than 1 link to %s, use a mixer", input); - return -ENOTSUP; -@@ -1334,10 +1324,10 @@ static int setup_graph(struct graph *graph, struct spa_json *inputs, struct spa_ - } else { - desc = port->node->desc; - d = desc->desc; -- if (port->external != SPA_ID_INVALID) { -+ if (i == 0 && port->external != SPA_ID_INVALID) { - pw_log_error("input port %s[%d]:%s already used as input %d, use mixer", - port->node->name, i, d->PortNames[port->p], -- graph->n_input); -+ port->external); - res = -EBUSY; - goto error; - } -@@ -1382,10 +1372,10 @@ static int setup_graph(struct graph *graph, struct spa_json *inputs, struct spa_ - } else { - desc = port->node->desc; - d = desc->desc; -- if (port->external != SPA_ID_INVALID) { -+ if (i == 0 && port->external != SPA_ID_INVALID) { - pw_log_error("output port %s[%d]:%s already used as output %d, use copy", - port->node->name, i, d->PortNames[port->p], -- graph->n_output); -+ port->external); - res = -EBUSY; - goto error; - } --- -GitLab - diff --git a/srcpkgs/pipewire/patches/autostart-media-session.patch b/srcpkgs/pipewire/patches/autostart-media-session.patch index bb107435cdd898..87ab207654882f 100644 --- a/srcpkgs/pipewire/patches/autostart-media-session.patch +++ b/srcpkgs/pipewire/patches/autostart-media-session.patch @@ -2,14 +2,14 @@ Upstream's config does not autostart pipewire-media-session anymore, which is an essential component. It's not easy to start it externally in a script since it needs the pipewire socket up, and Void doesn't have a mechanism to ensure it (systemd socket activation). ---- a/src/daemon/pipewire.conf.in 2021-03-18 17:45:02.025992827 +0100 -+++ b/src/daemon/pipewire.conf.in 2021-03-18 17:47:17.606999440 +0100 -@@ -204,7 +204,7 @@ +--- a/src/daemon/pipewire.conf.in ++++ b/src/daemon/pipewire.conf.in +@@ -234,7 +234,7 @@ # but it is better to start it as a systemd service. # Run the session manager with -h for options. # -- @comment@{ path = "@media_session_path@" args = "" } -+ { path = "@media_session_path@" args = "" } +- @comment@{ path = "@session_manager_path@" args = "@session_manager_args@" } ++ { path = "@session_manager_path@" args = "@session_manager_args@" } # # You can optionally start the pulseaudio-server here as well # but it is better to start it as a systemd service. diff --git a/srcpkgs/pipewire/template b/srcpkgs/pipewire/template index 43e3c1cfc9b4fd..6bf7f6f0a9144a 100644 --- a/srcpkgs/pipewire/template +++ b/srcpkgs/pipewire/template @@ -1,24 +1,26 @@ # Template file for 'pipewire' pkgname=pipewire -version=0.3.28 +version=0.3.31 revision=1 build_style=meson configure_args="-Dman=enabled -Dgstreamer=enabled -Ddocs=enabled -Dsystemd=disabled -Dbluez5=enabled -Dffmpeg=enabled -Dpipewire-alsa=enabled -Dpipewire-jack=enabled - -Dvulkan=enabled -Dudevrulesdir=/usr/lib/udev/rules.d" + -Dvulkan=enabled -Dudevrulesdir=/usr/lib/udev/rules.d -Db_ndebug=false" hostmakedepends="doxygen graphviz pkg-config xmltoman gettext" makedepends="ffmpeg-devel gst-plugins-base1-devel jack-devel sbc-devel v4l-utils-devel - libva-devel libbluetooth-devel ncurses-devel libopenaptx-devel fdk-aac-devel + libva-devel libbluetooth-devel ncurses-devel libopenaptx-devel libusb-devel fdk-aac-devel libsndfile-devel Vulkan-Headers vulkan-loader $(vopt_if sdl2 SDL2-devel)" depends="libspa-alsa>=${version}_${revision} libspa-audioconvert>=${version}_${revision} libspa-audiomixer>=${version}_${revision} libspa-control>=${version}_${revision}" short_desc="Server and user space API to deal with multimedia pipelines" -maintainer="Kridsada Thanabulpong " +maintainer="Stefano Ragni " license="MIT" homepage="https://pipewire.org/" changelog="https://gitlab.freedesktop.org/pipewire/pipewire/-/raw/master/NEWS" distfiles="https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/${version}/pipewire-${version}.tar.gz" -checksum=1d9271e121a5049aef379e9bb7c50524faa6f971e668806637d7b9df1b7cab88 +checksum=2fec0eb47dbfcad51fb8bb3d59c26fe57e09204d63c9d2776070dbdc08aaaaae +make_dirs="/var/lib/pipewire 0755 _pipewire _pipewire" +system_accounts="_pipewire" build_options="sdl2" @@ -36,6 +38,8 @@ fi post_install() { vlicense LICENSE vdoc "${FILESDIR}/README.voidlinux" + vsv pipewire + vsv pipewire-pulse } libpipewire_package() { @@ -150,6 +154,7 @@ libjack-pipewire_package() { pkg_install() { vmove usr/lib/pipewire-0.3/jack vmove usr/bin/pw-jack + vmove usr/share/man/man1/pw-jack.1 } }