From 1f9f960298a6a2e6ae0360c4ef42e88c9678069a Mon Sep 17 00:00:00 2001 From: Ashok Sidipotu Date: Thu, 17 Feb 2022 19:02:03 +0530 Subject: Enable Wireplumber Policy instance in ivi guest image. -add wireplumber-policy-config-agl recipe to guest, while wireplumber-config-agl remains in host. -add packagegroup-pipewire-base which is needed by the policy recipe. -mount host pipewire server socket in /var directory in guest image and define a PIPEWIRE_RUNTIME_DIR environment variable based on this new mount point. -make the needed service file changes to have wireplumber policy instance start on its own with out depending on pipewire service, limit this change to lxc layers. -install wireplumber@policy.service in sockets.targets.want directory, this is need for its self start, limit this change to lxc layers Bug-AGL: SPEC-4100 Signed-off-by: Ashok Sidipotu Change-Id: Ifbd7a026c75a199bb540c1593d5a93f67a4bde02 --- .../lxc-config/lxc-config-ivi-demo/mount.in | 2 + .../lxc-config/lxc-config-ivi-demo/environment.in | 1 + .../lxc-config/lxc-config-ivi-demo/mount.in | 1 + .../lxc-config-ivi-demo/system.conf.ivi-demo.in | 1 + .../wireplumber-policy-config-agl_git.bbappend | 8 +++ ...eplumber-to-not-depend-on-the-pipewire-de.patch | 64 ++++++++++++++++++++++ .../wireplumber/wireplumber_git.bbappend | 5 ++ .../images/guest-image-ivi-demo.bb | 5 +- .../recipes-platform/images/lxc-host-image-demo.bb | 1 + 9 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 meta-agl-lxc/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bbappend create mode 100644 meta-agl-lxc/recipes-multimedia/wireplumber/wireplumber/0001-systemd-wireplumber-to-not-depend-on-the-pipewire-de.patch create mode 100644 meta-agl-lxc/recipes-multimedia/wireplumber/wireplumber_git.bbappend diff --git a/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-ivi-demo/mount.in b/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-ivi-demo/mount.in index 536f24db..2fbf4193 100644 --- a/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-ivi-demo/mount.in +++ b/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-ivi-demo/mount.in @@ -18,3 +18,5 @@ lxc.mount.entry = /dev/input dev/input none bind,optional,create=dir lxc.cgroup.devices.allow = c 10:* rwm lxc.mount.entry = /dev/pvr_sync dev/pvr_sync none bind,optional,create=file +lxc.mount.entry = /run/pipewire/pipewire-0 var/pipewire-0 none bind,optional,create=file + diff --git a/meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/environment.in b/meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/environment.in index 374b9c03..632252d5 100644 --- a/meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/environment.in +++ b/meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/environment.in @@ -4,4 +4,5 @@ lxc.environment = QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/ lxc.environment = QML_IMPORT_PATH=/usr/lib/qml/ lxc.environment = QML2_IMPORT_PATH=/usr/lib/qml/ lxc.environment = QT_WAYLAND_SHELL_INTEGRATION=xdg-shell +lxc.environment = PIPEWIRE_RUNTIME_DIR=/var diff --git a/meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/mount.in b/meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/mount.in index 83362ddf..262f09bd 100644 --- a/meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/mount.in +++ b/meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/mount.in @@ -14,3 +14,4 @@ lxc.mount.entry = /run/drm-lease-manager/lease-ivi var/display/drm-lease-manager lxc.cgroup.devices.allow = c 13:* rwm lxc.mount.entry = /dev/input dev/input none bind,optional,create=dir +lxc.mount.entry = /run/pipewire/pipewire-0 var/pipewire-0 none bind,optional,create=file diff --git a/meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/system.conf.ivi-demo.in b/meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/system.conf.ivi-demo.in index 29a49b6c..de7c6cdd 100644 --- a/meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/system.conf.ivi-demo.in +++ b/meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/system.conf.ivi-demo.in @@ -6,3 +6,4 @@ DefaultEnvironment = QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/ DefaultEnvironment = QML_IMPORT_PATH=/usr/lib/qml/ DefaultEnvironment = QML2_IMPORT_PATH=/usr/lib/qml/ DefaultEnvironment = QT_WAYLAND_SHELL_INTEGRATION=xdg-shell +DefaultEnvironment = PIPEWIRE_RUNTIME_DIR=/var diff --git a/meta-agl-lxc/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bbappend b/meta-agl-lxc/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bbappend new file mode 100644 index 00000000..fe6dab86 --- /dev/null +++ b/meta-agl-lxc/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bbappend @@ -0,0 +1,8 @@ +do_install:append() { + config_dir="${D}${sysconfdir}/wireplumber/" + systemd_dir="${D}${sysconfdir}/systemd/system/sockets.target.wants" + + # enable additional systemd services + install -d ${systemd_dir} + ln -s ${systemd_system_unitdir}/wireplumber@.service ${systemd_dir}/wireplumber@policy.service +} diff --git a/meta-agl-lxc/recipes-multimedia/wireplumber/wireplumber/0001-systemd-wireplumber-to-not-depend-on-the-pipewire-de.patch b/meta-agl-lxc/recipes-multimedia/wireplumber/wireplumber/0001-systemd-wireplumber-to-not-depend-on-the-pipewire-de.patch new file mode 100644 index 00000000..0da0bfb6 --- /dev/null +++ b/meta-agl-lxc/recipes-multimedia/wireplumber/wireplumber/0001-systemd-wireplumber-to-not-depend-on-the-pipewire-de.patch @@ -0,0 +1,64 @@ +From a2d324c75057f0ddd66cbe5b5e419fddda213cc2 Mon Sep 17 00:00:00 2001 +From: Ashok Sidipotu +Date: Mon, 28 Feb 2022 06:46:19 +0530 +Subject: [PATCH] systemd: changes to run wireplumber instances in containers + +- remove the pipewire daemon dependencies so that +only wireplumber policy daemon can run in containers. +- remove pipewire user +--- + src/systemd/system/wireplumber@.service.in | 8 +++----- + src/systemd/user/wireplumber@.service.in | 5 ++--- + 2 files changed, 5 insertions(+), 8 deletions(-) + + Inappropriate [configuration] + +diff --git a/src/systemd/system/wireplumber@.service.in b/src/systemd/system/wireplumber@.service.in +index ba8eefe..e4b985b 100644 +--- a/src/systemd/system/wireplumber@.service.in ++++ b/src/systemd/system/wireplumber@.service.in +@@ -5,8 +5,7 @@ + # wireplumber@policy.service loads policy.conf, etc. + [Unit] + Description=Multimedia Service Session Manager (%i) +-After=pipewire.service +-BindsTo=pipewire.service ++After=sockets.target + Conflicts=pipewire-media-session.service + + [Service] +@@ -19,9 +18,8 @@ SystemCallFilter=@system-service + Type=simple + ExecStart=@WP_BINARY@ -c %i.conf + Restart=on-failure +-User=pipewire +-Environment=PIPEWIRE_RUNTIME_DIR=%t/pipewire ++Environment=PIPEWIRE_RUNTIME_DIR=/var + Environment=GIO_USE_VFS=local + + [Install] +-WantedBy=pipewire.service ++WantedBy=multi-user.target +diff --git a/src/systemd/user/wireplumber@.service.in b/src/systemd/user/wireplumber@.service.in +index 9dbceff..7e21194 100644 +--- a/src/systemd/user/wireplumber@.service.in ++++ b/src/systemd/user/wireplumber@.service.in +@@ -5,8 +5,7 @@ + # wireplumber@policy.service loads policy.conf, etc. + [Unit] + Description=Multimedia Service Session Manager (%i) +-After=pipewire.service +-BindsTo=pipewire.service ++After=sockets.target + Conflicts=pipewire-media-session.service + + [Service] +@@ -23,4 +22,4 @@ Slice=session.slice + Environment=GIO_USE_VFS=local + + [Install] +-WantedBy=pipewire.service ++WantedBy=multi-user.target +-- +2.35.1 + diff --git a/meta-agl-lxc/recipes-multimedia/wireplumber/wireplumber_git.bbappend b/meta-agl-lxc/recipes-multimedia/wireplumber/wireplumber_git.bbappend new file mode 100644 index 00000000..6a73503d --- /dev/null +++ b/meta-agl-lxc/recipes-multimedia/wireplumber/wireplumber_git.bbappend @@ -0,0 +1,5 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/wireplumber:" + +SRC_URI += "\ + file://0001-systemd-wireplumber-to-not-depend-on-the-pipewire-de.patch \ +" diff --git a/meta-agl-lxc/recipes-platform/images/guest-image-ivi-demo.bb b/meta-agl-lxc/recipes-platform/images/guest-image-ivi-demo.bb index 9cb495a3..22a59114 100644 --- a/meta-agl-lxc/recipes-platform/images/guest-image-ivi-demo.bb +++ b/meta-agl-lxc/recipes-platform/images/guest-image-ivi-demo.bb @@ -24,4 +24,7 @@ IMAGE_INSTALL += " \ ttf-dejavu-mathtexgyre \ ttf-dejavu-common \ ca-certificates \ -" + wireplumber \ + packagegroup-pipewire-base \ + wireplumber-policy-config-agl \ +" \ No newline at end of file diff --git a/meta-agl-lxc/recipes-platform/images/lxc-host-image-demo.bb b/meta-agl-lxc/recipes-platform/images/lxc-host-image-demo.bb index fd7e559b..aace83a8 100644 --- a/meta-agl-lxc/recipes-platform/images/lxc-host-image-demo.bb +++ b/meta-agl-lxc/recipes-platform/images/lxc-host-image-demo.bb @@ -12,6 +12,7 @@ IMAGE_INSTALL += " \ alsa-utils \ packagegroup-pipewire \ pipewire-ic-ipc \ + wireplumber-config-agl \ ${@bb.utils.contains('AGL_FEATURES', 'agl-drm-lease', 'drm-lease-manager', '', d)} \ " -- cgit 1.2.3-korg