Version bump
This commit is contained in:
		@@ -0,0 +1,80 @@
 | 
			
		||||
From acc75b21f653873ec1da68bfa08f2945a8dd09d2 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Eli Schwartz <eschwartz93@gmail.com>
 | 
			
		||||
Date: Sun, 30 Jun 2024 13:44:06 -0400
 | 
			
		||||
Subject: [PATCH] meson: fix conflicting use of feature-based dependency
 | 
			
		||||
 lookups
 | 
			
		||||
 | 
			
		||||
When spa-plugins is enabled, the gio-2.0 global dependency is
 | 
			
		||||
overwritten.
 | 
			
		||||
 | 
			
		||||
When bluez support is enabled, OR when gsettings is enabled, the gio-2.0
 | 
			
		||||
dependency is then detected as found. This means that
 | 
			
		||||
pipewire-module-protocol-pulse can end up enabling gsettings support
 | 
			
		||||
even if it has been forcibly turned off.
 | 
			
		||||
 | 
			
		||||
Rename the meson variables to ensure they are looked up separately.
 | 
			
		||||
 | 
			
		||||
(cherry picked from commit b5f031bc15524bbfde577290ad9bbadeab77ae8b)
 | 
			
		||||
Signed-off-by: Eli Schwartz <eschwartz93@gmail.com>
 | 
			
		||||
---
 | 
			
		||||
 meson.build             | 4 ++--
 | 
			
		||||
 spa/meson.build         | 6 +++---
 | 
			
		||||
 src/modules/meson.build | 4 ++--
 | 
			
		||||
 3 files changed, 7 insertions(+), 7 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/meson.build b/meson.build
 | 
			
		||||
index 0ea256e9b..3353a2aec 100644
 | 
			
		||||
--- a/meson.build
 | 
			
		||||
+++ b/meson.build
 | 
			
		||||
@@ -343,8 +343,8 @@ summary({'GLib-2.0 (Flatpak support)': glib2_dep.found()}, bool_yn: true, sectio
 | 
			
		||||
 flatpak_support = glib2_dep.found()
 | 
			
		||||
 cdata.set('HAVE_GLIB2', flatpak_support)
 | 
			
		||||
 
 | 
			
		||||
-gio_dep = dependency('gio-2.0', version : '>= 2.26.0', required : get_option('gsettings'))
 | 
			
		||||
-summary({'GIO (GSettings)': gio_dep.found()}, bool_yn: true, section: 'Misc dependencies')
 | 
			
		||||
+gsettings_gio_dep = dependency('gio-2.0', version : '>= 2.26.0', required : get_option('gsettings'))
 | 
			
		||||
+summary({'GIO (GSettings)': gsettings_gio_dep.found()}, bool_yn: true, section: 'Misc dependencies')
 | 
			
		||||
 
 | 
			
		||||
 gst_option = get_option('gstreamer')
 | 
			
		||||
 gst_deps_def = {
 | 
			
		||||
diff --git a/spa/meson.build b/spa/meson.build
 | 
			
		||||
index db0a84425..e37744b08 100644
 | 
			
		||||
--- a/spa/meson.build
 | 
			
		||||
+++ b/spa/meson.build
 | 
			
		||||
@@ -43,12 +43,12 @@ if get_option('spa-plugins').allowed()
 | 
			
		||||
   summary({'ALSA': alsa_dep.found()}, bool_yn: true, section: 'Backend')
 | 
			
		||||
 
 | 
			
		||||
   bluez_dep = dependency('bluez', version : '>= 4.101', required: get_option('bluez5'))
 | 
			
		||||
-  gio_dep = dependency('gio-2.0', required : get_option('bluez5'))
 | 
			
		||||
-  gio_unix_dep = dependency('gio-unix-2.0', required : get_option('bluez5'))
 | 
			
		||||
+  bluez_gio_dep = dependency('gio-2.0', required : get_option('bluez5'))
 | 
			
		||||
+  bluez_gio_unix_dep = dependency('gio-unix-2.0', required : get_option('bluez5'))
 | 
			
		||||
   bluez_glib2_dep = dependency('glib-2.0', required : get_option('bluez5'))
 | 
			
		||||
   sbc_dep = dependency('sbc', required: get_option('bluez5'))
 | 
			
		||||
   summary({'SBC': sbc_dep.found()}, bool_yn: true, section: 'Bluetooth audio codecs')
 | 
			
		||||
-  bluez5_deps = [ mathlib, dbus_dep, sbc_dep, bluez_dep, bluez_glib2_dep, gio_dep, gio_unix_dep ]
 | 
			
		||||
+  bluez5_deps = [ mathlib, dbus_dep, sbc_dep, bluez_dep, bluez_glib2_dep, bluez_gio_dep, bluez_gio_unix_dep ]
 | 
			
		||||
   bluez_deps_found = get_option('bluez5').allowed()
 | 
			
		||||
   foreach dep: bluez5_deps
 | 
			
		||||
       if get_option('bluez5').enabled() and not dep.found()
 | 
			
		||||
diff --git a/src/modules/meson.build b/src/modules/meson.build
 | 
			
		||||
index 1b434b7f6..52660253e 100644
 | 
			
		||||
--- a/src/modules/meson.build
 | 
			
		||||
+++ b/src/modules/meson.build
 | 
			
		||||
@@ -409,11 +409,11 @@ if avahi_dep.found()
 | 
			
		||||
   cdata.set('HAVE_AVAHI', true)
 | 
			
		||||
 endif
 | 
			
		||||
 
 | 
			
		||||
-if gio_dep.found()
 | 
			
		||||
+if gsettings_gio_dep.found()
 | 
			
		||||
   pipewire_module_protocol_pulse_sources += [
 | 
			
		||||
     'module-protocol-pulse/modules/module-gsettings.c',
 | 
			
		||||
   ]
 | 
			
		||||
-  pipewire_module_protocol_pulse_deps += gio_dep
 | 
			
		||||
+  pipewire_module_protocol_pulse_deps += gsettings_gio_dep
 | 
			
		||||
   cdata.set('HAVE_GIO', true)
 | 
			
		||||
 endif
 | 
			
		||||
 
 | 
			
		||||
-- 
 | 
			
		||||
2.44.2
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1,95 @@
 | 
			
		||||
From acd5bf60b9d4a35d00c90bfdca7f89e4ff4a4ff7 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Eli Schwartz <eschwartz93@gmail.com>
 | 
			
		||||
Date: Thu, 30 May 2024 19:44:38 -0400
 | 
			
		||||
Subject: [PATCH] meson: fix webrtc-audio-processing dependency ignoring
 | 
			
		||||
 configure args
 | 
			
		||||
 | 
			
		||||
Most dependencies use meson "feature" options for optional
 | 
			
		||||
functionality. This allows people to disable them, if they don't want
 | 
			
		||||
them, through the power of tristate decision-making.
 | 
			
		||||
 | 
			
		||||
This particular dependency does something a bit more complicated than
 | 
			
		||||
can be described by simply passing feature options to the required
 | 
			
		||||
kwarg. It:
 | 
			
		||||
 | 
			
		||||
- tries to look for two different names of the dependency
 | 
			
		||||
- selects different version ranges, depending on the dependency name
 | 
			
		||||
- has a hole in the middle of the versions
 | 
			
		||||
 | 
			
		||||
Unfortunately, `required: false` for the first dependency isn't
 | 
			
		||||
equivalent to a tristate decision-making process. We have to manually
 | 
			
		||||
code the logic ourselves.
 | 
			
		||||
 | 
			
		||||
The problem is that when we look up the first name, we cannot pass the
 | 
			
		||||
feature option in because if the option is force enabled, then the
 | 
			
		||||
dependency lookup fails and configuration never tries to find the older
 | 
			
		||||
version instead.
 | 
			
		||||
 | 
			
		||||
But also, we can't just say it *isn't* required, because if the option
 | 
			
		||||
is force *disabled* but it is installed on the system, we still find it
 | 
			
		||||
and build against it.
 | 
			
		||||
 | 
			
		||||
One solution would be using meson 0.60's support for multiple dependency
 | 
			
		||||
names:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
dependency('webrtc-audio-processing-1', 'webrtc-audio-processing',
 | 
			
		||||
    version : ['>= 0.2'],
 | 
			
		||||
    required: get_option('echo-cancel-webrtc'),
 | 
			
		||||
)
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Unfortunately, this too doesn't work since we could end up detecting 1.1
 | 
			
		||||
(the hole in the middle) which is invalid.
 | 
			
		||||
 | 
			
		||||
Instead, we do a bit of checking for tristate values before deciding to
 | 
			
		||||
invoke `dependency()`. This lets us guarantee that disabled dependencies
 | 
			
		||||
are well and truly disabled.
 | 
			
		||||
 | 
			
		||||
Bug: https://bugs.gentoo.org/933218
 | 
			
		||||
Fixes: #3678
 | 
			
		||||
---
 | 
			
		||||
 meson.build | 25 +++++++++++++++----------
 | 
			
		||||
 1 file changed, 15 insertions(+), 10 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/meson.build b/meson.build
 | 
			
		||||
index cda60112f..72d275086 100644
 | 
			
		||||
--- a/meson.build
 | 
			
		||||
+++ b/meson.build
 | 
			
		||||
@@ -393,18 +393,23 @@ cdata.set('HAVE_GSTREAMER_DEVICE_PROVIDER', get_option('gstreamer-device-provide
 | 
			
		||||
 summary({'gstreamer DMA_DRM support': gst_dma_drm_found}, bool_yn: true, section: 'Backend')
 | 
			
		||||
 cdata.set('HAVE_GSTREAMER_DMA_DRM', gst_dma_drm_found)
 | 
			
		||||
 
 | 
			
		||||
-webrtc_dep = dependency('webrtc-audio-processing-1',
 | 
			
		||||
-  version : ['>= 1.2' ],
 | 
			
		||||
-  required : false)
 | 
			
		||||
-cdata.set('HAVE_WEBRTC1', webrtc_dep.found())
 | 
			
		||||
-if webrtc_dep.found()
 | 
			
		||||
+if get_option('echo-cancel-webrtc').disabled()
 | 
			
		||||
+  webrtc_dep = dependency('', required: false)
 | 
			
		||||
   summary({'WebRTC Echo Canceling >= 1.2': webrtc_dep.found()}, bool_yn: true, section: 'Misc dependencies')
 | 
			
		||||
 else
 | 
			
		||||
-  webrtc_dep = dependency('webrtc-audio-processing',
 | 
			
		||||
-    version : ['>= 0.2', '< 1.0'],
 | 
			
		||||
-    required : get_option('echo-cancel-webrtc'))
 | 
			
		||||
-  cdata.set('HAVE_WEBRTC', webrtc_dep.found())
 | 
			
		||||
-  summary({'WebRTC Echo Canceling < 1.0': webrtc_dep.found()}, bool_yn: true, section: 'Misc dependencies')
 | 
			
		||||
+  webrtc_dep = dependency('webrtc-audio-processing-1',
 | 
			
		||||
+    version : ['>= 1.2' ],
 | 
			
		||||
+    required : false)
 | 
			
		||||
+  cdata.set('HAVE_WEBRTC1', webrtc_dep.found())
 | 
			
		||||
+  if webrtc_dep.found()
 | 
			
		||||
+    summary({'WebRTC Echo Canceling >= 1.2': webrtc_dep.found()}, bool_yn: true, section: 'Misc dependencies')
 | 
			
		||||
+  else
 | 
			
		||||
+    webrtc_dep = dependency('webrtc-audio-processing',
 | 
			
		||||
+      version : ['>= 0.2', '< 1.0'],
 | 
			
		||||
+      required : get_option('echo-cancel-webrtc'))
 | 
			
		||||
+    cdata.set('HAVE_WEBRTC', webrtc_dep.found())
 | 
			
		||||
+    summary({'WebRTC Echo Canceling < 1.0': webrtc_dep.found()}, bool_yn: true, section: 'Misc dependencies')
 | 
			
		||||
+  endif
 | 
			
		||||
 endif
 | 
			
		||||
 
 | 
			
		||||
 # On FreeBSD and MidnightBSD, epoll-shim library is required for eventfd() and timerfd()
 | 
			
		||||
-- 
 | 
			
		||||
GitLab
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1,79 @@
 | 
			
		||||
From b5f031bc15524bbfde577290ad9bbadeab77ae8b Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Eli Schwartz <eschwartz93@gmail.com>
 | 
			
		||||
Date: Sun, 30 Jun 2024 13:44:06 -0400
 | 
			
		||||
Subject: [PATCH] meson: fix conflicting use of feature-based dependency
 | 
			
		||||
 lookups
 | 
			
		||||
 | 
			
		||||
When spa-plugins is enabled, the gio-2.0 global dependency is
 | 
			
		||||
overwritten.
 | 
			
		||||
 | 
			
		||||
When bluez support is enabled, OR when gsettings is enabled, the gio-2.0
 | 
			
		||||
dependency is then detected as found. This means that
 | 
			
		||||
pipewire-module-protocol-pulse can end up enabling gsettings support
 | 
			
		||||
even if it has been forcibly turned off.
 | 
			
		||||
 | 
			
		||||
Rename the meson variables to ensure they are looked up separately.
 | 
			
		||||
---
 | 
			
		||||
 meson.build             | 6 +++---
 | 
			
		||||
 spa/meson.build         | 6 +++---
 | 
			
		||||
 src/modules/meson.build | 4 ++--
 | 
			
		||||
 3 files changed, 8 insertions(+), 8 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/meson.build b/meson.build
 | 
			
		||||
index 2607c5c8f4..38b6b59d00 100644
 | 
			
		||||
--- a/meson.build
 | 
			
		||||
+++ b/meson.build
 | 
			
		||||
@@ -346,9 +346,9 @@ summary({'GLib-2.0 (Flatpak support)': glib2_dep.found()}, bool_yn: true, sectio
 | 
			
		||||
 flatpak_support = glib2_dep.found()
 | 
			
		||||
 cdata.set('HAVE_GLIB2', flatpak_support)
 | 
			
		||||
 
 | 
			
		||||
-gio_dep = dependency('gio-2.0', version : '>= 2.26.0', required : get_option('gsettings'))
 | 
			
		||||
-summary({'GIO (GSettings)': gio_dep.found()}, bool_yn: true, section: 'Misc dependencies')
 | 
			
		||||
-if not gio_dep.found() and get_option('gsettings-pulse-schema').enabled()
 | 
			
		||||
+gsettings_gio_dep = dependency('gio-2.0', version : '>= 2.26.0', required : get_option('gsettings'))
 | 
			
		||||
+summary({'GIO (GSettings)': gsettings_gio_dep.found()}, bool_yn: true, section: 'Misc dependencies')
 | 
			
		||||
+if not gsettings_gio_dep.found() and get_option('gsettings-pulse-schema').enabled()
 | 
			
		||||
   error('`gsettings-pulse-schema` is enabled but `gio` was not found.')
 | 
			
		||||
 endif
 | 
			
		||||
 
 | 
			
		||||
diff --git a/spa/meson.build b/spa/meson.build
 | 
			
		||||
index 67e4b5c506..cf25609dab 100644
 | 
			
		||||
--- a/spa/meson.build
 | 
			
		||||
+++ b/spa/meson.build
 | 
			
		||||
@@ -47,12 +47,12 @@ if get_option('spa-plugins').allowed()
 | 
			
		||||
   summary({'ALSA': alsa_dep.found()}, bool_yn: true, section: 'Backend')
 | 
			
		||||
 
 | 
			
		||||
   bluez_dep = dependency('bluez', version : '>= 4.101', required: get_option('bluez5'))
 | 
			
		||||
-  gio_dep = dependency('gio-2.0', required : get_option('bluez5'))
 | 
			
		||||
-  gio_unix_dep = dependency('gio-unix-2.0', required : get_option('bluez5'))
 | 
			
		||||
+  bluez_gio_dep = dependency('gio-2.0', required : get_option('bluez5'))
 | 
			
		||||
+  bluez_gio_unix_dep = dependency('gio-unix-2.0', required : get_option('bluez5'))
 | 
			
		||||
   bluez_glib2_dep = dependency('glib-2.0', required : get_option('bluez5'))
 | 
			
		||||
   sbc_dep = dependency('sbc', required: get_option('bluez5'))
 | 
			
		||||
   summary({'SBC': sbc_dep.found()}, bool_yn: true, section: 'Bluetooth audio codecs')
 | 
			
		||||
-  bluez5_deps = [ mathlib, dbus_dep, sbc_dep, bluez_dep, bluez_glib2_dep, gio_dep, gio_unix_dep ]
 | 
			
		||||
+  bluez5_deps = [ mathlib, dbus_dep, sbc_dep, bluez_dep, bluez_glib2_dep, bluez_gio_dep, bluez_gio_unix_dep ]
 | 
			
		||||
   bluez_deps_found = get_option('bluez5').allowed()
 | 
			
		||||
   foreach dep: bluez5_deps
 | 
			
		||||
       if get_option('bluez5').enabled() and not dep.found()
 | 
			
		||||
diff --git a/src/modules/meson.build b/src/modules/meson.build
 | 
			
		||||
index ceaa7013d9..3f400f0877 100644
 | 
			
		||||
--- a/src/modules/meson.build
 | 
			
		||||
+++ b/src/modules/meson.build
 | 
			
		||||
@@ -433,11 +433,11 @@ if avahi_dep.found()
 | 
			
		||||
   cdata.set('HAVE_AVAHI', true)
 | 
			
		||||
 endif
 | 
			
		||||
 
 | 
			
		||||
-if gio_dep.found()
 | 
			
		||||
+if gsettings_gio_dep.found()
 | 
			
		||||
   pipewire_module_protocol_pulse_sources += [
 | 
			
		||||
     'module-protocol-pulse/modules/module-gsettings.c',
 | 
			
		||||
   ]
 | 
			
		||||
-  pipewire_module_protocol_pulse_deps += gio_dep
 | 
			
		||||
+  pipewire_module_protocol_pulse_deps += gsettings_gio_dep
 | 
			
		||||
   cdata.set('HAVE_GIO', true)
 | 
			
		||||
   if get_option('gsettings-pulse-schema').enabled()
 | 
			
		||||
     install_data(['module-protocol-pulse/modules/org.freedesktop.pulseaudio.gschema.xml'],
 | 
			
		||||
-- 
 | 
			
		||||
GitLab
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user