wireplumber: Create new recipe for policy daemon 54/27254/9
authorAshok Sidipotu <ashok.sidipotu@collabora.com>
Thu, 17 Feb 2022 13:29:25 +0000 (18:59 +0530)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Wed, 4 May 2022 14:56:30 +0000 (14:56 +0000)
-carve out a new recipe for wireplumber policy, so that it
 can be assigned to the concerned container.
-create new packagegroup-pipewire-base capturing the set of
 packages required to use PipeWire API.
-remove the implicit dependencies between different wireplumber
 recipes, now each of those recipes will have to be included
 in the top level bb file.
-remove the wireplumber-config virtual package.

Bug-AGL: SPEC-4100
Signed-off-by: Ashok Sidipotu <ashok.sidipotu@collabora.com>
Change-Id: I8ff6834c5dae94b75e07a0709c403b5d7f3b274b
Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl/+/27254
Reviewed-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
Tested-by: Jenkins Job builder account
meta-pipewire/recipes-core/packagegroups/packagegroup-pipewire-base.bb [new file with mode: 0644]
meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl_git.bb
meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/00-functions.lua [new file with mode: 0644]
meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/policy.conf [moved from meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/policy.conf with 100% similarity]
meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/policy.lua.d/10-default-policy.lua [moved from meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/policy.lua.d/10-default-policy.lua with 100% similarity]
meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bb [new file with mode: 0644]
meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0004-policy-endpoint-device-Fix-endpoints-not-connected-w.patch [new file with mode: 0644]
meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb

diff --git a/meta-pipewire/recipes-core/packagegroups/packagegroup-pipewire-base.bb b/meta-pipewire/recipes-core/packagegroups/packagegroup-pipewire-base.bb
new file mode 100644 (file)
index 0000000..1d20b47
--- /dev/null
@@ -0,0 +1,16 @@
+SUMMARY = "PipeWire Media Server Base"
+DESCRIPTION = "The set of packages required to use PipeWire API in AGL"
+LICENSE = "MIT"
+
+inherit packagegroup
+
+PACKAGES = "\
+    packagegroup-pipewire-base \
+    "
+
+RDEPENDS:${PN} += "\
+    pipewire-spa-plugins-meta \
+    pipewire-modules-meta \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', 'pipewire-tools pipewire-spa-tools alsa-utils', '', d)} \
+    pipewire-alsa \
+"
index 839a15f..22ffe5b 100644 (file)
@@ -8,11 +8,9 @@ LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda
 SRC_URI = "\
     file://bluetooth.lua.d/ \
     file://host.lua.d/ \
-    file://policy.lua.d \
     file://00-functions.lua \
     file://alsa-suspend.lua \
     file://bluetooth.conf \
-    file://policy.conf \
     file://wireplumber.conf \
     file://wireplumber-bluetooth.conf \
 "
@@ -35,12 +33,6 @@ do_install:append() {
     install -m 0644 ${WORKDIR}/host.lua.d/*.lua ${config_dir}/host.lua.d/
     install -m 0644 ${WORKDIR}/wireplumber.conf ${config_dir}
 
-    # config of the policy instance
-    install -d ${config_dir}/policy.lua.d/
-    ln -s ../00-functions.lua ${config_dir}/policy.lua.d/00-functions.lua
-    install -m 0644 ${WORKDIR}/policy.lua.d/*.lua ${config_dir}/policy.lua.d/
-    install -m 0644 ${WORKDIR}/policy.conf ${config_dir}
-
     # config of the bluetooth instance
     install -d ${config_dir}/bluetooth.lua.d/
     ln -s ../00-functions.lua ${config_dir}/bluetooth.lua.d/00-functions.lua
@@ -57,7 +49,6 @@ do_install:append() {
 
     # enable additional systemd services
     install -d ${systemd_dir}
-    ln -s ${systemd_system_unitdir}/wireplumber@.service ${systemd_dir}/wireplumber@policy.service
     ln -s ${systemd_system_unitdir}/wireplumber@.service ${systemd_dir}/wireplumber@bluetooth.service
 }
 
@@ -68,4 +59,3 @@ FILES:${PN} += "\
 CONFFILES:${PN} += "\
     ${sysconfdir}/* \
 "
-RPROVIDES:${PN} += "virtual/wireplumber-config"
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/00-functions.lua b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/00-functions.lua
new file mode 100644 (file)
index 0000000..7e1794d
--- /dev/null
@@ -0,0 +1,27 @@
+components = {}
+
+function load_module(m)
+  if not components[m] then
+    components[m] = { "libwireplumber-module-" .. m, type = "module" }
+  end
+end
+
+function load_pw_module(m)
+  if not components[m] then
+    components[m] = { "libpipewire-module-" .. m, type = "pw_module" }
+  end
+end
+
+function load_script(s, a)
+  if not components[s] then
+    components[s] = { s, type = "script/lua", args = a }
+  end
+end
+
+function load_monitor(s, a)
+  load_script("monitors/" .. s .. ".lua", a)
+end
+
+function load_access(s, a)
+  load_script("access/access-" .. s .. ".lua", a)
+end
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bb b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bb
new file mode 100644 (file)
index 0000000..1a03116
--- /dev/null
@@ -0,0 +1,41 @@
+SUMMARY     = "AGL configuration file for wireplumber policy"
+HOMEPAGE    = "https://gitlab.freedesktop.org/gkiagia/wireplumber"
+BUGTRACKER  = "https://jira.automotivelinux.org"
+AUTHOR      = "Ashok Sidipotu <ashok.sidipotu@collabora.com>"
+SECTION     = "multimedia"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+SRC_URI = "\
+    file://policy.lua.d \
+    file://00-functions.lua \
+    file://policy.conf \
+"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+do_install:append() {
+    config_dir="${D}${sysconfdir}/wireplumber/"
+    systemd_dir="${D}${sysconfdir}/systemd/system/pipewire.service.wants"
+
+    install -d ${config_dir}
+    install -m 0644 ${WORKDIR}/00-functions.lua ${config_dir}
+
+    # config of the policy instance
+    install -d ${config_dir}/policy.lua.d/
+    ln -s ../00-functions.lua ${config_dir}/policy.lua.d/00-functions.lua
+    install -m 0644 ${WORKDIR}/policy.lua.d/*.lua ${config_dir}/policy.lua.d/
+    install -m 0644 ${WORKDIR}/policy.conf ${config_dir}
+
+    # enable additional systemd services
+    install -d ${systemd_dir}
+    ln -s ${systemd_system_unitdir}/wireplumber@.service ${systemd_dir}/wireplumber@policy.service
+}
+
+FILES:${PN} += "\
+    ${sysconfdir}/* \
+    ${datadir}/wireplumber/* \
+"
+CONFFILES:${PN} += "\
+    ${sysconfdir}/* \
+"
diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0004-policy-endpoint-device-Fix-endpoints-not-connected-w.patch b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0004-policy-endpoint-device-Fix-endpoints-not-connected-w.patch
new file mode 100644 (file)
index 0000000..be1e0a5
--- /dev/null
@@ -0,0 +1,34 @@
+From 61dcf8b203f26a7c25ffaccdfdd94c233c0440e9 Mon Sep 17 00:00:00 2001
+From: Ashok Sidipotu <ashok.sidipotu@collabora.com>
+Date: Wed, 2 Mar 2022 06:55:37 +0530
+Subject: [PATCH] policy-endpoint-device: Fix endpoints not connected with
+ devices
+
+-if device linkables are created ahead of the endpoints,
+ endpoints are not connected with the devices.
+
+-rescan the endpoints on an endpoint creation.
+---
+ src/scripts/policy-endpoint-device.lua | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+ Upstream-Status: Submitted [https://gitlab.freedesktop.org/pipewire/wireplumber/-/merge_requests/337]
+
+diff --git a/src/scripts/policy-endpoint-device.lua b/src/scripts/policy-endpoint-device.lua
+index c9c6ceb..0ba39b0 100644
+--- a/src/scripts/policy-endpoint-device.lua
++++ b/src/scripts/policy-endpoint-device.lua
+@@ -221,6 +221,10 @@ linkables_om:connect("objects-changed", function (om)
+   scheduleRescan ()
+ end)
++endpoints_om:connect("object-added", function (om)
++  scheduleRescan ()
++end)
++
+ linkables_om:connect("object-removed", function (om, si)
+   unhandleLinkable (si)
+ end)
+-- 
+2.35.1
+
index f42b127..9504a56 100644 (file)
@@ -22,6 +22,7 @@ SRC_URI += "\
     file://0001-Revert-tests-add-pipewire-env-variables-when-running.patch \
     file://0002-Revert-wp-uninstalled-build-this-script-with-the-mes.patch \
     file://0003-spa-json-fix-va_list-APIs-for-different-architecture.patch \
+    file://0004-policy-endpoint-device-Fix-endpoints-not-connected-w.patch \
 "
 
 PV = "0.4.8"
@@ -65,7 +66,6 @@ FILES:${PN} = "\
     ${systemd_system_unitdir}/* \
 "
 RPROVIDES:${PN} += "virtual/pipewire-sessionmanager"
-RDEPENDS:${PN} += "virtual/wireplumber-config"
 
 FILES:lib${PN}-${WPAPI} = "\
     ${libdir}/libwireplumber-${WPAPI}.so.* \
@@ -79,7 +79,11 @@ FILES:${PN}-config += "\
     ${datadir}/wireplumber/bluetooth.lua.d/* \
     ${datadir}/wireplumber/policy.lua.d/* \
 "
-CONFFILES:${PN}-config += "\
-    ${sysconfdir}/wireplumber/* \
-"
-RPROVIDES:${PN}-config += "virtual/wireplumber-config"
+do_install:append() {
+    rm -rf ${D}${sysconfdir}/wireplumber/
+    rm -f ${D}${datadir}/wireplumber/*conf
+    rm -rf ${D}${datadir}/wireplumber/common
+    rm -rf ${D}${datadir}/wireplumber/main.lua.d
+    rm -rf ${D}${datadir}/wireplumber/bluetooth.lua.d
+    rm -rf ${D}${datadir}/wireplumber/policy.lua.d
+}