diff --git a/0001-m-reserve-device-replace-the-hash-table-key-on-new-insert.patch b/0001-m-reserve-device-replace-the-hash-table-key-on-new-insert.patch new file mode 100644 index 0000000..106c504 --- /dev/null +++ b/0001-m-reserve-device-replace-the-hash-table-key-on-new-insert.patch @@ -0,0 +1,46 @@ +From f4546a18e871537be698916178b40091a4a0b377 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Fri, 12 Nov 2021 11:19:54 +1000 +Subject: [PATCH] m-reserve-device: replace the hash table key on new insert + +We're using the WpReserveDevice's name as key in the hash table, so we +must update the key as well when we replace an item in the hashtable - +the old device (and its name) will be released. + +The side-effect of this is that the *third* device with an identical +name will no longer replace the previous device. This results in the +following sequence: + +- dev1 added: name Audio0 + - dev1 requests name owner Audio0 +- dev2 added: name Audio0 + - replace dev1 in the hashtable + - dev1 emits "release" signal + - dev1 unowns the Audio0 name + - dev2 requests name owner Audio0 +- dev3 added: name Audio0 + - adds to the hashtable because the existing key is now undefined + - dev3 requests name owner Audio0 + - error, you cannot request ownership for the same name twice + +Fixes #93 +--- + modules/module-reserve-device/plugin.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/module-reserve-device/plugin.c b/modules/module-reserve-device/plugin.c +index d8e4e092..68df6ee8 100644 +--- a/modules/module-reserve-device/plugin.c ++++ b/modules/module-reserve-device/plugin.c +@@ -221,7 +221,7 @@ wp_reserve_device_plugin_create_reservation (WpReserveDevicePlugin *self, + NULL); + + /* use rd->name to avoid copying @em name again */ +- g_hash_table_insert (self->reserve_devices, rd->name, rd); ++ g_hash_table_replace (self->reserve_devices, rd->name, rd); + + return g_object_ref (rd); + } +-- +GitLab + diff --git a/0002-policy-node-wait-for-nodes-when-we-become-unlinked.patch b/0002-policy-node-wait-for-nodes-when-we-become-unlinked.patch new file mode 100644 index 0000000..05358e5 --- /dev/null +++ b/0002-policy-node-wait-for-nodes-when-we-become-unlinked.patch @@ -0,0 +1,34 @@ +From 83041b0ce277c95afaf1824f525ea0bec516f03f Mon Sep 17 00:00:00 2001 +From: Wim Taymans +Date: Thu, 18 Nov 2021 15:23:23 +0100 +Subject: [PATCH] policy-node: wait for nodes when we become unlinked + +If we were linked before but our node is removed, wait until a new node +becomes available instead of failing. + +This fixes an issue where there is only 1 sink available and the card +profile is toggeled between pro and stereo. After the profile is +toggled, the sink is removed and the node would be killed with an error +because there is no fallback sink. The fix is similar to the +pipewire-media-session logic. +--- + src/scripts/policy-node.lua | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/scripts/policy-node.lua b/src/scripts/policy-node.lua +index 5029d1b3..445b1a7b 100644 +--- a/src/scripts/policy-node.lua ++++ b/src/scripts/policy-node.lua +@@ -493,6 +493,9 @@ function handleLinkable (si) + if not reconnect then + Log.info (si, "... destroy node") + node:request_destroy() ++ elseif si_flags[si.id].was_handled then ++ Log.info (si, "... waiting reconnect") ++ return + end + + local client_id = node.properties["client.id"] +-- +GitLab + diff --git a/_service b/_service index b8c0ee0..f47dd1e 100644 --- a/_service +++ b/_service @@ -3,10 +3,11 @@ git https://gitlab.freedesktop.org/pipewire/wireplumber.git - 0.4.11 + enable + 0.4.5 @PARENT_TAG@ diff --git a/_servicedata b/_servicedata index 9b75fe0..fcdf076 100644 --- a/_servicedata +++ b/_servicedata @@ -1,4 +1,4 @@ https://gitlab.freedesktop.org/pipewire/wireplumber.git - 3400acd0db95fefdda7595d20466c095902d8997 \ No newline at end of file + 3946457a7942a179c0f61c60de8cb8fc643391dd \ No newline at end of file diff --git a/reduce-meson-required-version.patch b/reduce-meson-required-version.patch index 514e290..fd62c1e 100644 --- a/reduce-meson-required-version.patch +++ b/reduce-meson-required-version.patch @@ -4,33 +4,16 @@ Subject: Reduce the minimum required meson version With this, we can build wireplumber in SLE 15 SP3/Leap 15.3 which only have meson 0.54 -Index: wireplumber-0.4.11/meson.build +Index: wireplumber/meson.build =================================================================== ---- wireplumber-0.4.11.orig/meson.build -+++ wireplumber-0.4.11/meson.build -@@ -1,7 +1,7 @@ - project('wireplumber', ['c'], - version : '0.4.11', +--- wireplumber.orig/meson.build ++++ wireplumber/meson.build +@@ -1,3 +1,3 @@ license : 'MIT', -- meson_version : '>= 0.59.0', +- meson_version : '>= 0.56.0', + meson_version : '>= 0.54.0', default_options : [ - 'warning_level=1', - 'buildtype=debugoptimized', -@@ -42,7 +42,11 @@ spa_dep = dependency('libspa-0.2', versi - pipewire_dep = dependency('libpipewire-0.3', version: '>= 0.3.52') - mathlib = cc.find_library('m') - threads_dep = dependency('threads') --libintl_dep = dependency('intl') -+libintl_dep = dependency('', required: false) -+ -+if not cc.has_function('ngettext') -+ libintl_dep = cc.find_library('intl') -+endif - - system_lua = get_option('system-lua') - if system_lua -@@ -131,8 +135,8 @@ endif +@@ -123,8 +123,8 @@ endif conf_uninstalled = configuration_data() conf_uninstalled.set('MESON', '') diff --git a/split-config-file.py b/split-config-file.py index 019df47..ed3373c 100644 --- a/split-config-file.py +++ b/split-config-file.py @@ -2,20 +2,22 @@ import hashlib import sys -def sha256_from_data(data): - hash_sha256 = hashlib.sha256() - hash_sha256.update(data) - return hash_sha256.hexdigest() + +def md5FromData(data): + hash_md5 = hashlib.md5() + hash_md5.update(data) + return hash_md5.hexdigest() + contents = open('90-enable-all.lua', 'r', encoding='utf-8').read() -sha256sum = sha256_from_data(contents.encode('utf-8')) -expected_sha256sum = 'cb9f05eb3b4959b84e94a67867645130f2bc0aa761eb864d227890aea310ab74' +md5sum = md5FromData(contents.encode('utf-8')) +expected_md5sum = '1317fb5df6ae842fda3ef845f195e084' -if sha256sum != expected_sha256sum: +if md5sum != expected_md5sum: print('The script has to be updated for new changes in 90-enable-all.lua') - print(f'File sha256sum: {sha256sum}') - print(f'expected sha256sum: {expected_sha256sum}') + print(f'File md5sum: {md5sum}') + print(f'expected md5sum: {expected_md5sum}') sys.exit(1) content_sections = contents.split('\n\n') @@ -23,10 +25,10 @@ content_sections = contents.split('\n\n') sections = ['enable-metadata', 'default-access-policy', 'load-devices', - 'track-user-choices-devices', - 'track-user-choices-streams', + 'track-user-choices', 'link-nodes-by-roles', - 'suspend-idle-nodes'] + 'suspend-idle-nodes', + 'device-activation'] if len(content_sections) != len(sections): print('The script has to be updated for new changes in 90-enable-all.lua') diff --git a/wireplumber-0.4.11.obscpio b/wireplumber-0.4.11.obscpio deleted file mode 100644 index b8c3422..0000000 --- a/wireplumber-0.4.11.obscpio +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9c12a9e7e1749fedf931f5fa6a7596d7ca2c4eaaed3668725cd6ecfe3730f7d8 -size 2116620 diff --git a/wireplumber-0.4.5.obscpio b/wireplumber-0.4.5.obscpio new file mode 100644 index 0000000..60fd686 --- /dev/null +++ b/wireplumber-0.4.5.obscpio @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:382bc959e713c2d06a53c1b4aa9d3f1fe4f543283f3efca0c90bd0c01256f0e5 +size 1745932 diff --git a/wireplumber.changes b/wireplumber.changes index a123de3..3fd2dac 100644 --- a/wireplumber.changes +++ b/wireplumber.changes @@ -1,353 +1,3 @@ -------------------------------------------------------------------- -Tue Jul 5 15:13:07 UTC 2022 - Alexei Sorokin - -- Update to version 0.4.11: - * Changes - - The libcamera monitor is now enabled by default, so if the - libcamera source is enabled in PipeWire, cameras discovered - with the libcamera API will be available out of the box. - This is safe to use alongside V4L2, as long as the user does - not try to use the same camera over different APIs at the - same time. - - Libcamera and V4L2 nodes now get assigned a - `priority.session` number; V4L2 nodes get a higher priority - by default, so the default camera is going to be /dev/video0 - over V4L2, unless changed with `wpctl`. - - Libcamera nodes now get a user-friendly description based on - their location (e.g. built-in front camera). Additionally, - V4L2 nodes now have a "(V4L2)" string appended to their - description in order to be distinguished from the libcamera - ones. - - 50-alsa-config.lua now has a section where you can set - properties that will only be applied if WirePlumber is - running in a virtual machine. By default it now sets - `api.alsa.period-size = 256` and `api.alsa.headroom = 8192`. - * Fixes - - The "enabled" properties in the config files are now "true" - by default when they are not defined. This fixes backwards - compatibility with older configuration files. - - Fixed device name deduplication in the alsa monitor, when - device reservation is enabled. - - Reverted a previous fix that makes it possible again to get - a glitch when changing default nodes while also changing the - profile (GNOME Settings). - The fix was causing other problems and the issue will be - addressed differently in the future. - - Fixed an issue that would prevent applications from being - moved to a recently plugged USB headset. - - Fixed an issue where wireplumber would automatically link - control ports, if they are enabled, to audio ports, - effectively breaking audio. - - The policy now always considers the profile of a device that - was previously selected by the user, if it is available, when - deciding which profile to activate. - - A few documentation fixes. - * Tools - - wpctl now has a `get-volume` command for easier scripting of - volume controls. - - wpctl now supports relative steps and percentage-based steps - in `set-volume`. - - wpctl now also prints link states. - - wpctl can now `inspect` metadata objects without showing - critical warnings. - * Library - - A new WpDBus API was added to maintain a single D-Bus - connection among modules that need one. - - WpCore now has a method to get the virtual machine type, if - WirePlumber is running in a virtual machine. - - WpSpaDevice now has a - `wp_spa_device_new_managed_object_iterator()` method. - - WpSpaJson now has a `wp_spa_json_to_string()` method that - returns a newly allocated string with the correct size of the string token. - - WpLink now has a `WP_LINK_FEATURE_ESTABLISHED` that allows - the caller to wait until the link is in the PAUSED or ACTIVE - state. This transparently now enables watching links for - negotiation or allocation errors and failing gracefully - instead of keeping dead link objects around. - * Misc - - The Lua subproject was bumped to version 5.4.4. -- Rebase reduce-meson-required-version.patch - -------------------------------------------------------------------- -Tue May 10 14:39:24 UTC 2022 - Alexei Sorokin - -- Update to version 0.4.10: - * Changes - - Add i18n support to be able to translate some user-visible - strings. - - wpctl now supports using - @DEFAULT_{AUDIO_,VIDEO_,}{SINK,SOURCE}@ as ID, almost like - pactl. Additionally, it supports a --pid flag for changing - volume and mute state by specifying a process ID, applying - the state to all nodes of a specific client process. - - The Lua engine now supports loading Lua libraries. These can - be placed either in the standard Lua libraries path or in - the "lib" subdirectory of WirePlumber's "scripts" directory - and can be loaded with ``require()`` - - The Lua engine's sandbox has been relaxed to allow more - functionality in scripts (the debug & coroutine libraries - and some other previously disabled functions) - - Lua scripts are now wrapped in special WpPlugin objects, - allowing them to load asynchronously and declare when they - have finished their loading - - Add a new script that provides the same functionality as - module-fallback-sink from PipeWire, but also takes endpoints - into account and can be customised more easily. Disabled by - default for now to avoid conflicts. - * Policy - - Add an optional experimental feature that allows filter-like - streams (like echo-cancel or filter-node) to match the - channel layout of the device they connect to, on both sides - of the filter; that means that if, for instance, a sink has - 6 channels and the echo-cancel's source stream is linked to - that sink, then the virtual sink presented by echo-cancel - will also be configured to the same 6 channels layout. This - feature needs to be explicitly enabled in the configuration - ("filter.forward-format") - - filter-like streams (filter-chain and such) no longer follow - the default sink when it changes, like in PulseAudio. - * Fixes - - The suspend-node script now also suspends nodes that go into - the "error" state, allowing them to recover from errors - without having to restart WirePlumber. - - Fix a crash in mixer-api when setting volume with - channelVolumes. - - logind module now watches only for user state changes, - avoiding errors when machined is not running. - * Misc - - The configuration files now have comments mentioning which - options need to be disabled in order to run WirePlumber - without D-Bus. - - The configuration files now have properties to - enable/disable the monitors and other sections, so that it - is possible to disable them by dropping in a file that just - sets the relevant property to false. - - setlocale() is now called directly instead of relying on - pw_init(). - - WpSpaJson received some fixes and is now used internally to - parse configuration files. - - More applications were added to the bluetooth auto-switch - applications whitelist. -- Add a new wireplumber-lang package. -- Drop patches already upstream: - * 0001-scripts-policy-device-profile-clear-tables-when-devices-removed.patch - * 0001-src-setlocale-in-main-for-tools-and-the-daemon.patch -- Rebase reduce-meson-required-version.patch - -------------------------------------------------------------------- -Wed Mar 30 16:12:03 UTC 2022 - Antonio Larrosa - -- Add patch from upstream to fix no sound on reconnection of - bluetooth device (glfo#pipewire/wireplumber#234): - * 0001-scripts-policy-device-profile-clear-tables-when-devices-removed.patch - -------------------------------------------------------------------- -Tue Mar 29 12:04:24 UTC 2022 - Antonio Larrosa - -- Add patch from upstream to set locale in apps now that pw_init - doesn't call it by itself anymore in pipewire 0.3.49: - * 0001-src-setlocale-in-main-for-tools-and-the-daemon.patch - -------------------------------------------------------------------- -Fri Mar 25 07:47:09 UTC 2022 - Antonio Larrosa - -- Make the wireplumber-audio noarch as it just contains a lua - config file. - -------------------------------------------------------------------- -Tue Mar 22 18:36:13 UTC 2022 - alarrosa@suse.com - -- Update to version 0.4.9: - * Fixes: - - restore-stream no longer crashes if properties for it are not - present in the config (#190) - - spa-json no longer crashes on non-x86 architectures - - Fixed a potential crash in the bluetooth auto-switch module - (#193) - - Fixed a race condition that would cause Zoom desktop audio - sharing to fail (#197) - - Surround sound in some games is now exposed properly - (pipewire#876) - - Fixed a race condition that would cause the default source & - sink to not be set at startup - - policy-node now supports the 'target.object' key on streams - and metadata - - Multiple fixes in policy-node that make the logic in some - cases behave more like PulseAudio (regarding nodes with the - dont-reconnect property and regarding following the default - source/sink) - - Fixed a bug with parsing unquoted strings in spa-json - * Misc: - - The policy now supports configuring "persistent" device - profiles. If a device is manually set to one of these - profiles, then it will not be auto-switched to another - profile automatically under any circumstances (#138, #204) - - The device-activation module was re-written in lua - - Brave, Edge, Vivaldi and Telegram were added in the bluetooth - auto-switch applications list - - ALSA nodes now use the PCM name to populate node.nick, which - is useful at least on HDA cards using UCM, where all outputs - (analog, hdmi, etc) are exposesd as nodes on a single profile - - An icon name is now set on the properties of bluetooth devices -- Drop patches already upstream: - * 0001-spa-json-fix-va_list-APIs-for-different-architectures.patch - * 0001-restore-stream-do-not-crash-if-config_properties-is-nil.patch - * 0002-policy-bluetooth-fix-string.find-crash-with-nil-string.patch - * 0003-si-audio-adapter-relax-format-parsing.patch -- Update split-config-file.py script - -------------------------------------------------------------------- -Thu Mar 10 12:14:13 UTC 2022 - Alexei Sorokin - -- Add patch from upstream to fix a crash on tty switch - (glfo#pipewire/wireplumber#193): - * 0002-policy-bluetooth-fix-string.find-crash-with-nil-string.patch -- Add patch from upstream to fix issues with PulseAudio support with - PipeWire 0.3.48+ (glfo#pipewire/pipewire#2189): - * 0003-si-audio-adapter-relax-format-parsing.patch -- Some spec clean-up. - -------------------------------------------------------------------- -Fri Feb 11 08:09:05 UTC 2022 - Antonio Larrosa - -- Add patch from upstream to fix va_list APIs for ppc64le and - aarch64, where va_list is not a pointer (boo#1195818): - * 0001-spa-json-fix-va_list-APIs-for-different-architectures.patch -- Add patch from upstream to fix a crash if config.properties is - nil: - * 0001-restore-stream-do-not-crash-if-config_properties-is-nil.patch - -------------------------------------------------------------------- -Mon Feb 7 17:31:11 UTC 2022 - Antonio Larrosa - -- Update to version 0.4.8: - * Highlights: - - Added bluetooth profile auto-switching support. Bluetooth - headsets will now automatically switch to the HSP/HFP profile - when making a call and go back to the A2DP profile after the - call ends (#90) - - Added an option (enabled by default) to auto-switch to - echo-cancel virtual device nodes when the echo-cancel module - is loaded in pipewire-pulse, if there is no other configured - default node - * Fixes: - - Fixed a regression that prevented nodes from being selected - as default when using the pro-audio profile (#163) - - Fixed a regression that caused encoded audio streams to stall - (#178) - - Fixed restoring bluetooth device profiles - * Library: - - A new WpSpaJson API was added as a front-end to spa-json. - This is also exposed to Lua, so that Lua scripts can natively - parse and write data in the spa-json format - * Misc: - - wpctl can now list the configured default sources and sinks - and has a new command that allows clearing those configured - defaults, so that wireplumber goes back to choosing the - default nodes based on node priorities - - The restore-stream script now has its own configuration file - in main.lua.d/40-stream-defaults.lua and has independent - options for restoring properties and target nodes - - The restore-stream script now supports rule-based - configuration to disable restoring volume properties and/or - target nodes for specific streams, useful for applications - that misbehave when we restore those (see #169) - - policy-endpoint now assigns the "Default" role to any stream - that does not have a role, so that it can be linked to a - pre-configured endpoint - - The route-settings-api module was dropped in favor of dealing - with json natively in Lua, now that the API exists -- Drop patch which is already upstream: - * 0001-default-nodes-handle-nodes-without-Routes.patch -- Update split-config-file.py script - -------------------------------------------------------------------- -Mon Jan 31 17:45:11 UTC 2022 - Callum Farmer - -- Use the default lua instead of hardcoding 5.3 - -------------------------------------------------------------------- -Tue Jan 25 15:08:59 UTC 2022 - Antonio Larrosa - -- Update to version 0.4.7: - * Fixed a regression in 0.4.6 that caused the selection of the - default audio sources and sinks to be delayed until some event, - which effectively caused losing audio output in many - circumstances (glfo#pipewire/wireplumber#148, - glfo#pipewire/wireplumber#150, glfo#pipewire/wireplumber#151, - glfo#pipewire/wireplumber#153) - * Fixed a regression in 0.4.6 that caused the echo-cancellation - pipewire module (and possibly others) to not work - * A default sink or source is now not selected if there is no - available route for it (glfo#pipewire/wireplumber#145) - * Fixed an issue where some clients would wait for a bit while - seeking (glfo#pipewire/wireplumber#146) - * Fixed audio capture in the endpoints-based policy - * Fixed an issue that would cause certain lua scripts to error - out with older configuration files - (glfo#pipewire/wireplumber#158) -- Drop patches already included upstream: - * 0001-policy-node-schedule-rescan-without-timeout-if-defined-target-is-not-found.patch - * 0002-policy-node-find-best-linkable-if-default-one-cannot-be-linked.patch -- Add patch from upstream to fix selection of Pro Audio nodes - as default nodes: - * 0001-default-nodes-handle-nodes-without-Routes.patch - -------------------------------------------------------------------- -Mon Jan 10 09:50:15 UTC 2022 - Antonio Larrosa - -- Reformat .changes file to limit lines to 67 chars when possible. - -------------------------------------------------------------------- -Sat Jan 8 16:12:57 UTC 2022 - Alexei Sorokin - -- Update to version 0.4.6: - * Fix a lot of race condition bugs that would cause strange - crashes or many log messages being printed when streaming - clients would connect and disconnect very fast. - * Improve the logic for selecting a default target device. - * Fix switching to headphones when the wired headphones are - plugged in. - * Fix an issue where "udevadm trigger" would break wireplumber. - * Fix an issue where switching profiles of a device could kill - client nodes. - * Fix briefly switching output to a secondary device when - switching device profiles (#85) - * Fix "wpctl status" showing default device selections when - dealing with module-loopback virtual sinks and sources. - * WirePlumber now ignores hidden files from the config directory. - * Fix an interoperability issue with jackdbus. - * Fix an issue where pulseaudio tcp clients would not have - permissions to connect to PipeWire. - * Fix a crash in the journald logger with NULL debug messages. - * Enable real-time priority for the bluetooth nodes to run in RT. - * Make the default stream volume configurable. - * Scripts are now also looked up in - $XDG_CONFIG_HOME/wireplumber/scripts - * Update documentation on configuring WirePlumber and fixed some - more documentation issues. - * Add support for using strings as log level selectors in - WIREPLUMBER_DEBUG. -- Drop patches merged upstream: - * 0001-m-reserve-device-replace-the-hash-table-key-on-new-insert.patch - * 0002-policy-node-wait-for-nodes-when-we-become-unlinked.patch -- Add patch from upstream to fix a pulse client hanging issue: - * 0001-policy-node-schedule-rescan-without-timeout-if-defined-target-is-not-found.patch -- Add patch from upstream to fix an issue with - libpipewire-module-echo-cancel: - * 0002-policy-node-find-best-linkable-if-default-one-cannot-be-linked.patch - -------------------------------------------------------------------- -Wed Dec 15 13:48:27 UTC 2021 - Antonio Larrosa - -- Remove many build dependencies which aren't really needed - -------------------------------------------------------------------- -Sat Dec 11 16:54:56 UTC 2021 - Fabian Vogt - -- Use %autosetup, apply patches unconditionally -- Hard depend on wireplumber-audio if pipewire-pulseaudio is installed - ------------------------------------------------------------------- Thu Dec 9 12:08:45 UTC 2021 - Antonio Larrosa diff --git a/wireplumber.obsinfo b/wireplumber.obsinfo index 9ae4f7e..1a47e57 100644 --- a/wireplumber.obsinfo +++ b/wireplumber.obsinfo @@ -1,4 +1,5 @@ name: wireplumber -version: 0.4.11 -mtime: 1657027335 -commit: 80b3559963f0ad40a7bfa6c23b0098275c0b5ebe +version: 0.4.5 +mtime: 1636626925 +commit: 3946457a7942a179c0f61c60de8cb8fc643391dd + diff --git a/wireplumber.spec b/wireplumber.spec index 62907be..58733f0 100644 --- a/wireplumber.spec +++ b/wireplumber.spec @@ -1,7 +1,7 @@ # # spec file for package wireplumber # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,13 +16,12 @@ # -%define pipewire_minimum_version 0.3.52 %define apiver 0.4 %define apiver_str 0_4 %define sover 0 %define libwireplumber libwireplumber-%{apiver_str}-%{sover} Name: wireplumber -Version: 0.4.11 +Version: 0.4.5 Release: 0 Summary: Session / policy manager implementation for PipeWire License: MIT @@ -30,46 +29,59 @@ Group: Development/Libraries/C and C++ URL: https://gitlab.freedesktop.org/pipewire/wireplumber Source0: wireplumber-%{version}.tar.xz Source1: split-config-file.py -# PATCH-FIX-OPENSUSE reduce-meson-required-version.patch -Patch0: reduce-meson-required-version.patch -# docs -BuildRequires: doxygen -BuildRequires: graphviz -# /docs +Patch0: 0001-m-reserve-device-replace-the-hash-table-key-on-new-insert.patch +Patch1: 0002-policy-node-wait-for-nodes-when-we-become-unlinked.patch +Patch100: reduce-meson-required-version.patch BuildRequires: cmake +BuildRequires: doxygen BuildRequires: fdupes -%if 0%{?sle_version} == 150300 +BuildRequires: graphviz BuildRequires: meson >= 0.54.0 -%else -BuildRequires: meson >= 0.59.0 -%endif -BuildRequires: pipewire >= %{pipewire_minimum_version} -BuildRequires: pipewire-spa-plugins-0_2 >= %{pipewire_minimum_version} +BuildRequires: pipewire >= 0.3.32 +#!BuildIgnore: pipewire-session-manager +BuildRequires: pipewire-spa-plugins-0_2 BuildRequires: pkgconfig -BuildRequires: python3-base -BuildRequires: python3-lxml BuildRequires: xmltoman +BuildRequires: pkgconfig(lua5.3) +BuildRequires: pkgconfig(alsa) +BuildRequires: pkgconfig(bluez) BuildRequires: pkgconfig(dbus-1) +BuildRequires: pkgconfig(gio-2.0) BuildRequires: pkgconfig(gio-unix-2.0) BuildRequires: pkgconfig(glib-2.0) >= 2.62.0 BuildRequires: pkgconfig(gmodule-2.0) BuildRequires: pkgconfig(gobject-2.0) >= 2.62 BuildRequires: pkgconfig(gobject-introspection-1.0) -BuildRequires: pkgconfig(libpipewire-0.3) >= %{pipewire_minimum_version} +BuildRequires: pkgconfig(gstreamer-1.0) +BuildRequires: pkgconfig(gstreamer-allocators-1.0) +BuildRequires: pkgconfig(gstreamer-audio-1.0) +BuildRequires: pkgconfig(gstreamer-plugins-base-1.0) +BuildRequires: pkgconfig(gstreamer-video-1.0) +BuildRequires: pkgconfig(jack) >= 1.9.10 +BuildRequires: pkgconfig(libavcodec) +BuildRequires: pkgconfig(libavfilter) +BuildRequires: pkgconfig(libavformat) +BuildRequires: pkgconfig(libpipewire-0.3) >= 0.3.32 +BuildRequires: pkgconfig(libpulse) BuildRequires: pkgconfig(libsystemd) -BuildRequires: pkgconfig(lua) +BuildRequires: pkgconfig(libudev) +BuildRequires: pkgconfig(libva) +BuildRequires: pkgconfig(sbc) +BuildRequires: pkgconfig(sdl2) +BuildRequires: pkgconfig(sndfile) BuildRequires: pkgconfig(systemd) -#!BuildIgnore: pipewire-session-manager -# Setup ALSA devices if pipewire handles pulseaudio connections. -Requires: (%{name}-audio if pipewire-pulseaudio) -Requires: pipewire >= %{pipewire_minimum_version} -Provides: pipewire-session-manager +BuildRequires: pkgconfig(vulkan) +BuildRequires: pkgconfig(x11) +BuildRequires: python3-base +BuildRequires: python3-lxml +Requires: pipewire >= 0.3.32 %if 0%{?suse_version} <= 1500 BuildRequires: gcc9 BuildRequires: gcc9-c++ %else BuildRequires: gcc-c++ %endif +Provides: pipewire-session-manager %description WirePlumber is a modular session / policy manager for PipeWire and @@ -77,16 +89,14 @@ a GObject-based high-level library that wraps PipeWire's API, providing convenience for writing the daemon's modules as well as external tools for managing PipeWire. -%lang_package - %package audio Summary: Session / policy manager implementation for PipeWire (audio support) Group: Development/Libraries/C and C++ -Requires: %{libwireplumber} = %{version} Requires: %{name} = %{version} -Recommends: pipewire-pulseaudio +Requires: %{libwireplumber} = %{version} Conflicts: pulseaudio -BuildArch: noarch +Recommends: pipewire-pulseaudio +Supplements: (pipewire-pulseaudio and wireplumber) %description audio WirePlumber is a modular session / policy manager for PipeWire and @@ -99,8 +109,8 @@ This package enables the use of alsa devices in PipeWire. %package devel Summary: Session / policy manager implementation for PipeWire Group: Development/Libraries/C and C++ -Requires: %{libwireplumber} = %{version} Requires: %{name} = %{version} +Requires: %{libwireplumber} = %{version} %description devel WirePlumber is a modular session / policy manager for PipeWire and @@ -136,13 +146,15 @@ This package provides the GObject Introspection bindings for the wireplumber shared library. %prep -%autosetup -N -%if 0%{?sle_version} == 150300 +%setup -q %patch0 -p1 +%patch1 -p1 +%if %{pkg_vcmp meson < 0.56.0} +%patch100 -p1 %endif pushd src/config/main.lua.d -python3 %{SOURCE1} +python3 %{SOURCE1} rm 90-enable-all.lua popd @@ -158,7 +170,6 @@ export CC=gcc-9 %install %meson_install %fdupes -s %{buildroot}/%{_datadir}/doc/pipewire/html -%find_lang %{name} %{?no_lang_C} %ifnarch %ix86 ppc64 %check @@ -189,6 +200,7 @@ export XDG_RUNTIME_DIR=/tmp %{_libdir}/wireplumber-%{apiver}/libwireplumber-module-default-nodes-api.so %{_libdir}/wireplumber-%{apiver}/libwireplumber-module-default-nodes.so %{_libdir}/wireplumber-%{apiver}/libwireplumber-module-default-profile.so +%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-device-activation.so %{_libdir}/wireplumber-%{apiver}/libwireplumber-module-file-monitor-api.so %{_libdir}/wireplumber-%{apiver}/libwireplumber-module-logind.so %{_libdir}/wireplumber-%{apiver}/libwireplumber-module-lua-scripting.so @@ -196,6 +208,7 @@ export XDG_RUNTIME_DIR=/tmp %{_libdir}/wireplumber-%{apiver}/libwireplumber-module-mixer-api.so %{_libdir}/wireplumber-%{apiver}/libwireplumber-module-portal-permissionstore.so %{_libdir}/wireplumber-%{apiver}/libwireplumber-module-reserve-device.so +%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-route-settings-api.so %{_libdir}/wireplumber-%{apiver}/libwireplumber-module-si-audio-adapter.so %{_libdir}/wireplumber-%{apiver}/libwireplumber-module-si-audio-endpoint.so %{_libdir}/wireplumber-%{apiver}/libwireplumber-module-si-node.so @@ -205,8 +218,6 @@ export XDG_RUNTIME_DIR=/tmp %{_datadir}/wireplumber %exclude %{_datadir}/wireplumber/main.lua.d/90-2-1-enable-alsa.lua -%files lang -f %{name}.lang - %files audio %{_datadir}/wireplumber/main.lua.d/90-2-1-enable-alsa.lua