From 021ce39fde196a47ebd522ac4e455570b9389170 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Schr=C3=B6ter?= Date: Sat, 10 Feb 2024 20:15:59 +0100 Subject: [PATCH] Sync from SUSE:ALP:Source:Standard:1.0 wireplumber revision 460fe165f65fbf95f7f4b2508530553c --- .gitattributes | 23 + _service | 19 + fix-bsc1219411.patch | 28 + split-config-file.py | 48 ++ wireplumber-0.4.17.obscpio | 3 + wireplumber.changes | 1669 ++++++++++++++++++++++++++++++++++++ wireplumber.obsinfo | 4 + wireplumber.spec | 263 ++++++ 8 files changed, 2057 insertions(+) create mode 100644 .gitattributes create mode 100644 _service create mode 100644 fix-bsc1219411.patch create mode 100644 split-config-file.py create mode 100644 wireplumber-0.4.17.obscpio create mode 100644 wireplumber.changes create mode 100644 wireplumber.obsinfo create mode 100644 wireplumber.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..fecc750 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/_service b/_service new file mode 100644 index 0000000..9c86051 --- /dev/null +++ b/_service @@ -0,0 +1,19 @@ + + + + git + https://gitlab.freedesktop.org/pipewire/wireplumber.git + refs/tags/0.4.17 + @PARENT_TAG@ + + + + + *.tar + xz + + + diff --git a/fix-bsc1219411.patch b/fix-bsc1219411.patch new file mode 100644 index 0000000..453ecf6 --- /dev/null +++ b/fix-bsc1219411.patch @@ -0,0 +1,28 @@ +From: Antonio Larrosa +Subject: Fix bsc#1219411 + +wireplumber enables the bluetooth support in pipewire by default but this +clashes with the bluetooth support in pulseaudio if audio is disabled in +pipewire so this patch disables bluetooth support unless the +90-enable-all.lua file is installed and we now move that file into the +wireplumber-audio package. + +Index: wireplumber-0.4.17/src/config/bluetooth.lua.d/50-bluez-config.lua +=================================================================== +--- wireplumber-0.4.17.orig/src/config/bluetooth.lua.d/50-bluez-config.lua ++++ wireplumber-0.4.17/src/config/bluetooth.lua.d/50-bluez-config.lua +@@ -1,4 +1,4 @@ +-bluez_monitor.enabled = true ++bluez_monitor.enabled = false + + bluez_monitor.properties = { + -- Enabled roles (default: [ a2dp_sink a2dp_source bap_sink bap_source hfp_hf hfp_ag ]) +Index: wireplumber-0.4.17/src/config/bluetooth.lua.d/90-enable-all.lua +=================================================================== +--- wireplumber-0.4.17.orig/src/config/bluetooth.lua.d/90-enable-all.lua ++++ wireplumber-0.4.17/src/config/bluetooth.lua.d/90-enable-all.lua +@@ -1,2 +1,4 @@ ++bluez_monitor.enabled = true ++ + bluez_monitor.enable() + bluez_midi_monitor.enable() diff --git a/split-config-file.py b/split-config-file.py new file mode 100644 index 0000000..965a21f --- /dev/null +++ b/split-config-file.py @@ -0,0 +1,48 @@ +#!/usr/bin/python3 +import hashlib +import sys + +def sha256_from_data(data): + hash_sha256 = hashlib.sha256() + hash_sha256.update(data) + return hash_sha256.hexdigest() + +contents = open('90-enable-all.lua', 'r', encoding='utf-8').read() + +sha256sum = sha256_from_data(contents.encode('utf-8')) +expected_sha256sum = '86888e9d3fcc952c41e778ab4edae4a0eb1f9f51b62ae0772befa9f0fdef611d' + +if sha256sum != expected_sha256sum: + 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}') + sys.exit(1) + +content_sections = contents.split('\n\n') + +sections = ['enable-metadata', + 'default-access-policy', + 'load-devices', + 'track-user-choices-devices', + 'track-user-choices-streams', + 'link-nodes-by-roles', + 'suspend-idle-nodes', + 'allow-loading-objects-on-demand'] + +if len(content_sections) != len(sections): + print('The script has to be updated for new changes in 90-enable-all.lua') + sys.exit(1) + +for i, (content, sec) in enumerate(zip(content_sections, sections)): + if sec == 'load-devices': + lines = content.split('\n') + open(f'90-{i}-1-enable-alsa.lua', 'w', + encoding='utf-8').write(lines[1]) + open(f'90-{i}-2-enable-v4l2.lua', 'w', + encoding='utf-8').write(lines[2]) + open(f'90-{i}-3-enable-libcamera.lua', 'w', + encoding='utf-8').write(lines[3]) + continue + + filename = f'90-{i}-{sec}.lua' + open(filename, 'w', encoding='utf-8').write(content) diff --git a/wireplumber-0.4.17.obscpio b/wireplumber-0.4.17.obscpio new file mode 100644 index 0000000..21b599a --- /dev/null +++ b/wireplumber-0.4.17.obscpio @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9b113ec2fa9865b2e1b4fe101b60190c2931e8a0dde6749efe09e2375c4b55a +size 2201100 diff --git a/wireplumber.changes b/wireplumber.changes new file mode 100644 index 0000000..0bb4773 --- /dev/null +++ b/wireplumber.changes @@ -0,0 +1,1669 @@ +------------------------------------------------------------------- +Mon Feb 5 06:46:58 UTC 2024 - Antonio Larrosa + +- Add patch to only enable bluetooth when audio support is enabled + by installing wireplumber-audio (bsc#1219411): + * fix-bsc1219411.patch + +------------------------------------------------------------------- +Tue Dec 5 19:28:42 UTC 2023 - Alexei Sorokin + +- Update to version 0.4.17: + * Fixes: + - Fix a reference counting issue in the object managers that + could cause crashes due to memory corruption. + - Fix an issue with filters linking to wrong targets, often + with two sets of links. + - Fix a crash in the endpoints policy that would show up when + log messages were enabled at level 3 or higher. + +------------------------------------------------------------------- +Sun Nov 26 11:02:03 UTC 2023 - Antonio Larrosa + +- Update to version 0.4.16: + * Additions: + - Added a new "sm-objects" script that allows loading objects + on demand via metadata entries that describe the object to + load; this can be used to load pipewire modules, such as + filters or network sources/sinks, on demand + - Added a mechanism to override device profile priorities in + the configuration, mainly as a way to re-prioritize Bluetooth + codecs, but this also can be used for other devices + - Added a mechanism in the endpoints policy to allow connecting + filters between a certain endpoint's virtual sink and the + device sink; this is specifically intended to allow plugging + a filter-chain to act as equalizer on the Multimedia endpoint + - Added wp_core_get_own_bound_id() method in WpCore + * Changes: + - PipeWire 0.3.68 is now required + - policy-dsp now has the ability to hide hardware nodes behind + the DSP sink to prevent hardware misuse or damage + - JSON parsing in Lua now allows keys inside objects to be + without quotes + - Added optional argument in the Lua JSON parse() method to + limit recursions, making it possible to partially parse a + JSON object + - It is now possible to pass nil in Lua object constructors + that expect an optional properties object; previously, + omitting the argument was the only way to skip the properties + - The endpoints policy now marks the endpoint nodes as + "passive" instead of marking their links, adjusting for the + behavior change in PipeWire 0.3.68 + - Removed the "passive" property from si-standard-link, since + only nodes are marked as passive now + * Fixes: + - Fixed the wpctl clear-default command to completely clear all + the default nodes state instead of only the last set default + - Reduced the amount of globals that initially match the + interest in the object manager + - Used an idle callback instead of pw_core_sync() in the object + manager to expose tmp globals +- Remove patches included upstream: + * 0001-object-manager-reduce-the-amount-of-globals-that-initially.patch + * 0002-object-manager-use-an-idle-callback-to-expose-tmp-globals.patch + * 0001-policy-dsp-add-ability-to-hide-parent-nodes.patch +- Update split-config-file.py + +------------------------------------------------------------------- +Tue Oct 31 08:30:21 UTC 2023 - Antonio Larrosa + +- Add patch from upstream that fixes too many matches for property + interest: + * 0001-object-manager-reduce-the-amount-of-globals-that-initially.patch +- Add patch from upstream that fixes an odd failure of a test after + applying the previous patch: + * 0002-object-manager-use-an-idle-callback-to-expose-tmp-globals.patch +- Add patch from upstream that adds ability to hide parent nodes, + which is useful to prevent hardware misuse or damage by poorly + behaved/configured clients: + * 0001-policy-dsp-add-ability-to-hide-parent-nodes.patch + +------------------------------------------------------------------- +Fri Oct 13 07:17:56 UTC 2023 - Antonio Larrosa + +- Update to version 0.4.15: + * Additions: + - A new "DSP policy" module has been added; its purpose is to + automatically load a filter-chain when a certain hardware + device is present, so that audio always goes through this + software DSP before reaching the device. This is mainly to + support Apple M1/M2 devices, which require a software DSP + to be always present + - WpImplModule now supports loading module arguments directly + from a SPA-JSON config file; this is mainly to support DSP + configuration for Apple M1/M2 and will likely be reworked + for 0.5 + - Added support for automatically combining Bluetooth LE Audio + device sets (e.g. pairs of earbuds) (!500) + - Added command line options in wpctl to display device/node + names and nicknames instead of descriptions + - Added zsh completions file for wpctl + - The device profile selection policy now respects the + device.profile property if it is set on the device; this is + useful to hand-pick a profile based on static configuration + rules (alsa_monitor.rules) + * Changes/Fixes: + - Linking policy now sends an error to the client before + destroying the node, if it determines that the node cannot be + linked to any target; this fixes error reporting on the + client side + - Fixed a crash in suspend-node that could happen when + destroying virtual sinks that were loaded from another + process such as pw-loopback + - Virtual machine default period size has been bumped to 1024 + - Updated bluez5 default configuration, using bluez5.roles + instead of bluez5.headset-roles now (!498) + - Disabled Bluetooth autoconnect by default (!514) + - Removed RestrictNamespaces option from the systemd services + in order to allow libcamera to load sandboxed IPA modules + - Fixed a JSON encoding bug with empty strings + - Lua code can now parse strings without quotes from SPA-JSON + - Added some missing \since annotations and made them show up + in the generated gobject-introspection file, to help bindings + generators +- Add zsh-completion subpackage + +------------------------------------------------------------------- +Fri May 19 17:26:12 UTC 2023 - Alexei Sorokin + +- Require wireplumber-audio if pipewire-jack is installed. +- Recommend pipewire-jack in wireplumber-audio. + +------------------------------------------------------------------- +Fri Mar 10 23:20:12 UTC 2023 - Alexei Sorokin + +- Update to version 0.4.14: + * Additions + - Add support for managing Bluetooth-MIDI, complementing the + parts that were merged in PipeWire recently. + - Add a default volume configuration option for streams whose + volume has never been saved before; that allows starting new + streams at a lower volume than 100% by default, if desired. + - Add support for managing link errors and propagating them to + the client(s) involved. This allows better error handling on + the application side in case a format cannot be negotiated - + useful in video streams. + - snd_aloop devices are now described as being "Loopback" + devices. + - ALSA nodes in the pro audio profile now get increased graph + priority, so that they are more likely to become the driver + in the graph. + - Add support for disabling libcamera nodes & devices with + node.disabled and device.disabled, like it works for ALSA + and V4L2. +- Drop reduce-meson-required-version.patch: openSUSE Leap 15.3 is + no longer supported. +- Drop patches already included upstream: + * 0001-alsa-monitor-handle-snd_aloop-devices-better.patch + * 0001-spa-json-make-sure-we-only-add-encoded-string-data.patch + * 0001-m-lua-scripting-ignore-string-integer-table-keys-when-constructing-a-JSON-Array-Object.patch + +------------------------------------------------------------------- +Fri Jan 13 10:51:07 UTC 2023 - Antonio Larrosa + +- Backport the workaround from SLE/Leap for the bug in systemd + scripts that didn't set the default enable state for the + wireplumber user service when installing wireplumber. The bug + (boo#1200485) was fixed but that's only for new installations + while this workaround will fix old installations (boo#1202008). + This is used to automatically fix installations of + SLE 15 SP4/Leap 15.4 that were not updated during it's lifetime + and upgrade directly to SP5/15.5 . + +------------------------------------------------------------------- +Wed Jan 11 12:41:28 UTC 2023 - Antonio Larrosa + +- Add upstream patches to fix glfo#pipewire/pipewire#2214 and to + handle better non-null terminated strings: + * 0001-alsa-monitor-handle-snd_aloop-devices-better.patch + * 0001-spa-json-make-sure-we-only-add-encoded-string-data.patch + * 0001-m-lua-scripting-ignore-string-integer-table-keys-when-constructing-a-JSON-Array-Object.patch + +------------------------------------------------------------------- +Tue Dec 13 14:43:46 UTC 2022 - Alexei Sorokin + +- Update to version 0.4.13: + * Additions + - Add bluetooth SCO (HSP/HFP) hardware offload support, + together with an example script that enables this + functionality on the PinePhone. + - Encoded audio (mp3, aac, etc...) can now be passed through, + if this mode is supported by both the application and the + device. + - The v4l2 monitor now also respects the ``node.disabled`` and + ``device.disabled`` properties inside rules. + - Add "Firefox Developer Edition" to the list of applications + that are allowed to trigger a bluetooth profile auto-switch. + - Add support in the portal access script to allow newly + plugged cameras to be immediately visible to the portal + applications. + * Fixes + - Work around an issue that would prevent streams from properly + linking when using effects software like EasyEffects and + JamesDSP. + - Fix destroying pavucontrol-qt monitor streams after the node + that was being monitored is destroyed. + - Fix a crash in the alsa.lua monitor that could happen when a + disabled device was removed and re-added. + - Fix a rare crash in the metadata object. + - Fix a bug where a restored node target would override the + node target set by the application on the node's properties. + * Packaging + - Add build options to compile wireplumber's library, daemon + and tools independently. + - Add a build option to disable unit tests that require the + dbus daemon. + - Stop using fakesink/fakesrc in the unit tests to be able to + run them on default pipewire installations. Compiling the spa + ``test`` plugin is no longer necessary. + - Add pkg-config and header information in the gir file. +- Rebase reduce-meson-required-version.patch +- Drop patches already upstream: + * 0001-alsa.lua-remove-the-disabled-entities-from-the-names-table.patch + * 0001-policy-node-wait-for-unactivated-links-instead-of-removing.patch + +------------------------------------------------------------------- +Tue Nov 15 08:21:15 UTC 2022 - Antonio Larrosa + +- Add patch from upstream to work around a problem when a link is + not activated: + * 0001-policy-node-wait-for-unactivated-links-instead-of-removing.patch + +- Add patch from upstream to fix handling null devices which result + in lua exceptions: + * 0001-alsa.lua-remove-the-disabled-entities-from-the-names-table.patch + +------------------------------------------------------------------- +Tue Oct 4 13:01:17 UTC 2022 - Alexei Sorokin + +- Update to version 0.4.12: + * Changes + - WirePlumber now maintains a stack of previously configured + default nodes and prioritises to one of those when the + actively configured default node becomes unavailable, before + calculating the next default using priorities. + - Updated bluetooth scripts to support the name changes that + happened in PipeWire 0.3.59 and also support the experimental + Bluetooth LE functionality. + - Changed the naming of bluetooth nodes to not include the + profile in it; this allows maintaining existing links when + switching between a2dp and hfp. + - The default volume for new outputs has changed to be 40% in + cubic scale (= -24 dB) instead of linear + (= 74% cubic / -8 dB) that it was before. + - The default volume for new inputs has changed to be 100% + rather than following the default for outputs. + - Added ``--version`` flag on the wireplumber executable. + - Added ``--limit`` flag on ``wpctl set-volume`` to limit the + higher volume that can be set (useful when incrementing + volume with a keyboard shortcut that calls into wpctl). + - The properties of the alsa midi node can now be set in the + config files. + * Fixes + - Fixed a crash in lua code that would happen when running in a + VM. + - Fixed a crash that would happen when re-connecting to D-Bus. + - Fixed a mistake in the code that would cause device + reservation not to work properly. + - Fixed ``wpctl clear-default`` to accept 0 as a valid setting ID. + - Fixed the logic of choosing the best profile after the active + profile of a device becomes unavailable + - Fixed a regression that would cause PulseAudio "corked" + streams to not properly link and cause busy loops. + - Fixed an issue parsing spa-json objects that have a nested + object as the value of their last property. +- Rebase reduce-meson-required-version.patch +- Drop patches already upstream: + * fix-alsa.patch + * 0001-dbus-fix-crash-when-trying-to-reconnect.patch + * 398.patch + +------------------------------------------------------------------- +Fri Aug 5 21:07:13 UTC 2022 - Atri Bhattacharya + +- Add 398.patch -- policy-node: fix potential rescan loop to + prevent high cpu usage (glfo#pipewire/wireplumber#152); patch + taken from upstream merge request. + +------------------------------------------------------------------- +Thu Jul 14 08:35:10 UTC 2022 - Fabian Vogt + +- Add patch to fix crash on session end: + * 0001-dbus-fix-crash-when-trying-to-reconnect.patch + +------------------------------------------------------------------- +Fri Jul 8 11:02:44 UTC 2022 - Fabian Vogt + +- Add patch to fix alsa device creation: + * fix-alsa.patch + +------------------------------------------------------------------- +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 + +- Supplements: (pipewire-pulseaudio and wireplumber) so everyone + having those two packages already installed automatically get + wireplumber-audio pulled in. + +------------------------------------------------------------------- +Thu Dec 9 10:08:43 UTC 2021 - Bjørn Lie + +- Quiet setup of sources, no need to see the package untared. +- Disable tests for ppc64 for now like we do for i586. + +------------------------------------------------------------------- +Fri Dec 3 18:12:42 UTC 2021 - Antonio Larrosa + +- Split the configuration to separate the audio initialization + to a new wireplumber-audio subpackage. This way, if that package + is not installed, pipewire doesn't open the audio devices, thus + not entering a race-condition with pulseaudio but still allowing + to manage v4l2 devices and sharing the screen in wayland, for + example (boo#1188516). + +------------------------------------------------------------------- +Wed Nov 24 16:09:52 UTC 2021 - Antonio Larrosa + +- Add patches from upstream to fix wireplumber breaking when + udevadm trigger is run: + * 0001-m-reserve-device-replace-the-hash-table-key-on-new-insert.patch +- And another patch to fix an issue where there is only 1 sink + available and the card profile is toggeled between pro and + stereo: + * 0002-policy-node-wait-for-nodes-when-we-become-unlinked.patch + +------------------------------------------------------------------- +Thu Nov 11 13:25:33 UTC 2021 - alarrosa@suse.com + +- Update to version 0.4.5: + * Fixes: + - Fixed a crash that could happen after a node linking error + (glfo#pipewire/wireplumber#76) + - Fixed a bug that would cause capture streams to link to + monitor ports of loopback nodes instead of linking to their + capture ports + - Fixed a needless wait that would happen on applications using + the pipewire ALSA plugin (glfo#pipewire/wireplumber#92) + - Fixed an issue that would cause endless rescan loops in + policy-node and could potentially also cause other strange + behaviors in case pavucontrol or another monitoring utility + was open while the policy was rescanning + (glfo#pipewire/wireplumber#77) + - Fixed the endpoints-based policy that broke in recent + versions and improved its codebase to share more code and be + more in-line with policy-node + - The semicolon character is now escaped properly in state + files (glfo#pipewire/wireplumber#82) + - When a player requests encoded audio passthrough, the policy + now prefers linking to a device that supports that instead of + trying to link to the default device and potentially failing + (glfo#pipewire/wireplumber#75) + - Miscellaneous robustness fixes in policy-node + * API: + - Added WpFactory, a binding for pw_factory proxies. This + allows object managers to query factories that are loaded in + the pipewire daemon + - The file-monitor-api plugin can now watch files for changes + in addition to directories + +- Remove patches already included by upstream: + * 0001-si-standard-link-fix-crash-after-returning-a-link-error.patch + * 0002-policy-node-enforce-the-direction-of-the-target-when-linking-by-node-name.patch + * 0001-add-missing-break-in-best-route-selection-logic.patch + +------------------------------------------------------------------- +Wed Nov 3 08:34:01 UTC 2021 - Antonio Larrosa + +- Add patch from upstream to fix a problem saving the default + route: + * 0001-add-missing-break-in-best-route-selection-logic.patch + +- Add patch to let wireplumber build in Leap 15.3/SLE-15-SP3 + which only have meson 0.54: + * reduce-meson-required-version.patch + +------------------------------------------------------------------- +Thu Oct 21 10:15:34 UTC 2021 - Antonio Larrosa + +- Add %post/%pre/... sections to enable the user service + automatically + +------------------------------------------------------------------- +Tue Oct 19 10:59:25 UTC 2021 - Antonio Larrosa + +- Add patch from upstream to fix selection of capture ports instead + of monitor ports: + * 0002-policy-node-enforce-the-direction-of-the-target-when-linking-by-node-name.patch + +------------------------------------------------------------------- +Tue Oct 19 07:25:22 UTC 2021 - Antonio Larrosa + +- Add patch from upstream to fix a crash when there's a link error + (glfo#pipewire/wireplumber#76): + * 0001-si-standard-link-fix-crash-after-returning-a-link-error.patch + +------------------------------------------------------------------- +Fri Oct 15 15:55:46 UTC 2021 - alarrosa@suse.com + +- Update to version 0.4.4: + * Highlights: + - Implemented linking nodes in passthrough mode, which enables + encoded iec958 / dsd audio passthrough + - Streams are now sent an error if it was not possible to link + them to a target (#63) + - When linking nodes where at least one of them has an + unpositioned channel layout, the other one is not + reconfigured to match the channel layout; it is instead + linked with a best effort port matching logic + - Output route switches automatically to the latest one that + has become available (#69) + - Policy now respects the 'node.exclusive' and 'node.passive' + properties + - Many other minor policy fixes for a smoother desktop usage + experience + * API: + - Fixed an issue with the LocalModule() constructor not + accepting nil as well as the properties table properly + - Added WpClient.send_error(), WpSpaPod.fixate() and + - WpSpaPod.filter() (both in C and Lua) + * Misc: + - Bumped meson version requirement to 0.56 to be able to use + meson.project_{source,build}_root() and ease integration with + pipewire's build system as a subproject + - wireplumber.service is now an alias to + pipewire-session-manager.service + - Loading the logind module no longer fails if it was not found + on the system; there is only a message printed in the output + - The logind module can now be compiled with elogind (#71) + - Improvements in wp-uninstalled.sh, mostly to ease its + integration with pipewire's build system when wireplumber is + build as a subproject + - The format of audio nodes is now selected using the same + algorithm as in media-session + - Fixed a nasty segfault that appeared in 0.4.3 due to a typo + (#72) + - Fixed a re-entrancy issue in the wplua runtime (#73) + +- Update to version 0.4.3: + * Fixes: + - Implemented logind integration to start the bluez monitor + only on the WirePlumber instance that is running on the + active seat; this fixes a bunch of startup warnings and the + disappearance of HSP/HFP nodes after login (#54) + - WirePlumber is now launched with GIO_USE_VFS=local to avoid + strange D-Bus interference when the user session is + restarted, which previously resulted in WirePlumber being + terminated with SIGTERM and never recovering (#48) + - WirePlumber now survives a restart of the D-Bus service, + reconnecting to the bus and reclaiming the bus services that + it needs (#55) + - Implemented route-settings metadata, which fixes storing + volume for the "System Sounds" in GNOME (#51) + - Monitor sources can now be selected as the default source + (#60) + - Refactored some policy logic to allow linking to monitors; + the policy now also respects "stream.capture.sink" property + of streams which declares that the stream wants to be linked + to a monitor (#66) + - Policy now cleans up 'target.node' metadata so that streams + get to follow the default source/sink again after the default + was changed to match the stream's currently configured target + (#65) + - Fixed configuring virtual sources (#57) + - Device monitors now do not crash if a SPA plugin is missing; + instead, they print a warning to help users identify what + they need to install (!214) + - Fixed certain "proxy activation failed" warnings (#44) + - iec958 codec configuration is now saved and restored properly + (!228) + - Fixed some logging issues with the latest version of pipewire + (!227, !232) + - Policy now respects the "node.link-group" property, which + fixes issues with filter-chain and other virtual sources & + sinks (#47) + - Access policy now grants full permissions to flatpak + "Manager" apps (#59) + * Policy: + - Added support for 'no-dsp' mode, which allows streaming audio + using the format of the device instead of the standard float + 32-bit planar format (!225) + * Library: + - WpImplMetadata is now implemented using pw_impl_metadata + instead of using its own implementation (#52) + - Added support for custom object property IDs in WpSpaPod + (#53) + * Misc: + - Added a script to load the libcamera monitor (!231) + - Added option to disable building unit tests (!209) + - WirePlumber will now fail to start with a warning if + pipewire-media-session is also running in the system (#56) + - The bluez monitor configuration was updated to match the + latest one in pipewire-media-session (!224) + +- Update to version 0.4.2: + * Highlights: + - Requires PipeWire 0.3.32 or later at runtime + - Configuration files are now installed in + $PREFIX/share/wireplumber, along with scripts, following the + paradigm of PipeWire + - State files are now stored in $XDG_STATE_HOME instead of + $XDG_CONFIG_HOME + - Added new file-monitor-api module, which allows Lua scripts + to watch the filesystem for changes, using inotify + - Added monitor for MIDI devices + - Added a system-lua-version meson option that allows + distributors to choose which Lua version to build against + (auto, 5.3 or 5.4) + - wpipc has been removed and split out to a separate project, + https://git.automotivelinux.org/src/pipewire-ic-ipc/ + * Library: + - A new WpImplModule class has been added; this allows loading + a PipeWire module in the WirePlumber process space, keeping a + handle that can be used to unload that module later. This is + useful for loading filters, network sources/sinks, etc... + - State files can now store keys that contain certain + GKeyFile-reserved characters, such as [, ], = and space; this + fixes storing stream volume state for streams using + PipeWire's ALSA compatibility PCM plugin + - WpProperties now uses a boxed WpPropertiesItem type in its + iterators so that these iterators can be used with g-i + bindings + - Added API to lookup configuration and script files from + multiple places in the filesystem + * Lua: + - A LocalModule API has been added to reflect the functionality + offered by WpImplModule in C + - The Node API now has a complete set of methods to reflect the + methods of WpNode + - Added Port.get_direction() + - Added not-equals to the possible constraint verbs + - Debug.dump_table now sorts keys before printing the table + * Misc: + - Tests no longer accidentally create files in $HOME; all + transient files that are used for testing are now created + in the build directory, except for sockets which are created + in /tmp due to the 108-character limitation in socket paths + - Tests that require optional SPA plugins are now skipped if + those SPA plugins are not installed + - Added a nice summary output at the end of meson configuration + - Documented the Lua ObjectManager / Interest / Constraint APIs + - Fixed some memory leaks + +------------------------------------------------------------------- +Wed Jul 14 14:57:37 UTC 2021 - Antonio Larrosa + +- Remove the Conflicts: pipewire-session-manager. There's no + problem in having both installed at the same time, they just + can't run at the same time. + +------------------------------------------------------------------- +Wed Jul 14 06:25:10 UTC 2021 - Antonio Larrosa + +- Add `Provides: pipewire-session-manager` so wireplumber is + recognized as a pipewire session manager implementation. +- Add `Conflicts: pipewire-session-manager` so no other session + manager is installed at the same time. + +------------------------------------------------------------------- +Tue Jul 13 06:23:39 UTC 2021 - Antonio Larrosa + +- Update to version 0.4.1: + * Highlights: + + WirePlumber now supports Lua 5.4. You may compile it either + with Lua 5.3 or 5.4, without any changes in behavior. The + internal Lua subproject has also been upgraded to Lua 5.4, so + any builds with -Dsystem-lua=false will use Lua 5.4 by + default + * Fixes: + + Fixed filtering of pw_metadata objects, which broke with + PipeWire 0.3.31 + + Fixed a potential livelock condition in + si-audio-adapter/endpoint where the code would wait forever + for a node's ports to appear in the graph + + Fixed granting access to camera device nodes in flatpak + clients connecting through the camera portal + + Fixed a lot of issues found by the coverity static analyzer + + Fixed certain race conditions in the wpipc library + + Fixed compilation with GCC older than v8.1 + * Scripts: + + Added a policy script that matches nodes to specific devices + based on the "media.role" of the nodes and the + "device.intended-roles" of the devices + * Build system: + + Bumped GLib requirement to 2.62, as the code was already + using 2.62 API + + Added support for building WirePlumber as a PipeWire + subproject + + Doxygen version requirement has been relaxed to accept v1.8 + + The CI now also verifies that the build works on + Ubuntu 20.04 LTS and tries multiple builds with different + build options + +------------------------------------------------------------------- +Thu Jun 24 10:46:58 UTC 2021 - alarrosa@suse.com + +- Update to version 0.4.0: + * release 0.4.0 + * create-item: handle all kinds of Audio/Video & Stream nodes + * si-standard-link: treat endpoints as devices when linking + stream<->endpoint + * config: document the duck.level policy property + * scripts: change debug level for some messages + * lua: improve the object:activate() callback to report errors + * wplua: add a wplua_checkclosure() helper function + * Revert "tests: enable G_SLICE=debug-blocks in all tests" + * meson: add '--keep-debuginfo=yes' to the valgrind command line + * pipewire-object: change params-changed signal to take a string + param name + * tests: enable G_SLICE=debug-blocks in all tests + * meson: use environment() objects to define env for tests + * meson: add a test setup to run tests under valgrind + * daemon/wpexec: standardize exit codes based on sysexits.h + * daemon: replace the exit_message with direct message printouts + * wpexec: force the log level to be at least 1 and use fprintf() + for local errors + * daemon: exit with 0 both in case of a signal and in case of + disconnection + * tests: si-standard-link: remove unneeded core syncs + * tests: common: make sure no events are pending before + destroying core + * lib: add struct paddings to be able to maintain ABI + compatibility + * docs: set breathe_default_members to get struct members to show + up in the docs + * docs: remove :project: annotations for breathe + * pw-object-mixin: ignore set param on already destroyed objects + * proxy: destroy pw_proxy if bind_error is called + * restore-stream: implement storing/restoring of target.node + metadata + * lua: implement metadata:set() + * lua: fix refcounting of metadata iterator + * wplua: fix memleak when converting GVariant to Lua + * m-default-nodes-api: free default nodes when disabling plugin + * m-default-nodes: free default nodes when disabling plugin + * global-proxy: fix leak when getting global properties + * spa-pod: check if pod is valid before _parser_can_collect + * lua: remove hack around WpObjectInterest since we can _ref() + it now + * object-interest: remove unused _copy() method + * default-routes: use a constraint to check if device.name is + present + * default-routes: fix storing dev_info + * scripts: initial restore-stream implementation + * object-manager: small doc fix + * object-manager: support declaring interest on all properties of + globals + * object-interest: enrich _matches_full() to be able to check all + constraints + * si-adapter: handle autoconnect property + * si-adapter: handle dont-remix streams + * tests: store temporary WpState files in the build directory + * state: remove support for groups and propagate save errors + * state: don't stat() before creating the dir or removing the + state file + * policy: don't crash if some node properties are not set + * pipewire-object: fix memory leaks when getting properties + * m-default-profiles: finalize parent when plugin is destroyed + * si-adapter: take ownership of format argument + * endpoint: free media_class when disposing WpImplEndpoint + * pipewire-object: take ownership of param argument + * monitors: sanitize device names like media-session does + * object: advance pending transitions if activation fails + * modules: remove the old m-default-routes + * m-device-activation: don't set device routes + * default-routes: re-implement the default-routes module in lua + * docs: Write gtk-doc comments for constant variables + * docs: include wp.h in gir sources + * docs: Add brief descriptions to all functions + * policy: destroy node if defined target was not found and + reconnect is false + * global-proxy: make sure registry is valid before requesting + destroy + * lua: don't crash if an iterator is NULL + * lua: allow the Log api to debug boxed objects (useful for pods) + * lua: fix PipewireObject api: s/set_params/set_param/ and + cleanup + * lua: add WpState bindings + * object: use weakref when advancing current transition + * object: use destroy notify to keep self alive while advancing + transitions + * docs: make progress on lua api documentation + * policy-{node,endpoint-client}: do not crash if media.class is + nil + * meson: add reference to bugfix + * config: disable role-based endpoints in the default + configuration + * tests: si-audio-adapter: test is.device property + * m-si-standard-link: fix number of links check + * tests: si-standard-link: fix racy test + * meson: force the gir target to depend on wp-gtkdoc.h + * docs: tidy up most documents and try to update the information + in them + * docs: use the default sidebar color to make the version easier + to read + * docs: show version number on the sidebar + * release 0.3.96 + * Makefile: use wp-uninstalled.sh to implement the run target + * gitignore: remove obsolete entry + * editorconfig: remove obsolete entry and add python script rules + * LICENSE: update copyright years + * docs: convert NEWS to rst and add it in the generated docs + * docs: update installing-wireplumber page + * ci: bump distribution tag date to the actual branch merge day + * gir: fix generate_gir() + * docs: convert lua api docs to pure rst + * docs: fix gobject-introspection data generation + * ci: update fdo template, fedora image and dependencies for docs + * docs: improve the home page and toc; use README.rst as a base; + add badges + * docs: fix C API documentation to work nicely with doxygen & + sphinx + * docs: meson: rebuild docs when Doxyfile.in changes + * docs: setup sphinx to use the graphviz extension + * docs: improve the visual appearence of the generated html and + cleanup + * docs: reorganize .rst files and add tables of contents for the + APIs + * meson: refactor docs + gi build system + * docs: build gobject introspection from xml files generated by Doxygen + * ci: replace hotdoc with Doxygen, Sphinx and Breathe tools + * docs: Add Lua API documentation + * docs: api: Replace hotdoc specific commands with Doxygen + specific commands + * docs: Replace hotdoc with Doxygen & Sphinx to generate + documentation + * pipewire-object-mixin: fix memleak in GList + * policy-endpoint-device: wait until previous links are activated + * m-si-standard-link: remove unused manage.lifetime configuration + property + * tests: enable si-standard-link test and port it to new API + * wplua: ref closure before invalidating it + * wpctl: fix iterator cleanup + * endpoint: remove wp_endpoint_create_link() + * scripts: remove static-sessions + * wp: remove WpSession and WpEndpointLink + * policy: don't link endpoints on startup + * m-default-nodes: check if node is valid before returning bound + id + * policy: reevaluate all linkables if one linkable was removed + * m-default-routes: log error message when failed to get current + routes + * m-default-profile: log error message when failed to get current + profile + * m-mixer-api: make sure the enum param iterator is valid + * pipewire-object-mixin: make sure enum params task is only + triggered once + * modules: steal the format_task before returning it + * systemd: Add conflicts with pipewire-media-session + * proxy: don't accept NULL pw_proxy in set_pw_proxy API + * m-device-activation: use sync API to enum available profiles + * m-default-routes: use sync API to enum available routes + * m-default-profile: use sync API to enum available profiles + * global-proxy: delay object creation until bound feature is + requested + * alsa-monitor: activate BOUND feature in JACK device + * tests: proxy: add a test for enum_params errors + * proxy: relax proxy error warning messages + * pw-object-mixin: watch for proxy errors during enum_params + * proxy: add a "bind" watch, to watch for proxy errors while + binding/exporting + * proxy: add error signal + * policy: fix removing of item links when linkable is removed + * tests: spa-pod: fix int64 constant to work on all architectures + * global-proxy: destroy the global when proxy is destroyed + * global-proxy: inherit from WpProxy when declaring class + * spa-pod: respect the SPA size for long and int APIs + * si-standard-link: configure the format in WpSiAdapters before + linking + * modules: implement WpSiAdapter in si-audio-adapter and + si-audio-endpoint + * si-interfaces: add WpSiAdapter interface to set and get session + item fortmat + * session-item: add _get_property API + * si-audio-adapter: remove unneeded 'preferred.n.channels' + property + * si-standard-link: make sure create_links creates at least 1 + link + * modules: remove role and priority properties from + si-audio-adapter and si-node + * si-interfaces: rename WpSiPortInfo to WpSiLinkable + * scripts: cleaned and improved policy scripts + * create-item.lua: always enable monitor ports by default + * modules: remove 'monitor' port context from si-audio-adapter + and si-node + * release 0.3.95 + * meson: depend on pipewire 0.3.26 + * config: bluez: update to match media-session's + bluez-monitor.conf + * lua: rename Plugin() to Plugin.find() + * session-item: remove undefined API + * wp: remove WpSessionBin + * wp: rename debug.{h,c} to log.{h,c} + * config: disable ipc module by default and move it to the main + instance + * wpipc: place sockets in the same runtime directory as pipewire + * m-ipc: cleanup server using g_clear_pointer() for consistency + and safety + * wpipc: remove socket files after shutdown of the server + * meson: generate and install pkg-config file for wpipc + * meson: find threads_dep early and also use it in the + wpipc-client + * wpipc: use proper api & so versions + * meson: replace join_paths() with operator / + * meson: remove audiofade pipewire branch check + * meson: make wpipc optional and disabled by default + * policy-node: accept node names or paths in a stream's + node.target property + * policy-endpoint-client-links.lua: consider 'suspend.playback' + metadata + * modules: add ipc module + * lib: add wpipc library + * config: unify config and config-split + * systemd: add templated systemd unit files + * policy-endpoint: implement volume ducking + * m-mixer-api: track monitorVolumes and allow modifying them + * access: add a more generic "default" access policy script + * config: add an example of split-instance configuration + * Add a wp-uninstalled.sh script for easily running programs + uninstalled + * lua: remove the ability to specify spa_libs in the lua config + * daemon: init export core in the daemon and share it with + modules + * lua: change the "wireplumber.interactive" property to + "wireplumber.daemon" + * daemon: Use a pipewire-style config file to load initial + configuration + * core: use log.level from the pw_context + * log: factor out the log level configuration into + wp_log_level_set() + * audio-endpoint: configure adapter for null sink with + monitor.channel-volumes + * impl-node: implement WpPipewireObject + * device: debug and enhance spa device event handling + * config: policy: improve the endpoints & roles example config + * policy-endpoint-client: remove handling of move & follow and + endpoint priorities + * meson: bump version to 0.3.70 + * m-mixer-api: allow calling the action signals even when the + plugin is not enabled + * m-default-nodes-api: remove reduntant call to g_clear_object + * wplua: store closures only with a weak reference + * examples: add example script to get the default sink's volume + * scripts: add policy for links between clients and endpoints + * lua: add WpObject get_active/supported_features() bindings + * lua: add g_get_real/monotonic_time() bindings + * si-audio-endpoint: give better descriptions to endpoints and + their null sinks + * static-endpoints: avoid capturing session item reference in + the activate closure + * policy: export endpoints, do not export endpoint links + * wpctl: handle endpoints nicely and enable volume controls on + them + * tools: split wireplumber script execution mode to a separate + wpexec tool + * tools: move under the 'src' directory + * src: scripts: rename policy-endpoint.lua to + policy-endpoint-client.lua + * m-audio-endpoint: remove target property + * static-endpoints.lua: don't export endpoints, only activate + them + * m-mixer-api: add configurable support for the cubic volume + scale + * wpctl: use mixer & default-nodes API modules + * m-mixer-api: also add channel-independent volume for ease of + use + * wpctl: remove obsolete default node/endpoint key macros + * m-mixer-api: fix getting volume info from nodes that don't + have volumeBase & step + * lua: add a Debug.dump_table() utility function + * m-default-nodes-api: load all information before declaring the + plugin as "enabled" + * lua: add a Core.require_api() utility function + * modules: add module-mixer-api + * src: config: do not create endpoints by default + * src: scripts: add policy-endpoint.lua script + * policy-node.lua: do not handle items with media role if + endpoints exist + * policy-node.lua: clean up findTarget function + * src: scripts: add static-endpoints.lua script + * modules: remove unneeded si-audio-convert module + * src: config: rename session-item support to default-policy + * create-item.lua: only create items for client and device + nodes + * policy-item.lua: only handle si-audio-adapter and si-nodes + links + * src: scripts: remove unneeded policy-endpoint.lua + * m-lua-scripting: add object manager get_n_objects API + * si-audio-endpoint: deactivate node when disabling active + feature + * m-si-audio-endpoint: fix port configuration and target + linking + * m-si-audio-endpoint: make target property optional + * tests: si-standard-link: sync core before finishing + * si-standard-link: call parent class finalize once finalized + * m-si-standard-link: properly set in item port context when + configuring + * policy-node.lua: fix param name typo when finding target + * policy-node: properly remove links between apps and capture + devices + * endpoint: remove useless pw_proxy_destroyed handlers + * registry: fix issues with dangling WpGlobal objects causing + assertion failures + * modules: use dots instead of dashes for session item properties + * wpctl: status: print nodes, ports, links grouped more nicely + * registry: fix odd assertion failures that occured from time to + time + * policy-node.lua: support config.move and config.follow + * m-si-audio-adapter: abort activation if node feature ports is + no longer enabled + * m-si-standard-link: make sure in/out items are valid before + activating + * wpctl: fix setting default nodes + * m-default-nodes: restore configured values on the metadata at + startup + * policy-node: use default-nodes-api plugin + * modules: add new module-default-nodes-api + * m-default-nodes: move common code to a new header + * m-default-nodes: add properties to control storage method and + interval + * modules: rename default-metadata to default-nodes and enable it + always in the config + * m-default-metadata: remove default endpoints, follow upstream + logic + * policy-node.lua: fix type mismatch when comparing session item + Ids + * lua: s/Feature.Object.ALL/Features.ALL/ + * bluez config: update based on the latest media-session config + * m-default-metadata: add support for default audio nodes + * wpctl: list nodes and allow setting default nodes + * modules: remove endpoint impl on si-node, si-audio-convert and + si-audio-adapter + * tests: si-standard-link: use new si-audio-endpoint + * modules: add si-audio-endpoint session item + * src: scripts: add policy-node.lua to link port info session + items + * src: config: rename endpoint-support to session-item-support + * modules: remove si-monitor module + * src: scripts: add create-item.lua and remove + create-endpoint.lua + * m-si-standard-link: set out-item-id and in-item-id properties + * session-item: add id property + * m-si-audio-adapter: ensure ports are available before enabling + active + * m-lua-scripting: add get_associated_proxy session item Lua API + * si-interfaces: make WpSiLink work with WpSiPortInfo instead of + WpSiEndpoint + * si-interfaces: rename WpSiEndpointAcquisition to + WpSiAcquisition + * m-si-standard-link: use a weak reference for in and out + endpoints + * m-si-standard-link: fix in-endpoint check when configuring + * wplua: sort properties after transfering them from lua + * properties: add wp_properties_sort() + * monitor-alsa: add api.alsa.card.* properties on nodes + * bluez5: autoconnect bluetooth stream nodes + * object: deactivate only the features that were previously + active + * bluez5: use api.bluez5.connection-info + * m-si-convert: rename to si-audio-convert + * m-si-adapter: rename to si-audio-adapter + * tests: session-item: add registration test + * object-interest: add support for session item properties + * session-item: add _register and _remove API + * session-item: refactor and inherit from WpObject + * session-bin: remove unused wp_session_bin_new API + * lib: make WpImplEndpoint and WpImplEndpointLink public + * m-si-adapter: rename algorithms to audio-utils + * m-si-monitor-endpoint: rename to si-monitor + * m-si-simple-node-endpoint: rename to si-node + * lib: remove WpEndpointStream API + * wp_init: set PIPEWIRE_DEBUG + * spa-device: do not assert if the activation transition fails + * m-default-routes: return if default routes for a device are + not found + * m-default-routes: relax some warning logs to debug + * m-lua-script: add object_deactivate API + * m-lua-script: add closure for object_activate API + * object: add wp_object_activate_closure API + * ci: use 'disabled' instead of 'false' when configuring pipewire + * m-lua-scripting: add WpSessionBin add API + * lib: remove WpConfiguration + * lib: documentation fixes + * lua/api: add Link() constructor + * module-default-routes: store/restore route properties + * module-device-activation: apply default route on each new + device + * modules: add module-default-routes for storing/restoring routes + * lua/api: default Constraint type always to pw-global + * object-interest: remove type checks + * lua/api: simplify & improve session_item_configure + * lua/api: make the type optional when declaring Interest as a + function argument + * lua/api: improve getting optional Interest arguments + +------------------------------------------------------------------- +Tue Mar 02 12:34:35 UTC 2021 - alarrosa@suse.com + +- Update to version 0.3.60+git.20210301.6c2bfea: + * scripts: policy-endpoints: add move and follow options + * m-lua-scripting: add get_n_streams endpoint API + * m-lua-scripting: add lookup session API + * examples: add bt-profile-switch example + * lua/pod: don't crash on parsing objects with unknown keys, + just ignore them + +------------------------------------------------------------------- +Fri Feb 26 16:12:01 UTC 2021 - alarrosa@suse.com + +- Update to version 0.3.60+git.20210225.9f50117: + * lib: remove module.{c,h} + * meson: fix glib version requirement checks + * systemd: use the older version of the systemd pkgconfig + variables + * systemd: remove RuntimeDirectory from the system service + * daemon: add systemd unit files + * m-lua-scripting/pod: retrieve Ids in Array & Choice as + strings, if possible + * m-lua-scripting/pod: s/id_type/object_id/ as commented on !125 + * m-lua-scripting: add support for choices when creating object + pods + * m-lua-scripting: refactor array and choice pod constructors to + accept Id names + * m-lua-scripting: allow constructing pod Ids with the Id name + * m-lua-scripting: set id_type field when parsing pod objects + * m-lua-scripting: set pod_type and value_type fieds when parsing + non-primitive pods + * m-lua-scripting: start indices from 1 when parsing pods + * test-endpoint: fix failure with pipewire master + * config: split flatpak access configuration + * scripts/access: update access scripts to call + update_permissions() cleanly + * lua/api: fix client update_permissions() + * examples: interactive.lua: add a shebang and update running + instructions + * lua: enable loading scripts with a shebang + * lua/api: log using a debug category unique for the calling + script file + * lua/api: ensure the function name in the debug output is + non-null + * monitor-alsa: fix node description on strange embedded devices + * suspend-node: honor "session.suspend-timeout-seconds" + * monitors: sanitize node descriptions too + * wplua: table_to_properties: use luaL_tolstring to do string + conversions + * config: bluez-monitor: add hfp_hf in the supported roles + comment + * m-lua-scripting: add WpPipewireObject api + * config: move loading of all audio support modules in + 90-enable-audio-all + * config: split configuration for endpoints support in + config.lua.d + * monitors: drop the monitor- prefix from the filenames and + s/bluez5/bluez/ + * config: make the monitor properties & rules available in global + tables + * config: load reserve-device only if alsa.reserve is true + * monitor-bluez: fix source priority assignment + * monitors: sanitize node names to match media-session's behavior + * wplua: gvariant_to_lua: convert dictionary keys to integers if + possible + * monitor-alsa: sync logic, properties and configuration with + media-session + * wplua: improve GVariant array conversion + * wplua: improve gvariant <-> lua conversion functions + * wplua: remove VARDICT handling in gvariant->lua conversion + * config: mimick media-session's v4l2-monitor.conf + * monitor-v4l2: copy properties and rules logic from + media-session + * config: immitate media-session's bluez-monitor.conf + * monitor-bluez: copy all properties and the rules functionality + from media-session + * lua/config: load split config files in alphanumeric order + * tests/lua: test monitor configuration rules code + * lua/api: add wp_object_interest_matches() binding + * object-interest: allow matching against WpProperties objects + * scripts: add portal access script + * scripts: add flatpak access lua script + * wplua: handle more GVariant cases + * m-lua-scripting: add WpClient LUA api + * Revert "meson: relax meson version dependency when building + with system lua" + * meson: relax meson version dependency when building with system + lua + * lua/pod: optimize push_primitive_values() + * tests/wplua: set WIREPLUMBER_CONFIG_DIR to an invalid directory + * lua/pod: simplify spa_pod_object_new() + * lua/pod: optimize lookups in primitive_lua_type and fix some + mistakes + * lua/pod: lookup the object type and values table only once when + constructing objects + * lua/pod: convert Id object fields to strings, if possible + * rename all foo_iterate APIs to foo_new_iterator + * m-lua-scripting/pod: push pod constructors using luaL_newlib + instead of manually + * modules: remove m-node-suspension + * m-lua-scripting/api: fix om:lookup() to return nil when no + object was found + * scripts: add suspend-node.lua to replace m-node-suspension + * wplua: fix enum <-> lua conversion + * create-endpoint.lua: fix some issues + * create-endpoint.lua: fix indentation + * node: change send_command() to take a string + * tests: wplua: add pod.lua script to validate pod API + * tests: wplua: add a script tester to validate lua scripts + * m-lua-scripting: add WpSpaPod api + * wplua: fix vtables lookup in boxed __index function + * examples: add an example interactive lua script + * m-lua-scripting/api: add wp_object_manager_iterate_filtered() + * proxy: add a method to query the interface type + * daemon: add a mode to execute lua scripts from the command line + * m-lua-scripting/api: add WpCore bindings + * m-lua-scripting/api: fix access to core in session_item_new() + * meson: bump version + * meson: remove C++ support, there's no C++ code anymore + * monitor-alsa: simplify reserve-device connection logic + * monitor-alsa: receive script configuration from config.lua + * scripts: add static-sessions.lua + * m-lua-scripting/api: add WpImplSession bindings + * m-lua-scripting: pass component arguments to scripts + * wplua: pass SANDBOX_CONFIG as a script argument + * wplua: allow exchanging arguments and results with scripts + * m-lua-scripting: use wplua_table_to_asv() instead of custom + function + * wplua: add GVariant dictionary conversion functions + * wptoml: remove, it's not used anymore + * daemon: refactor + * m-lua-scripting: fixes + * wp: add wp_get_data_dir() + * src: move scripts to their own directory, install in + $prefix/share/ + * object-interest: add a NOT_EQUALS verb + * m-lua-scripting: allow queuing-in scripts without the plugin + being activated + * m-lua-scripting: refactor as a WpComponentLoader + * wplua: allow loading relative paths from wplua_load_path() + * wplua: add g_autoptr support to lua_State + * wplua: add flags to modify the sandbox behavior + * wp: export functions to get the module & config dirs + * lib: introduce WpComponentLoader and remove WpModule + * plugin: inherit from WpObject + * modules: remove modules that are obsoleted by the lua scripts + * modules: actually delete module-dbus-reservation.c + * monitor-alsa: add device reservation logic + * spa-device: add an "object-removed" signal + * lua: add wp_plugin_find binding + * modules: delete the old dbus-reservation module + * modules: implement a new reserve-device module + * plugin: add a method to find plugins easily + * conf: create-endpoint.lua: make sure endpoints always have a + valid name + * conf: create-endpoint.lua: use node id as key in session_items + table + * meson: add 'system-lua' project option to toggle the bundled + lua + * conf: disable legacy endpoint creation module and replace it + with lua script + * m-lua-scripting: add session item lua API + * session-item: add export API with closure + * session-item: add activate API with closure + * docs: update daemon/running.md + * m-lua-scripting: fix reference count in object manager's lookup + API + * object-interest: add _ref and _unref APIs + * config: enable lua scripts, disable legacy modules + * lua: fix some nasty memory leaks + * meson: require pipewire 0.3.20 + * spa-device: handle DeviceEvent and configure node props + * m-lua-scripting: do stop the lua engine on deactivate() + * main: drop WpConfiguration reference early + * plugin: debug activation & deactivation + * wplua: object: unset GValues used when calling action signals + * config: add lua-based device monitors + * m-lua-scripting: add bindings required for device monitors + * impl-node: derive from WpProxy + * spa-device: derive from WpProxy and manage child objects + internally + * m-default-metadata: handle default nodes + * config: rename desktop profile to desktop-ep + * spa-pod: add the ability to specify Id properties as strings + * spa-type: refactor + * m-lua-scripting: handle default endpoints from the metadata + * m-config-policy: handle default endpoints from the metadata + * modules: replace session-settings with default-metadata + * wpctl: implement set-default using the metadata API + * meson: fix lua dependency on Arch Linux + * metadata: refactor API to quickly find a specific value + * state: use GKeyFile API to keep state in disk + * wp: remove initialization of wireplumber types + * session: remove default-endpoint-changed signal + * spa-type: fix param profile's last Id + * config: implement the functionality of config-policy in Lua + * m-lua-scripting: expose session, endpoint, endpoint-link APIs + * wplua: expose table to/from properties conversion functions + * object, pw-obj-mixin: fix warnings + * config: disable audio sink "streams"; they fail on latest + pipewire + * Fix compiler warnings that appear with the warning flags + enabled + * meson: enable compiler flags for warnings, if supported + * modules: implement module-lua-scripting + * wplua: use only the basename of the files for debug/error + messages + * wplua: use the error handler also when loading chunks + * wplua: implement __tostring for GObject + * wplua: use the registry to store vtables & closures + * wplua: remove TypeClass, push constructors as ClassName_new + * wplua: allow checking for a specific GType with + isobject/isboxed + * configuration: convert file paths from relative to absolute if + necessary + * configuration: implement grouping files in subdirectories + * wplua: add proper GError domain & error codes + * wplua: implement sandboxing of scripts + * wplua: convert WpProperties to table and vice versa + * wplua: new simple engine to integrate GObject with Lua + * meson: add dependency on lua 5.3 + * tools: port wpctl to the new APIs + * tests: endpoint: re-enable the params unit test + * lib: delete WpProps + * pw-object-mixin: refactor, implement param caching and features + for impl objects + * iterator: add version field in the methods struct + * meson: bump project & API versions + * spa-pod: make the wrap functions public, remove private.h and + sort out the rest + * private: further cleanup of private.h, sort out header includes + * session-item: move wp_session_item_set_parent() to the public + header + * defs: add a new WP_PRIVATE_API function annotation + * iterator: make private stuff public, cleanup private.h further + * lib: move WpImplEndpoint* header parts to + private/impl-endpoint.h + * m-metadata: add callback for wp_object_activate() + * src: port daemon to the new APIs + * modules: port modules and their tests to the new proxy APIs + * object-manager: recursively store requested features on + children + * impl-endpoint{,-stream}: disable FEATURE_PROPS temporarily + * tests: fix library unit tests + * lib: refactor WpProxy + * lib: add new proxy-interfaces: interfaces for the refactored + WpProxy class + * lib/private: move the registry & global APIs to a separate + header + * lib: add new WpObject base class + +------------------------------------------------------------------- +Wed Dec 30 13:19:27 UTC 2020 - Bjørn Lie + +- Disable testrun for 32bit arches, upstream do not care for them, + so we can not expect fixed tests any time soon. + +------------------------------------------------------------------- +Fri Dec 18 20:22:35 UTC 2020 - bjorn.lie@gmail.com + +- Update to version 0.3.0+37: + * m-endpoint-creation: remove undefined API + * m-endpoint-creation: remove unnused variable in Bluez5 endpoint + creation + * m-device-activation: use profile from default-profile module if + loaded + * modules: add module to store device profiles each time they + change + * lib: add new WpState API to save and load data from files + * m-monitor: add use-acp flag + * modules: refactor dbus reservation + * plugin: add name property + * wpctl: add set-profile option + * transition: stop and return error if cancelled by the + GCancellable + +------------------------------------------------------------------- +Tue Oct 20 11:48:52 UTC 2020 - dimstar@opensuse.org + +- Update to version 0.3.0+27: + * device: set parent type to GObject in WpSpaDevice structure + +------------------------------------------------------------------- +Mon Oct 12 13:24:01 UTC 2020 - dimstar@opensuse.org + +- Update to version 0.3.0+26: + * m-endpoint-creation: add bluez5 endpoint creation for bluetooth + devices + * m-config-endpoint: refactor and rename to endpoint-creation + * modules: add bluez5 endpoint session item + * modules: add fake stream session item + * m-si-adapter: use the adapter's name as stream name + * m-si-adapter: set the configured flag when configuration was + successful + * m-config-policy: set the stream name to the media role propery + by default + +------------------------------------------------------------------- +Fri Sep 11 10:45:33 UTC 2020 - dimstar@opensuse.org + +- Update to version 0.3.0+19: + * Implement PW_TYPE_INTERFACE_Metadata + * metadata: fix more coding style issues + * metadata: improve implementation + * metadata: remove WP_METADATA_FEATURES_STANDARD and fix + copyright years + * module-metadata: s/settings/plugin/ + * modules: rename metadata module to just 'module-metadata' + * tests: fix permissions check failure with latest pipewire + * tests: implement a WpMetadata unit test +- Drop use-system-cpptoml.patch: fixed upstream. + +------------------------------------------------------------------- +Mon Jul 20 12:27:44 UTC 2020 - Antonio Larrosa + +- Initial version of wireplumber 0.3.0 diff --git a/wireplumber.obsinfo b/wireplumber.obsinfo new file mode 100644 index 0000000..a250fca --- /dev/null +++ b/wireplumber.obsinfo @@ -0,0 +1,4 @@ +name: wireplumber +version: 0.4.17 +mtime: 1701626719 +commit: d3eb77b292655cef333a8f4cab4e861415bc37c2 diff --git a/wireplumber.spec b/wireplumber.spec new file mode 100644 index 0000000..7097c8f --- /dev/null +++ b/wireplumber.spec @@ -0,0 +1,263 @@ +# +# spec file for package wireplumber +# +# Copyright (c) 2022 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%define pipewire_minimum_version 0.3.68 +%define apiver 0.4 +%define apiver_str 0_4 +%define sover 0 +%define libwireplumber libwireplumber-%{apiver_str}-%{sover} +Name: wireplumber +Version: 0.4.17 +Release: 0 +Summary: Session / policy manager implementation for PipeWire +License: MIT +Group: Development/Libraries/C and C++ +URL: https://gitlab.freedesktop.org/pipewire/wireplumber +Source0: wireplumber-%{version}.tar.xz +Source1: split-config-file.py +# FIX-PATCH-SUSE fix-bsc1219411.patch alarrosa@suse.com -- Enable bluetooth only when audio support is enabled +Patch0: fix-bsc1219411.patch +# docs +BuildRequires: doxygen +BuildRequires: graphviz +# /docs +BuildRequires: cmake +BuildRequires: fdupes +BuildRequires: meson >= 0.59.0 +BuildRequires: pipewire >= %{pipewire_minimum_version} +BuildRequires: pipewire-spa-plugins-0_2 >= %{pipewire_minimum_version} +BuildRequires: pkgconfig +BuildRequires: python3-base +BuildRequires: python3-lxml +BuildRequires: xmltoman +BuildRequires: pkgconfig(dbus-1) +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(libsystemd) +BuildRequires: pkgconfig(lua) +BuildRequires: pkgconfig(systemd) +#!BuildIgnore: pipewire-session-manager +# Setup ALSA devices if PipeWire handles PulseAudio or JACK connections. +Requires: (%{name}-audio if (pipewire-pulseaudio or pipewire-jack)) +Requires: pipewire >= %{pipewire_minimum_version} +Provides: pipewire-session-manager +%if 0%{?suse_version} <= 1500 +BuildRequires: gcc9 +BuildRequires: gcc9-c++ +%else +BuildRequires: gcc-c++ +%endif +%{?systemd_ordering} + + +%description +WirePlumber is a modular session / policy manager for PipeWire and +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-jack +Recommends: pipewire-pulseaudio +Conflicts: pulseaudio +BuildArch: noarch + +%description audio +WirePlumber is a modular session / policy manager for PipeWire and +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. + +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} + +%description devel +WirePlumber is a modular session / policy manager for PipeWire and +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. + +This package provides all the necessary files for development with WirePlumber + +%package -n %{libwireplumber} +Summary: Session / policy manager implementation for PipeWire +Group: System/Libraries + +%description -n %{libwireplumber} +WirePlumber is a modular session / policy manager for PipeWire and +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. + +This package provides the wireplumber shared library. + +%package -n typelib-1_0-Wp-%{apiver_str} +Summary: Introspection bindings for libwireplumber +Group: System/Libraries + +%description -n typelib-1_0-Wp-%{apiver_str} +WirePlumber is a modular session / policy manager for PipeWire and +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. + +This package provides the GObject Introspection bindings for +the wireplumber shared library. + +%package zsh-completion +Summary: Wireplumber zsh completion +Group: System/Shells +Requires: %{name} = %{version} +Requires: zsh +Supplements: (wireplumber and zsh) + +%description zsh-completion +Optional dependency offering zsh completion for various wpctl parameters. + +%prep +%autosetup -p1 + +pushd src/config/main.lua.d +python3 %{SOURCE1} +rm 90-enable-all.lua +popd + +%build +%if %{pkg_vcmp gcc < 8} +export CC=gcc-9 +export CXX=g++-9 +%endif +%meson -Ddoc=disabled \ + -Dsystem-lua=true \ + -Delogind=disabled +%meson_build + +%install +%meson_install +%fdupes -s %{buildroot}/%{_datadir}/doc/pipewire/html +%find_lang %{name} %{?no_lang_C} + +%ifnarch %ix86 ppc64 +%check +export XDG_RUNTIME_DIR=/tmp +%meson_test +%endif + +%pre +%systemd_user_pre wireplumber.service + +%post +%systemd_user_post wireplumber.service + +%if 0%{?suse_version} <= 1500 +# If the pipewire.socket user unit is not enabled and the workaround +# for boo#1186561 has never been executed, we need to execute it now +if [ ! -L %{_sysconfdir}/systemd/user/pipewire.service.wants/wireplumber.service \ + -a ! -f %{_localstatedir}/lib/pipewire/wireplumber_post_workaround \ + -a -x %{_bindir}/systemctl ]; then + for service in wireplumber.service ; do + %{_bindir}/systemctl --global preset "$service" || : + done + + mkdir -p %{_localstatedir}/lib/pipewire + cat << EOF > %{_localstatedir}/lib/pipewire/wireplumber_post_workaround +# The existence of this file means that the wireplumber user services were +# enabled at least once. Please don't remove this file as that would +# make the services to be enabled again in the next package update. +# +# Check the following bugs for more information: +# https://bugzilla.opensuse.org/show_bug.cgi?id=1200485 +EOF +fi +%endif + + +%preun +%systemd_user_preun wireplumber.service + +%postun +%systemd_user_postun wireplumber.service + +%post -n %{libwireplumber} -p /sbin/ldconfig +%postun -n %{libwireplumber} -p /sbin/ldconfig + +%files +%{_bindir}/wireplumber +%{_bindir}/wpctl +%{_bindir}/wpexec +%dir %{_libdir}/wireplumber-%{apiver} +%{_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-file-monitor-api.so +%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-logind.so +%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-lua-scripting.so +%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-metadata.so +%{_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-si-audio-adapter.so +%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-si-audio-endpoint.so +%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-si-node.so +%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-si-standard-link.so +%{_userunitdir}/wireplumber.service +%{_userunitdir}/wireplumber@.service +%{_datadir}/wireplumber +%exclude %{_datadir}/wireplumber/main.lua.d/90-2-1-enable-alsa.lua +%exclude %{_datadir}/wireplumber/bluetooth.lua.d/90-enable-all.lua + +%files lang -f %{name}.lang + +%files audio +%{_datadir}/wireplumber/main.lua.d/90-2-1-enable-alsa.lua +%{_datadir}/wireplumber/bluetooth.lua.d/90-enable-all.lua + +%files devel +%{_includedir}/wireplumber-%{apiver} +%{_libdir}/libwireplumber-%{apiver}.so +%{_libdir}/pkgconfig/wireplumber-%{apiver}.pc +%{_datadir}/gir-1.0/Wp-%{apiver}.gir + +%files -n typelib-1_0-Wp-%{apiver_str} +%{_libdir}/girepository-1.0/Wp-%{apiver}.typelib + +%files -n %{libwireplumber} +%{_libdir}/libwireplumber-%{apiver}.so.%{sover} +%{_libdir}/libwireplumber-%{apiver}.so.%{sover}.* + +%files zsh-completion +%dir %{_datarootdir}/zsh +%dir %{_datarootdir}/zsh/site-functions/ +%{_datarootdir}/zsh/site-functions/_wpctl + +%changelog