Accepting request 959721 from home:XRevan86

- Update to version 0.3.48.

OBS-URL: https://build.opensuse.org/request/show/959721
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/pipewire?expand=0&rev=50
This commit is contained in:
Antonio Larrosa 2022-03-10 16:29:30 +00:00 committed by Git OBS Bridge
parent b8474363d8
commit f1b6402a59
9 changed files with 202 additions and 346 deletions

View File

@ -1,116 +0,0 @@
From 16f63a3c8fa227625bade5a9edea22354b347d18 Mon Sep 17 00:00:00 2001
From: Barnabás Pőcze <pobrn@protonmail.com>
Date: Fri, 18 Feb 2022 18:36:36 +0100
Subject: [PATCH] Revert "loop: remove destroy list"
This reverts commit c474846c42967c44db069a23b76a29da6f496f33.
In addition, `s->loop` is also checked before dispatching a source.
The destroy list is needed in the presence of threads. The
issue is that a source may be destroyed between `epoll_wait()`
returning and thread loop lock being acquired. If this
source is active, then a use-after-free will be triggered
when the thread loop acquires the lock and starts dispatching
the sources.
thread 1 thread 2
---------- ----------
loop_iterate
spa_loop_control_hook_before
// release lock
pw_thread_loop_lock
spa_system_pollfd_wait
// assume it returns with source A
pw_loop_destroy_source(..., A)
// frees storage of A
pw_thread_loop_unlock
spa_loop_control_hook_after
// acquire the lock
for (...) {
struct spa_source *s = ep[i].data;
s->rmask = ep[i].events;
// use-after-free if `s` refers to
// the previously freed `A`
Fixes #2147
---
spa/plugins/support/loop.c | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/spa/plugins/support/loop.c b/spa/plugins/support/loop.c
index 0588ce770..04739eb2a 100644
--- a/spa/plugins/support/loop.c
+++ b/spa/plugins/support/loop.c
@@ -75,6 +75,7 @@ struct impl {
struct spa_system *system;
struct spa_list source_list;
+ struct spa_list destroy_list;
struct spa_hook_list hooks_list;
int poll_fd;
@@ -325,6 +326,14 @@ static void loop_leave(void *object)
impl->thread = 0;
}
+static inline void process_destroy(struct impl *impl)
+{
+ struct source_impl *source, *tmp;
+ spa_list_for_each_safe(source, tmp, &impl->destroy_list, link)
+ free(source);
+ spa_list_init(&impl->destroy_list);
+}
+
static int loop_iterate(void *object, int timeout)
{
struct impl *impl = object;
@@ -354,11 +363,14 @@ static int loop_iterate(void *object, int timeout)
}
for (i = 0; i < nfds; i++) {
struct spa_source *s = ep[i].data;
- if (SPA_LIKELY(s && s->rmask)) {
+ if (SPA_LIKELY(s && s->rmask && s->loop)) {
s->priv = NULL;
s->func(s);
}
}
+ if (SPA_UNLIKELY(!spa_list_is_empty(&impl->destroy_list)))
+ process_destroy(impl);
+
return nfds;
}
@@ -712,7 +724,7 @@ static void loop_destroy_source(void *object, struct spa_source *source)
spa_system_close(impl->impl->system, source->fd);
source->fd = -1;
}
- free(source);
+ spa_list_insert(&impl->impl->destroy_list, &impl->link);
}
static const struct spa_loop_methods impl_loop = {
@@ -783,6 +795,8 @@ static int impl_clear(struct spa_handle *handle)
spa_list_consume(source, &impl->source_list, link)
loop_destroy_source(impl, &source->source);
+ process_destroy(impl);
+
spa_system_close(impl->system, impl->ack_fd);
spa_system_close(impl->system, impl->poll_fd);
@@ -844,6 +858,7 @@ impl_init(const struct spa_handle_factory *factory,
impl->poll_fd = res;
spa_list_init(&impl->source_list);
+ spa_list_init(&impl->destroy_list);
spa_hook_list_init(&impl->hooks_list);
impl->buffer_data = SPA_PTR_ALIGN(impl->buffer_mem, MAX_ALIGN, uint8_t);
--
GitLab

View File

@ -1,98 +0,0 @@
From d7793501fd012de37fcc8bf09003c60bc4624341 Mon Sep 17 00:00:00 2001
From: Wim Taymans <wtaymans@redhat.com>
Date: Sun, 20 Feb 2022 21:34:53 +0100
Subject: [PATCH] pulse-server: free pending sample reply
If the sample finished playing before we finished the roundtrip to
get the sink_index, it will be destroyed. When the roundtrip completes,
it will try to use invalid memoryy and crash.
Make sure we destroy all pending replies before destroying the sample
to avoid this problem.
Fixes #2151
---
src/modules/module-protocol-pulse/operation.c | 10 ++++++++++
src/modules/module-protocol-pulse/operation.h | 1 +
src/modules/module-protocol-pulse/pending-sample.c | 5 +++++
src/modules/module-protocol-pulse/pulse-server.c | 4 ++++
4 files changed, 20 insertions(+)
diff --git a/src/modules/module-protocol-pulse/operation.c b/src/modules/module-protocol-pulse/operation.c
index e0e67b374..b1e0eb08d 100644
--- a/src/modules/module-protocol-pulse/operation.c
+++ b/src/modules/module-protocol-pulse/operation.c
@@ -66,6 +66,16 @@ void operation_free(struct operation *o)
free(o);
}
+struct operation *operation_find(struct client *client, uint32_t tag)
+{
+ struct operation *o;
+ spa_list_for_each(o, &client->operations, link) {
+ if (o->tag == tag)
+ return o;
+ }
+ return NULL;
+}
+
void operation_complete(struct operation *o)
{
struct client *client = o->client;
diff --git a/src/modules/module-protocol-pulse/operation.h b/src/modules/module-protocol-pulse/operation.h
index d282ee5e5..1fa07cc7b 100644
--- a/src/modules/module-protocol-pulse/operation.h
+++ b/src/modules/module-protocol-pulse/operation.h
@@ -43,6 +43,7 @@ int operation_new(struct client *client, uint32_t tag);
int operation_new_cb(struct client *client, uint32_t tag,
void (*callback) (void *data, struct client *client, uint32_t tag),
void *data);
+struct operation *operation_find(struct client *client, uint32_t tag);
void operation_free(struct operation *o);
void operation_complete(struct operation *o);
diff --git a/src/modules/module-protocol-pulse/pending-sample.c b/src/modules/module-protocol-pulse/pending-sample.c
index 6e5d04fbb..399fc3b54 100644
--- a/src/modules/module-protocol-pulse/pending-sample.c
+++ b/src/modules/module-protocol-pulse/pending-sample.c
@@ -29,6 +29,7 @@
#include "client.h"
#include "internal.h"
#include "log.h"
+#include "operation.h"
#include "pending-sample.h"
#include "sample-play.h"
@@ -36,10 +37,14 @@ void pending_sample_free(struct pending_sample *ps)
{
struct client * const client = ps->client;
struct impl * const impl = client->impl;
+ struct operation *o;
spa_list_remove(&ps->link);
spa_hook_remove(&ps->listener);
pw_work_queue_cancel(impl->work_queue, ps, SPA_ID_INVALID);
+ if ((o = operation_find(client, ps->tag)) != NULL)
+ operation_free(o);
+
sample_play_destroy(ps->play);
}
diff --git a/src/modules/module-protocol-pulse/pulse-server.c b/src/modules/module-protocol-pulse/pulse-server.c
index 182c3db99..c035840d1 100644
--- a/src/modules/module-protocol-pulse/pulse-server.c
+++ b/src/modules/module-protocol-pulse/pulse-server.c
@@ -2353,6 +2353,10 @@ static void on_sample_done(void *obj, void *data, int res, uint32_t id)
{
struct pending_sample *ps = obj;
struct client *client = ps->client;
+ struct operation *o;
+
+ if ((o = operation_find(client, ps->tag)) != NULL)
+ operation_complete(o);
pending_sample_free(ps);
client_unref(client);
--
GitLab

View File

@ -3,7 +3,7 @@
<service name="obs_scm" mode="disabled">
<param name="scm">git</param>
<param name="url">https://gitlab.freedesktop.org/pipewire/pipewire.git</param>
<param name="revision">refs/tags/0.3.47</param>
<param name="revision">refs/tags/0.3.48</param>
<param name="versionformat">@PARENT_TAG@</param>
<!-- <param name="revision">master</param>
<param name="versionformat">@PARENT_TAG@+git%cd.%h</param>

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:25443252f58c801acdc80d88e832994971cc3f600f2f20a29cfa9ade389784e7
size 10481677

3
pipewire-0.3.48.obscpio Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5b2d82cf796bb2b112963c1aff1f644eaade6294cd39282ff39e10e0cb7f440f
size 10523661

View File

@ -1,3 +1,78 @@
-------------------------------------------------------------------
Thu Mar 3 11:10:53 UTC 2022 - Alexei Sorokin <sor.alexei@meowr.ru>
- Update to version 0.3.48:
* Highlights
- Fix IEC958 passthrough again.
- Fix pulse-server crashes when playing a sample.
- Support for more a more advanced upmixing algorithm.
- filter-chain now supports arbitrary many ports.
- Fix multichannel support in WINE (with new WirePlumber).
- Many bugfixes and improvements.
* PipeWire
- The work queue is now created in the context so we can fail
early and avoid further error checking in various places.
- Fix a potential use after free with threaded loops.
- The protocol now has a message footer. This is used to pass
around global state such as the last registered object
serial number. This can be used to detect when a client tries
to bind to old (but reused) object ids. This avoids some
races in the session manager but also when binding objects.
- The zero-denormals CPU flag is now not touched anymore unless
explicitly selected by the user. Denormals are avoided in
filter-chain now in software. If the zero-denormals are now
only configured in the data thread. This should fix issues
with luajit.
- Configuration parsing will not actually fail on errors.
- pw-top now correctly clips unicode characters.
- Many places now use a dynamic POD builder to support
arbitrary large property sets.
- pw-stream now support PropInfo parameters so that they can
announce custom properties.
- Serial number are now also set on metadata and
session-manager objects.
* SPA
- audioadapter is now smarter when trying to fixate the format.
It will use the PortConfig format to fill in any wildcards.
This results in the least amount of conversions when the
stream can handle it. It also is part of a fix (also requires
a session manager fix) for WINE multichannel support.
- Fix 5.1 to 2 channels mixing. It was using the volume of the
stereo pair on all channels.
- Fix some weird volume issues when a source is capturing and
channelmixing.
- Add stereo to 7.1 upmixing.
- The channelmix parameters can be changed at runtime now.
- Many improvements to the upmixing algorithms. Rear channels
are now constructed from the ambient sound and can have delay
and phase shift applied to them to improve spacialisation.
The stereo channels can be filtered so that the dialogue is
more concentrated in the centre channel.
* modules
- Module X11 bell received cleanups and improvements.
- The module now has a private method to schedule unload later.
This simplifies cleanup in many modules.
- module-filter-chain now handles arbitrary many ports and
control ports.
- Fix a bug in RAOP where it was reading from the wrong port.
* pulse-server
- Nodes with the DONT_MOVE property should fail with -EINVAL
when they are moved.
- Fix a segfault when playing a sample.
- The _FIX flags in pulse-server also now ignore the configured
sample format, just like pulseaudio does.
- Fix IEC958 passthrough again. It got accidentally broken
since 0.3.45 with a fix for another issue.
- Fix module-null-sink device.description.
* Bluetooth
- Don't try to connect HSP/HFP when no backend is available.
- Drop patches already included upstream:
* 0001-revert-loop-remove-destroy-list.patch
* 0002-pulse-server-free-pending-sample-reply.patch
- Rebase reduce-meson-dependency.patch.
- Enable pulseaudio-setup use on openSUSE Leap 15.4.
- Some spec clean-up.
-------------------------------------------------------------------
Mon Feb 21 12:24:26 UTC 2022 - Alexei Sorokin <sor.alexei@meowr.ru>

View File

@ -1,4 +1,4 @@
name: pipewire
version: 0.3.47
mtime: 1645172864
commit: 2af393889358723a2789caa3c856700b1c968ef0
version: 0.3.48
mtime: 1646303456
commit: 6c4d3a51583f823b789b0de2df1e36d6c2f8dff8

View File

@ -21,39 +21,33 @@
%define apiver_str 0_3
%define spa_ver 0.2
%define spa_ver_str 0_2
%define libpipewire libpipewire-%{apiver_str}-0
%if %{pkg_vcmp pkgconfig(vulkan) >= 1.1}
%define with_vulkan 1
%else
%define with_vulkan 0
%endif
%ifnarch s390 s390x ppc64
%define with_ldacBT 1
%else
%define with_ldacBT 0
%endif
%bcond_with aptx
%if 0%{?suse_version} >= 1550
%bcond_without libcamera
%else
%bcond_with libcamera
%endif
%if 0%{?sle_version} && 0%{?sle_version} < 150400
%bcond_with aac
%else
%bcond_without aac
%endif
%if %{?pkg_vcmp:%{pkg_vcmp meson >= 0.59.0}}%{!?pkg_vcmp:0}
%bcond_without pipewire_jack_devel
%endif
%bcond_with aptx
Name: pipewire
Version: 0.3.47
Version: 0.3.48
Release: 0
Summary: A Multimedia Framework designed to be an audio and video server and more
License: MIT
@ -63,37 +57,18 @@ Source0: %{name}-%{version}.tar.xz
Source99: baselibs.conf
# PATCH-FIX-OPENSUSE reduce-meson-dependency.patch
Patch0: reduce-meson-dependency.patch
# PATCH-FIX-UPSTREAM 0001-revert-loop-remove-destroy-list.patch
Patch1: 0001-revert-loop-remove-destroy-list.patch
# PATCH-FIX-UPSTREAM 0002-pulse-server-free-pending-sample-reply.patch
Patch2: 0002-pulse-server-free-pending-sample-reply.patch
BuildRequires: docutils
BuildRequires: doxygen
BuildRequires: fdupes
%if 0%{?suse_version} <= 1500
BuildRequires: gcc9
BuildRequires: gcc9-c++
%endif
BuildRequires: gcc-c++
BuildRequires: graphviz
%if 0%{?sle_version} == 150300
BuildRequires: meson >= 0.54.0
%else
BuildRequires: meson >= 0.59.0
%endif
BuildRequires: pkgconfig
BuildRequires: readline-devel
BuildRequires: systemd-rpm-macros
BuildRequires: pkgconfig(alsa) >= 1.1.7
BuildRequires: pkgconfig(avahi-client)
BuildRequires: pkgconfig(bluez)
%if %{with libcamera}
BuildRequires: pkgconfig(libcamera) >= 0.0.0+g3381.1db1e31e
%endif
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(libcap)
%if %{with aac}
BuildRequires: pkgconfig(fdk-aac)
%endif
BuildRequires: pkgconfig(gio-2.0)
BuildRequires: pkgconfig(gio-unix-2.0)
BuildRequires: pkgconfig(glib-2.0) >= 2.32.0
@ -105,19 +80,11 @@ 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
BuildConflicts: pipewire-libjack-%{apiver_str}-devel
%if %{with_ldacBT}
BuildRequires: pkgconfig(ldacBT-abr)
BuildRequires: pkgconfig(ldacBT-enc)
%endif
BuildRequires: pkgconfig(libavcodec)
BuildRequires: pkgconfig(libavfilter)
BuildRequires: pkgconfig(libavformat)
%if %{with aptx}
BuildRequires: pkgconfig(libfreeaptx)
%endif
BuildRequires: readline-devel
BuildRequires: pkgconfig(libcanberra)
BuildRequires: pkgconfig(libcap)
BuildRequires: pkgconfig(libdrm)
BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(libsystemd)
@ -133,6 +100,7 @@ BuildRequires: pkgconfig(systemd)
BuildRequires: pkgconfig(vulkan)
BuildRequires: pkgconfig(webrtc-audio-processing)
BuildRequires: pkgconfig(x11)
BuildConflicts: pipewire-libjack-%{apiver_str}-devel
Requires: %{libpipewire} = %{version}
Requires: %{name}-modules-%{apiver_str} = %{version}
Requires: %{name}-session-manager
@ -141,6 +109,31 @@ Requires: %{name}-spa-tools = %{version}
Requires: %{name}-tools = %{version}
Suggests: wireplumber
%{?systemd_ordering}
%if 0%{?suse_version} <= 1500
BuildRequires: gcc9
BuildRequires: gcc9-c++
%endif
%if 0%{?sle_version} == 150300
BuildRequires: meson >= 0.54.0
%else
BuildRequires: meson >= 0.59.0
%endif
%if %{with libcamera}
BuildRequires: pkgconfig(libcamera) >= 0.0.0+g3381.1db1e31e
%endif
%if %{with aac}
BuildRequires: pkgconfig(fdk-aac)
%endif
%if %{with_ldacBT}
BuildRequires: pkgconfig(ldacBT-abr)
BuildRequires: pkgconfig(ldacBT-enc)
%endif
%if %{with aptx}
BuildRequires: pkgconfig(libfreeaptx)
%endif
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150400
BuildRequires: pkgconfig(xfixes)
%endif
%description
PipeWire is a server and user space API to deal with multimedia pipelines.
@ -156,9 +149,9 @@ Some of its features include:
%package -n %{libpipewire}
Summary: A Multimedia Framework designed to be an audio and video server and more
Group: System/Libraries
Recommends: pipewire >= %{version}
Requires: pipewire-modules-%{apiver_str} >= %{version}
Requires: pipewire-spa-plugins-%{spa_ver_str} >= %{version}
Recommends: pipewire >= %{version}
%description -n %{libpipewire}
PipeWire is a server and user space API to deal with multimedia pipelines.
@ -301,8 +294,8 @@ This package contains documentation for the PipeWire media server.
%package alsa
Summary: PipeWire media server ALSA support
Group: Development/Libraries/C and C++
Recommends: %{name} >= %{version}-%{release}
Requires: %{libpipewire} >= %{version}-%{release}
Recommends: %{name} >= %{version}-%{release}
%description alsa
This package contains an ALSA plugin for the PipeWire media server.
@ -312,15 +305,14 @@ Summary: PipeWire PulseAudio implementation
Group: Development/Libraries/C and C++
Requires: %{libpipewire} >= %{version}-%{release}
Requires: %{name} >= %{version}-%{release}
Conflicts: pulseaudio
%if 0%{suse_version} >= 1550
Requires(post): pulseaudio-setup
%endif
Recommends: alsa-plugins-pulse
Conflicts: pulseaudio
Conflicts: pulseaudio-daemon
# Virtual Provides to support swapping between PipeWire-PA and PA
Provides: pulseaudio-daemon
Conflicts: pulseaudio-daemon
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150400
Requires(post): pulseaudio-setup
%endif
#Provides: pulseaudio-module-bluetooth
#Provides: pulseaudio-module-jack
@ -382,6 +374,9 @@ export CXX=g++-9
-Djack-devel=true \
%else
-Djack-devel=false \
%endif
%if 0%{?suse_version} < 1550 && 0%{?sle_version} < 150400
-Dx11-xfixes=disabled \
%endif
-Dsession-managers="[]" \
%{nil}
@ -434,9 +429,9 @@ fi
# for boo#1186561 has never been executed, we need to execute it now
if [ ! -L %{_sysconfdir}/systemd/user/sockets.target.wants/pipewire.socket \
-a ! -f %{_localstatedir}/lib/pipewire/pipewire_post_workaround \
-a -x /usr/bin/systemctl ]; then
-a -x %{_bindir}/systemctl ]; then
for service in pipewire.service pipewire.socket ; do
/usr/bin/systemctl --global preset "$service" || :
%{_bindir}/systemctl --global preset "$service" || :
done
mkdir -p %{_localstatedir}/lib/pipewire
@ -467,9 +462,9 @@ fi
# for boo#1186561 has never been executed, we need to execute it now
if [ ! -L %{_sysconfdir}/systemd/user/sockets.target.wants/pipewire-pulse.socket \
-a ! -f %{_localstatedir}/lib/pipewire/pipewire-pulseaudio_post_workaround \
-a -x /usr/bin/systemctl ]; then
-a -x %{_bindir}/systemctl ]; then
for service in pipewire-pulse.service pipewire-pulse.socket ; do
/usr/bin/systemctl --global preset "$service" || :
%{_bindir}/systemctl --global preset "$service" || :
done
mkdir -p %{_localstatedir}/lib/pipewire
cat << EOF > %{_localstatedir}/lib/pipewire/pipewire-pulseaudio_post_workaround
@ -483,7 +478,7 @@ if [ ! -L %{_sysconfdir}/systemd/user/sockets.target.wants/pipewire-pulse.socket
# https://bugzilla.opensuse.org/show_bug.cgi?id=1186561
EOF
fi
%if 0%{suse_version} >= 1550
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150400
# Update the /etc/profile.d/pulseaudio.* files
setup-pulseaudio --auto > /dev/null
%endif
@ -514,8 +509,8 @@ fi
%{_bindir}/pipewire
%{_userunitdir}/pipewire.service
%{_userunitdir}/pipewire.socket
%{_mandir}/man1/pipewire.1%{ext_man}
%{_mandir}/man5/pipewire.conf.5%{ext_man}
%{_mandir}/man1/pipewire.1%{?ext_man}
%{_mandir}/man5/pipewire.conf.5%{?ext_man}
%dir %{_datadir}/pipewire/
%{_datadir}/pipewire/pipewire.conf
%dir %{_datadir}/pipewire/filter-chain/
@ -579,8 +574,8 @@ fi
%ghost %{_sysconfdir}/alternatives/pw-jack.1%{ext_man}
%{_bindir}/pw-jack-%{apiver}
%{_bindir}/pw-jack
%{_mandir}/man1/pw-jack-%{apiver}.1%{ext_man}
%{_mandir}/man1/pw-jack.1%{ext_man}
%{_mandir}/man1/pw-jack-%{apiver}.1%{?ext_man}
%{_mandir}/man1/pw-jack.1%{?ext_man}
%{_datadir}/pipewire/jack.conf
%config %{_sysconfdir}/ld.so.conf.d/pipewire-jack-%{_arch}.conf
@ -615,13 +610,13 @@ fi
%{_bindir}/pw-reserve
%{_bindir}/pw-top
%{_bindir}/pw-v4l2
%{_mandir}/man1/pw-cat.1%{ext_man}
%{_mandir}/man1/pw-cli.1%{ext_man}
%{_mandir}/man1/pw-dot.1%{ext_man}
%{_mandir}/man1/pw-metadata.1%{ext_man}
%{_mandir}/man1/pw-mididump.1%{ext_man}
%{_mandir}/man1/pw-mon.1%{ext_man}
%{_mandir}/man1/pw-profiler.1%{ext_man}
%{_mandir}/man1/pw-cat.1%{?ext_man}
%{_mandir}/man1/pw-cli.1%{?ext_man}
%{_mandir}/man1/pw-dot.1%{?ext_man}
%{_mandir}/man1/pw-metadata.1%{?ext_man}
%{_mandir}/man1/pw-mididump.1%{?ext_man}
%{_mandir}/man1/pw-mon.1%{?ext_man}
%{_mandir}/man1/pw-profiler.1%{?ext_man}
%files spa-tools
%{_bindir}/spa-inspect
@ -643,7 +638,7 @@ fi
%files pulseaudio
%{_bindir}/pipewire-pulse
%{_mandir}/man1/pipewire-pulse.1%{ext_man}
%{_mandir}/man1/pipewire-pulse.1%{?ext_man}
%{_userunitdir}/pipewire-pulse.*
%{_datadir}/pipewire/pipewire-pulse.conf
%ghost %{_localstatedir}/lib/pipewire/pipewire-pulseaudio_post_workaround

View File

@ -1,17 +1,17 @@
Index: pipewire-0.3.47/meson.build
Index: pipewire-0.3.48/meson.build
===================================================================
--- pipewire-0.3.46.orig/meson.build
+++ pipewire-0.3.47/meson.build
--- pipewire-0.3.48.orig/meson.build
+++ pipewire-0.3.48/meson.build
@@ -1,7 +1,7 @@
project('pipewire', ['c' ],
version : '0.3.47',
version : '0.3.48',
license : [ 'MIT', 'LGPL-2.1-or-later', 'GPL-2.0-only' ],
- meson_version : '>= 0.59.0',
+ meson_version : '>= 0.54.0',
default_options : [ 'warning_level=3',
'c_std=gnu99',
'cpp_std=c++17',
@@ -247,8 +247,8 @@ includes_inc = include_directories('incl
@@ -235,8 +235,8 @@ includes_inc = include_directories('incl
pipewire_inc = include_directories('src')
makedata = configuration_data()
@ -22,7 +22,7 @@ Index: pipewire-0.3.47/meson.build
makedata.set('VERSION', pipewire_version)
if version_arr.length() == 4
makedata.set('TAG', 'HEAD')
@@ -336,7 +336,7 @@ endforeach
@@ -327,7 +327,7 @@ endforeach
gst_dp_found = gst_dep.length() > 0
summary({'gstreamer-device-provider': gst_dp_found}, bool_yn: true, section: 'Backend')
@ -31,7 +31,7 @@ Index: pipewire-0.3.47/meson.build
webrtc_dep = dependency('webrtc-audio-processing',
version : ['>= 0.2', '< 1.0'],
@@ -382,10 +382,10 @@ cdata.set('HAVE_LILV', lilv_lib.found())
@@ -389,10 +389,10 @@ endforeach
installed_tests_metadir = pipewire_datadir / 'installed-tests' / pipewire_name
installed_tests_execdir = pipewire_libexecdir / 'installed-tests' / pipewire_name
@ -44,7 +44,7 @@ Index: pipewire-0.3.47/meson.build
gstack = find_program('gstack', required : false)
cdata.set('HAVE_GSTACK', gstack.found())
endif
@@ -394,17 +394,17 @@ subdir('po')
@@ -401,17 +401,17 @@ subdir('po')
subdir('spa')
subdir('src')
@ -65,7 +65,7 @@ Index: pipewire-0.3.47/meson.build
subdir('pipewire-v4l2')
endif
@@ -415,7 +415,7 @@ if alsa_dep.found()
@@ -422,7 +422,7 @@ if alsa_dep.found()
endif
generate_manpages = false
@ -74,7 +74,7 @@ Index: pipewire-0.3.47/meson.build
rst2man = find_program('rst2man', required: false)
if not rst2man.found()
rst2man = find_program('rst2man.py', required: get_option('man'))
@@ -436,20 +436,20 @@ endif
@@ -443,20 +443,20 @@ endif
setenv = find_program('pw-uninstalled.sh')
run_target('pw-uninstalled',
command : [setenv,
@ -102,7 +102,7 @@ Index: pipewire-0.3.47/meson.build
devenv.set('GST_PLUGIN_PATH', builddir / 'src'/ 'gst')
@@ -461,4 +461,6 @@ devenv.set('LD_LIBRARY_PATH', builddir /
@@ -468,4 +468,6 @@ devenv.set('LD_LIBRARY_PATH', builddir /
devenv.set('PW_UNINSTALLED', '1')
@ -110,10 +110,10 @@ Index: pipewire-0.3.47/meson.build
+if meson.version().version_compare('>=0.58.0')
+ meson.add_devenv(devenv)
+endif
Index: pipewire-0.3.47/spa/plugins/audioconvert/meson.build
Index: pipewire-0.3.48/spa/plugins/audioconvert/meson.build
===================================================================
--- pipewire-0.3.46.orig/spa/plugins/audioconvert/meson.build
+++ pipewire-0.3.47/spa/plugins/audioconvert/meson.build
--- pipewire-0.3.48.orig/spa/plugins/audioconvert/meson.build
+++ pipewire-0.3.48/spa/plugins/audioconvert/meson.build
@@ -140,7 +140,7 @@ foreach a : test_apps
install : installed_tests_enabled,
install_dir : installed_tests_execdir / 'audioconvert'),
@ -132,10 +132,10 @@ Index: pipewire-0.3.47/spa/plugins/audioconvert/meson.build
])
if installed_tests_enabled
Index: pipewire-0.3.47/spa/tests/meson.build
Index: pipewire-0.3.48/spa/tests/meson.build
===================================================================
--- pipewire-0.3.46.orig/spa/tests/meson.build
+++ pipewire-0.3.47/spa/tests/meson.build
--- pipewire-0.3.48.orig/spa/tests/meson.build
+++ pipewire-0.3.48/spa/tests/meson.build
@@ -5,7 +5,7 @@ find = find_program('find', required: fa
summary({'find (for header testing)': find.found()}, bool_yn: true, section: 'Optional programs')
if find.found()
@ -154,10 +154,10 @@ Index: pipewire-0.3.47/spa/tests/meson.build
]
)
Index: pipewire-0.3.47/src/daemon/meson.build
Index: pipewire-0.3.48/src/daemon/meson.build
===================================================================
--- pipewire-0.3.46.orig/src/daemon/meson.build
+++ pipewire-0.3.47/src/daemon/meson.build
--- pipewire-0.3.48.orig/src/daemon/meson.build
+++ pipewire-0.3.48/src/daemon/meson.build
@@ -18,9 +18,9 @@ conf_config.set('pulse_comment', '#')
conf_config_uninstalled = conf_config
@ -179,21 +179,21 @@ Index: pipewire-0.3.47/src/daemon/meson.build
)
#desktop_file = i18n.merge_file(
Index: pipewire-0.3.47/src/daemon/systemd/user/meson.build
Index: pipewire-0.3.48/src/daemon/systemd/user/meson.build
===================================================================
--- pipewire-0.3.46.orig/src/daemon/systemd/user/meson.build
+++ pipewire-0.3.47/src/daemon/systemd/user/meson.build
--- pipewire-0.3.48.orig/src/daemon/systemd/user/meson.build
+++ pipewire-0.3.48/src/daemon/systemd/user/meson.build
@@ -1,4 +1,4 @@
-systemd_user_services_dir = systemd.get_variable('systemduserunitdir', pkgconfig_define : [ 'prefix', prefix])
+#systemd_user_services_dir = systemd.get_variable('systemduserunitdir', pkgconfig_define : [ 'prefix', prefix])
if get_option('systemd-user-unit-dir') != ''
systemd_user_services_dir = get_option('systemd-user-unit-dir')
endif
Index: pipewire-0.3.47/src/modules/meson.build
Index: pipewire-0.3.48/src/modules/meson.build
===================================================================
--- pipewire-0.3.46.orig/src/modules/meson.build
+++ pipewire-0.3.47/src/modules/meson.build
@@ -362,9 +362,9 @@ test('pw-test-protocol-native',
--- pipewire-0.3.48.orig/src/modules/meson.build
+++ pipewire-0.3.48/src/modules/meson.build
@@ -363,9 +363,9 @@ test('pw-test-protocol-native',
install_dir : installed_tests_execdir,
),
env : [
@ -206,10 +206,10 @@ Index: pipewire-0.3.47/src/modules/meson.build
]
)
Index: pipewire-0.3.47/src/tests/meson.build
Index: pipewire-0.3.48/src/tests/meson.build
===================================================================
--- pipewire-0.3.46.orig/src/tests/meson.build
+++ pipewire-0.3.47/src/tests/meson.build
--- pipewire-0.3.48.orig/src/tests/meson.build
+++ pipewire-0.3.48/src/tests/meson.build
@@ -13,9 +13,9 @@ foreach a : test_apps
install : installed_tests_enabled,
install_dir : installed_tests_execdir),
@ -223,10 +223,10 @@ Index: pipewire-0.3.47/src/tests/meson.build
])
if installed_tests_enabled
Index: pipewire-0.3.47/test/meson.build
Index: pipewire-0.3.48/test/meson.build
===================================================================
--- pipewire-0.3.46.orig/test/meson.build
+++ pipewire-0.3.47/test/meson.build
--- pipewire-0.3.48.orig/test/meson.build
+++ pipewire-0.3.48/test/meson.build
@@ -14,8 +14,8 @@ pwtest_deps = [
]
@ -238,10 +238,10 @@ Index: pipewire-0.3.47/test/meson.build
]
pwtest_inc = [
Index: pipewire-0.3.47/doc/meson.build
Index: pipewire-0.3.48/doc/meson.build
===================================================================
--- pipewire-0.3.46.orig/doc/meson.build
+++ pipewire-0.3.47/doc/meson.build
--- pipewire-0.3.48.orig/doc/meson.build
+++ pipewire-0.3.48/doc/meson.build
@@ -1,8 +1,8 @@
doxyfile_conf = configuration_data()
doxyfile_conf.set('PACKAGE_NAME', meson.project_name())
@ -342,10 +342,10 @@ Index: pipewire-0.3.47/doc/meson.build
doxyfile = configure_file(input: 'Doxyfile.in',
output: 'Doxyfile',
Index: pipewire-0.3.47/spa/meson.build
Index: pipewire-0.3.48/spa/meson.build
===================================================================
--- pipewire-0.3.46.orig/spa/meson.build
+++ pipewire-0.3.47/spa/meson.build
--- pipewire-0.3.48.orig/spa/meson.build
+++ pipewire-0.3.48/spa/meson.build
@@ -31,7 +31,7 @@ pkgconfig.generate(filebase : 'lib@0@'.f
subdir('include')
@ -363,10 +363,10 @@ Index: pipewire-0.3.47/spa/meson.build
+if (get_option('examples').enabled() or get_option('examples').auto())
subdir('examples')
endif
Index: pipewire-0.3.47/man/meson.build
Index: pipewire-0.3.48/man/meson.build
===================================================================
--- pipewire-0.3.46.orig/man/meson.build
+++ pipewire-0.3.47/man/meson.build
--- pipewire-0.3.48.orig/man/meson.build
+++ pipewire-0.3.48/man/meson.build
@@ -19,7 +19,7 @@ manpages = [
'pw-profiler.1.rst.in',
]
@ -376,10 +376,10 @@ Index: pipewire-0.3.47/man/meson.build
manpages += 'pw-jack.1.rst.in'
endif
Index: pipewire-0.3.47/src/meson.build
Index: pipewire-0.3.48/src/meson.build
===================================================================
--- pipewire-0.3.46.orig/src/meson.build
+++ pipewire-0.3.47/src/meson.build
--- pipewire-0.3.48.orig/src/meson.build
+++ pipewire-0.3.48/src/meson.build
@@ -3,10 +3,10 @@ subdir('pipewire')
subdir('daemon')
subdir('tools')
@ -393,10 +393,10 @@ Index: pipewire-0.3.47/src/meson.build
subdir('tests')
endif
Index: pipewire-0.3.47/spa/plugins/bluez5/meson.build
Index: pipewire-0.3.48/spa/plugins/bluez5/meson.build
===================================================================
--- pipewire-0.3.46.orig/spa/plugins/bluez5/meson.build
+++ pipewire-0.3.47/spa/plugins/bluez5/meson.build
--- pipewire-0.3.48.orig/spa/plugins/bluez5/meson.build
+++ pipewire-0.3.48/spa/plugins/bluez5/meson.build
@@ -6,12 +6,12 @@ foreach dep: bluez5_deps
endforeach
@ -438,10 +438,10 @@ Index: pipewire-0.3.47/spa/plugins/bluez5/meson.build
bluez5_sources += ['backend-hsphfpd.c']
endif
Index: pipewire-0.3.47/spa/plugins/meson.build
Index: pipewire-0.3.48/spa/plugins/meson.build
===================================================================
--- pipewire-0.3.46.orig/spa/plugins/meson.build
+++ pipewire-0.3.47/spa/plugins/meson.build
--- pipewire-0.3.48.orig/spa/plugins/meson.build
+++ pipewire-0.3.48/spa/plugins/meson.build
@@ -1,16 +1,16 @@
if alsa_dep.found()
subdir('alsa')
@ -495,10 +495,10 @@ Index: pipewire-0.3.47/spa/plugins/meson.build
-subdir('aec')
\ No newline at end of file
+subdir('aec')
Index: pipewire-0.3.47/spa/plugins/support/meson.build
Index: pipewire-0.3.48/spa/plugins/support/meson.build
===================================================================
--- pipewire-0.3.46.orig/spa/plugins/support/meson.build
+++ pipewire-0.3.47/spa/plugins/support/meson.build
--- pipewire-0.3.48.orig/spa/plugins/support/meson.build
+++ pipewire-0.3.48/spa/plugins/support/meson.build
@@ -23,7 +23,7 @@ spa_support_lib = shared_library('spa-su
install_dir : spa_plugindir / 'support')
spa_support_dep = declare_dependency(link_with: spa_support_lib)
@ -508,10 +508,10 @@ Index: pipewire-0.3.47/spa/plugins/support/meson.build
evl_inc = include_directories('/usr/evl/include')
evl_lib = cc.find_library('evl',
dirs: ['/usr/evl/lib/'],
Index: pipewire-0.3.47/src/daemon/systemd/meson.build
Index: pipewire-0.3.48/src/daemon/systemd/meson.build
===================================================================
--- pipewire-0.3.46.orig/src/daemon/systemd/meson.build
+++ pipewire-0.3.47/src/daemon/systemd/meson.build
--- pipewire-0.3.48.orig/src/daemon/systemd/meson.build
+++ pipewire-0.3.48/src/daemon/systemd/meson.build
@@ -1,6 +1,6 @@
-if get_option('systemd-system-service').allowed()
+if (get_option('systemd-system-service').enabled() or get_option('systemd-system-service').auto())
@ -521,10 +521,10 @@ Index: pipewire-0.3.47/src/daemon/systemd/meson.build
+if (get_option('systemd-user-service').enabled() or get_option('systemd-user-service').auto())
subdir('user')
endif
Index: pipewire-0.3.47/src/gst/meson.build
Index: pipewire-0.3.48/src/gst/meson.build
===================================================================
--- pipewire-0.3.46.orig/src/gst/meson.build
+++ pipewire-0.3.47/src/gst/meson.build
--- pipewire-0.3.48.orig/src/gst/meson.build
+++ pipewire-0.3.48/src/gst/meson.build
@@ -8,7 +8,7 @@ pipewire_gst_sources = [
'gstpipewiresrc.c',
]
@ -534,10 +534,10 @@ Index: pipewire-0.3.47/src/gst/meson.build
pipewire_gst_sources += [ 'gstpipewiredeviceprovider.c' ]
endif
Index: pipewire-0.3.47/src/tools/meson.build
Index: pipewire-0.3.48/src/tools/meson.build
===================================================================
--- pipewire-0.3.46.orig/src/tools/meson.build
+++ pipewire-0.3.47/src/tools/meson.build
--- pipewire-0.3.48.orig/src/tools/meson.build
+++ pipewire-0.3.48/src/tools/meson.build
@@ -34,7 +34,7 @@ if ncurses_dep.found()
endif