summaryrefslogtreecommitdiffstats
path: root/meta-pipewire/recipes-multimedia/pipewire
diff options
context:
space:
mode:
Diffstat (limited to 'meta-pipewire/recipes-multimedia/pipewire')
-rw-r--r--meta-pipewire/recipes-multimedia/pipewire/pipewire/0001-systemd-Do-not-override-rootprefix.patch35
-rw-r--r--meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.27.bbappend7
-rw-r--r--meta-pipewire/recipes-multimedia/pipewire/pipewire_1.0.0.bb (renamed from meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.27.bb)167
-rw-r--r--meta-pipewire/recipes-multimedia/pipewire/pipewire_1.0.0.bbappend25
4 files changed, 167 insertions, 67 deletions
diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire/0001-systemd-Do-not-override-rootprefix.patch b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0001-systemd-Do-not-override-rootprefix.patch
new file mode 100644
index 000000000..45d09e6b0
--- /dev/null
+++ b/meta-pipewire/recipes-multimedia/pipewire/pipewire/0001-systemd-Do-not-override-rootprefix.patch
@@ -0,0 +1,35 @@
+From 2501972518a67b1710998452d164cd077a4370f1 Mon Sep 17 00:00:00 2001
+From: Scott Murray <scott.murray@konsulko.com>
+Date: Thu, 17 Mar 2022 10:44:00 -0400
+Subject: [PATCH] systemd: Do not override rootprefix
+
+Do not override rootprefix with the value of prefix when querying
+systemdsystemunitdir from the systemd pkgconfig, as doing so forces
+the assumption that the system is running with usrmerge, which may
+not be the case. Instead, rely on the systemd.pc correctly
+representing the desired install locations.
+
+Reworked version of change in:
+
+https://git.automotivelinux.org/AGL/meta-agl/tree/meta-pipewire/recipes-multimedia/pipewire/pipewire/0012-Miscellanous-changes-to-account-for-lower-version-of.patch
+
+Upstream-Status: Pending
+
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ src/daemon/systemd/system/meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/daemon/systemd/system/meson.build b/src/daemon/systemd/system/meson.build
+index 84ca0b068..6956f2be3 100644
+--- a/src/daemon/systemd/system/meson.build
++++ b/src/daemon/systemd/system/meson.build
+@@ -1,4 +1,4 @@
+-systemd_system_services_dir = systemd.get_variable('systemdsystemunitdir', pkgconfig_define : [ 'rootprefix', prefix])
++systemd_system_services_dir = systemd.get_variable('systemdsystemunitdir')
+ if get_option('systemd-system-unit-dir') != ''
+ systemd_system_services_dir = get_option('systemd-system-unit-dir')
+ endif
+--
+2.35.1
+
diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.27.bbappend b/meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.27.bbappend
deleted file mode 100644
index cc2308e95..000000000
--- a/meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.27.bbappend
+++ /dev/null
@@ -1,7 +0,0 @@
-PACKAGECONFIG = "\
- ${@bb.utils.contains('DISTRO_FEATURES', 'bluez5', 'bluez', '', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'alsa pipewire-alsa', '', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', 'sndfile', '', d)} \
- ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
- gstreamer v4l2 \
-"
diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.27.bb b/meta-pipewire/recipes-multimedia/pipewire/pipewire_1.0.0.bb
index 2757e9278..6fa851caa 100644
--- a/meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.27.bb
+++ b/meta-pipewire/recipes-multimedia/pipewire/pipewire_1.0.0.bb
@@ -10,16 +10,18 @@ SUMMARY = "Multimedia processing server for Linux"
DESCRIPTION = "Linux server for handling and routing audio and video streams between applications and multimedia I/O devices"
HOMEPAGE = "https://pipewire.org/"
BUGTRACKER = "https://gitlab.freedesktop.org/pipewire/pipewire/issues"
-LICENSE = "MIT"
+LICENSE = "MIT & GPL-2.0-only & LGPL-2.1-or-later"
+
LIC_FILES_CHKSUM = " \
- file://LICENSE;md5=e2c0b7d86d04e716a3c4c9ab34260e69 \
+ file://LICENSE;md5=2158739e172e58dc9ab1bdd2d6ec9c72 \
file://COPYING;md5=97be96ca4fab23e9657ffa590b931c1a \
"
SECTION = "multimedia"
DEPENDS = "dbus"
-SRCREV = "e598d0a42227c9dfa79dcb7583c054c5b2ec072d"
+# v1.0.0(El Presidente)
+SRCREV = "4debdcd40b055b3eaa83a8f4443aa990ea566bfe"
SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=master;protocol=https"
S = "${WORKDIR}/git"
@@ -28,9 +30,9 @@ inherit meson pkgconfig systemd manpages gettext useradd
USERADD_PACKAGES = "${PN}"
-GROUPADD_PARAM_${PN} = "--system pipewire"
+GROUPADD_PARAM:${PN} = "--system pipewire"
-USERADD_PARAM_${PN} = "--system --home / --no-create-home \
+USERADD_PARAM:${PN} = "--system --home / --no-create-home \
--comment 'PipeWire multimedia daemon' \
--gid pipewire --groups audio,video \
pipewire"
@@ -38,14 +40,24 @@ USERADD_PARAM_${PN} = "--system --home / --no-create-home \
# For "EVL", look up https://evlproject.org/ . It involves
# a specially prepared kernel, and is currently unavailable
# in Yocto.
+#
# FFmpeg and Vulkan aren't really supported - at the current
# stage (version 0.3.22), these are just experiments, not
# actual features.
+#
# libcamera support currently does not build successfully.
+#
# systemd user service files are disabled because per-user
# PipeWire instances aren't really something that makes
# much sense in an embedded environment. A system-wide
# instance does.
+#
+# manpage generation requires xmltoman, which is not available.
+#
+# Dont build any session managers along with pipewire
+# wireplumber is the session manger used in AGL and it will
+# be build in a different recipe
+#
EXTRA_OEMESON += " \
-Daudiotestsrc=enabled \
-Devl=disabled \
@@ -56,6 +68,8 @@ EXTRA_OEMESON += " \
-Dffmpeg=disabled \
-Dvulkan=disabled \
-Dlibcamera=disabled \
+ -Dman=disabled \
+ -Dsession-managers=[] \
"
PACKAGECONFIG ??= "\
@@ -70,21 +84,22 @@ PACKAGECONFIG ??= "\
# is why these two are marked in their respective packageconfigs
# as being in conflict.
-PACKAGECONFIG[alsa] = "-Dalsa=enabled,-Dalsa=disabled,alsa-lib udev"
+PACKAGECONFIG[alsa] = "-Dalsa=enabled,-Dalsa=disabled,alsa-lib udev,,pipewire-alsa-card-profile"
PACKAGECONFIG[bluez] = "-Dbluez5=enabled,-Dbluez5=disabled,bluez5 sbc"
-PACKAGECONFIG[docs] = "-Ddocs=enabled,-Ddocs=disabled,doxygen"
+PACKAGECONFIG[docs] = "-Ddocs=enabled,-Ddocs=disabled,doxygen-native"
PACKAGECONFIG[gstreamer] = "-Dgstreamer=enabled,-Dgstreamer=disabled,glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base"
PACKAGECONFIG[jack] = "-Djack=enabled,-Djack=disabled,jack,,,pipewire-jack"
-PACKAGECONFIG[manpages] = "-Dman=enabled,-Dman=disabled,libxml-parser-perl-native"
PACKAGECONFIG[sdl2] = "-Dsdl2=enabled,-Dsdl2=disabled,virtual/libsdl2"
PACKAGECONFIG[sndfile] = "-Dsndfile=enabled,-Dsndfile=disabled,libsndfile1"
PACKAGECONFIG[systemd] = "-Dsystemd=enabled -Dsystemd-system-service=enabled ,-Dsystemd=disabled -Dsystemd-system-service=disabled,systemd"
PACKAGECONFIG[v4l2] = "-Dv4l2=enabled,-Dv4l2=disabled,udev"
PACKAGECONFIG[pipewire-alsa] = "-Dpipewire-alsa=enabled,-Dpipewire-alsa=disabled,alsa-lib"
PACKAGECONFIG[pipewire-jack] = "-Dpipewire-jack=enabled -Dlibjack-path=${libdir}/${PW_MODULE_SUBDIR}/jack,-Dpipewire-jack=disabled,jack,,,jack"
+PACKAGECONFIG[pipewire-v4l2] = "-Dpipewire-v4l2=enabled -Dpipewire-v4l2=${libdir}/${PW_MODULE_SUBDIR}/v4l2,-Dpipewire-v4l2=disabled,v4l2"
-PACKAGESPLITFUNCS_prepend = " split_dynamic_packages "
-PACKAGESPLITFUNCS_append = " set_dynamic_metapkg_rdepends "
+PACKAGESPLITFUNCS:prepend = " split_dynamic_packages "
+PACKAGESPLITFUNCS:append = " set_dynamic_metapkg_rdepends "
+PACKAGESPLITFUNCS:append = " fixup_dynamic_pkg_licenses "
SPA_SUBDIR = "spa-0.2"
PW_MODULE_SUBDIR = "pipewire-0.3"
@@ -94,12 +109,32 @@ remove_unused_installed_files() {
# Remove it if pipewire-jack is not built to avoid creating the
# pipewire-jack package.
if ${@bb.utils.contains('PACKAGECONFIG', 'pipewire-jack', 'false', 'true', d)}; then
- rm -f "${D}${sysconfdir}/pipewire/jack.conf"
+ rm -f "${D}${datadir}/pipewire/jack.conf"
fi
}
do_install[postfuncs] += "remove_unused_installed_files"
+python fixup_dynamic_pkg_licenses () {
+ #dynamic packages inherit currently whatever is specified in LICENSE (thus multiple)
+ packages = (d.getVar('PACKAGES') or "").split()
+
+ for pkg in packages:
+ # we manually assign the LICENSES here to cover all packages (even dynamically created ones)
+ d.setVar("LICENSE:" + pkg ,"MIT")
+
+ # next handle special cases
+ # ==> LICENSE:${PN}-spa-plugins-alsa = "LGPL-2.1-or-later"
+ if "pipewire-spa-plugins-alsa" in pkg:
+ d.setVar("LICENSE:pipewire-spa-plugins-alsa", "LGPL-2.1-or-later")
+ # ==> LICENSE:${PN}-alsa-card-profile = "LGPL-2.1-or-later"
+ if "pipewire-alsa-card-profile" in pkg:
+ d.setVar("LICENSE:pipewire-alsa-card-profile", "LGPL-2.1-or-later")
+ # ==> LICENSE:${PN}-jack = "GPL-2.0-only"
+ if "pipewire-jack" in pkg:
+ d.setVar("LICENSE:pipewire-jack", "GPL-2.0-only")
+}
+
python split_dynamic_packages () {
# Create packages for each SPA plugin. These plugins are located
# in individual subdirectories, so a recursive search is needed.
@@ -127,11 +162,11 @@ python set_dynamic_metapkg_rdepends () {
pw_module_pn = base_pn + '-modules'
pw_module_metapkg = pw_module_pn + '-meta'
- d.setVar('ALLOW_EMPTY_' + spa_metapkg, "1")
- d.setVar('FILES_' + spa_metapkg, "")
+ d.setVar('ALLOW_EMPTY:' + spa_metapkg, "1")
+ d.setVar('FILES:' + spa_metapkg, "")
- d.setVar('ALLOW_EMPTY_' + pw_module_metapkg, "1")
- d.setVar('FILES_' + pw_module_metapkg, "")
+ d.setVar('ALLOW_EMPTY:' + pw_module_metapkg, "1")
+ d.setVar('FILES:' + pw_module_metapkg, "")
blacklist = [ spa_pn, spa_metapkg, pw_module_pn, pw_module_metapkg ]
spa_metapkg_rdepends = []
@@ -166,11 +201,11 @@ python set_dynamic_metapkg_rdepends () {
if is_pw_module_pkg:
pw_module_metapkg_rdepends.append(pkg)
- d.setVar('RDEPENDS_' + spa_metapkg, ' '.join(spa_metapkg_rdepends))
- d.setVar('DESCRIPTION_' + spa_metapkg, spa_pn + ' meta package')
+ d.setVar('RDEPENDS:' + spa_metapkg, ' '.join(spa_metapkg_rdepends))
+ d.setVar('DESCRIPTION:' + spa_metapkg, spa_pn + ' meta package')
- d.setVar('RDEPENDS_' + pw_module_metapkg, ' '.join(pw_module_metapkg_rdepends))
- d.setVar('DESCRIPTION_' + pw_module_metapkg, pw_module_pn + ' meta package')
+ d.setVar('RDEPENDS:' + pw_module_metapkg, ' '.join(pw_module_metapkg_rdepends))
+ d.setVar('DESCRIPTION:' + pw_module_metapkg, pw_module_pn + ' meta package')
}
PACKAGES =+ "\
@@ -179,7 +214,7 @@ PACKAGES =+ "\
${PN}-pulse \
${PN}-alsa \
${PN}-jack \
- ${PN}-media-session \
+ ${PN}-v4l2 \
${PN}-spa-plugins \
${PN}-spa-plugins-meta \
${PN}-spa-tools \
@@ -191,92 +226,104 @@ PACKAGES =+ "\
PACKAGES_DYNAMIC = "^${PN}-spa-plugins.* ^${PN}-modules.*"
-SYSTEMD_SERVICE_${PN} = "pipewire.service"
-CONFFILES_${PN} += "${sysconfdir}/pipewire/pipewire.conf"
-FILES_${PN} = " \
- ${sysconfdir}/pipewire/pipewire.conf \
- ${systemd_system_unitdir}/pipewire.* \
+SYSTEMD_SERVICE:${PN} = "pipewire.service"
+CONFFILES:${PN} += "${datadir}/pipewire/pipewire.conf"
+FILES:${PN} = " \
+ ${datadir}/pipewire/pipewire.conf \
+ ${datadir}/pipewire/filter-chain.conf \
+ ${datadir}/pipewire/filter-chain \
+ ${systemd_user_unitdir}/pipewire.* \
+ ${systemd_system_unitdir}/pipewire* \
${bindir}/pipewire \
+ ${datadir}/pipewire/pipewire-avb.conf \
+ ${bindir}/pipewire-avb \
+ ${datadir}/pipewire/pipewire-aes67.conf \
+ ${bindir}/pipewire-aes67 \
+ ${datadir}/pipewire/pipewire.conf.avail \
+ ${datadir}/pipewire/pipewire-pulse.conf.avail \
+ ${datadir}/pipewire/client-rt.conf.avail \
+ ${datadir}/pipewire/client.conf.avail \
+ ${sysconfdir}/security/limits.d \
"
-FILES_${PN}-dev += " \
+FILES:${PN}-dev += " \
${libdir}/${PW_MODULE_SUBDIR}/jack/libjack*.so \
"
-CONFFILES_libpipewire += "${sysconfdir}/pipewire/client.conf"
-FILES_libpipewire = " \
- ${sysconfdir}/pipewire/client.conf \
+CONFFILES:libpipewire += "${datadir}/pipewire/client.conf"
+FILES:libpipewire = " \
+ ${datadir}/pipewire/client.conf \
+ ${datadir}/pipewire/client-rt.conf \
+ ${datadir}/pipewire/minimal.conf \
${libdir}/libpipewire-*.so.* \
"
# Add the bare minimum modules and plugins required to be able
# to use libpipewire. Without these, it is essentially unusable.
-RDEPENDS_libpipewire += " \
+RDEPENDS:libpipewire += " \
${PN}-modules-client-node \
${PN}-modules-protocol-native \
${PN}-spa-plugins-support \
"
-FILES_${PN}-tools = " \
+FILES:${PN}-tools = " \
${bindir}/pw-* \
"
# This is a shim daemon that is intended to be used as a
# drop-in PulseAudio replacement, providing a pulseaudio-compatible
# socket that can be used by applications that use libpulse.
-CONFFILES_${PN}-pulse += "${sysconfdir}/pipewire/pipewire-pulse.conf"
-FILES_${PN}-pulse = " \
- ${sysconfdir}/pipewire/pipewire-pulse.conf \
+CONFFILES:${PN}-pulse += "${datadir}/pipewire/pipewire-pulse.conf"
+
+FILES:${PN}-pulse = " \
+ ${datadir}/pipewire/pipewire-pulse.conf \
+ ${systemd_user_unitdir}/pipewire-pulse.* \
${bindir}/pipewire-pulse \
"
-RDEPENDS_${PN}-pulse += " \
+RDEPENDS:${PN}-pulse += " \
${PN}-modules-protocol-pulse \
"
# alsa plugin to redirect audio to pipewire
-FILES_${PN}-alsa = "\
+FILES:${PN}-alsa = "\
${libdir}/alsa-lib/* \
${datadir}/alsa/alsa.conf.d/* \
"
-# jack drop-in libraries to redirect audio to pipewire
-CONFFILES_${PN}-jack = "${sysconfdir}/pipewire/jack.conf"
-FILES_${PN}-jack = "\
- ${sysconfdir}/pipewire/jack.conf \
- ${libdir}/${PW_MODULE_SUBDIR}/jack/libjack*.so.* \
+#lib to emulate v4l2 system calls on top of PipeWire
+FILES:${PN}-v4l2 = "\
+ ${libdir}/${PW_MODULE_SUBDIR}/v4l2/libpw-v4l2.so \
"
-# Example session manager. Not intended for use in production.
-SYSTEMD_SERVICE_${PN}-media-session = "pipewire-media-session.service"
-CONFFILES_${PN}-media-session = "${sysconfdir}/pipewire/media-session.d/*"
-FILES_${PN}-media-session = " \
- ${bindir}/pipewire-media-session \
- ${systemd_system_unitdir}/pipewire-media-session.service \
- ${sysconfdir}/pipewire/media-session.d/* \
+# jack drop-in libraries to redirect audio to pipewire
+CONFFILES:${PN}-jack = "${datadir}/pipewire/jack.conf"
+FILES:${PN}-jack = "\
+ ${datadir}/pipewire/jack.conf \
+ ${libdir}/${PW_MODULE_SUBDIR}/jack/libjack*.so.* \
"
-RPROVIDES_${PN}-media-session = "virtual/pipewire-sessionmanager"
-
# Dynamic packages (see set_dynamic_metapkg_rdepends).
-FILES_${PN}-spa-plugins = ""
-RRECOMMENDS_${PN}-spa-plugins += "${PN}-spa-plugins-meta"
+FILES:${PN}-spa-plugins-bluez5 += " \
+ ${datadir}/${SPA_SUBDIR}/bluez5/bluez-hardware.conf \
+"
+RRECOMMENDS:${PN}-spa-plugins += "${PN}-spa-plugins-meta"
-FILES_${PN}-spa-tools = " \
+FILES:${PN}-spa-tools = " \
${bindir}/spa-* \
"
# Dynamic packages (see set_dynamic_metapkg_rdepends).
-FILES_${PN}-modules = ""
-RRECOMMENDS_${PN}-modules += "${PN}-modules-meta"
+FILES:${PN}-modules = ""
+RRECOMMENDS:${PN}-modules += "${PN}-modules-meta"
-CONFFILES_${PN}-modules-rtkit = "${sysconfdir}/pipewire/client-rt.conf"
-FILES_${PN}-modules-rtkit += " \
- ${sysconfdir}/pipewire/client-rt.conf \
+CONFFILES:${PN}-modules-rtkit = "${datadir}/pipewire/client-rt.conf"
+FILES:${PN}-modules-rtkit += " \
+ ${datadir}/pipewire/client-rt.conf \
"
-FILES_${PN}-alsa-card-profile = " \
+FILES:${PN}-alsa-card-profile = " \
${datadir}/alsa-card-profile/* \
${nonarch_base_libdir}/udev/rules.d/90-pipewire-alsa.rules \
"
-FILES_gstreamer1.0-pipewire = " \
+FILES:gstreamer1.0-pipewire = " \
${libdir}/gstreamer-1.0/* \
"
diff --git a/meta-pipewire/recipes-multimedia/pipewire/pipewire_1.0.0.bbappend b/meta-pipewire/recipes-multimedia/pipewire/pipewire_1.0.0.bbappend
new file mode 100644
index 000000000..beb7c0817
--- /dev/null
+++ b/meta-pipewire/recipes-multimedia/pipewire/pipewire_1.0.0.bbappend
@@ -0,0 +1,25 @@
+SRC_URI += "\
+ file://0001-systemd-Do-not-override-rootprefix.patch \
+"
+
+PACKAGECONFIG = "\
+ ${@bb.utils.contains('DISTRO_FEATURES', 'bluez5', 'bluez', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'alsa pipewire-alsa', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', 'sndfile', '', d)} \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+ gstreamer v4l2 \
+"
+
+do_install:append() {
+ # install symlinks to alsalib configuration files
+ for i in 50-pipewire.conf 99-pipewire-default.conf; do
+ if [ -f ${D}${datadir}/alsa/alsa.conf.d/${i} ]; then
+ install -d ${D}${sysconfdir}/alsa/conf.d
+ ln -s ${datadir}/alsa/alsa.conf.d/${i} ${D}${sysconfdir}/alsa/conf.d/${i}
+ fi
+ done
+}
+
+FILES:${PN}-alsa:append = "\
+ ${sysconfdir}/alsa/conf.d/* \
+"