Accepting request 958322 from multimedia:libs

OBS-URL: https://build.opensuse.org/request/show/958322
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/pipewire?expand=0&rev=51
This commit is contained in:
Dominique Leuenberger 2022-03-02 17:20:26 +00:00 committed by Git OBS Bridge
commit 8772ac5596
9 changed files with 637 additions and 40 deletions

View File

@ -0,0 +1,116 @@
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

@ -0,0 +1,98 @@
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.45</param>
<param name="revision">refs/tags/0.3.47</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:596f5a27ead9e499ccc7e14e96c5d0bead40de97dce0db29a4f0d0024ce31ca5
size 10413069

3
pipewire-0.3.47.obscpio Normal file
View File

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

View File

@ -1,3 +1,121 @@
-------------------------------------------------------------------
Mon Feb 21 12:24:26 UTC 2022 - Alexei Sorokin <sor.alexei@meowr.ru>
- Add 0001-revert-loop-remove-destroy-list.patch: fix MPD crash.
- Add 0002-pulse-server-free-pending-sample-reply.patch: fix
"fast volume change".
-------------------------------------------------------------------
Fri Feb 18 14:06:20 UTC 2022 - Alexei Sorokin <sor.alexei@meowr.ru>
- Update to version 0.3.47:
* Fix a bug in pulse-server that caused cached notifications to
play multiple times.
* Remove a check and warnings to catch leaked listeners on the
proxy. This might access invalid memory and cause infinite
loops in older wireplumber.
- Rebase reduce-meson-dependency.patch.
-------------------------------------------------------------------
Thu Feb 17 10:42:44 UTC 2022 - Antonio Larrosa <alarrosa@suse.com>
- Update to version 0.3.46:
* Highlights:
- Fix a critical bug in pipewire-pulse buffer size handling
that made some apps (MuseScore, ... ) stutter.
- Fix a critical bug where devices would not show when the
kernel was compiled without VERBOSE_PROCSFS.
- JACK clients will now use lock-quantum by default. This
makes sure that all dynamic quantum changes are disabled
while a JACK app is running. The only way to force a
quantum chance is through a JACK app or with the metadata.
- Almost all limits on number of ports, clients and nodes are
removed.
- A Dummy fallback sink is now automatically created when
there are no other sinks. This avoids stalling browsers.
- Sound sharing with Zoom should work better. A new WirePlumber
release might be required.
- Many more fixes and improvements.
* PipeWire
- Update docs with new config overrides.
- The rule matching logic was moved to config and code is now
shared with pulse-server and JACK.
- Add new Romanian translation.
- When a quantum is forced with metadata, any node that asked
to lock-quantum is ignored so that the quantum change can
happen.
- Fix a bug where a mixer was removed twice, leading to
potential memory corruption.
- The port limits on nodes and filters are now removed.
Some code was simplified.
- Fix a potential leak because listeners where removed while
they could be emitted.
- Improve context.exec and avoid zombie processes.
* Modules
- The RAOP module now has a default latency of 2 seconds,
like PulseAudio.
- The echo-cancel module now uses the plugin loader to load
the backends. This makes it possible to add custom, out of
tree, echo cancel plugins.
* Tools
- Improve help of pw-link.
- Output to stdout and error to stderr. Use setlinebuf for
stdout to improve piping between apps. (#2110)
* SPA
- Improve removing sources when dispatching. Also improve
performance now that a destroy loop can be removed. (#2114)
- Fix an fd leak in the logger when logging to a file.
- Improve loop enter/leave checks and support recursive loops.
* pulse-server
- Clamp various buffer attributes to the max length. Fixes some
issues with various applications. (#2100)
- Module properties are now remapped correctly from their
pulseaudio variant to the PipeWire ones.
- Fix module index in introspect. Use the right index when
loaded from our internal modules. (#2101)
- Improve argument parsing and node.description. (#2086)
- The sink-index should now be filled in correctly when playing
a sample. (#2129)
- module-always-sink is now implemented and loaded by default.
(#1838)
- Add support for loading some modules only once.
- Module load and unload now does extra sync to make it appear
synchronous, like in PulseAudio. This improves sounds sharing
in Zoom.
* ALSA
- Fix critical bug where alsa devices would not show when the
kernel was compiled without VERBOSE_PROCFS.
- Some corner cases were fixed in the ALSA timing code. When
the capture node is follower, it will now not try to read too
much data and xrun but it will instead produce a cycle of
silence.
- Various fixes and improvements to make ALSA devices resync to
the driver more quickly and accurately.
* JACK
- Add an option to name the default device as system to improve
compatibility with some applications,
- Use lock-quantum by default. This makes sure that all dynamic
quantum changes are disabled while a JACK app is running. The
only way to force a quantum chance is through a JACK app or
with the metadata.
- It is now possible to do IPC calls from the data thread. Note
that this is a very bad idea but required for compatibility
with JACK2.
* GStreamer
- GStreamer sink will now set a default channelmap to make it
possible to remap to the channel layout of the device.
- Update patch for further uses of "new" meson features used by
upstream:
* reduce-meson-dependency.patch
-------------------------------------------------------------------
Tue Feb 15 09:47:31 UTC 2022 - Alois Wohlschlager <alois1@gmx-topmail.de>
- Run ldconfig for pipewire-libjack-0_3
* The JACK libraries are made available system-wide using
/etc/ld.so.conf.d. Hence, ldconfig should be run to make sure
the dynamic linker picks them up.
-------------------------------------------------------------------
Thu Feb 3 11:56:13 UTC 2022 - Antonio Larrosa <alarrosa@suse.com>

View File

@ -1,4 +1,4 @@
name: pipewire
version: 0.3.45
mtime: 1643887464
commit: bdd407fe66cc9e46d4bc4dcc989d50679000482b
version: 0.3.47
mtime: 1645172864
commit: 2af393889358723a2789caa3c856700b1c968ef0

View File

@ -53,7 +53,7 @@
%endif
Name: pipewire
Version: 0.3.45
Version: 0.3.47
Release: 0
Summary: A Multimedia Framework designed to be an audio and video server and more
License: MIT
@ -61,7 +61,12 @@ Group: Development/Libraries/C and C++
URL: https://pipewire.org/
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
@ -495,11 +500,13 @@ setup-pulseaudio --auto > /dev/null
%post libjack-%{apiver_str}
%{_sbindir}/update-alternatives --install %{_bindir}/pw-jack pw-jack %{_bindir}/pw-jack-%{apiver} 20 \
--slave %{_mandir}/man1/pw-jack.1%{ext_man} pw-jack.1%{ext_man} %{_mandir}/man1/pw-jack-%{apiver}.1%{ext_man}
/sbin/ldconfig
%postun libjack-%{apiver_str}
if [ ! -e %{_bindir}/pw-jack-%{apiver} ] ; then
%{_sbindir}/update-alternatives --remove pw-jack %{_bindir}/pw-jack-%{apiver}
fi
/sbin/ldconfig
%files
%license LICENSE COPYING
@ -537,6 +544,7 @@ fi
%files spa-plugins-%{spa_ver_str}
%dir %{_libdir}/spa-%{spa_ver}/
%{_libdir}/spa-%{spa_ver}/aec/
%{_libdir}/spa-%{spa_ver}/alsa/
%{_libdir}/spa-%{spa_ver}/audioconvert/
%{_libdir}/spa-%{spa_ver}/audiomixer/

View File

@ -1,17 +1,17 @@
Index: pipewire-0.3.44/meson.build
Index: pipewire-0.3.47/meson.build
===================================================================
--- pipewire-0.3.44.orig/meson.build
+++ pipewire-0.3.44/meson.build
--- pipewire-0.3.46.orig/meson.build
+++ pipewire-0.3.47/meson.build
@@ -1,7 +1,7 @@
project('pipewire', ['c' ],
version : '0.3.45',
version : '0.3.47',
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',
@@ -304,8 +304,8 @@ includes_inc = include_directories('incl
@@ -247,8 +247,8 @@ includes_inc = include_directories('incl
pipewire_inc = include_directories('src')
makedata = configuration_data()
@ -22,7 +22,59 @@ Index: pipewire-0.3.44/meson.build
makedata.set('VERSION', pipewire_version)
if version_arr.length() == 4
makedata.set('TAG', 'HEAD')
@@ -509,20 +509,20 @@ endif
@@ -336,7 +336,7 @@ endforeach
gst_dp_found = gst_dep.length() > 0
summary({'gstreamer-device-provider': gst_dp_found}, bool_yn: true, section: 'Backend')
-cdata.set('HAVE_GSTREAMER_DEVICE_PROVIDER', get_option('gstreamer-device-provider').allowed())
+cdata.set('HAVE_GSTREAMER_DEVICE_PROVIDER', get_option('gstreamer-device-provider').enabled() or get_option('gstreamer-device-provider').auto())
webrtc_dep = dependency('webrtc-audio-processing',
version : ['>= 0.2', '< 1.0'],
@@ -382,10 +382,10 @@ cdata.set('HAVE_LILV', lilv_lib.found())
installed_tests_metadir = pipewire_datadir / 'installed-tests' / pipewire_name
installed_tests_execdir = pipewire_libexecdir / 'installed-tests' / pipewire_name
-installed_tests_enabled = get_option('installed_tests').allowed()
+installed_tests_enabled = (get_option('installed_tests').enabled() or get_option('installed_tests').auto())
installed_tests_template = files('template.test.in')
-if get_option('tests').allowed()
+if (get_option('tests').enabled() or get_option('tests').auto())
gstack = find_program('gstack', required : false)
cdata.set('HAVE_GSTACK', gstack.found())
endif
@@ -394,17 +394,17 @@ subdir('po')
subdir('spa')
subdir('src')
-if get_option('tests').allowed()
+if (get_option('tests').enabled() or get_option('tests').auto())
subdir('test')
endif
configure_file(output : 'config.h',
configuration : cdata)
-if get_option('pipewire-jack').allowed()
+if (get_option('pipewire-jack').enabled() or get_option('pipewire-jack').auto())
subdir('pipewire-jack')
endif
-if get_option('pipewire-v4l2').allowed()
+if (get_option('pipewire-v4l2').enabled() or get_option('pipewire-v4l2').auto())
subdir('pipewire-v4l2')
endif
@@ -415,7 +415,7 @@ if alsa_dep.found()
endif
generate_manpages = false
-if get_option('man').allowed()
+if (get_option('man').enabled() or get_option('man').auto())
rst2man = find_program('rst2man', required: false)
if not rst2man.found()
rst2man = find_program('rst2man.py', required: get_option('man'))
@@ -436,20 +436,20 @@ endif
setenv = find_program('pw-uninstalled.sh')
run_target('pw-uninstalled',
command : [setenv,
@ -50,7 +102,7 @@ Index: pipewire-0.3.44/meson.build
devenv.set('GST_PLUGIN_PATH', builddir / 'src'/ 'gst')
@@ -534,4 +534,6 @@ devenv.set('LD_LIBRARY_PATH', builddir /
@@ -461,4 +461,6 @@ devenv.set('LD_LIBRARY_PATH', builddir /
devenv.set('PW_UNINSTALLED', '1')
@ -58,10 +110,10 @@ Index: pipewire-0.3.44/meson.build
+if meson.version().version_compare('>=0.58.0')
+ meson.add_devenv(devenv)
+endif
Index: pipewire-0.3.44/spa/plugins/audioconvert/meson.build
Index: pipewire-0.3.47/spa/plugins/audioconvert/meson.build
===================================================================
--- pipewire-0.3.44.orig/spa/plugins/audioconvert/meson.build
+++ pipewire-0.3.44/spa/plugins/audioconvert/meson.build
--- pipewire-0.3.46.orig/spa/plugins/audioconvert/meson.build
+++ pipewire-0.3.47/spa/plugins/audioconvert/meson.build
@@ -140,7 +140,7 @@ foreach a : test_apps
install : installed_tests_enabled,
install_dir : installed_tests_execdir / 'audioconvert'),
@ -80,10 +132,10 @@ Index: pipewire-0.3.44/spa/plugins/audioconvert/meson.build
])
if installed_tests_enabled
Index: pipewire-0.3.44/spa/tests/meson.build
Index: pipewire-0.3.47/spa/tests/meson.build
===================================================================
--- pipewire-0.3.44.orig/spa/tests/meson.build
+++ pipewire-0.3.44/spa/tests/meson.build
--- pipewire-0.3.46.orig/spa/tests/meson.build
+++ pipewire-0.3.47/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()
@ -102,10 +154,10 @@ Index: pipewire-0.3.44/spa/tests/meson.build
]
)
Index: pipewire-0.3.44/src/daemon/meson.build
Index: pipewire-0.3.47/src/daemon/meson.build
===================================================================
--- pipewire-0.3.44.orig/src/daemon/meson.build
+++ pipewire-0.3.44/src/daemon/meson.build
--- pipewire-0.3.46.orig/src/daemon/meson.build
+++ pipewire-0.3.47/src/daemon/meson.build
@@ -18,9 +18,9 @@ conf_config.set('pulse_comment', '#')
conf_config_uninstalled = conf_config
@ -127,21 +179,21 @@ Index: pipewire-0.3.44/src/daemon/meson.build
)
#desktop_file = i18n.merge_file(
Index: pipewire-0.3.44/src/daemon/systemd/user/meson.build
Index: pipewire-0.3.47/src/daemon/systemd/user/meson.build
===================================================================
--- pipewire-0.3.44.orig/src/daemon/systemd/user/meson.build
+++ pipewire-0.3.44/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
@@ -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.44/src/modules/meson.build
Index: pipewire-0.3.47/src/modules/meson.build
===================================================================
--- pipewire-0.3.44.orig/src/modules/meson.build
+++ pipewire-0.3.44/src/modules/meson.build
@@ -368,9 +368,9 @@ test('pw-test-protocol-native',
--- 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',
install_dir : installed_tests_execdir,
),
env : [
@ -154,10 +206,10 @@ Index: pipewire-0.3.44/src/modules/meson.build
]
)
Index: pipewire-0.3.44/src/tests/meson.build
Index: pipewire-0.3.47/src/tests/meson.build
===================================================================
--- pipewire-0.3.44.orig/src/tests/meson.build
+++ pipewire-0.3.44/src/tests/meson.build
--- pipewire-0.3.46.orig/src/tests/meson.build
+++ pipewire-0.3.47/src/tests/meson.build
@@ -13,9 +13,9 @@ foreach a : test_apps
install : installed_tests_enabled,
install_dir : installed_tests_execdir),
@ -171,10 +223,10 @@ Index: pipewire-0.3.44/src/tests/meson.build
])
if installed_tests_enabled
Index: pipewire-0.3.44/test/meson.build
Index: pipewire-0.3.47/test/meson.build
===================================================================
--- pipewire-0.3.44.orig/test/meson.build
+++ pipewire-0.3.44/test/meson.build
--- pipewire-0.3.46.orig/test/meson.build
+++ pipewire-0.3.47/test/meson.build
@@ -14,8 +14,8 @@ pwtest_deps = [
]
@ -186,10 +238,10 @@ Index: pipewire-0.3.44/test/meson.build
]
pwtest_inc = [
Index: pipewire-0.3.44/doc/meson.build
Index: pipewire-0.3.47/doc/meson.build
===================================================================
--- pipewire-0.3.44.orig/doc/meson.build
+++ pipewire-0.3.44/doc/meson.build
--- pipewire-0.3.46.orig/doc/meson.build
+++ pipewire-0.3.47/doc/meson.build
@@ -1,8 +1,8 @@
doxyfile_conf = configuration_data()
doxyfile_conf.set('PACKAGE_NAME', meson.project_name())
@ -290,3 +342,208 @@ Index: pipewire-0.3.44/doc/meson.build
doxyfile = configure_file(input: 'Doxyfile.in',
output: 'Doxyfile',
Index: pipewire-0.3.47/spa/meson.build
===================================================================
--- pipewire-0.3.46.orig/spa/meson.build
+++ pipewire-0.3.47/spa/meson.build
@@ -31,7 +31,7 @@ pkgconfig.generate(filebase : 'lib@0@'.f
subdir('include')
-if get_option('spa-plugins').allowed()
+if (get_option('spa-plugins').enabled() or get_option('spa-plugins').auto())
udevrulesdir = get_option('udevrulesdir')
if udevrulesdir == ''
# absolute path, otherwise meson prepends the prefix
@@ -74,6 +74,6 @@ endif
subdir('tools')
subdir('tests')
-if get_option('examples').allowed()
+if (get_option('examples').enabled() or get_option('examples').auto())
subdir('examples')
endif
Index: pipewire-0.3.47/man/meson.build
===================================================================
--- pipewire-0.3.46.orig/man/meson.build
+++ pipewire-0.3.47/man/meson.build
@@ -19,7 +19,7 @@ manpages = [
'pw-profiler.1.rst.in',
]
-if get_option('pipewire-jack').allowed()
+if (get_option('pipewire-jack').enabled() or get_option('pipewire-jack').auto())
manpages += 'pw-jack.1.rst.in'
endif
Index: pipewire-0.3.47/src/meson.build
===================================================================
--- pipewire-0.3.46.orig/src/meson.build
+++ pipewire-0.3.47/src/meson.build
@@ -3,10 +3,10 @@ subdir('pipewire')
subdir('daemon')
subdir('tools')
subdir('modules')
-if get_option('examples').allowed()
+if (get_option('examples').enabled() or get_option('examples').auto())
subdir('examples')
endif
-if get_option('tests').allowed()
+if (get_option('tests').enabled() or get_option('tests').auto())
subdir('tests')
endif
Index: pipewire-0.3.47/spa/plugins/bluez5/meson.build
===================================================================
--- pipewire-0.3.46.orig/spa/plugins/bluez5/meson.build
+++ pipewire-0.3.47/spa/plugins/bluez5/meson.build
@@ -6,12 +6,12 @@ foreach dep: bluez5_deps
endforeach
cdata.set('HAVE_BLUEZ_5_BACKEND_NATIVE',
- get_option('bluez5-backend-hsp-native').allowed() or
- get_option('bluez5-backend-hfp-native').allowed())
-cdata.set('HAVE_BLUEZ_5_BACKEND_HSP_NATIVE', get_option('bluez5-backend-hsp-native').allowed())
-cdata.set('HAVE_BLUEZ_5_BACKEND_HFP_NATIVE', get_option('bluez5-backend-hfp-native').allowed())
-cdata.set('HAVE_BLUEZ_5_BACKEND_OFONO', get_option('bluez5-backend-ofono').allowed())
-cdata.set('HAVE_BLUEZ_5_BACKEND_HSPHFPD', get_option('bluez5-backend-hsphfpd').allowed())
+ (get_option('bluez5-backend-hsp-native').enabled() or get_option('bluez5-backend-hsp-native').auto()) or
+ (get_option('bluez5-backend-hfp-native').enabled() or get_option('bluez5-backend-hfp-native').auto()))
+cdata.set('HAVE_BLUEZ_5_BACKEND_HSP_NATIVE', (get_option('bluez5-backend-hsp-native').enabled() or get_option('bluez5-backend-hsp-native').auto()))
+cdata.set('HAVE_BLUEZ_5_BACKEND_HFP_NATIVE', (get_option('bluez5-backend-hfp-native').enabled() or get_option('bluez5-backend-hfp-native').auto()))
+cdata.set('HAVE_BLUEZ_5_BACKEND_OFONO', (get_option('bluez5-backend-ofono').enabled() or get_option('bluez5-backend-ofono').auto()))
+cdata.set('HAVE_BLUEZ_5_BACKEND_HSPHFPD', (get_option('bluez5-backend-hsphfpd').enabled() or get_option('bluez5-backend-hsphfpd').auto()))
cdata.set('HAVE_BLUEZ_5_HCI', dependency('bluez', version: '< 6', required: false).found())
bluez5_sources = [
@@ -34,18 +34,18 @@ bluez5_data = ['bluez-hardware.conf']
install_data(bluez5_data, install_dir : spa_datadir / 'bluez5')
-if get_option('bluez5-backend-hsp-native').allowed() or get_option('bluez5-backend-hfp-native').allowed()
+if (get_option('bluez5-backend-hsp-native').enabled() or get_option('bluez5-backend-hsp-native').auto()) or (get_option('bluez5-backend-hfp-native').enabled() or get_option('bluez5-backend-hfp-native').auto())
if libusb_dep.found()
bluez5_deps += libusb_dep
endif
bluez5_sources += ['backend-native.c']
endif
-if get_option('bluez5-backend-ofono').allowed()
+if (get_option('bluez5-backend-ofono').enabled() or get_option('bluez5-backend-ofono').auto())
bluez5_sources += ['backend-ofono.c']
endif
-if get_option('bluez5-backend-hsphfpd').allowed()
+if (get_option('bluez5-backend-hsphfpd').enabled() or get_option('bluez5-backend-hsphfpd').auto())
bluez5_sources += ['backend-hsphfpd.c']
endif
Index: pipewire-0.3.47/spa/plugins/meson.build
===================================================================
--- pipewire-0.3.46.orig/spa/plugins/meson.build
+++ pipewire-0.3.47/spa/plugins/meson.build
@@ -1,16 +1,16 @@
if alsa_dep.found()
subdir('alsa')
endif
-if get_option('audioconvert').allowed()
+if (get_option('audioconvert').enabled() or get_option('audioconvert').auto())
subdir('audioconvert')
endif
-if get_option('audiomixer').allowed()
+if (get_option('audiomixer').enabled() or get_option('audiomixer').auto())
subdir('audiomixer')
endif
-if get_option('control').allowed()
+if (get_option('control').enabled() or get_option('control').auto())
subdir('control')
endif
-if get_option('audiotestsrc').allowed()
+if (get_option('audiotestsrc').enabled() or get_option('audiotestsrc').auto())
subdir('audiotestsrc')
endif
if bluez_dep.found()
@@ -22,19 +22,19 @@ endif
if jack_dep.found()
subdir('jack')
endif
-if get_option('support').allowed()
+if (get_option('support').enabled() or get_option('support').auto())
subdir('support')
endif
-if get_option('test').allowed()
+if (get_option('test').enabled() or get_option('test').auto())
subdir('test')
endif
-if get_option('videoconvert').allowed()
+if (get_option('videoconvert').enabled() or get_option('videoconvert').auto())
subdir('videoconvert')
endif
-if get_option('videotestsrc').allowed()
+if (get_option('videotestsrc').enabled() or get_option('videotestsrc').auto())
subdir('videotestsrc')
endif
-if get_option('volume').allowed()
+if (get_option('volume').enabled() or get_option('volume').auto())
subdir('volume')
endif
if vulkan_headers
@@ -52,4 +52,4 @@ if libcamera_dep.found()
subdir('libcamera')
endif
-subdir('aec')
\ No newline at end of file
+subdir('aec')
Index: pipewire-0.3.47/spa/plugins/support/meson.build
===================================================================
--- pipewire-0.3.46.orig/spa/plugins/support/meson.build
+++ pipewire-0.3.47/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)
-if get_option('evl').allowed()
+if (get_option('evl').enabled() or get_option('evl').auto())
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
===================================================================
--- pipewire-0.3.46.orig/src/daemon/systemd/meson.build
+++ pipewire-0.3.47/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())
subdir('system')
endif
-if get_option('systemd-user-service').allowed()
+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
===================================================================
--- pipewire-0.3.46.orig/src/gst/meson.build
+++ pipewire-0.3.47/src/gst/meson.build
@@ -8,7 +8,7 @@ pipewire_gst_sources = [
'gstpipewiresrc.c',
]
-if get_option('gstreamer-device-provider').allowed()
+if (get_option('gstreamer-device-provider').enabled() or get_option('gstreamer-device-provider').auto())
pipewire_gst_sources += [ 'gstpipewiredeviceprovider.c' ]
endif
Index: pipewire-0.3.47/src/tools/meson.build
===================================================================
--- pipewire-0.3.46.orig/src/tools/meson.build
+++ pipewire-0.3.47/src/tools/meson.build
@@ -34,7 +34,7 @@ if ncurses_dep.found()
endif
build_pw_cat = false
-if get_option('pw-cat').allowed() and sndfile_dep.found()
+if (get_option('pw-cat').enabled() or get_option('pw-cat').auto()) and sndfile_dep.found()
build_pw_cat = true
pwcat_sources = [