Sync from SUSE:SLFO:Main wireplumber revision 8f0092d31c8f1eea6050899b66189891

This commit is contained in:
Adrian Schröter 2024-10-03 15:26:09 +02:00
parent 86336815f2
commit 5129ef47d1
8 changed files with 612 additions and 91 deletions

View File

@ -3,8 +3,13 @@
<service name="obs_scm" mode="manual">
<param name="scm">git</param>
<param name="url">https://gitlab.freedesktop.org/pipewire/wireplumber.git</param>
<param name="revision">refs/tags/0.4.17</param>
<param name="revision">0.5.6</param>
<param name="versionformat">@PARENT_TAG@</param>
<!--
<param name="revision">master</param>
<param name="versionformat">@PARENT_TAG@+git@TAG_OFFSET@.%h</param>
<param name="changesgenerate">enable</param>
-->
<!--
<param name="revision">master</param>
<param name="versionformat">@PARENT_TAG@+git%cd.%h</param>

View File

@ -1,28 +0,0 @@
From: Antonio Larrosa <alarrosa@suse.com>
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()

View File

@ -1,48 +1,52 @@
#!/usr/bin/python3
import hashlib
import sys
import re
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()
lines = open('wireplumber.conf', 'r', encoding='utf-8').readlines()
sha256sum = sha256_from_data(contents.encode('utf-8'))
expected_sha256sum = '86888e9d3fcc952c41e778ab4edae4a0eb1f9f51b62ae0772befa9f0fdef611d'
is_in_device_monitor = False
main_config_content = ''
device_monitors_content = ''
main_profile_contents = ''
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])
for line in lines:
if re.match(' *## Device monitors$', line):
main_config_content += line
main_config_content += ' # Section moved to a device-monitors.conf file which is provided by the wireplumber-audio package\n\n'
is_in_device_monitor = True
continue
elif re.match(' *## ', line):
is_in_device_monitor = False
filename = f'90-{i}-{sec}.lua'
open(filename, 'w', encoding='utf-8').write(content)
if is_in_device_monitor:
device_monitors_content += line
else:
# Fixes wireplumber running the main profile when not having audio support (bsc#1223916)
if line in [' hardware.audio = required\n', ' hardware.bluetooth = required\n']:
main_profile_contents += line
line = line.replace('required', 'disabled')
main_config_content += line
config_sha256 = sha256_from_data(device_monitors_content.encode('utf-8'))
verified_sha256 = 'bf33d018e5b924da71266636757fa264bc677b945c35e4dcd7f708da42731cc9'
if config_sha256 != verified_sha256:
print('The "Device monitors" section was modified, please verify that the contents are ok')
print('and if they are, modify the "verified_sha256" value in this script to')
print(f' {config_sha256}')
print('Current device monitors section is:')
print(device_monitors_content)
sys.exit(1)
device_monitors_content = 'wireplumber.components = [\n' + device_monitors_content + ']'
main_profile_contents = 'wireplumber.profiles = {\n main = {\n' + main_profile_contents + ' }\n}\n'
open('wireplumber.conf', 'w', encoding='utf-8').write(main_config_content)
open('wireplumber.conf.d/00-device-monitors.conf', 'w', encoding='utf-8').write(device_monitors_content)
open('wireplumber.conf.d/01-require-audio-in-main-profile.conf', 'w', encoding='utf-8').write(main_profile_contents)

BIN
wireplumber-0.4.17.obscpio (Stored with Git LFS)

Binary file not shown.

BIN
wireplumber-0.5.6.obscpio (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -1,3 +1,525 @@
-------------------------------------------------------------------
Mon Sep 9 12:12:28 UTC 2024 - Frederic Crozat <fcrozat@suse.com>
- Update to version 0.5.6:
* Additions:
- Implemented before/after dependencies for components, to
ensure correct load order in custom configurations (#600)
- Implemented profile inheritance in the configuration file.
This allows profiles to inherit all the feature specifications
of other profiles, which is useful to avoid copying long lists
of features just to make small changes
- Added multi-instance configuration profiles, tested and
documented them
- Added a ``main-systemwide`` profile, which is now the default
for instances started via the system-wide systemd service and
disables features that depend on the user session (#608)
- Added a ``wp_core_connect_fd`` method, which allows making a
connection to PipeWire via an existing open socket (useful
for portal-based connections)
* Fixes:
- The Bluetooth auto-switch script now uses the common event
source object managers, which should improve its
stability (!663)
- Fix an issue where switching between Bluetooth profiles
would temporarily link active audio streams to the internal
speakers (!655)
-------------------------------------------------------------------
Tue Jul 2 08:14:44 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>
- Update to version 0.5.5:
* Highlights:
- Hotfix release to address crashes in the Bluetooth HSP/HFP
autoswitch functionality that were side-effects of some
changes that were part of the role-based linking policy
(#682)
* Improvements:
- wpctl will now properly show a '*' in front of sink filters
when they are selected as the default sink (!660)
-------------------------------------------------------------------
Fri Jun 28 06:01:56 UTC 2024 - alarrosa@suse.com
- Update to version 0.5.4+git2.96dc045:
* l/find-best-target: Allow regular filters to be best targets
* linking-utils: fallback to role priority 0 if none is defined
-------------------------------------------------------------------
Fri Jun 28 05:56:38 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>
- Update to version 0.5.4:
* Highlights:
- Refactored the role-based linking policy (previously known
also as "endpoints" or "virtual items" policy) to blend in
with the standard desktop policy. It is now possible use
role-based sinks alongside standard desktop audio operations
and they will only be used for streams that have a
"media.role" defined. It is also possible to force streams to
have a media.role, using a setting. Other features include:
blending with smart filters in the graph and allowing
hardware DSP nodes to be also used easily instead of
requiring software loopbacks for all roles. (#610, !649)
* Improvements:
- Filters that are not declared as smart will now behave again
as normal application streams, instead of being treated
sometimes differently (!657)
* Fixes:
- Fixed an issue that would cause WirePlumber to crash at
startup if an empty configuration file was present in one of
the search paths (#671)
- Fixed Bluetooth profile auto-switching when a filter is
permanently linked to the Bluetooth source (!650)
- Fixed an issue in the software-dsp script that would cause
DSP filters to stay around and cause issues after their
device node was destroyed (!651)
- Fixed an issue in the autoswitch-bluetooth-profile script
that could cause an infinite loop of switching between
profiles (!652, #617)
- Fixed a rare issue that could cause WirePlumber to crash when
dealing with a device object that didn't have the
"device.name" property set (#674)
-------------------------------------------------------------------
Wed Jun 26 11:08:08 UTC 2024 - alarrosa@suse.com
- Update to version 0.5.3+git11.4868b3c:
* get-filter-from-target: Don't bypass the hook if the session item is a regular filter
* filter-utils: Allow smart filters to have as target filters that are not smart
* tests: skip some tests when audiotestsrc is unavailable
* scripts/device: avoid crashing if the device.name is not set
* tests/examples: add example on how to set node "params" under Props
* autoswitch-bluetooth-profile: Always destroy the restore timeout source before switching
* node/software-dsp: ensure that filter chains are properly unloaded
* scripts: Fix autoswitch BT profile when using filters
* bluez: Don't create loopback source if autoswitch setting is disabled
* conf: further improve how top-level objects are handled
* conf: skip empty configuration files to avoid crashing
-------------------------------------------------------------------
Tue Jun 4 22:08:54 UTC 2024 - Alexei Sorokin <sor.alexei@meowr.ru>
- Update to version 0.5.3:
* Fixes:
- Fix a long standing issue that would cause many device nodes
to have inconsistent naming, with a '.N' suffix (where N is
a number >= 2) being appended at seemingly random times.
- Fix an issue that would cause unavailable device profiles to
be selected if they were previously stored in the state file,
sometimes requiring users to manually remove the state file
to get things working again.
- Fix an occasional crash that could sometimes be triggered by
hovering the volume icon on the KDE taskbar, and possibly
other similar actions.
- Fix camera device deduplication logic when the same device
is available through both V4L2 and libcamera, and the
libcamera one groups multiple V4L2 devices together.
- Fix applying the default volume on streams that have no
volume previously stored in the state file.
- Fix an issue that would prevent some camera nodes,
in some cases, from being destroyed when the camera device
is removed.
- Fix an issue that would cause video stream nodes to be
linked with audio smart filters, if smart audio filters were
configured.
- Fix an issue that would cause WP to re-activate device
profiles even though they were already active.
- Configuration files in standard JSON format (starting with a
'{', among other things) are now correctly parsed.
- Fix overriding non-container values when merging JSON
objects.
- Functions marked with WP_PRIVATE_API are now also marked as
non-introspectable in the gobject-introspection metadata.
* Improvements:
- Logging on the systemd journal now includes the log topic
and also the log level and location directly on the message
string when the log level is high enough, which is useful
for gathering additional context in logs submitted by users.
- Add a video-only profile in wireplumber.conf, for systems
where only camera & screensharing are to be used.
- Improve seat state monitoring so that Bluetooth devices are
only enabled when the user is active on a local seat,
instead of allowing remote users as well.
- Improve how main filter nodes are detected for the smart
filters.
- Add Lua method to merge JSON containers.
- Remove patch already included upstream:
* 0001-lua-json-fix-error-ouput.patch
* 0002-lua-json-add-method-to-merge-json-containers.patch
* 0003-json-utils-fix-overriding-of-non-container-values-when.patch
* 0004-transition-fix-memleak-when-error-set.patch
* 0005-transition-ensure-single-completion-and-finish.patch
* 0006-linking-return-after-aborting-transition.patch
* 0007-state-stream-fix-using-default-volume.patch
-------------------------------------------------------------------
Sat May 25 13:28:01 UTC 2024 - Alexei Sorokin <sor.alexei@meowr.ru>
- Add patches from upstream to fix a crash for aborted links:
* 0004-transition-fix-memleak-when-error-set.patch
* 0005-transition-ensure-single-completion-and-finish.patch
* 0006-linking-return-after-aborting-transition.patch
- Add patch from upstream to fix default playback volume ignore:
* 0007-state-stream-fix-using-default-volume.patch
-------------------------------------------------------------------
Mon May 6 16:23:47 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>
- Better fix for (bsc#1223916) that basically turns the main
profile into the (to be in 0.5.3) video-only profile unless
wireplumber-audio is installed which now turns the main profile
into exactly upstream's main profile.
-------------------------------------------------------------------
Mon May 6 07:41:23 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>
- Add patch from upstream to fix a json log issue:
* 0001-lua-json-fix-error-ouput.patch
- Add patch from upstream to add a method to merge json containers:
* 0002-lua-json-add-method-to-merge-json-containers.patch
- Add patch from upstream to fix merging a particular case
of configuration options:
* 0003-json-utils-fix-overriding-of-non-container-values-when.patch
- Fix wireplumber not starting successfully when audio support is
not enabled since the main profile now requires it. The best
option would be to use a video-only profile but it's too late
to change the way wireplumber is started in SLE/Leap, so the
solution just makes audio/bluetooth optional for now
(bsc#1223916)
* split-config-file.py
-------------------------------------------------------------------
Tue Apr 23 06:48:06 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>
- Update to version 0.5.2:
* Highlights:
- Added support for loading configuration files other than the
default wireplumber.conf within Lua scripts (!629)
- Added support for loading single-section configuration files,
without fragments (!629)
- Updated the node.software-dsp script to be able to load
filter-chain graphs from external configuration files, which
is needed for Asahi Linux audio DSP configuration (!629)
* Fixes:
- Fixed destroying camera nodes when the camera device is
removed (#627, !631)
- Fixed an issue with Bluetooth BAP device set naming (!632)
- Fixed an issue caused by the pipewire event loop not being
"entered" as expected (!634, #638)
- A false positive warning about no modules being loaded is
now suppressed when using libpipewire >= 1.0.5 (#620)
- Default nodes can now be selected using priority.driver when
priority.session is not set (#642)
* Changes:
- The library version is now generated following pipewire's
versioning scheme: libwireplumber-0.5.so.0.5.2 becomes
libwireplumber-0.5.so.0.0502.0 (!633)
- Remove patches from upstream that are already in 0.5.2:
* 0001-core-set-context.modules.allow-empty-to-silence-warning-in.patch
* 0002-monitor-utils-clear-cam-data-after-creating-nodes.patch
* 0003-monitors_bluez-fix-BAP-device-set-node-naming.patch
-------------------------------------------------------------------
Mon Apr 15 07:54:54 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>
- Add patch from upstream to silence a warning on pipewire
(since 1.0.5):
* 0001-core-set-context.modules.allow-empty-to-silence-warning-in.patch
- Add patch from upstream to fix a dangling reference to a device:
* 0002-monitor-utils-clear-cam-data-after-creating-nodes.patch
- Add patch from upstream to fix BAP node naming:
* 0003-monitors_bluez-fix-BAP-device-set-node-naming.patch
-------------------------------------------------------------------
Mon Apr 1 07:53:59 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>
- Update to version 0.5.1:
* Highlights:
- Added a guide documenting how to migrate configuration from
0.4 to 0.5, also available online at:
https://pipewire.pages.freedesktop.org/wireplumber/daemon/configuration/migration.html
If you are packaging WirePlumber for a distribution, please
consider informing users about this. Installing the
wireplumber-doc subpackage, this file can be read by running:
xdg-open /usr/share/doc/wireplumber/html/daemon/configuration/migration.html
* Fixes:
- Fixed an odd issue where microphones would stop being usable
when a Bluetooth headset was connected in the HSP/HFP profile
(#598, !620)
- Fixed an issue where it was not possible to store the
volume/mute state of system notifications (#604)
- Fixed a rare crash that could occur when a node was destroyed
while the 'select-target' event was still being processed
(!621)
- Fixed deleting all the persistent settings via
wpctl --delete (!622)
- Fixed using Bluetooth autoswitch with A2DP profiles that have
an input route (!624)
- Fixed sending an error to clients when linking fails due to a
format mismatch (!625)
* Additions:
- Added a check that prints a verbose warning when old-style
0.4.x Lua configuration files are found in the system. (#611)
- The "policy-dsp" script, used in Asahi Linux to provide a
software DSP for Apple Sillicon devices, has now been ported
to 0.5 properly and documented (#619, !627)
- Remove patch already included upstream:
* 0001-filter-utils-fix-handling-of-targetless-smart-filters.patch
- Enable documentation generation and create new doc subpackage
including the documentation that can be read by running:
xdg-open /usr/share/doc/wireplumber/html/index.html
-------------------------------------------------------------------
Fri Mar 22 08:30:48 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>
- Add patch from upstream to fix all input sources only working
when bluetooth profile is set to HSF/HFP, which was a regression
in 0.5.0 (glfo#pipewire/wireplumber#598):
* 0001-filter-utils-fix-handling-of-targetless-smart-filters.patch
-------------------------------------------------------------------
Tue Mar 19 07:43:16 UTC 2024 - Richard Biener <rguenther@suse.com>
- Avoid %if %{pkg_vcmp gcc < 8}, instead replicate the condition
from the BuildRequires section.
-------------------------------------------------------------------
Mon Mar 18 16:34:10 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>
- Update to version 0.5.0:
* Changes:
- Bumped the minimum required version of PipeWire to 1.0.2,
because we make use of the 'api.bluez5.internal' property of
the BlueZ monitor (!613)
- Improved the naming of Bluetooth nodes when the
auto-switching loopback node is present (!614)
- Updated the documentation on "settings", the Bluetooth
monitor, the Access configuration, the file search locations
and added a document on how to modify the configuration file
(#595, !616)
* Fixes:
- Fixed checking for available routes when selecting the
default node (!609)
- Fixed an issue that was causing an infinite loop storing
routes in the state file (!610)
- Fixed the interpretation of boolean values in the alsa
monitor rules (#586, !611)
- Fixes a Lua crash when we have 2 smart filters, one with a
target and one without (!612)
- Fixed an issue where the default nodes would not be updated
when the currently selected default node became unavailable
(#588, !615)
- Fixed an issue that would cause the Props (volume, mute, etc)
of loopbacks and other filter nodes to not be restored at
startup (#577, !617)
- Fixed how some constants were represented in the
gobject-introspection file, mostly by converting them from
defines to enums (#540, #591)
- Fixed an issue using WirePlumber headers in other projects
due to redefinition of G_LOG_DOMAIN (#571)
-------------------------------------------------------------------
Tue Mar 12 16:25:39 UTC 2024 - alarrosa@suse.com
- Update to version 0.4.90+git25.95cfa9e:
* wpctl: fix settings --help listing
* docs: conf_file: small updates
* docs: installing: update dependency versions
* si-linkables: do not fully reset when the underlying proxy is
destroyed
* registry: move to a separate file and decouple it from the
object manager
* log: docs: document the log topic definition macros
* monitors/bluez: add 'internal' prefix to internal bluez node
names.
* monitor/bluez: set node.name property when creating combine
stream
* meson: bump min pipewire version to 1.0.2
* scripts: fix regression in state-routes.lua when marking routes
as 'active'
* scripts: improve linking logs
* monitors: use parseBool for boolean properties in rules
* config: add {device|node}.disable
* object-interest: make WP_INTEREST_MATCH_ALL part of the enum
* proxy: make the FEATURES_MINIMAL and FEATURES_ALL constants
part of the enum
* log: fix WP_LOG_LEVEL_TRACE value in the g-i bindings
* base-dirs: wrap flag groups in parenthesis
* log.h: define G_LOG_DOMAIN only if
WP_USE_LOCAL_LOG_TOPIC_IN_G_LOG is defined
* meson: make sure the boolean options have boolean values
* meson: move the common CFLAGS to project-wide scope
* scripts: make sure target is not nil when iterating filters
with matching targets
* docs: update the documentation around file search locations
* scripts: rescan linkables when device EnumRoute param changes
* scripts: fix available routes check when selecting the default
node
* scripts: fix typo in rescan-virtual-links.lua
- Remove patch already included in the upstream version
* 0001-scripts-fix-typo-in-rescan-virtual-links.lua.patch
- Set minimum pipewire version to 1.0.2
-------------------------------------------------------------------
Wed Mar 6 15:43:02 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>
- Revert that last change. Obsoletes shouldn't be used for that.
-------------------------------------------------------------------
Wed Mar 6 11:27:41 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>
- Obsolete libwireplumber-0_4-0 from libwireplumber-0_5-0
-------------------------------------------------------------------
Tue Mar 5 19:29:02 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>
- Add patch from upstream to fix a typo a lua script:
* 0001-scripts-fix-typo-in-rescan-virtual-links.lua.patch
-------------------------------------------------------------------
Tue Mar 5 05:36:27 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>
- Update to version 0.4.90 (0.5.0 RC1)
* Highlights:
- The configuration system has been changed back to load files
from the WirePlumber configuration directories, such as
/etc/wireplumber and $XDG_CONFIG_HOME/wireplumber, unlike in
the pre-releases. This was done because issues were observed
with installations that use a different prefix for pipewire
and wireplumber. If you had a wireplumber.conf file in
/etc/pipewire or $XDG_CONFIG_HOME/pipewire, you should move
it to /etc/wireplumber or $XDG_CONFIG_HOME/wireplumber
respectively (!601)
- The internal base directories lookup system now also respects
the XDG_CONFIG_DIRS and XDG_DATA_DIRS environment variables,
and their default values as per the XDG spec, so it is
possible to install configuration files also in places like
/etc/xdg/wireplumber and override system-wide data paths
(!601)
- wpctl now has a settings subcommand to show, change and
delete settings at runtime. This comes with changes in the
WpSettings system to validate settings using a schema that is
defined in the configuration file. The schema is also
exported on a metadata object, so it is available to any
client that wants to expose WirePlumber settings (!599, !600)
- The WpConf API has changed to not be a singleton and support
opening arbitrary config files. The main config file now
needs to be opened prior to creating a WpCore and passed to
the core using a property. The core uses that without letting
the underlying pw_context open and read the default
client.conf. The core also closes the WpConf after all
components are loaded, which means all the config loading is
done early at startup. Finally, WpConf loads all sections
lazily, keeping the underlying files memory mapped until it
is closed and merging them on demand (!601, !606)
- Remove patch that's already included:
* 0001-wpctl-add-settings-subcomand-to-show_-delete-or-change.patch
-------------------------------------------------------------------
Mon Feb 19 07:29:52 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>
- Add patch from upstream to remove the "clear-persistent"
sub-command and add a "settings" sub-command:
* 0001-wpctl-add-settings-subcomand-to-show_-delete-or-change.patch
-------------------------------------------------------------------
Thu Feb 15 07:23:41 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>
- Update to version 0.4.82 (0.5.0 pre-release 2)
* Highlights:
- Bluetooth auto-switching is now implemented with a virtual
source node. When an application links to it, the actual
device switches to the HSP/HFP profile to provide the real
audio stream. This is a more robust solution that works with
more applications and is more user-friendly than the previous
application whitelist approach
- Added support for dynamic log level changes via the PipeWire
settings metadata. Also added support for log level patterns
in the configuration file
- The "persistent" (i.e. stored) settings approach has changed
to use two different metadata objects: sm-settings and
persistent-sm-settings. Changes in the former are applied in
the current session but not stored, while changes in the
latter are stored and restored at startup. Some work was also
done to expose a wpctl interface to read and change these
settings, but more is underway
- Several WirePlumber-specific node properties that used to be
called target.* have been renamed to node.* to match the
PipeWire convention of node.dont-reconnect. These are also
now fully documented
* Other changes:
- Many documentation updates
- Added support for SNAP container permissions
- Fixed multiple issues related to restoring the Route
parameter of devices, which includes volume state
- Smart filters can now be targetted by specific streams
directly when the filter.smart.targetable property is set
- Ported the mechanism to override device profile priorities in
the configuration, which is used to re-prioritize Bluetooth
codecs
- WpSettings is no longer a singleton class and there is a
built-in component to preload an instance of it
-------------------------------------------------------------------
Mon Feb 5 16:11:12 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>
- Update to version 0.4.81
* Highlights:
- Lua scripts have been refactored to use the new event
dispatcher API, which allows them to be split into multiple
small fragments that react to events in a specified order.
This allows scripts to be more modular and easier to
maintain, as well as more predictable in terms of execution
order.
- The configuration system has been refactored to use a single
SPA-JSON file, like PipeWire does, with support for fragments
that can override options. This file is also now loaded using
PipeWire's configuration API, which effectively means that
the file is now loaded from the PipeWire configuration
directories, such as /etc/pipewire and
$XDG_CONFIG_HOME/pipewire.
- The configuration system now has the concept of profiles,
which are groups of components that can be loaded together,
with the ability to mark certain components as optional. This
allows having multiple configurations that can be loaded
using the same configuration file. Optional components also
allow loading the same profile gracefully on different
setups, where some components may not be available (ex,
loading of the session D-Bus plugin on a system-wide PipeWire
setup now does not fail).
- Many configuration options are now exposed in the sm-settings
metadata, which allows changing them at runtime. This can be
leveraged in the future to implement configuration tools that
can modify WirePlumber's behaviour dynamically, without
restarting.
- A new "filters" system has been implemented, which allows
specifying chains of "filter" nodes to be dynamically linked
in-between streams and devices. This is achieved with certain
properties and metadata that can be set on the filter nodes
themselves.
- The default linking policy now reads some more target.*
properties from nodes, which allows fine-tuning some aspects
of their linking behaviour, such as whether they are allowed
to be re-linked or whether an error should be sent to the
client if they cannot be linked.
- Some state files have been renamed and some have changed
format to use JSON for storing complex values, such as
arrays. This may cause some of the old state to be lost on
upgrade, as there is no transition path implemented.
- The libcamera and V4L2 monitors have a "device deduplication"
logic built-in, which means that for each physical camera
device, only one node will be created, either from libcamera
or V4L2, depending on which one is considered better for the
device. This is mainly to avoid having multiple nodes for the
same camera device, which can cause confusion when looking at
the list of available cameras in applications.
- Bump apiver to 0.5
- Rewrite split-config-file.py to work with the new config
subsystem
- Remove patch which isn't applying anymore and whose fix is
now handled by the split-config-file.py script:
* fix-bsc1219411.patch
-------------------------------------------------------------------
Mon Feb 5 06:46:58 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>

View File

@ -1,4 +1,4 @@
name: wireplumber
version: 0.4.17
mtime: 1701626719
commit: d3eb77b292655cef333a8f4cab4e861415bc37c2
version: 0.5.6
mtime: 1725559151
commit: 141b2d5d3f793e20f94421c554d8d9c51143ce0d

View File

@ -1,7 +1,7 @@
#
# spec file for package wireplumber
#
# Copyright (c) 2022 SUSE LLC
# Copyright (c) 2024 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,13 @@
#
%define pipewire_minimum_version 0.3.68
%define apiver 0.4
%define apiver_str 0_4
%define pipewire_minimum_version 1.0.2
%define apiver 0.5
%define apiver_str 0_5
%define sover 0
%define libwireplumber libwireplumber-%{apiver_str}-%{sover}
Name: wireplumber
Version: 0.4.17
Version: 0.5.6
Release: 0
Summary: Session / policy manager implementation for PipeWire
License: MIT
@ -30,8 +30,6 @@ 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
@ -55,6 +53,9 @@ BuildRequires: pkgconfig(libpipewire-0.3) >= %{pipewire_minimum_version}
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(lua)
BuildRequires: pkgconfig(systemd)
BuildRequires: python3-Sphinx
BuildRequires: python3-sphinx_rtd_theme
BuildRequires: python3-breathe
#!BuildIgnore: pipewire-session-manager
# Setup ALSA devices if PipeWire handles PulseAudio or JACK connections.
Requires: (%{name}-audio if (pipewire-pulseaudio or pipewire-jack))
@ -64,7 +65,7 @@ Provides: pipewire-session-manager
BuildRequires: gcc9
BuildRequires: gcc9-c++
%else
BuildRequires: gcc-c++
BuildRequires: c++_compiler
%endif
%{?systemd_ordering}
@ -77,8 +78,17 @@ external tools for managing PipeWire.
%lang_package
%package doc
Summary: Wireplumber Session / policy manager documentation
Group: Development/Libraries/C and C++
BuildArch: noarch
%description doc
This package contains documentation for the WirePlumber
session/policy manager for PipeWire.
%package audio
Summary: Session / policy manager implementation for PipeWire (audio support)
Summary: Enable audio support in PipeWire / WirePlumber
Group: Development/Libraries/C and C++
Requires: %{libwireplumber} = %{version}
Requires: %{name} = %{version}
@ -140,6 +150,7 @@ Group: System/Shells
Requires: %{name} = %{version}
Requires: zsh
Supplements: (wireplumber and zsh)
BuildArch: noarch
%description zsh-completion
Optional dependency offering zsh completion for various wpctl parameters.
@ -147,17 +158,16 @@ Optional dependency offering zsh completion for various wpctl parameters.
%prep
%autosetup -p1
pushd src/config/main.lua.d
pushd src/config
python3 %{SOURCE1}
rm 90-enable-all.lua
popd
%build
%if %{pkg_vcmp gcc < 8}
%if 0%{?suse_version} <= 1500
export CC=gcc-9
export CXX=g++-9
%endif
%meson -Ddoc=disabled \
%meson -Ddoc=enabled \
-Dsystem-lua=true \
-Delogind=disabled
%meson_build
@ -216,31 +226,35 @@ fi
%{_bindir}/wpctl
%{_bindir}/wpexec
%dir %{_libdir}/wireplumber-%{apiver}
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-dbus-connection.so
%{_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-log-settings.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-settings.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
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-standard-event-source.so
%{_userunitdir}/wireplumber.service
%{_userunitdir}/wireplumber@.service
%dir %{_datadir}/doc/wireplumber
%dir %{_datadir}/doc/wireplumber/examples
%{_datadir}/doc/wireplumber/examples/wireplumber.conf.d
%{_datadir}/wireplumber
%exclude %{_datadir}/wireplumber/main.lua.d/90-2-1-enable-alsa.lua
%exclude %{_datadir}/wireplumber/bluetooth.lua.d/90-enable-all.lua
%exclude %{_datadir}/wireplumber/wireplumber.conf.d/00-device-monitors.conf
%exclude %{_datadir}/wireplumber/wireplumber.conf.d/01-require-audio-in-main-profile.conf
%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
%{_datadir}/wireplumber/wireplumber.conf.d/00-device-monitors.conf
%{_datadir}/wireplumber/wireplumber.conf.d/01-require-audio-in-main-profile.conf
%files devel
%{_includedir}/wireplumber-%{apiver}
@ -248,6 +262,10 @@ fi
%{_libdir}/pkgconfig/wireplumber-%{apiver}.pc
%{_datadir}/gir-1.0/Wp-%{apiver}.gir
%files doc
%{_datadir}/doc/wireplumber/html/
%exclude %{_datadir}/doc/wireplumber/examples
%files -n typelib-1_0-Wp-%{apiver_str}
%{_libdir}/girepository-1.0/Wp-%{apiver}.typelib