diff options
Diffstat (limited to 'meta-pipewire/recipes-multimedia/pipewire')
-rw-r--r-- | meta-pipewire/recipes-multimedia/pipewire/pipewire/0001-systemd-Do-not-override-rootprefix.patch | 35 | ||||
-rw-r--r-- | meta-pipewire/recipes-multimedia/pipewire/pipewire_0.3.27.bbappend | 7 | ||||
-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.bbappend | 25 |
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/* \ +" |