Sync from SUSE:SLFO:Main wireplumber revision 460fe165f65fbf95f7f4b2508530553c

This commit is contained in:
Adrian Schröter 2024-05-04 01:54:37 +02:00
commit 86336815f2
8 changed files with 2057 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -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

19
_service Normal file
View File

@ -0,0 +1,19 @@
<?xml version="1.0"?>
<services>
<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="versionformat">@PARENT_TAG@</param>
<!--
<param name="revision">master</param>
<param name="versionformat">@PARENT_TAG@+git%cd.%h</param>
-->
</service>
<service name="tar" mode="buildtime"/>
<service name="recompress" mode="buildtime">
<param name="file">*.tar</param>
<param name="compression">xz</param>
</service>
<service name="set_version" mode="manual" />
</services>

28
fix-bsc1219411.patch Normal file
View File

@ -0,0 +1,28 @@
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()

48
split-config-file.py Normal file
View File

@ -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)

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

Binary file not shown.

1669
wireplumber.changes Normal file

File diff suppressed because it is too large Load Diff

4
wireplumber.obsinfo Normal file
View File

@ -0,0 +1,4 @@
name: wireplumber
version: 0.4.17
mtime: 1701626719
commit: d3eb77b292655cef333a8f4cab4e861415bc37c2

263
wireplumber.spec Normal file
View File

@ -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