From d28f67c3e845a7c7a61759d667098c8955493a09 Mon Sep 17 00:00:00 2001 From: Ville-Pekka Vainio Date: Fri, 5 Aug 2022 22:13:47 +0300 Subject: [PATCH 1/4] Add two patches to fix a rescan loop with Bluetooth --- ...olicy-node-fix-potential-rescan-loop.patch | 54 +++++++++ ...wait-for-establish-before-activation.patch | 106 ++++++++++++++++++ wireplumber.spec | 7 +- 3 files changed, 166 insertions(+), 1 deletion(-) create mode 100644 0003-policy-node-fix-potential-rescan-loop.patch create mode 100644 0004-m-si-link-don-t-wait-for-establish-before-activation.patch diff --git a/0003-policy-node-fix-potential-rescan-loop.patch b/0003-policy-node-fix-potential-rescan-loop.patch new file mode 100644 index 0000000..070ad70 --- /dev/null +++ b/0003-policy-node-fix-potential-rescan-loop.patch @@ -0,0 +1,54 @@ +From ba10c7d8c68db7b79cfa9f0e42432b63a76c415a Mon Sep 17 00:00:00 2001 +From: Pauli Virtanen +Date: Tue, 19 Jul 2022 20:39:06 +0300 +Subject: [PATCH 1/2] 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" +--- + src/scripts/policy-node.lua | 17 ++++++++--------- + 1 file changed, 8 insertions(+), 9 deletions(-) + +diff --git a/src/scripts/policy-node.lua b/src/scripts/policy-node.lua +index e681672..43df701 100644 +--- 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 +-- +2.37.1 + diff --git a/0004-m-si-link-don-t-wait-for-establish-before-activation.patch b/0004-m-si-link-don-t-wait-for-establish-before-activation.patch new file mode 100644 index 0000000..e260793 --- /dev/null +++ b/0004-m-si-link-don-t-wait-for-establish-before-activation.patch @@ -0,0 +1,106 @@ +From dd017b43fa1077200ae5e00f697334908ef1b9b2 Mon Sep 17 00:00:00 2001 +From: Pauli Virtanen +Date: Tue, 19 Jul 2022 20:01:10 +0300 +Subject: [PATCH 2/2] 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. +--- + modules/module-si-standard-link.c | 32 ++++++++++++++++++++++++++----- + 1 file changed, 27 insertions(+), 5 deletions(-) + +diff --git a/modules/module-si-standard-link.c b/modules/module-si-standard-link.c +index dbebf39..9af7134 100644 +--- 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))); + } +-- +2.37.1 + diff --git a/wireplumber.spec b/wireplumber.spec index 5fb639c..4e120ad 100644 --- a/wireplumber.spec +++ b/wireplumber.spec @@ -1,6 +1,6 @@ Name: wireplumber Version: 0.4.11 -Release: 2%{?dist} +Release: 3%{?dist} Summary: A modular session/policy manager for PipeWire License: MIT @@ -10,6 +10,8 @@ Source0: https://gitlab.freedesktop.org/pipewire/%{name}/-/archive/%{version} ## upstream patches Patch0001: 0001-alsa-use-obj_type-as-a-variable-name-to-avoid-shadow.patch Patch0002: 0002-dbus-fix-crash-when-trying-to-reconnect.patch +Patch0003: 0003-policy-node-fix-potential-rescan-loop.patch +Patch0004: 0004-m-si-link-don-t-wait-for-establish-before-activation.patch ## upstreamable patches @@ -117,6 +119,9 @@ fi %{_datadir}/gir-1.0/Wp-0.4.gir %changelog +* Thu Aug 04 2022 Ville-Pekka Vainio - 0.4.11-3 +- Add two patches to fix a rescan loop with Bluetooth + * Wed Jul 13 2022 Wim Taymans - 0.4.11-2 - Add patch to avoid crashes in VM - Add patch to avoid dbus crash From 8d86974e5447814122f6318fb330134f8c241f9d Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 7 Oct 2022 09:35:35 +0200 Subject: [PATCH 2/4] wireplumber 0.4.12 --- ...e-as-a-variable-name-to-avoid-shadow.patch | 39 ------- ...s-fix-crash-when-trying-to-reconnect.patch | 51 --------- ...olicy-node-fix-potential-rescan-loop.patch | 54 --------- ...wait-for-establish-before-activation.patch | 106 ------------------ sources | 2 +- wireplumber.spec | 11 +- 6 files changed, 6 insertions(+), 257 deletions(-) delete mode 100644 0001-alsa-use-obj_type-as-a-variable-name-to-avoid-shadow.patch delete mode 100644 0002-dbus-fix-crash-when-trying-to-reconnect.patch delete mode 100644 0003-policy-node-fix-potential-rescan-loop.patch delete mode 100644 0004-m-si-link-don-t-wait-for-establish-before-activation.patch diff --git a/0001-alsa-use-obj_type-as-a-variable-name-to-avoid-shadow.patch b/0001-alsa-use-obj_type-as-a-variable-name-to-avoid-shadow.patch deleted file mode 100644 index b095f79..0000000 --- a/0001-alsa-use-obj_type-as-a-variable-name-to-avoid-shadow.patch +++ /dev/null @@ -1,39 +0,0 @@ -From bc6b54229200537863426977c8d121bf9168fb94 Mon Sep 17 00:00:00 2001 -From: George Kiagiadakis -Date: Thu, 7 Jul 2022 20:58:36 +0300 -Subject: [PATCH 1/2] 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 ---- - src/scripts/monitors/alsa.lua | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/scripts/monitors/alsa.lua b/src/scripts/monitors/alsa.lua -index 43fab94..38f847f 100644 ---- 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 --- -2.36.1 - diff --git a/0002-dbus-fix-crash-when-trying-to-reconnect.patch b/0002-dbus-fix-crash-when-trying-to-reconnect.patch deleted file mode 100644 index 7734d84..0000000 --- a/0002-dbus-fix-crash-when-trying-to-reconnect.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 842e267af2925c5c0e8ea44b0f3d4e2823f787ce Mon Sep 17 00:00:00 2001 -From: George Kiagiadakis -Date: Wed, 13 Jul 2022 13:38:14 +0300 -Subject: [PATCH 2/2] 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 ---- - lib/wp/dbus.c | 20 ++++++++++++++++---- - 1 file changed, 16 insertions(+), 4 deletions(-) - -diff --git a/lib/wp/dbus.c b/lib/wp/dbus.c -index 01a3b21..7c2d023 100644 ---- 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; - } - --- -2.36.1 - diff --git a/0003-policy-node-fix-potential-rescan-loop.patch b/0003-policy-node-fix-potential-rescan-loop.patch deleted file mode 100644 index 070ad70..0000000 --- a/0003-policy-node-fix-potential-rescan-loop.patch +++ /dev/null @@ -1,54 +0,0 @@ -From ba10c7d8c68db7b79cfa9f0e42432b63a76c415a Mon Sep 17 00:00:00 2001 -From: Pauli Virtanen -Date: Tue, 19 Jul 2022 20:39:06 +0300 -Subject: [PATCH 1/2] 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" ---- - src/scripts/policy-node.lua | 17 ++++++++--------- - 1 file changed, 8 insertions(+), 9 deletions(-) - -diff --git a/src/scripts/policy-node.lua b/src/scripts/policy-node.lua -index e681672..43df701 100644 ---- 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 --- -2.37.1 - diff --git a/0004-m-si-link-don-t-wait-for-establish-before-activation.patch b/0004-m-si-link-don-t-wait-for-establish-before-activation.patch deleted file mode 100644 index e260793..0000000 --- a/0004-m-si-link-don-t-wait-for-establish-before-activation.patch +++ /dev/null @@ -1,106 +0,0 @@ -From dd017b43fa1077200ae5e00f697334908ef1b9b2 Mon Sep 17 00:00:00 2001 -From: Pauli Virtanen -Date: Tue, 19 Jul 2022 20:01:10 +0300 -Subject: [PATCH 2/2] 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. ---- - modules/module-si-standard-link.c | 32 ++++++++++++++++++++++++++----- - 1 file changed, 27 insertions(+), 5 deletions(-) - -diff --git a/modules/module-si-standard-link.c b/modules/module-si-standard-link.c -index dbebf39..9af7134 100644 ---- 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))); - } --- -2.37.1 - diff --git a/sources b/sources index 59c9298..0600d75 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (wireplumber-0.4.11.tar.bz2) = 8a2bf0701f61604d7f85a30d7ac0d51aca4b95c21a335b662a8162bb7531d93f8c327da34ae13263920c863b695a5e0e372b4d17ae8323bf2634065ce93dd3af +SHA512 (wireplumber-0.4.12.tar.bz2) = 79827ea9f61bacf8df80f9cd0ca4c80192cf85a1b181a51256b3c845d1d04a690ea5c1270d6d5d05d56f799f16980a593e61d003ef78ad7dc8d5e9ea332aa5d4 diff --git a/wireplumber.spec b/wireplumber.spec index 4e120ad..ae203e9 100644 --- a/wireplumber.spec +++ b/wireplumber.spec @@ -1,6 +1,6 @@ Name: wireplumber -Version: 0.4.11 -Release: 3%{?dist} +Version: 0.4.12 +Release: 1%{?dist} Summary: A modular session/policy manager for PipeWire License: MIT @@ -8,10 +8,6 @@ URL: https://pipewire.pages.freedesktop.org/wireplumber/ Source0: https://gitlab.freedesktop.org/pipewire/%{name}/-/archive/%{version}/%{name}-%{version}.tar.bz2 ## upstream patches -Patch0001: 0001-alsa-use-obj_type-as-a-variable-name-to-avoid-shadow.patch -Patch0002: 0002-dbus-fix-crash-when-trying-to-reconnect.patch -Patch0003: 0003-policy-node-fix-potential-rescan-loop.patch -Patch0004: 0004-m-si-link-don-t-wait-for-establish-before-activation.patch ## upstreamable patches @@ -119,6 +115,9 @@ fi %{_datadir}/gir-1.0/Wp-0.4.gir %changelog +* Fri Oct 07 2022 Wim Taymans - 0.4.12-1 +- wireplumber 0.4.12 + * Thu Aug 04 2022 Ville-Pekka Vainio - 0.4.11-3 - Add two patches to fix a rescan loop with Bluetooth From 189604b1fb51f6a92b47aa8c26354b1a0881f664 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 13 Dec 2022 16:28:45 +0100 Subject: [PATCH 3/4] wireplumber 0.4.13 --- sources | 2 +- wireplumber.spec | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/sources b/sources index 0600d75..52614aa 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (wireplumber-0.4.12.tar.bz2) = 79827ea9f61bacf8df80f9cd0ca4c80192cf85a1b181a51256b3c845d1d04a690ea5c1270d6d5d05d56f799f16980a593e61d003ef78ad7dc8d5e9ea332aa5d4 +SHA512 (wireplumber-0.4.13.tar.bz2) = b8a43a0ec56037b51a1ddc8ae7f369e0494eab9baf3acded965e2923c5cf8263860d5f1973c83d25a33388243db3ac6e1321ed3b42a01e8cac813d9b47554dbf diff --git a/wireplumber.spec b/wireplumber.spec index ae203e9..eff10be 100644 --- a/wireplumber.spec +++ b/wireplumber.spec @@ -1,5 +1,5 @@ Name: wireplumber -Version: 0.4.12 +Version: 0.4.13 Release: 1%{?dist} Summary: A modular session/policy manager for PipeWire @@ -13,6 +13,7 @@ Source0: https://gitlab.freedesktop.org/pipewire/%{name}/-/archive/%{version} ## fedora patches +BuildRequires: gettext BuildRequires: meson gcc pkgconfig BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(gobject-2.0) @@ -75,6 +76,8 @@ managing PipeWire. # Create local config skeleton mkdir -p %{buildroot}%{_sysconfdir}/wireplumber/{bluetooth.lua.d,common,main.lua.d,policy.lua.d} +%find_lang %{name} + %posttrans %systemd_user_post %{name}.service @@ -101,7 +104,7 @@ fi %{_userunitdir}/wireplumber.service %{_userunitdir}/wireplumber@.service -%files libs +%files libs -f %{name}.lang %license LICENSE %dir %{_libdir}/wireplumber-0.4/ %{_libdir}/wireplumber-0.4/libwireplumber-*.so @@ -115,6 +118,9 @@ fi %{_datadir}/gir-1.0/Wp-0.4.gir %changelog +* Tue Dec 13 2022 Wim Taymans - 0.4.13-1 +- wireplumber 0.4.13 + * Fri Oct 07 2022 Wim Taymans - 0.4.12-1 - wireplumber 0.4.12 From 730ab9d0c0fe13e89c271f5ed86f97df67d852a9 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 9 Mar 2023 16:58:17 +0100 Subject: [PATCH 4/4] wireplumber 0.4.14 --- sources | 2 +- wireplumber.spec | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/sources b/sources index 52614aa..2e2d398 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (wireplumber-0.4.13.tar.bz2) = b8a43a0ec56037b51a1ddc8ae7f369e0494eab9baf3acded965e2923c5cf8263860d5f1973c83d25a33388243db3ac6e1321ed3b42a01e8cac813d9b47554dbf +SHA512 (wireplumber-0.4.14.tar.bz2) = 51dc830d4dfe000cf6091d728d9ce6248585f5fae729536d611f85a0981722b9ab7f13322b516dc9988cdc15e0859f946aa0b78a35ad13a67e2de8082e6d5549 diff --git a/wireplumber.spec b/wireplumber.spec index eff10be..017b057 100644 --- a/wireplumber.spec +++ b/wireplumber.spec @@ -1,5 +1,5 @@ Name: wireplumber -Version: 0.4.13 +Version: 0.4.14 Release: 1%{?dist} Summary: A modular session/policy manager for PipeWire @@ -118,6 +118,9 @@ fi %{_datadir}/gir-1.0/Wp-0.4.gir %changelog +* Thu Mar 9 2023 Wim Taymans - 0.4.14-1 +- wireplumber 0.4.14 + * Tue Dec 13 2022 Wim Taymans - 0.4.13-1 - wireplumber 0.4.13