[meta-multimedia] wireplumber: Improve configuration

Message ID 20220216205502.748440-1-crg7475@mailbox.org
State New
Headers show
Series [meta-multimedia] wireplumber: Improve configuration | expand

Commit Message

Carlos Rafael Giani Feb. 16, 2022, 8:55 p.m. UTC
By default, the WirePlumber lua scripts try to access a session DBus, which
is not available if WirePlumber is run system wide. Add a small script
that turns off the bits that require session DBus. These involve reserving
ALSA devices (only useful in multi-user desktop setups) and Flatpak.

Also, fix the configuration file paths (WirePlumber uses /usr/share instead
of /etc) and add the correct files to CONFFILES:${PN}.

Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
---
 ...-disable-session-dbus-dependent-features.lua |  5 +++++
 .../wireplumber/wireplumber_0.4.8.bb            | 17 ++++++++++-------
 2 files changed, 15 insertions(+), 7 deletions(-)
 create mode 100644 meta-multimedia/recipes-multimedia/wireplumber/files/90-OE-disable-session-dbus-dependent-features.lua

Patch

diff --git a/meta-multimedia/recipes-multimedia/wireplumber/files/90-OE-disable-session-dbus-dependent-features.lua b/meta-multimedia/recipes-multimedia/wireplumber/files/90-OE-disable-session-dbus-dependent-features.lua
new file mode 100644
index 000000000..353a49c0b
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/wireplumber/files/90-OE-disable-session-dbus-dependent-features.lua
@@ -0,0 +1,5 @@ 
+-- These features require a session DBus instance, which is not available
+-- by default in OE generated images. The absence of such a DBus instance
+-- causes WirePlumber to fail to start. Turn these off to prevent that.
+alsa_monitor.properties["alsa.reserve"] = false
+default_access.properties["enable-flatpak-portal"] = false
diff --git a/meta-multimedia/recipes-multimedia/wireplumber/wireplumber_0.4.8.bb b/meta-multimedia/recipes-multimedia/wireplumber/wireplumber_0.4.8.bb
index 4d26e3360..2310c3a78 100644
--- a/meta-multimedia/recipes-multimedia/wireplumber/wireplumber_0.4.8.bb
+++ b/meta-multimedia/recipes-multimedia/wireplumber/wireplumber_0.4.8.bb
@@ -13,7 +13,8 @@  DEPENDS = "glib-2.0 glib-2.0-native lua pipewire \
 
 SRCREV = "e14bb72dcc85e2130d0ea96768e5ae3b375a041e"
 SRC_URI = "git://gitlab.freedesktop.org/pipewire/wireplumber.git;branch=master;protocol=https \
-           "
+           file://90-OE-disable-session-dbus-dependent-features.lua \
+          "
 
 S = "${WORKDIR}/git"
 
@@ -50,6 +51,12 @@  PACKAGESPLITFUNCS:append = " set_dynamic_metapkg_rdepends "
 
 WP_MODULE_SUBDIR = "wireplumber-0.4"
 
+add_custom_lua_config_scripts() {
+    install -m 0644 ${WORKDIR}/90-OE-disable-session-dbus-dependent-features.lua ${D}${datadir}/wireplumber/main.lua.d
+}
+
+do_install[postfuncs] += "add_custom_lua_config_scripts"
+
 python split_dynamic_packages () {
     # Create packages for each WirePlumber module.
     wp_module_libdir = d.expand('${libdir}/${WP_MODULE_SUBDIR}')
@@ -117,12 +124,8 @@  PACKAGES_DYNAMIC = "^${PN}-modules.*"
 
 SYSTEMD_SERVICE:${PN} = "wireplumber.service"
 CONFFILES:${PN} += " \
-    ${sysconfdir}/wireplumber/config.lua \
-    ${sysconfdir}/wireplumber/config.lua.d/* \
-"
-FILES:${PN} += " \
-    ${sysconfdir}/wireplumber/config.lua \
-    ${sysconfdir}/wireplumber/config.lua.d/* \
+    ${datadir}/wireplumber/wireplumber.conf \
+    ${datadir}/wireplumber/*.lua.d/* \
 "
 # Add pipewire to RRECOMMENDS, since WirePlumber expects a PipeWire daemon to
 # be present. While in theory any application that uses libpipewire can configure