Accepting request 939142 from multimedia:libs

New package wireplumber, replacing pipewire-media-session

OBS-URL: https://build.opensuse.org/request/show/939142
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/wireplumber?expand=0&rev=1
This commit is contained in:
Dominique Leuenberger 2021-12-12 20:27:27 +00:00 committed by Git OBS Bridge
parent 269067e7db
commit 1518852b8c
11 changed files with 158 additions and 430 deletions

View File

@ -0,0 +1,46 @@
From f4546a18e871537be698916178b40091a4a0b377 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri, 12 Nov 2021 11:19:54 +1000
Subject: [PATCH] m-reserve-device: replace the hash table key on new insert
We're using the WpReserveDevice's name as key in the hash table, so we
must update the key as well when we replace an item in the hashtable -
the old device (and its name) will be released.
The side-effect of this is that the *third* device with an identical
name will no longer replace the previous device. This results in the
following sequence:
- dev1 added: name Audio0
- dev1 requests name owner Audio0
- dev2 added: name Audio0
- replace dev1 in the hashtable
- dev1 emits "release" signal
- dev1 unowns the Audio0 name
- dev2 requests name owner Audio0
- dev3 added: name Audio0
- adds to the hashtable because the existing key is now undefined
- dev3 requests name owner Audio0
- error, you cannot request ownership for the same name twice
Fixes #93
---
modules/module-reserve-device/plugin.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules/module-reserve-device/plugin.c b/modules/module-reserve-device/plugin.c
index d8e4e092..68df6ee8 100644
--- a/modules/module-reserve-device/plugin.c
+++ b/modules/module-reserve-device/plugin.c
@@ -221,7 +221,7 @@ wp_reserve_device_plugin_create_reservation (WpReserveDevicePlugin *self,
NULL);
/* use rd->name to avoid copying @em name again */
- g_hash_table_insert (self->reserve_devices, rd->name, rd);
+ g_hash_table_replace (self->reserve_devices, rd->name, rd);
return g_object_ref (rd);
}
--
GitLab

View File

@ -0,0 +1,34 @@
From 83041b0ce277c95afaf1824f525ea0bec516f03f Mon Sep 17 00:00:00 2001
From: Wim Taymans <wtaymans@redhat.com>
Date: Thu, 18 Nov 2021 15:23:23 +0100
Subject: [PATCH] policy-node: wait for nodes when we become unlinked
If we were linked before but our node is removed, wait until a new node
becomes available instead of failing.
This fixes an issue where there is only 1 sink available and the card
profile is toggeled between pro and stereo. After the profile is
toggled, the sink is removed and the node would be killed with an error
because there is no fallback sink. The fix is similar to the
pipewire-media-session logic.
---
src/scripts/policy-node.lua | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/scripts/policy-node.lua b/src/scripts/policy-node.lua
index 5029d1b3..445b1a7b 100644
--- a/src/scripts/policy-node.lua
+++ b/src/scripts/policy-node.lua
@@ -493,6 +493,9 @@ function handleLinkable (si)
if not reconnect then
Log.info (si, "... destroy node")
node:request_destroy()
+ elseif si_flags[si.id].was_handled then
+ Log.info (si, "... waiting reconnect")
+ return
end
local client_id = node.properties["client.id"]
--
GitLab

View File

@ -3,10 +3,11 @@
<service name="obs_scm" mode="disabled">
<param name="scm">git</param>
<param name="url">https://gitlab.freedesktop.org/pipewire/wireplumber.git</param>
<param name="revision">0.4.11</param>
<param name="changesgenerate">enable</param>
<param name="revision">0.4.5</param>
<param name="versionformat">@PARENT_TAG@</param>
<!--
<param name="revision">master</param>
<param name="versionprefix">0.4.1+git</param>
<param name="versionformat">@PARENT_TAG@+git%cd.%h</param>
-->
</service>

View File

@ -1,4 +1,4 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://gitlab.freedesktop.org/pipewire/wireplumber.git</param>
<param name="changesrevision">3400acd0db95fefdda7595d20466c095902d8997</param></service></servicedata>
<param name="changesrevision">3946457a7942a179c0f61c60de8cb8fc643391dd</param></service></servicedata>

View File

@ -4,33 +4,16 @@ Subject: Reduce the minimum required meson version
With this, we can build wireplumber in SLE 15 SP3/Leap 15.3
which only have meson 0.54
Index: wireplumber-0.4.11/meson.build
Index: wireplumber/meson.build
===================================================================
--- wireplumber-0.4.11.orig/meson.build
+++ wireplumber-0.4.11/meson.build
@@ -1,7 +1,7 @@
project('wireplumber', ['c'],
version : '0.4.11',
--- wireplumber.orig/meson.build
+++ wireplumber/meson.build
@@ -1,3 +1,3 @@
license : 'MIT',
- meson_version : '>= 0.59.0',
- meson_version : '>= 0.56.0',
+ meson_version : '>= 0.54.0',
default_options : [
'warning_level=1',
'buildtype=debugoptimized',
@@ -42,7 +42,11 @@ spa_dep = dependency('libspa-0.2', versi
pipewire_dep = dependency('libpipewire-0.3', version: '>= 0.3.52')
mathlib = cc.find_library('m')
threads_dep = dependency('threads')
-libintl_dep = dependency('intl')
+libintl_dep = dependency('', required: false)
+
+if not cc.has_function('ngettext')
+ libintl_dep = cc.find_library('intl')
+endif
system_lua = get_option('system-lua')
if system_lua
@@ -131,8 +135,8 @@ endif
@@ -123,8 +123,8 @@ endif
conf_uninstalled = configuration_data()
conf_uninstalled.set('MESON', '')

View File

@ -2,20 +2,22 @@
import hashlib
import sys
def sha256_from_data(data):
hash_sha256 = hashlib.sha256()
hash_sha256.update(data)
return hash_sha256.hexdigest()
def md5FromData(data):
hash_md5 = hashlib.md5()
hash_md5.update(data)
return hash_md5.hexdigest()
contents = open('90-enable-all.lua', 'r', encoding='utf-8').read()
sha256sum = sha256_from_data(contents.encode('utf-8'))
expected_sha256sum = 'cb9f05eb3b4959b84e94a67867645130f2bc0aa761eb864d227890aea310ab74'
md5sum = md5FromData(contents.encode('utf-8'))
expected_md5sum = '1317fb5df6ae842fda3ef845f195e084'
if sha256sum != expected_sha256sum:
if md5sum != expected_md5sum:
print('The script has to be updated for new changes in 90-enable-all.lua')
print(f'File sha256sum: {sha256sum}')
print(f'expected sha256sum: {expected_sha256sum}')
print(f'File md5sum: {md5sum}')
print(f'expected md5sum: {expected_md5sum}')
sys.exit(1)
content_sections = contents.split('\n\n')
@ -23,10 +25,10 @@ content_sections = contents.split('\n\n')
sections = ['enable-metadata',
'default-access-policy',
'load-devices',
'track-user-choices-devices',
'track-user-choices-streams',
'track-user-choices',
'link-nodes-by-roles',
'suspend-idle-nodes']
'suspend-idle-nodes',
'device-activation']
if len(content_sections) != len(sections):
print('The script has to be updated for new changes in 90-enable-all.lua')

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9c12a9e7e1749fedf931f5fa6a7596d7ca2c4eaaed3668725cd6ecfe3730f7d8
size 2116620

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:382bc959e713c2d06a53c1b4aa9d3f1fe4f543283f3efca0c90bd0c01256f0e5
size 1745932

View File

@ -1,353 +1,3 @@
-------------------------------------------------------------------
Tue Jul 5 15:13:07 UTC 2022 - Alexei Sorokin <sor.alexei@meowr.ru>
- 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 <sor.alexei@meowr.ru>
- 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 <alarrosa@suse.com>
- 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 <alarrosa@suse.com>
- 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 <alarrosa@suse.com>
- 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 <sor.alexei@meowr.ru>
- 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 <alarrosa@suse.com>
- 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 <alarrosa@suse.com>
- 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 <gmbr3@opensuse.org>
- Use the default lua instead of hardcoding 5.3
-------------------------------------------------------------------
Tue Jan 25 15:08:59 UTC 2022 - Antonio Larrosa <alarrosa@suse.com>
- 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 <alarrosa@suse.com>
- Reformat .changes file to limit lines to 67 chars when possible.
-------------------------------------------------------------------
Sat Jan 8 16:12:57 UTC 2022 - Alexei Sorokin <sor.alexei@meowr.ru>
- 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 <alarrosa@suse.com>
- Remove many build dependencies which aren't really needed
-------------------------------------------------------------------
Sat Dec 11 16:54:56 UTC 2021 - Fabian Vogt <fabian@ritter-vogt.de>
- 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 <alarrosa@suse.com>

View File

@ -1,4 +1,5 @@
name: wireplumber
version: 0.4.11
mtime: 1657027335
commit: 80b3559963f0ad40a7bfa6c23b0098275c0b5ebe
version: 0.4.5
mtime: 1636626925
commit: 3946457a7942a179c0f61c60de8cb8fc643391dd

View File

@ -1,7 +1,7 @@
#
# spec file for package wireplumber
#
# Copyright (c) 2022 SUSE LLC
# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -16,13 +16,12 @@
#
%define pipewire_minimum_version 0.3.52
%define apiver 0.4
%define apiver_str 0_4
%define sover 0
%define libwireplumber libwireplumber-%{apiver_str}-%{sover}
Name: wireplumber
Version: 0.4.11
Version: 0.4.5
Release: 0
Summary: Session / policy manager implementation for PipeWire
License: MIT
@ -30,46 +29,59 @@ Group: Development/Libraries/C and C++
URL: https://gitlab.freedesktop.org/pipewire/wireplumber
Source0: wireplumber-%{version}.tar.xz
Source1: split-config-file.py
# PATCH-FIX-OPENSUSE reduce-meson-required-version.patch
Patch0: reduce-meson-required-version.patch
# docs
BuildRequires: doxygen
BuildRequires: graphviz
# /docs
Patch0: 0001-m-reserve-device-replace-the-hash-table-key-on-new-insert.patch
Patch1: 0002-policy-node-wait-for-nodes-when-we-become-unlinked.patch
Patch100: reduce-meson-required-version.patch
BuildRequires: cmake
BuildRequires: doxygen
BuildRequires: fdupes
%if 0%{?sle_version} == 150300
BuildRequires: graphviz
BuildRequires: meson >= 0.54.0
%else
BuildRequires: meson >= 0.59.0
%endif
BuildRequires: pipewire >= %{pipewire_minimum_version}
BuildRequires: pipewire-spa-plugins-0_2 >= %{pipewire_minimum_version}
BuildRequires: pipewire >= 0.3.32
#!BuildIgnore: pipewire-session-manager
BuildRequires: pipewire-spa-plugins-0_2
BuildRequires: pkgconfig
BuildRequires: python3-base
BuildRequires: python3-lxml
BuildRequires: xmltoman
BuildRequires: pkgconfig(lua5.3)
BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(bluez)
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(gio-2.0)
BuildRequires: pkgconfig(gio-unix-2.0)
BuildRequires: pkgconfig(glib-2.0) >= 2.62.0
BuildRequires: pkgconfig(gmodule-2.0)
BuildRequires: pkgconfig(gobject-2.0) >= 2.62
BuildRequires: pkgconfig(gobject-introspection-1.0)
BuildRequires: pkgconfig(libpipewire-0.3) >= %{pipewire_minimum_version}
BuildRequires: pkgconfig(gstreamer-1.0)
BuildRequires: pkgconfig(gstreamer-allocators-1.0)
BuildRequires: pkgconfig(gstreamer-audio-1.0)
BuildRequires: pkgconfig(gstreamer-plugins-base-1.0)
BuildRequires: pkgconfig(gstreamer-video-1.0)
BuildRequires: pkgconfig(jack) >= 1.9.10
BuildRequires: pkgconfig(libavcodec)
BuildRequires: pkgconfig(libavfilter)
BuildRequires: pkgconfig(libavformat)
BuildRequires: pkgconfig(libpipewire-0.3) >= 0.3.32
BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(lua)
BuildRequires: pkgconfig(libudev)
BuildRequires: pkgconfig(libva)
BuildRequires: pkgconfig(sbc)
BuildRequires: pkgconfig(sdl2)
BuildRequires: pkgconfig(sndfile)
BuildRequires: pkgconfig(systemd)
#!BuildIgnore: pipewire-session-manager
# Setup ALSA devices if pipewire handles pulseaudio connections.
Requires: (%{name}-audio if pipewire-pulseaudio)
Requires: pipewire >= %{pipewire_minimum_version}
Provides: pipewire-session-manager
BuildRequires: pkgconfig(vulkan)
BuildRequires: pkgconfig(x11)
BuildRequires: python3-base
BuildRequires: python3-lxml
Requires: pipewire >= 0.3.32
%if 0%{?suse_version} <= 1500
BuildRequires: gcc9
BuildRequires: gcc9-c++
%else
BuildRequires: gcc-c++
%endif
Provides: pipewire-session-manager
%description
WirePlumber is a modular session / policy manager for PipeWire and
@ -77,16 +89,14 @@ a GObject-based high-level library that wraps PipeWire's API,
providing convenience for writing the daemon's modules as well as
external tools for managing PipeWire.
%lang_package
%package audio
Summary: Session / policy manager implementation for PipeWire (audio support)
Group: Development/Libraries/C and C++
Requires: %{libwireplumber} = %{version}
Requires: %{name} = %{version}
Recommends: pipewire-pulseaudio
Requires: %{libwireplumber} = %{version}
Conflicts: pulseaudio
BuildArch: noarch
Recommends: pipewire-pulseaudio
Supplements: (pipewire-pulseaudio and wireplumber)
%description audio
WirePlumber is a modular session / policy manager for PipeWire and
@ -99,8 +109,8 @@ This package enables the use of alsa devices in PipeWire.
%package devel
Summary: Session / policy manager implementation for PipeWire
Group: Development/Libraries/C and C++
Requires: %{libwireplumber} = %{version}
Requires: %{name} = %{version}
Requires: %{libwireplumber} = %{version}
%description devel
WirePlumber is a modular session / policy manager for PipeWire and
@ -136,13 +146,15 @@ This package provides the GObject Introspection bindings for
the wireplumber shared library.
%prep
%autosetup -N
%if 0%{?sle_version} == 150300
%setup -q
%patch0 -p1
%patch1 -p1
%if %{pkg_vcmp meson < 0.56.0}
%patch100 -p1
%endif
pushd src/config/main.lua.d
python3 %{SOURCE1}
python3 %{SOURCE1}
rm 90-enable-all.lua
popd
@ -158,7 +170,6 @@ export CC=gcc-9
%install
%meson_install
%fdupes -s %{buildroot}/%{_datadir}/doc/pipewire/html
%find_lang %{name} %{?no_lang_C}
%ifnarch %ix86 ppc64
%check
@ -189,6 +200,7 @@ export XDG_RUNTIME_DIR=/tmp
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-default-nodes-api.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-default-nodes.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-default-profile.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-device-activation.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-file-monitor-api.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-logind.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-lua-scripting.so
@ -196,6 +208,7 @@ export XDG_RUNTIME_DIR=/tmp
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-mixer-api.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-portal-permissionstore.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-reserve-device.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-route-settings-api.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-si-audio-adapter.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-si-audio-endpoint.so
%{_libdir}/wireplumber-%{apiver}/libwireplumber-module-si-node.so
@ -205,8 +218,6 @@ export XDG_RUNTIME_DIR=/tmp
%{_datadir}/wireplumber
%exclude %{_datadir}/wireplumber/main.lua.d/90-2-1-enable-alsa.lua
%files lang -f %{name}.lang
%files audio
%{_datadir}/wireplumber/main.lua.d/90-2-1-enable-alsa.lua