summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAshok Sidipotu <ashok.sidipotu@collabora.com>2022-02-17 18:59:25 +0530
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2022-05-04 14:56:30 +0000
commit080086bc5062a1eb025b82051884aaa508f50408 (patch)
treebb291b4c2dce25e08af5228dd805b61bc3d0e881
parent00691c280303d633f638b7a8141cc59f9ade4813 (diff)
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 <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
-rw-r--r--meta-pipewire/recipes-core/packagegroups/packagegroup-pipewire-base.bb16
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl_git.bb10
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/00-functions.lua27
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/policy.conf (renamed from meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/policy.conf)0
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl/policy.lua.d/10-default-policy.lua (renamed from meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/policy.lua.d/10-default-policy.lua)0
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bb41
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber/0004-policy-endpoint-device-Fix-endpoints-not-connected-w.patch34
-rw-r--r--meta-pipewire/recipes-multimedia/wireplumber/wireplumber_git.bb14
8 files changed, 127 insertions, 15 deletions
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
index 42f714849..42f714849 100644
--- a/meta-pipewire/recipes-multimedia/wireplumber/wireplumber-config-agl/policy.conf
+++ b/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
index e6170dd1c..e6170dd1c 100644
--- 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
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 <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
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 <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
+
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
+}