Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package pipewire for openSUSE:Factory checked in at 2022-03-02 18:20:26 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pipewire (Old) and /work/SRC/openSUSE:Factory/.pipewire.new.1958 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pipewire" Wed Mar 2 18:20:26 2022 rev:51 rq:958322 version:0.3.47 Changes: -------- --- /work/SRC/openSUSE:Factory/pipewire/pipewire.changes 2022-02-04 00:46:16.197132797 +0100 +++ /work/SRC/openSUSE:Factory/.pipewire.new.1958/pipewire.changes 2022-03-02 18:20:42.408655106 +0100 @@ -1,0 +2,118 @@ +Mon Feb 21 12:24:26 UTC 2022 - Alexei Sorokin <sor.ale...@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.ale...@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 <alarr...@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 <alo...@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. + +------------------------------------------------------------------- Old: ---- pipewire-0.3.45.obscpio New: ---- 0001-revert-loop-remove-destroy-list.patch 0002-pulse-server-free-pending-sample-reply.patch pipewire-0.3.47.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pipewire.spec ++++++ --- /var/tmp/diff_new_pack.GCsaIW/_old 2022-03-02 18:20:43.316655138 +0100 +++ /var/tmp/diff_new_pack.GCsaIW/_new 2022-03-02 18:20:43.324655139 +0100 @@ -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 @@ 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 @@ %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 @@ %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/ ++++++ 0001-revert-loop-remove-destroy-list.patch ++++++ >From 16f63a3c8fa227625bade5a9edea22354b347d18 Mon Sep 17 00:00:00 2001 From: Barnab??s P??cze <po...@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 ++++++ 0002-pulse-server-free-pending-sample-reply.patch ++++++ >From d7793501fd012de37fcc8bf09003c60bc4624341 Mon Sep 17 00:00:00 2001 From: Wim Taymans <wtaym...@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 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.GCsaIW/_old 2022-03-02 18:20:43.372655140 +0100 +++ /var/tmp/diff_new_pack.GCsaIW/_new 2022-03-02 18:20:43.376655141 +0100 @@ -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> ++++++ pipewire-0.3.45.obscpio -> pipewire-0.3.47.obscpio ++++++ /work/SRC/openSUSE:Factory/pipewire/pipewire-0.3.45.obscpio /work/SRC/openSUSE:Factory/.pipewire.new.1958/pipewire-0.3.47.obscpio differ: char 48, line 1 ++++++ pipewire.obsinfo ++++++ --- /var/tmp/diff_new_pack.GCsaIW/_old 2022-03-02 18:20:43.428655142 +0100 +++ /var/tmp/diff_new_pack.GCsaIW/_new 2022-03-02 18:20:43.432655142 +0100 @@ -1,5 +1,5 @@ name: pipewire -version: 0.3.45 -mtime: 1643887464 -commit: bdd407fe66cc9e46d4bc4dcc989d50679000482b +version: 0.3.47 +mtime: 1645172864 +commit: 2af393889358723a2789caa3c856700b1c968ef0 ++++++ reduce-meson-dependency.patch ++++++ --- /var/tmp/diff_new_pack.GCsaIW/_old 2022-03-02 18:20:43.444655143 +0100 +++ /var/tmp/diff_new_pack.GCsaIW/_new 2022-03-02 18:20:43.448655143 +0100 @@ -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 @@ 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 @@ 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 @@ +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 @@ ]) 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/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 @@ ) #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/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 @@ ]) 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 @@ ] 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,4 +342,209 @@ 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 = [