diff options
Diffstat (limited to 'meta-agl-ic-container/recipes-multimedia')
4 files changed, 114 insertions, 0 deletions
diff --git a/meta-agl-ic-container/recipes-multimedia/pipewire-ic-ipc/pipewire-ic-ipc_git.bb b/meta-agl-ic-container/recipes-multimedia/pipewire-ic-ipc/pipewire-ic-ipc_git.bb new file mode 100644 index 00000000..27f6bfc5 --- /dev/null +++ b/meta-agl-ic-container/recipes-multimedia/pipewire-ic-ipc/pipewire-ic-ipc_git.bb @@ -0,0 +1,37 @@ +SUMMARY = "PipeWire AGL Instrument Cluster IPC" +AUTHOR = "George Kiagiadakis <george.kiagiadakis@collabora.com>" +SECTION = "multimedia" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;beginline=3;md5=e8ad01a5182f2c1b3a2640e9ea268264" + +PV = "0.1+git${SRCPV}" + +SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/pipewire-ic-ipc.git;protocol=https;branch=${AGL_BRANCH}" +SRCREV = "f93f9cda5d8a380bc8846b5de3fc24613466adf3" + +S = "${WORKDIR}/git" + +inherit meson pkgconfig systemd + +# build the server on the host +PACKAGECONFIG = "\ + server \ + ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \ +" +# only the example client in the guest +PACKAGECONFIG:aglcontainerguest = "client" + +# systemd integration for the server-side component +PACKAGECONFIG[systemd] = "-Dsystemd=enabled,-Dsystemd=disabled,systemd" +# server-side component +PACKAGECONFIG[server] = "-Dserver=true,-Dserver=false,pipewire" +# example client; not needed if you use the icipc library in your IC applciation +PACKAGECONFIG[client] = "-Dclient=true,-Dclient=false," + +# server-side systemd service +SYSTEMD_SERVICE:${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'pipewire-ic-ipc.service', '', d)}" + +FILES:${PN} += "\ + ${datadir}/pipewire/* \ + ${libdir}/pipewire-0.3/* \ +" diff --git a/meta-agl-ic-container/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bbappend b/meta-agl-ic-container/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bbappend new file mode 100644 index 00000000..fe6dab86 --- /dev/null +++ b/meta-agl-ic-container/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-ic-container/recipes-multimedia/wireplumber/wireplumber/0001-systemd-wireplumber-to-not-depend-on-the-pipewire-de.patch b/meta-agl-ic-container/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-ic-container/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 <ashok.sidipotu@collabora.com> +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-ic-container/recipes-multimedia/wireplumber/wireplumber_git.bbappend b/meta-agl-ic-container/recipes-multimedia/wireplumber/wireplumber_git.bbappend new file mode 100644 index 00000000..56f03a4c --- /dev/null +++ b/meta-agl-ic-container/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 \ +" |