From 080086bc5062a1eb025b82051884aaa508f50408 Mon Sep 17 00:00:00 2001 From: Ashok Sidipotu Date: Thu, 17 Feb 2022 18:59:25 +0530 Subject: [PATCH] wireplumber: Create new recipe for policy daemon -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 Change-Id: I8ff6834c5dae94b75e07a0709c403b5d7f3b274b Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl/+/27254 Reviewed-by: Jan-Simon Moeller Tested-by: Jenkins Job builder account --- .../packagegroups/packagegroup-pipewire-base.bb | 16 +++++++++ .../wireplumber/wireplumber-config-agl_git.bb | 10 ------ .../wireplumber-policy-config-agl/00-functions.lua | 27 ++++++++++++++ .../policy.conf | 0 .../policy.lua.d/10-default-policy.lua | 0 .../wireplumber-policy-config-agl_git.bb | 41 ++++++++++++++++++++++ ...oint-device-Fix-endpoints-not-connected-w.patch | 34 ++++++++++++++++++ .../wireplumber/wireplumber_git.bb | 14 +++++--- 8 files changed, 127 insertions(+), 15 deletions(-) create mode 100644 meta-pipewire/recipes-core/packagegroups/packagegroup-pipewire-base.bb create mode 100644 meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/00-functions.lua rename meta-pipewire/recipes-multimedia/wireplumber/{wireplumber-config-agl => wireplumber-policy-config-agl}/policy.conf (100%) rename meta-pipewire/recipes-multimedia/wireplumber/{wireplumber-config-agl => wireplumber-policy-config-agl}/policy.lua.d/10-default-policy.lua (100%) create mode 100644 meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bb create mode 100644 meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0004-policy-endpoint-device-Fix-endpoints-not-connected-w.patch 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 index 000000000..1d20b4705 --- /dev/null +++ b/meta-pipewire/recipes-core/packagegroups/packagegroup-pipewire-base.bb @@ -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 \ +" diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl_git.bb b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl_git.bb index 839a15fda..22ffe5bf3 100644 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl_git.bb +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl_git.bb @@ -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 index 000000000..7e1794df0 --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/00-functions.lua @@ -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-config-agl/policy.conf b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/policy.conf similarity index 100% rename from meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/policy.conf rename to meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/policy.conf diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/policy.lua.d/10-default-policy.lua b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/policy.lua.d/10-default-policy.lua similarity index 100% rename from meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/policy.lua.d/10-default-policy.lua rename to meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/policy.lua.d/10-default-policy.lua 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 index 000000000..1a031160e --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bb @@ -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 " +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 index 000000000..be1e0a527 --- /dev/null +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0004-policy-endpoint-device-Fix-endpoints-not-connected-w.patch @@ -0,0 +1,34 @@ +From 61dcf8b203f26a7c25ffaccdfdd94c233c0440e9 Mon Sep 17 00:00:00 2001 +From: Ashok Sidipotu +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 + diff --git a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb index f42b12770..9504a5671 100644 --- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb +++ b/meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb @@ -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 +} -- 2.16.6