diff options
5 files changed, 0 insertions, 357 deletions
diff --git a/media-video/wireplumber/Manifest b/media-video/wireplumber/Manifest index bc9a9c83c560..f04df271892e 100644 --- a/media-video/wireplumber/Manifest +++ b/media-video/wireplumber/Manifest @@ -1,2 +1 @@ -DIST wireplumber-0.4.11.tar.gz 403931 BLAKE2B 77ef2540081420d4255dcb54165d0aceb08d97c60d19b9eb7606e90cf95e305e690794a1f46234b53b13765452fea0d23ae6acae9deea672db67e21c31d2307d SHA512 73a5120cd0c55b5fe5248cc22497efd23e40bb91961553639d9cf1bbf138d273db65153fa3c1bb0d2794f869e077e011156d323832534f62651d66f8cc87dca4 DIST wireplumber-0.4.12.tar.bz2 317524 BLAKE2B 5f020759fab459fb3311f8a5cddddef2bf7dc62304b6e95f5d983b86b0e6ddef7bc16c4f2ef6a36264d7ed94e48dbb4c66ff3389bfd7ca58841b4fd6cdfb21bc SHA512 79827ea9f61bacf8df80f9cd0ca4c80192cf85a1b181a51256b3c845d1d04a690ea5c1270d6d5d05d56f799f16980a593e61d003ef78ad7dc8d5e9ea332aa5d4 diff --git a/media-video/wireplumber/files/wireplumber-0.4.11-alsa-lua-crash.patch b/media-video/wireplumber/files/wireplumber-0.4.11-alsa-lua-crash.patch deleted file mode 100644 index 3bc8bbd08bb6..000000000000 --- a/media-video/wireplumber/files/wireplumber-0.4.11-alsa-lua-crash.patch +++ /dev/null @@ -1,33 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/c16e637c329bc9dda8544b18f5bd47a8d63ee253 - -From c16e637c329bc9dda8544b18f5bd47a8d63ee253 Mon Sep 17 00:00:00 2001 -From: George Kiagiadakis <george.kiagiadakis@collabora.com> -Date: Thu, 7 Jul 2022 20:58:36 +0300 -Subject: [PATCH] alsa: use "obj_type" as a variable name to avoid shadowing - lua's "type" function - -This causes a crash when running in a VM because the code tries to -execute lua's "type()" and ends up executing the local string variable... - -Fixes: #303 ---- a/src/scripts/monitors/alsa.lua -+++ b/src/scripts/monitors/alsa.lua -@@ -49,7 +49,7 @@ function nonempty(str) - return str ~= "" and str or nil - end - --function createNode(parent, id, type, factory, properties) -+function createNode(parent, id, obj_type, factory, properties) - local dev_props = parent.properties - - -- set the device id and spa factory name; REQUIRED, do not change -@@ -199,7 +199,7 @@ function createDevice(parent, id, factory, properties) - end - end - --function prepareDevice(parent, id, type, factory, properties) -+function prepareDevice(parent, id, obj_type, factory, properties) - -- ensure the device has an appropriate name - local name = "alsa_card." .. - (properties["device.name"] or -GitLab diff --git a/media-video/wireplumber/files/wireplumber-0.4.11-dbus-reconnect-crash.patch b/media-video/wireplumber/files/wireplumber-0.4.11-dbus-reconnect-crash.patch deleted file mode 100644 index 6098ed11c302..000000000000 --- a/media-video/wireplumber/files/wireplumber-0.4.11-dbus-reconnect-crash.patch +++ /dev/null @@ -1,45 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/eb406bdb2cbbcd49c55c71285f8f2eddb624d24b - -From eb406bdb2cbbcd49c55c71285f8f2eddb624d24b Mon Sep 17 00:00:00 2001 -From: George Kiagiadakis <george.kiagiadakis@collabora.com> -Date: Wed, 13 Jul 2022 13:38:14 +0300 -Subject: [PATCH] dbus: fix crash when trying to reconnect - -When coming from on_sync_reconnect, data points to the WpDBus object -instead of the activation transition. - -Fixes: #305 ---- a/lib/wp/dbus.c -+++ b/lib/wp/dbus.c -@@ -58,14 +58,26 @@ wp_dbus_set_state (WpDbus *self, WpDBusState new_state) - static void - on_got_bus (GObject * obj, GAsyncResult * res, gpointer data) - { -- WpTransition *transition = WP_TRANSITION (data); -- WpDbus *self = wp_transition_get_source_object (transition); -+ WpTransition *transition; -+ WpDbus *self; - g_autoptr (GError) error = NULL; - -+ if (WP_IS_TRANSITION (data)) { -+ // coming from wp_dbus_enable -+ transition = WP_TRANSITION (data); -+ self = wp_transition_get_source_object (transition); -+ } else { -+ // coming from on_sync_reconnect -+ transition = NULL; -+ self = WP_DBUS (data); -+ } -+ - self->connection = g_dbus_connection_new_for_address_finish (res, &error); - if (!self->connection) { -- g_prefix_error (&error, "Failed to connect to bus: "); -- wp_transition_return_error (transition, g_steal_pointer (&error)); -+ if (transition) { -+ g_prefix_error (&error, "Failed to connect to bus: "); -+ wp_transition_return_error (transition, g_steal_pointer (&error)); -+ } - return; - } - -GitLab diff --git a/media-video/wireplumber/files/wireplumber-0.4.11-loop.patch b/media-video/wireplumber/files/wireplumber-0.4.11-loop.patch deleted file mode 100644 index 75e2bafcaddc..000000000000 --- a/media-video/wireplumber/files/wireplumber-0.4.11-loop.patch +++ /dev/null @@ -1,147 +0,0 @@ -https://bugs.gentoo.org/866551 -https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/37c839b9308cd3d6580bf01077db8cb29ec2aa2f -https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/370b692933634675213110048fcda6dff52eb52b - -From: Pauli Virtanen <pav@iki.fi> -Date: Tue, 19 Jul 2022 20:39:06 +0300 -Subject: [PATCH] policy-node: fix potential rescan loop - -SiLink activation might be delayed indefinitely under some error -conditions. Currently, policy-node schedules a rescan when it sees a -non-activated link on a stream to be moved, which produces busy loop if -the si-link doesn't activate. - -Instead of rescheduling on non-active si-links, just remove and emit a -warning. The si-link then gets removed once it gets activated. - -Reproducer: - -1. Play audio from Rhythmbox and pause. -2. Switch default output with pactl between two different outputs -3. Links from the paused stream stay at "init" ---- a/src/scripts/policy-node.lua -+++ b/src/scripts/policy-node.lua -@@ -694,16 +694,15 @@ function handleLinkable (si) - local link = lookupLink (si_id, si_flags[si_id].peer_id) - if reconnect then - if link ~= nil then -- -- remove old link if active, otherwise schedule rescan -- if ((link:get_active_features() & Feature.SessionItem.ACTIVE) ~= 0) then -- si_flags[si_id].peer_id = nil -- link:remove () -- Log.info (si, "... moving to new target") -- else -- scheduleRescan() -- Log.info (si, "... scheduled rescan") -- return -+ -- remove old link -+ if ((link:get_active_features() & Feature.SessionItem.ACTIVE) == 0) then -+ -- remove also not yet activated links: they might never become active, -+ -- and we should not loop waiting for them -+ Log.warning (link, "Link was not activated before removing") - end -+ si_flags[si_id].peer_id = nil -+ link:remove () -+ Log.info (si, "... moving to new target") - end - else - if link ~= nil then -GitLab - -From: Pauli Virtanen <pav@iki.fi> -Date: Tue, 19 Jul 2022 20:01:10 +0300 -Subject: [PATCH] m-si-link: don't wait for establish before activation + - cleanup links - -SiLink should not wait for WpLinks becoming ESTABLISHED, before -activation. That flag shows whether a link has moved away from the -"init" state, however, links to e.g. Pulseaudio corked streams can stay -in "init" state until uncorking. This causes trouble for policies, -which needlessly wait for such links to establish. - -The WpLink objects may also be kept alive by other referents, and -just unrefing them does not necessarily destroy the PW objects. - -Activate SiLink even if the WpLink is still in "init" state. It's enough -that the link otherwise successfully establishes. - -At dispose time, explicitly request destroying the WpLinks that were -created by the SiLink, to ensure they are removed even if there's -something else referring to them. ---- a/modules/module-si-standard-link.c -+++ b/modules/module-si-standard-link.c -@@ -132,6 +132,27 @@ si_standard_link_get_associated_proxy (WpSessionItem * item, GType proxy_type) - return NULL; - } - -+static void -+request_destroy_link (gpointer data, gpointer user_data) -+{ -+ WpLink *link = WP_LINK (data); -+ -+ wp_global_proxy_request_destroy (WP_GLOBAL_PROXY (link)); -+} -+ -+static void -+clear_node_links (GPtrArray **node_links_p) -+{ -+ /* -+ * Something else (eg. object managers) may be keeping the WpLink -+ * objects alive. Deactive the links now, to destroy the PW objects. -+ */ -+ if (*node_links_p) -+ g_ptr_array_foreach (*node_links_p, request_destroy_link, NULL); -+ -+ g_clear_pointer (node_links_p, g_ptr_array_unref); -+} -+ - static void - si_standard_link_disable_active (WpSessionItem *si) - { -@@ -154,7 +175,8 @@ si_standard_link_disable_active (WpSessionItem *si) - WP_SI_LINKABLE (si_in)); - } - -- g_clear_pointer (&self->node_links, g_ptr_array_unref); -+ clear_node_links (&self->node_links); -+ - self->n_active_links = 0; - self->n_failed_links = 0; - self->n_async_ops_wait = 0; -@@ -168,7 +190,7 @@ on_link_activated (WpObject * proxy, GAsyncResult * res, - WpTransition * transition) - { - WpSiStandardLink *self = wp_transition_get_source_object (transition); -- guint len = self->node_links->len; -+ guint len = self->node_links ? self->node_links->len : 0; - - /* Count the number of failed and active links */ - if (wp_object_activate_finish (proxy, res, NULL)) -@@ -182,7 +204,7 @@ on_link_activated (WpObject * proxy, GAsyncResult * res, - - /* We only active feature if all links activated successfully */ - if (self->n_failed_links > 0) { -- g_clear_pointer (&self->node_links, g_ptr_array_unref); -+ clear_node_links (&self->node_links); - wp_transition_return_error (transition, g_error_new ( - WP_DOMAIN_LIBRARY, WP_LIBRARY_ERROR_OPERATION_FAILED, - "%d of %d PipeWire links failed to activate", -@@ -251,7 +273,7 @@ create_links (WpSiStandardLink * self, WpTransition * transition, - /* Clear old links if any */ - self->n_active_links = 0; - self->n_failed_links = 0; -- g_clear_pointer (&self->node_links, g_ptr_array_unref); -+ clear_node_links (&self->node_links); - - /* tuple format: - uint32 node_id; -@@ -327,7 +349,7 @@ create_links (WpSiStandardLink * self, WpTransition * transition, - - /* activate to ensure it is created without errors */ - wp_object_activate_closure (WP_OBJECT (link), -- WP_OBJECT_FEATURES_ALL, NULL, -+ WP_OBJECT_FEATURES_ALL & ~WP_LINK_FEATURE_ESTABLISHED, NULL, - g_cclosure_new_object ( - (GCallback) on_link_activated, G_OBJECT (transition))); - } -GitLab diff --git a/media-video/wireplumber/wireplumber-0.4.11-r3.ebuild b/media-video/wireplumber/wireplumber-0.4.11-r3.ebuild deleted file mode 100644 index 4904287cdb8b..000000000000 --- a/media-video/wireplumber/wireplumber-0.4.11-r3.ebuild +++ /dev/null @@ -1,131 +0,0 @@ -# Copyright 1999-2022 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -# 1. Please regularly check (even at the point of bumping) Fedora's packaging -# for needed backports at https://src.fedoraproject.org/rpms/wireplumber/tree/rawhide -# -# 2. Keep an eye on git master (for both PipeWire and WirePlumber) as things -# continue to move quickly. It's not uncommon for fixes to be made shortly -# after releases. - -LUA_COMPAT=( lua5-{3,4} ) - -inherit lua-single meson systemd - -if [[ ${PV} == 9999 ]]; then - EGIT_REPO_URI="https://gitlab.freedesktop.org/pipewire/${PN}.git" - EGIT_BRANCH="master" - inherit git-r3 -else - SRC_URI="https://gitlab.freedesktop.org/pipewire/${PN}/-/archive/${PV}/${P}.tar.gz" - KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~sparc x86" -fi - -DESCRIPTION="Replacement for pipewire-media-session" -HOMEPAGE="https://gitlab.freedesktop.org/pipewire/wireplumber" - -LICENSE="MIT" -SLOT="0/0.4" -IUSE="elogind system-service systemd test" - -REQUIRED_USE=" - ${LUA_REQUIRED_USE} - ?? ( elogind systemd ) - system-service? ( systemd ) -" - -RESTRICT="!test? ( test )" - -# introspection? ( dev-libs/gobject-introspection ) is valid but likely only used for doc building -BDEPEND=" - dev-libs/glib - dev-util/gdbus-codegen - dev-util/glib-utils - sys-devel/gettext -" - -DEPEND=" - ${LUA_DEPS} - >=dev-libs/glib-2.62 - >=media-video/pipewire-0.3.53-r1:= - virtual/libintl - elogind? ( sys-auth/elogind ) - systemd? ( sys-apps/systemd ) -" - -# Any dev-lua/* deps get declared like this inside RDEPEND: -# $(lua_gen_cond_dep ' -# dev-lua/<NAME>[${LUA_USEDEP}] -# ') -RDEPEND="${DEPEND} - system-service? ( - acct-user/pipewire - acct-group/pipewire - ) -" - -DOCS=( {NEWS,README}.rst ) - -PATCHES=( - "${FILESDIR}"/${PN}-0.4.10-config-disable-sound-server-parts.patch # defer enabling sound server parts to media-video/pipewire - "${FILESDIR}"/${P}-alsa-lua-crash.patch - "${FILESDIR}"/${P}-dbus-reconnect-crash.patch - "${FILESDIR}"/${P}-loop.patch -) - -src_configure() { - local emesonargs=( - -Ddoc=disabled # Ebuild not wired up yet (Sphinx, Doxygen?) - -Dintrospection=disabled # Only used for Sphinx doc generation - -Dsystem-lua=true # We always unbundle everything we can - -Dsystem-lua-version=$(ver_cut 1-2 $(lua_get_version)) - $(meson_feature elogind) - $(meson_feature systemd) - $(meson_use system-service systemd-system-service) - $(meson_use systemd systemd-user-service) - -Dsystemd-system-unit-dir=$(systemd_get_systemunitdir) - -Dsystemd-user-unit-dir=$(systemd_get_userunitdir) - $(meson_use test tests) - ) - - meson_src_configure -} - -src_install() { - meson_src_install - - # We copy the default config, so that Gentoo tools can pick up on any - # updates and /etc does not end up with stale overrides. - # If a reflinking CoW filesystem is used (e.g. Btrfs), then the files - # will not actually get stored twice until modified. - insinto /etc - doins -r "${ED}"/usr/share/wireplumber -} - -pkg_postinst() { - if systemd_is_booted ; then - ewarn "pipewire-media-session.service is no longer installed. You must switch" - ewarn "to wireplumber.service user unit before your next logout/reboot:" - ewarn "systemctl --user disable pipewire-media-session.service" - ewarn "systemctl --user --force enable wireplumber.service" - else - ewarn "Switch to WirePlumber will happen the next time gentoo-pipewire-launcher" - ewarn "is started (a replacement for directly calling pipewire binary)." - ewarn - ewarn "Please ensure that ${EROOT}/etc/pipewire/pipewire.conf either does not exist" - ewarn "or, if it does exist, that any reference to" - ewarn "${EROOT}/usr/bin/pipewire-media-session is commented out (begins with a #)." - fi - if use system-service; then - ewarn - ewarn "WARNING: you have enabled the system-service USE flag, which installs" - ewarn "the system-wide systemd units that enable WirePlumber to run as a system" - ewarn "service. This is more than likely NOT what you want. You are strongly" - ewarn "advised not to enable this mode and instead stick with systemd user" - ewarn "units. The default configuration files will likely not work out of" - ewarn "box, and you are on your own with configuration." - ewarn - fi -} |