* [meta-multimedia][PATCH 1/2] pipewire: Move to meta-multimedia @ 2021-03-03 11:41 Carlos Rafael Giani 2021-03-03 11:41 ` [meta-multimedia][PATCH 2/2] pipewire: Rework 0.3 recipe and upgrade to 0.3.22 Carlos Rafael Giani 2021-03-03 21:01 ` [oe] [meta-multimedia][PATCH 1/2] pipewire: Move to meta-multimedia Andreas Müller 0 siblings, 2 replies; 10+ messages in thread From: Carlos Rafael Giani @ 2021-03-03 11:41 UTC (permalink / raw) To: openembedded-devel; +Cc: quentin.schulz, george.kiagiadakis Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org> --- .../recipes-multimedia/pipewire/pipewire-0.2_git.bb | 0 .../recipes-multimedia/pipewire/pipewire_git.bb | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename {meta-oe => meta-multimedia}/recipes-multimedia/pipewire/pipewire-0.2_git.bb (100%) rename {meta-oe => meta-multimedia}/recipes-multimedia/pipewire/pipewire_git.bb (100%) diff --git a/meta-oe/recipes-multimedia/pipewire/pipewire-0.2_git.bb b/meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb similarity index 100% rename from meta-oe/recipes-multimedia/pipewire/pipewire-0.2_git.bb rename to meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb diff --git a/meta-oe/recipes-multimedia/pipewire/pipewire_git.bb b/meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb similarity index 100% rename from meta-oe/recipes-multimedia/pipewire/pipewire_git.bb rename to meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb -- 2.25.1 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [meta-multimedia][PATCH 2/2] pipewire: Rework 0.3 recipe and upgrade to 0.3.22 2021-03-03 11:41 [meta-multimedia][PATCH 1/2] pipewire: Move to meta-multimedia Carlos Rafael Giani @ 2021-03-03 11:41 ` Carlos Rafael Giani 2021-03-03 19:22 ` [oe] " Johannes Pointner 2021-03-03 21:01 ` [oe] [meta-multimedia][PATCH 1/2] pipewire: Move to meta-multimedia Andreas Müller 1 sibling, 1 reply; 10+ messages in thread From: Carlos Rafael Giani @ 2021-03-03 11:41 UTC (permalink / raw) To: openembedded-devel; +Cc: quentin.schulz, george.kiagiadakis * Use a versioned recipe instead of _git * Add more packageconfigs: alsa, docs, sdl2, sndfile, v4l2, pipewire-alsa, pipewire-jack * Split SPA and module packages dynamically to generate one package for each SPA plugin and for each module * Split pipewire library, shim PulseAudio daemon, main tools & SPA tools, pipewire-alsa, pipewire-jack, ALSA card profiles, GStreamer plugin, and example session manager into separate packages * Set up a "pipewire" user and group to run the PipeWire daemon with that user instead of root Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org> --- .../pipewire/pipewire_0.3.22.bb | 273 ++++++++++++++++++ .../pipewire/pipewire_git.bb | 77 ----- 2 files changed, 273 insertions(+), 77 deletions(-) create mode 100644 meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.22.bb delete mode 100644 meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb diff --git a/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.22.bb b/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.22.bb new file mode 100644 index 000000000..b54be7f89 --- /dev/null +++ b/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.22.bb @@ -0,0 +1,273 @@ +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" +LIC_FILES_CHKSUM = " \ + file://LICENSE;md5=e2c0b7d86d04e716a3c4c9ab34260e69 \ + file://COPYING;md5=97be96ca4fab23e9657ffa590b931c1a \ +" +SECTION = "multimedia" + +DEPENDS = "dbus" + +SRCREV = "22d563720a7f6ba7bdf59950f8c14488d80dfa95" +SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=master;protocol=https" + +S = "${WORKDIR}/git" + +inherit meson pkgconfig systemd manpages gettext useradd + +USERADD_PACKAGES = "${PN}" + +GROUPADD_PARAM_${PN} = "--system pipewire" + +USERADD_PARAM_${PN} = "--system --home / --no-create-home \ + --comment 'PipeWire multimedia daemon' \ + --gid pipewire --groups audio,video \ + pipewire" + +# 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. +EXTRA_OEMESON += " \ + -Daudiotestsrc=true \ + -Devl=false \ + -Dsystemd-user-service=false \ + -Dtests=false \ + -Dudevrulesdir=${nonarch_base_libdir}/udev/rules.d/ \ + -Dvideotestsrc=true \ + -Dffmpeg=false \ + -Dvulkan=false \ + -Dlibcamera=false \ +" + +PACKAGECONFIG ??= "\ + ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \ + ${@bb.utils.filter('DISTRO_FEATURES', 'alsa systemd', d)} \ + gstreamer jack v4l2 \ +" + +# "jack" and "pipewire-jack" packageconfigs cannot be both enabled, +# since "jack" imports libjack, and "pipewire-jack" generates +# libjack.so* files, thus colliding with the libpack package. This +# is why these two are marked in their respective packageconfigs +# as being in conflict. + +PACKAGECONFIG[alsa] = "-Dalsa=true,-Dalsa=false,alsa-lib udev" +PACKAGECONFIG[bluez] = "-Dbluez5=true,-Dbluez5=false,bluez5 sbc" +PACKAGECONFIG[docs] = "-Ddocs=true,-Ddocs=false,doxygen" +PACKAGECONFIG[gstreamer] = "-Dgstreamer=true,-Dgstreamer=false,glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base" +PACKAGECONFIG[jack] = "-Djack=true,-Djack=false,jack,,,pipewire-jack" +PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxml-parser-perl-native" +PACKAGECONFIG[sdl2] = "-Dsdl2=enabled,-Dsdl2=disabled,virtual/libsdl2" +PACKAGECONFIG[sndfile] = "-Dsndfile=enabled,-Dsndfile=disabled,libsndfile1" +PACKAGECONFIG[systemd] = "-Dsystemd=true -Dsystemd-system-service=true ,-Dsystemd=false -Dsystemd-system-service=false,systemd" +PACKAGECONFIG[v4l2] = "-Dv4l2=true,-Dv4l2=false,udev" +PACKAGECONFIG[pipewire-alsa] = "-Dpipewire-alsa=true,-Dpipewire-alsa=false,alsa-lib" +PACKAGECONFIG[pipewire-jack] = "-Dpipewire-jack=true -Dlibjack-path=${libdir}/${PW_MODULE_SUBDIR}/jack,-Dpipewire-jack=false,jack,,,jack" + +PACKAGESPLITFUNCS_prepend = " split_dynamic_packages " +PACKAGESPLITFUNCS_append = " set_dynamic_metapkg_rdepends " + +SPA_SUBDIR = "spa-0.2" +PW_MODULE_SUBDIR = "pipewire-0.3" + +remove_unused_installed_files() { + # jack.conf is used by pipewire-jack (not the JACK SPA plugin). + # 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" + fi +} + +do_install[postfuncs] += "remove_unused_installed_files" + +python split_dynamic_packages () { + # Create packages for each SPA plugin. These plugins are located + # in individual subdirectories, so a recursive search is needed. + spa_libdir = d.expand('${libdir}/${SPA_SUBDIR}') + do_split_packages(d, spa_libdir, r'^libspa-(.*)\.so$', d.expand('${PN}-spa-plugins-%s'), 'PipeWire SPA plugin for %s', extra_depends='', recursive=True) + + # Create packages for each PipeWire module. + pw_module_libdir = d.expand('${libdir}/${PW_MODULE_SUBDIR}') + do_split_packages(d, pw_module_libdir, r'^libpipewire-module-(.*)\.so$', d.expand('${PN}-modules-%s'), 'PipeWire %s module', extra_depends='', recursive=False) +} + +python set_dynamic_metapkg_rdepends () { + import os + import oe.utils + + # Go through all generated SPA plugin and PipeWire module packages + # (excluding the main package and the -meta package itself) and + # add them to the -meta package as RDEPENDS. + + base_pn = d.getVar('PN') + + spa_pn = base_pn + '-spa-plugins' + spa_metapkg = spa_pn + '-meta' + + 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_' + pw_module_metapkg, "1") + d.setVar('FILES_' + pw_module_metapkg, "") + + blacklist = [ spa_pn, spa_metapkg, pw_module_pn, pw_module_metapkg ] + spa_metapkg_rdepends = [] + pw_module_metapkg_rdepends = [] + pkgdest = d.getVar('PKGDEST') + + for pkg in oe.utils.packages_filter_out_system(d): + if pkg in blacklist: + continue + + is_spa_pkg = pkg.startswith(spa_pn) + is_pw_module_pkg = pkg.startswith(pw_module_pn) + if not is_spa_pkg and not is_pw_module_pkg: + continue + + if pkg in spa_metapkg_rdepends or pkg in pw_module_metapkg_rdepends: + continue + + # See if the package is empty by looking at the contents of its + # PKGDEST subdirectory. If this subdirectory is empty, then then + # package is empty as well. Empty packages do not get added to + # the meta package's RDEPENDS. + pkgdir = os.path.join(pkgdest, pkg) + if os.path.exists(pkgdir): + dir_contents = os.listdir(pkgdir) or [] + else: + dir_contents = [] + is_empty = len(dir_contents) == 0 + if not is_empty: + if is_spa_pkg: + spa_metapkg_rdepends.append(pkg) + 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_' + pw_module_metapkg, ' '.join(pw_module_metapkg_rdepends)) + d.setVar('DESCRIPTION_' + pw_module_metapkg, pw_module_pn + ' meta package') +} + +PACKAGES =+ "\ + libpipewire \ + ${PN}-tools \ + ${PN}-pulse \ + ${PN}-alsa \ + ${PN}-jack \ + ${PN}-media-session \ + ${PN}-spa-plugins \ + ${PN}-spa-plugins-meta \ + ${PN}-spa-tools \ + ${PN}-modules \ + ${PN}-modules-meta \ + ${PN}-alsa-card-profile \ + gstreamer1.0-pipewire \ +" + +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_user_unitdir}/pipewire.* \ + ${bindir}/pipewire \ +" + +FILES_${PN}-dev += " \ + ${libdir}/${PW_MODULE_SUBDIR}/jack/libjack*.so \ +" + +CONFFILES_libpipewire += "${sysconfdir}/pipewire/client.conf" +FILES_libpipewire = " \ + ${sysconfdir}/pipewire/client.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 += " \ + ${PN}-modules-client-node \ + ${PN}-modules-protocol-native \ + ${PN}-spa-plugins-support \ +" + +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 \ + ${systemd_user_unitdir}/pipewire-pulse.* \ + ${bindir}/pipewire-pulse \ +" +RDEPENDS_${PN}-pulse += " \ + ${PN}-modules-protocol-pulse \ +" + +# alsa plugin to redirect audio to pipewire +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.* \ +" + +# Example session manager. Not intended for use in production. +CONFFILES_${PN}-media-session = "${sysconfdir}/pipewire/media-session.d/*" +FILES_${PN}-media-session = " \ + ${bindir}/pipewire-media-session \ + ${sysconfdir}/pipewire/media-session.d/* \ +" +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-tools = " \ + ${bindir}/spa-* \ +" + +# Dynamic packages (see set_dynamic_metapkg_rdepends). +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 \ + " + +FILES_${PN}-alsa-card-profile = " \ + ${datadir}/alsa-card-profile/* \ + ${nonarch_base_libdir}/udev/rules.d/90-pipewire-alsa.rules \ +" + +FILES_gstreamer1.0-pipewire = " \ + ${libdir}/gstreamer-1.0/* \ +" diff --git a/meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb b/meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb deleted file mode 100644 index 173b695e1..000000000 --- a/meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb +++ /dev/null @@ -1,77 +0,0 @@ -SUMMARY = "Multimedia processing server for Linux" -AUTHOR = "Wim Taymans <wtaymans@redhat.com>" -HOMEPAGE = "https://pipewire.org" -SECTION = "multimedia" -LICENSE = "MIT" -LIC_FILES_CHKSUM = " \ - file://LICENSE;md5=e2c0b7d86d04e716a3c4c9ab34260e69 \ - file://COPYING;md5=97be96ca4fab23e9657ffa590b931c1a \ -" -DEPENDS = "alsa-lib dbus udev" -SRCREV = "74a1632f0720886d5b3b6c23ee8fcd6c03ca7aac" -PV = "0.3.1" - -SRC_URI = "git://github.com/PipeWire/pipewire" - -S = "${WORKDIR}/git" - -inherit meson pkgconfig systemd manpages - -PACKAGECONFIG ??= "\ - ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \ - ${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio systemd vulkan', d)} \ - jack gstreamer \ -" - -PACKAGECONFIG[bluez] = "-Dbluez5=true,-Dbluez5=false,bluez5 sbc" -PACKAGECONFIG[jack] = "-Djack=true,-Djack=false,jack" -PACKAGECONFIG[gstreamer] = "-Dgstreamer=true,-Dgstreamer=false,glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base" -PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxml-parser-perl-native" -PACKAGECONFIG[pulseaudio] = "-Dpipewire-pulseaudio=true,-Dpipewire-pulseaudio=false,pulseaudio" -PACKAGECONFIG[systemd] = "-Dsystemd=true,-Dsystemd=false,systemd" -PACKAGECONFIG[vulkan] = "-Dvulkan=true,-Dvulkan=false,vulkan-loader" - -LDFLAGS_append_mipsarch = " -latomic" -LDFLAGS_append_x86 = " -latomic" -LDFLAGS_append_riscv32 = " -latomic" - -PACKAGES =+ "\ - ${PN}-spa-plugins \ - ${PN}-alsa \ - ${PN}-config \ - gstreamer1.0-${PN} \ - lib${PN} \ - lib${PN}-modules \ - lib${PN}-jack \ -" - -RDEPENDS_lib${PN} += "lib${PN}-modules ${PN}-spa-plugins" - -FILES_${PN} = "\ - ${sysconfdir}/pipewire/pipewire.conf \ - ${bindir}/pw-* \ - ${bindir}/pipewire* \ - ${systemd_user_unitdir}/* \ -" -FILES_lib${PN} = "\ - ${libdir}/libpipewire-*.so.* \ - ${libdir}/libjack-*.so.* \ - ${libdir}/libpulse-*.so.* \ -" -FILES_lib${PN}-modules = "\ - ${libdir}/pipewire-*/* \ -" -FILES_${PN}-spa-plugins = "\ - ${bindir}/spa-* \ - ${libdir}/spa-*/* \ -" -FILES_${PN}-alsa = "\ - ${libdir}/alsa-lib/* \ -" -FILES_gstreamer1.0-${PN} = "\ - ${libdir}/gstreamer-1.0/* \ -" - -CONFFILES_${PN} = "\ - ${sysconfdir}/pipewire/pipewire.conf \ -" -- 2.25.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [oe] [meta-multimedia][PATCH 2/2] pipewire: Rework 0.3 recipe and upgrade to 0.3.22 2021-03-03 11:41 ` [meta-multimedia][PATCH 2/2] pipewire: Rework 0.3 recipe and upgrade to 0.3.22 Carlos Rafael Giani @ 2021-03-03 19:22 ` Johannes Pointner 2021-03-04 16:51 ` Carlos Rafael Giani 0 siblings, 1 reply; 10+ messages in thread From: Johannes Pointner @ 2021-03-03 19:22 UTC (permalink / raw) To: crg7475; +Cc: openembedded-devel, quentin.schulz, george.kiagiadakis Hello Carlos, On Wed, Mar 3, 2021 at 12:41 PM Carlos Rafael Giani via lists.openembedded.org <crg7475=mailbox.org@lists.openembedded.org> wrote: > > * Use a versioned recipe instead of _git > * Add more packageconfigs: alsa, docs, sdl2, sndfile, v4l2, > pipewire-alsa, pipewire-jack > * Split SPA and module packages dynamically to generate one package for > each SPA plugin and for each module > * Split pipewire library, shim PulseAudio daemon, main tools & SPA tools, > pipewire-alsa, pipewire-jack, ALSA card profiles, GStreamer plugin, > and example session manager into separate packages > * Set up a "pipewire" user and group to run the PipeWire daemon with that > user instead of root Could you please add the patch that fixes a crash of the pipewire-media-session: https://bugzilla.redhat.com/show_bug.cgi?id=1931043 https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/3673265ae20d7b59e89cad6c5238c232796731b2 Thx, Hannes > Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org> > --- > .../pipewire/pipewire_0.3.22.bb | 273 ++++++++++++++++++ > .../pipewire/pipewire_git.bb | 77 ----- > 2 files changed, 273 insertions(+), 77 deletions(-) > create mode 100644 meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.22.bb > delete mode 100644 meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb > > diff --git a/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.22.bb b/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.22.bb > new file mode 100644 > index 000000000..b54be7f89 > --- /dev/null > +++ b/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.22.bb > @@ -0,0 +1,273 @@ > +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" > +LIC_FILES_CHKSUM = " \ > + file://LICENSE;md5=e2c0b7d86d04e716a3c4c9ab34260e69 \ > + file://COPYING;md5=97be96ca4fab23e9657ffa590b931c1a \ > +" > +SECTION = "multimedia" > + > +DEPENDS = "dbus" > + > +SRCREV = "22d563720a7f6ba7bdf59950f8c14488d80dfa95" > +SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=master;protocol=https" > + > +S = "${WORKDIR}/git" > + > +inherit meson pkgconfig systemd manpages gettext useradd > + > +USERADD_PACKAGES = "${PN}" > + > +GROUPADD_PARAM_${PN} = "--system pipewire" > + > +USERADD_PARAM_${PN} = "--system --home / --no-create-home \ > + --comment 'PipeWire multimedia daemon' \ > + --gid pipewire --groups audio,video \ > + pipewire" > + > +# 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. > +EXTRA_OEMESON += " \ > + -Daudiotestsrc=true \ > + -Devl=false \ > + -Dsystemd-user-service=false \ > + -Dtests=false \ > + -Dudevrulesdir=${nonarch_base_libdir}/udev/rules.d/ \ > + -Dvideotestsrc=true \ > + -Dffmpeg=false \ > + -Dvulkan=false \ > + -Dlibcamera=false \ > +" > + > +PACKAGECONFIG ??= "\ > + ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \ > + ${@bb.utils.filter('DISTRO_FEATURES', 'alsa systemd', d)} \ > + gstreamer jack v4l2 \ > +" > + > +# "jack" and "pipewire-jack" packageconfigs cannot be both enabled, > +# since "jack" imports libjack, and "pipewire-jack" generates > +# libjack.so* files, thus colliding with the libpack package. This > +# is why these two are marked in their respective packageconfigs > +# as being in conflict. > + > +PACKAGECONFIG[alsa] = "-Dalsa=true,-Dalsa=false,alsa-lib udev" > +PACKAGECONFIG[bluez] = "-Dbluez5=true,-Dbluez5=false,bluez5 sbc" > +PACKAGECONFIG[docs] = "-Ddocs=true,-Ddocs=false,doxygen" > +PACKAGECONFIG[gstreamer] = "-Dgstreamer=true,-Dgstreamer=false,glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base" > +PACKAGECONFIG[jack] = "-Djack=true,-Djack=false,jack,,,pipewire-jack" > +PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxml-parser-perl-native" > +PACKAGECONFIG[sdl2] = "-Dsdl2=enabled,-Dsdl2=disabled,virtual/libsdl2" > +PACKAGECONFIG[sndfile] = "-Dsndfile=enabled,-Dsndfile=disabled,libsndfile1" > +PACKAGECONFIG[systemd] = "-Dsystemd=true -Dsystemd-system-service=true ,-Dsystemd=false -Dsystemd-system-service=false,systemd" > +PACKAGECONFIG[v4l2] = "-Dv4l2=true,-Dv4l2=false,udev" > +PACKAGECONFIG[pipewire-alsa] = "-Dpipewire-alsa=true,-Dpipewire-alsa=false,alsa-lib" > +PACKAGECONFIG[pipewire-jack] = "-Dpipewire-jack=true -Dlibjack-path=${libdir}/${PW_MODULE_SUBDIR}/jack,-Dpipewire-jack=false,jack,,,jack" > + > +PACKAGESPLITFUNCS_prepend = " split_dynamic_packages " > +PACKAGESPLITFUNCS_append = " set_dynamic_metapkg_rdepends " > + > +SPA_SUBDIR = "spa-0.2" > +PW_MODULE_SUBDIR = "pipewire-0.3" > + > +remove_unused_installed_files() { > + # jack.conf is used by pipewire-jack (not the JACK SPA plugin). > + # 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" > + fi > +} > + > +do_install[postfuncs] += "remove_unused_installed_files" > + > +python split_dynamic_packages () { > + # Create packages for each SPA plugin. These plugins are located > + # in individual subdirectories, so a recursive search is needed. > + spa_libdir = d.expand('${libdir}/${SPA_SUBDIR}') > + do_split_packages(d, spa_libdir, r'^libspa-(.*)\.so$', d.expand('${PN}-spa-plugins-%s'), 'PipeWire SPA plugin for %s', extra_depends='', recursive=True) > + > + # Create packages for each PipeWire module. > + pw_module_libdir = d.expand('${libdir}/${PW_MODULE_SUBDIR}') > + do_split_packages(d, pw_module_libdir, r'^libpipewire-module-(.*)\.so$', d.expand('${PN}-modules-%s'), 'PipeWire %s module', extra_depends='', recursive=False) > +} > + > +python set_dynamic_metapkg_rdepends () { > + import os > + import oe.utils > + > + # Go through all generated SPA plugin and PipeWire module packages > + # (excluding the main package and the -meta package itself) and > + # add them to the -meta package as RDEPENDS. > + > + base_pn = d.getVar('PN') > + > + spa_pn = base_pn + '-spa-plugins' > + spa_metapkg = spa_pn + '-meta' > + > + 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_' + pw_module_metapkg, "1") > + d.setVar('FILES_' + pw_module_metapkg, "") > + > + blacklist = [ spa_pn, spa_metapkg, pw_module_pn, pw_module_metapkg ] > + spa_metapkg_rdepends = [] > + pw_module_metapkg_rdepends = [] > + pkgdest = d.getVar('PKGDEST') > + > + for pkg in oe.utils.packages_filter_out_system(d): > + if pkg in blacklist: > + continue > + > + is_spa_pkg = pkg.startswith(spa_pn) > + is_pw_module_pkg = pkg.startswith(pw_module_pn) > + if not is_spa_pkg and not is_pw_module_pkg: > + continue > + > + if pkg in spa_metapkg_rdepends or pkg in pw_module_metapkg_rdepends: > + continue > + > + # See if the package is empty by looking at the contents of its > + # PKGDEST subdirectory. If this subdirectory is empty, then then > + # package is empty as well. Empty packages do not get added to > + # the meta package's RDEPENDS. > + pkgdir = os.path.join(pkgdest, pkg) > + if os.path.exists(pkgdir): > + dir_contents = os.listdir(pkgdir) or [] > + else: > + dir_contents = [] > + is_empty = len(dir_contents) == 0 > + if not is_empty: > + if is_spa_pkg: > + spa_metapkg_rdepends.append(pkg) > + 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_' + pw_module_metapkg, ' '.join(pw_module_metapkg_rdepends)) > + d.setVar('DESCRIPTION_' + pw_module_metapkg, pw_module_pn + ' meta package') > +} > + > +PACKAGES =+ "\ > + libpipewire \ > + ${PN}-tools \ > + ${PN}-pulse \ > + ${PN}-alsa \ > + ${PN}-jack \ > + ${PN}-media-session \ > + ${PN}-spa-plugins \ > + ${PN}-spa-plugins-meta \ > + ${PN}-spa-tools \ > + ${PN}-modules \ > + ${PN}-modules-meta \ > + ${PN}-alsa-card-profile \ > + gstreamer1.0-pipewire \ > +" > + > +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_user_unitdir}/pipewire.* \ > + ${bindir}/pipewire \ > +" > + > +FILES_${PN}-dev += " \ > + ${libdir}/${PW_MODULE_SUBDIR}/jack/libjack*.so \ > +" > + > +CONFFILES_libpipewire += "${sysconfdir}/pipewire/client.conf" > +FILES_libpipewire = " \ > + ${sysconfdir}/pipewire/client.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 += " \ > + ${PN}-modules-client-node \ > + ${PN}-modules-protocol-native \ > + ${PN}-spa-plugins-support \ > +" > + > +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 \ > + ${systemd_user_unitdir}/pipewire-pulse.* \ > + ${bindir}/pipewire-pulse \ > +" > +RDEPENDS_${PN}-pulse += " \ > + ${PN}-modules-protocol-pulse \ > +" > + > +# alsa plugin to redirect audio to pipewire > +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.* \ > +" > + > +# Example session manager. Not intended for use in production. > +CONFFILES_${PN}-media-session = "${sysconfdir}/pipewire/media-session.d/*" > +FILES_${PN}-media-session = " \ > + ${bindir}/pipewire-media-session \ > + ${sysconfdir}/pipewire/media-session.d/* \ > +" > +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-tools = " \ > + ${bindir}/spa-* \ > +" > + > +# Dynamic packages (see set_dynamic_metapkg_rdepends). > +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 \ > + " > + > +FILES_${PN}-alsa-card-profile = " \ > + ${datadir}/alsa-card-profile/* \ > + ${nonarch_base_libdir}/udev/rules.d/90-pipewire-alsa.rules \ > +" > + > +FILES_gstreamer1.0-pipewire = " \ > + ${libdir}/gstreamer-1.0/* \ > +" > diff --git a/meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb b/meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb > deleted file mode 100644 > index 173b695e1..000000000 > --- a/meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb > +++ /dev/null > @@ -1,77 +0,0 @@ > -SUMMARY = "Multimedia processing server for Linux" > -AUTHOR = "Wim Taymans <wtaymans@redhat.com>" > -HOMEPAGE = "https://pipewire.org" > -SECTION = "multimedia" > -LICENSE = "MIT" > -LIC_FILES_CHKSUM = " \ > - file://LICENSE;md5=e2c0b7d86d04e716a3c4c9ab34260e69 \ > - file://COPYING;md5=97be96ca4fab23e9657ffa590b931c1a \ > -" > -DEPENDS = "alsa-lib dbus udev" > -SRCREV = "74a1632f0720886d5b3b6c23ee8fcd6c03ca7aac" > -PV = "0.3.1" > - > -SRC_URI = "git://github.com/PipeWire/pipewire" > - > -S = "${WORKDIR}/git" > - > -inherit meson pkgconfig systemd manpages > - > -PACKAGECONFIG ??= "\ > - ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \ > - ${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio systemd vulkan', d)} \ > - jack gstreamer \ > -" > - > -PACKAGECONFIG[bluez] = "-Dbluez5=true,-Dbluez5=false,bluez5 sbc" > -PACKAGECONFIG[jack] = "-Djack=true,-Djack=false,jack" > -PACKAGECONFIG[gstreamer] = "-Dgstreamer=true,-Dgstreamer=false,glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base" > -PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxml-parser-perl-native" > -PACKAGECONFIG[pulseaudio] = "-Dpipewire-pulseaudio=true,-Dpipewire-pulseaudio=false,pulseaudio" > -PACKAGECONFIG[systemd] = "-Dsystemd=true,-Dsystemd=false,systemd" > -PACKAGECONFIG[vulkan] = "-Dvulkan=true,-Dvulkan=false,vulkan-loader" > - > -LDFLAGS_append_mipsarch = " -latomic" > -LDFLAGS_append_x86 = " -latomic" > -LDFLAGS_append_riscv32 = " -latomic" > - > -PACKAGES =+ "\ > - ${PN}-spa-plugins \ > - ${PN}-alsa \ > - ${PN}-config \ > - gstreamer1.0-${PN} \ > - lib${PN} \ > - lib${PN}-modules \ > - lib${PN}-jack \ > -" > - > -RDEPENDS_lib${PN} += "lib${PN}-modules ${PN}-spa-plugins" > - > -FILES_${PN} = "\ > - ${sysconfdir}/pipewire/pipewire.conf \ > - ${bindir}/pw-* \ > - ${bindir}/pipewire* \ > - ${systemd_user_unitdir}/* \ > -" > -FILES_lib${PN} = "\ > - ${libdir}/libpipewire-*.so.* \ > - ${libdir}/libjack-*.so.* \ > - ${libdir}/libpulse-*.so.* \ > -" > -FILES_lib${PN}-modules = "\ > - ${libdir}/pipewire-*/* \ > -" > -FILES_${PN}-spa-plugins = "\ > - ${bindir}/spa-* \ > - ${libdir}/spa-*/* \ > -" > -FILES_${PN}-alsa = "\ > - ${libdir}/alsa-lib/* \ > -" > -FILES_gstreamer1.0-${PN} = "\ > - ${libdir}/gstreamer-1.0/* \ > -" > - > -CONFFILES_${PN} = "\ > - ${sysconfdir}/pipewire/pipewire.conf \ > -" > -- > 2.25.1 > > > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [oe] [meta-multimedia][PATCH 2/2] pipewire: Rework 0.3 recipe and upgrade to 0.3.22 2021-03-03 19:22 ` [oe] " Johannes Pointner @ 2021-03-04 16:51 ` Carlos Rafael Giani 2021-03-06 11:06 ` Johannes Pointner 0 siblings, 1 reply; 10+ messages in thread From: Carlos Rafael Giani @ 2021-03-04 16:51 UTC (permalink / raw) To: openembedded-devel [-- Attachment #1: Type: text/plain, Size: 15907 bytes --] Version 0.3.23 just came out. I'd rather upgrade the recipe to that one, and if others here are OK with it, migrate it to oe-core. On 03.03.21 20:22, Johannes Pointner wrote: > Hello Carlos, > > On Wed, Mar 3, 2021 at 12:41 PM Carlos Rafael Giani via > lists.openembedded.org <crg7475=mailbox.org@lists.openembedded.org> > wrote: >> * Use a versioned recipe instead of _git >> * Add more packageconfigs: alsa, docs, sdl2, sndfile, v4l2, >> pipewire-alsa, pipewire-jack >> * Split SPA and module packages dynamically to generate one package for >> each SPA plugin and for each module >> * Split pipewire library, shim PulseAudio daemon, main tools & SPA tools, >> pipewire-alsa, pipewire-jack, ALSA card profiles, GStreamer plugin, >> and example session manager into separate packages >> * Set up a "pipewire" user and group to run the PipeWire daemon with that >> user instead of root > Could you please add the patch that fixes a crash of the pipewire-media-session: > https://bugzilla.redhat.com/show_bug.cgi?id=1931043 > https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/3673265ae20d7b59e89cad6c5238c232796731b2 > > Thx, > Hannes > >> Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org> >> --- >> .../pipewire/pipewire_0.3.22.bb | 273 ++++++++++++++++++ >> .../pipewire/pipewire_git.bb | 77 ----- >> 2 files changed, 273 insertions(+), 77 deletions(-) >> create mode 100644 meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.22.bb >> delete mode 100644 meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb >> >> diff --git a/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.22.bb b/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.22.bb >> new file mode 100644 >> index 000000000..b54be7f89 >> --- /dev/null >> +++ b/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.22.bb >> @@ -0,0 +1,273 @@ >> +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" >> +LIC_FILES_CHKSUM = " \ >> + file://LICENSE;md5=e2c0b7d86d04e716a3c4c9ab34260e69 \ >> + file://COPYING;md5=97be96ca4fab23e9657ffa590b931c1a \ >> +" >> +SECTION = "multimedia" >> + >> +DEPENDS = "dbus" >> + >> +SRCREV = "22d563720a7f6ba7bdf59950f8c14488d80dfa95" >> +SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=master;protocol=https" >> + >> +S = "${WORKDIR}/git" >> + >> +inherit meson pkgconfig systemd manpages gettext useradd >> + >> +USERADD_PACKAGES = "${PN}" >> + >> +GROUPADD_PARAM_${PN} = "--system pipewire" >> + >> +USERADD_PARAM_${PN} = "--system --home / --no-create-home \ >> + --comment 'PipeWire multimedia daemon' \ >> + --gid pipewire --groups audio,video \ >> + pipewire" >> + >> +# 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. >> +EXTRA_OEMESON += " \ >> + -Daudiotestsrc=true \ >> + -Devl=false \ >> + -Dsystemd-user-service=false \ >> + -Dtests=false \ >> + -Dudevrulesdir=${nonarch_base_libdir}/udev/rules.d/ \ >> + -Dvideotestsrc=true \ >> + -Dffmpeg=false \ >> + -Dvulkan=false \ >> + -Dlibcamera=false \ >> +" >> + >> +PACKAGECONFIG ??= "\ >> + ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \ >> + ${@bb.utils.filter('DISTRO_FEATURES', 'alsa systemd', d)} \ >> + gstreamer jack v4l2 \ >> +" >> + >> +# "jack" and "pipewire-jack" packageconfigs cannot be both enabled, >> +# since "jack" imports libjack, and "pipewire-jack" generates >> +# libjack.so* files, thus colliding with the libpack package. This >> +# is why these two are marked in their respective packageconfigs >> +# as being in conflict. >> + >> +PACKAGECONFIG[alsa] = "-Dalsa=true,-Dalsa=false,alsa-lib udev" >> +PACKAGECONFIG[bluez] = "-Dbluez5=true,-Dbluez5=false,bluez5 sbc" >> +PACKAGECONFIG[docs] = "-Ddocs=true,-Ddocs=false,doxygen" >> +PACKAGECONFIG[gstreamer] = "-Dgstreamer=true,-Dgstreamer=false,glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base" >> +PACKAGECONFIG[jack] = "-Djack=true,-Djack=false,jack,,,pipewire-jack" >> +PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxml-parser-perl-native" >> +PACKAGECONFIG[sdl2] = "-Dsdl2=enabled,-Dsdl2=disabled,virtual/libsdl2" >> +PACKAGECONFIG[sndfile] = "-Dsndfile=enabled,-Dsndfile=disabled,libsndfile1" >> +PACKAGECONFIG[systemd] = "-Dsystemd=true -Dsystemd-system-service=true ,-Dsystemd=false -Dsystemd-system-service=false,systemd" >> +PACKAGECONFIG[v4l2] = "-Dv4l2=true,-Dv4l2=false,udev" >> +PACKAGECONFIG[pipewire-alsa] = "-Dpipewire-alsa=true,-Dpipewire-alsa=false,alsa-lib" >> +PACKAGECONFIG[pipewire-jack] = "-Dpipewire-jack=true -Dlibjack-path=${libdir}/${PW_MODULE_SUBDIR}/jack,-Dpipewire-jack=false,jack,,,jack" >> + >> +PACKAGESPLITFUNCS_prepend = " split_dynamic_packages " >> +PACKAGESPLITFUNCS_append = " set_dynamic_metapkg_rdepends " >> + >> +SPA_SUBDIR = "spa-0.2" >> +PW_MODULE_SUBDIR = "pipewire-0.3" >> + >> +remove_unused_installed_files() { >> + # jack.conf is used by pipewire-jack (not the JACK SPA plugin). >> + # 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" >> + fi >> +} >> + >> +do_install[postfuncs] += "remove_unused_installed_files" >> + >> +python split_dynamic_packages () { >> + # Create packages for each SPA plugin. These plugins are located >> + # in individual subdirectories, so a recursive search is needed. >> + spa_libdir = d.expand('${libdir}/${SPA_SUBDIR}') >> + do_split_packages(d, spa_libdir, r'^libspa-(.*)\.so$', d.expand('${PN}-spa-plugins-%s'), 'PipeWire SPA plugin for %s', extra_depends='', recursive=True) >> + >> + # Create packages for each PipeWire module. >> + pw_module_libdir = d.expand('${libdir}/${PW_MODULE_SUBDIR}') >> + do_split_packages(d, pw_module_libdir, r'^libpipewire-module-(.*)\.so$', d.expand('${PN}-modules-%s'), 'PipeWire %s module', extra_depends='', recursive=False) >> +} >> + >> +python set_dynamic_metapkg_rdepends () { >> + import os >> + import oe.utils >> + >> + # Go through all generated SPA plugin and PipeWire module packages >> + # (excluding the main package and the -meta package itself) and >> + # add them to the -meta package as RDEPENDS. >> + >> + base_pn = d.getVar('PN') >> + >> + spa_pn = base_pn + '-spa-plugins' >> + spa_metapkg = spa_pn + '-meta' >> + >> + 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_' + pw_module_metapkg, "1") >> + d.setVar('FILES_' + pw_module_metapkg, "") >> + >> + blacklist = [ spa_pn, spa_metapkg, pw_module_pn, pw_module_metapkg ] >> + spa_metapkg_rdepends = [] >> + pw_module_metapkg_rdepends = [] >> + pkgdest = d.getVar('PKGDEST') >> + >> + for pkg in oe.utils.packages_filter_out_system(d): >> + if pkg in blacklist: >> + continue >> + >> + is_spa_pkg = pkg.startswith(spa_pn) >> + is_pw_module_pkg = pkg.startswith(pw_module_pn) >> + if not is_spa_pkg and not is_pw_module_pkg: >> + continue >> + >> + if pkg in spa_metapkg_rdepends or pkg in pw_module_metapkg_rdepends: >> + continue >> + >> + # See if the package is empty by looking at the contents of its >> + # PKGDEST subdirectory. If this subdirectory is empty, then then >> + # package is empty as well. Empty packages do not get added to >> + # the meta package's RDEPENDS. >> + pkgdir = os.path.join(pkgdest, pkg) >> + if os.path.exists(pkgdir): >> + dir_contents = os.listdir(pkgdir) or [] >> + else: >> + dir_contents = [] >> + is_empty = len(dir_contents) == 0 >> + if not is_empty: >> + if is_spa_pkg: >> + spa_metapkg_rdepends.append(pkg) >> + 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_' + pw_module_metapkg, ' '.join(pw_module_metapkg_rdepends)) >> + d.setVar('DESCRIPTION_' + pw_module_metapkg, pw_module_pn + ' meta package') >> +} >> + >> +PACKAGES =+ "\ >> + libpipewire \ >> + ${PN}-tools \ >> + ${PN}-pulse \ >> + ${PN}-alsa \ >> + ${PN}-jack \ >> + ${PN}-media-session \ >> + ${PN}-spa-plugins \ >> + ${PN}-spa-plugins-meta \ >> + ${PN}-spa-tools \ >> + ${PN}-modules \ >> + ${PN}-modules-meta \ >> + ${PN}-alsa-card-profile \ >> + gstreamer1.0-pipewire \ >> +" >> + >> +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_user_unitdir}/pipewire.* \ >> + ${bindir}/pipewire \ >> +" >> + >> +FILES_${PN}-dev += " \ >> + ${libdir}/${PW_MODULE_SUBDIR}/jack/libjack*.so \ >> +" >> + >> +CONFFILES_libpipewire += "${sysconfdir}/pipewire/client.conf" >> +FILES_libpipewire = " \ >> + ${sysconfdir}/pipewire/client.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 += " \ >> + ${PN}-modules-client-node \ >> + ${PN}-modules-protocol-native \ >> + ${PN}-spa-plugins-support \ >> +" >> + >> +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 \ >> + ${systemd_user_unitdir}/pipewire-pulse.* \ >> + ${bindir}/pipewire-pulse \ >> +" >> +RDEPENDS_${PN}-pulse += " \ >> + ${PN}-modules-protocol-pulse \ >> +" >> + >> +# alsa plugin to redirect audio to pipewire >> +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.* \ >> +" >> + >> +# Example session manager. Not intended for use in production. >> +CONFFILES_${PN}-media-session = "${sysconfdir}/pipewire/media-session.d/*" >> +FILES_${PN}-media-session = " \ >> + ${bindir}/pipewire-media-session \ >> + ${sysconfdir}/pipewire/media-session.d/* \ >> +" >> +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-tools = " \ >> + ${bindir}/spa-* \ >> +" >> + >> +# Dynamic packages (see set_dynamic_metapkg_rdepends). >> +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 \ >> + " >> + >> +FILES_${PN}-alsa-card-profile = " \ >> + ${datadir}/alsa-card-profile/* \ >> + ${nonarch_base_libdir}/udev/rules.d/90-pipewire-alsa.rules \ >> +" >> + >> +FILES_gstreamer1.0-pipewire = " \ >> + ${libdir}/gstreamer-1.0/* \ >> +" >> diff --git a/meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb b/meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb >> deleted file mode 100644 >> index 173b695e1..000000000 >> --- a/meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb >> +++ /dev/null >> @@ -1,77 +0,0 @@ >> -SUMMARY = "Multimedia processing server for Linux" >> -AUTHOR = "Wim Taymans <wtaymans@redhat.com>" >> -HOMEPAGE = "https://pipewire.org" >> -SECTION = "multimedia" >> -LICENSE = "MIT" >> -LIC_FILES_CHKSUM = " \ >> - file://LICENSE;md5=e2c0b7d86d04e716a3c4c9ab34260e69 \ >> - file://COPYING;md5=97be96ca4fab23e9657ffa590b931c1a \ >> -" >> -DEPENDS = "alsa-lib dbus udev" >> -SRCREV = "74a1632f0720886d5b3b6c23ee8fcd6c03ca7aac" >> -PV = "0.3.1" >> - >> -SRC_URI = "git://github.com/PipeWire/pipewire" >> - >> -S = "${WORKDIR}/git" >> - >> -inherit meson pkgconfig systemd manpages >> - >> -PACKAGECONFIG ??= "\ >> - ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \ >> - ${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio systemd vulkan', d)} \ >> - jack gstreamer \ >> -" >> - >> -PACKAGECONFIG[bluez] = "-Dbluez5=true,-Dbluez5=false,bluez5 sbc" >> -PACKAGECONFIG[jack] = "-Djack=true,-Djack=false,jack" >> -PACKAGECONFIG[gstreamer] = "-Dgstreamer=true,-Dgstreamer=false,glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base" >> -PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxml-parser-perl-native" >> -PACKAGECONFIG[pulseaudio] = "-Dpipewire-pulseaudio=true,-Dpipewire-pulseaudio=false,pulseaudio" >> -PACKAGECONFIG[systemd] = "-Dsystemd=true,-Dsystemd=false,systemd" >> -PACKAGECONFIG[vulkan] = "-Dvulkan=true,-Dvulkan=false,vulkan-loader" >> - >> -LDFLAGS_append_mipsarch = " -latomic" >> -LDFLAGS_append_x86 = " -latomic" >> -LDFLAGS_append_riscv32 = " -latomic" >> - >> -PACKAGES =+ "\ >> - ${PN}-spa-plugins \ >> - ${PN}-alsa \ >> - ${PN}-config \ >> - gstreamer1.0-${PN} \ >> - lib${PN} \ >> - lib${PN}-modules \ >> - lib${PN}-jack \ >> -" >> - >> -RDEPENDS_lib${PN} += "lib${PN}-modules ${PN}-spa-plugins" >> - >> -FILES_${PN} = "\ >> - ${sysconfdir}/pipewire/pipewire.conf \ >> - ${bindir}/pw-* \ >> - ${bindir}/pipewire* \ >> - ${systemd_user_unitdir}/* \ >> -" >> -FILES_lib${PN} = "\ >> - ${libdir}/libpipewire-*.so.* \ >> - ${libdir}/libjack-*.so.* \ >> - ${libdir}/libpulse-*.so.* \ >> -" >> -FILES_lib${PN}-modules = "\ >> - ${libdir}/pipewire-*/* \ >> -" >> -FILES_${PN}-spa-plugins = "\ >> - ${bindir}/spa-* \ >> - ${libdir}/spa-*/* \ >> -" >> -FILES_${PN}-alsa = "\ >> - ${libdir}/alsa-lib/* \ >> -" >> -FILES_gstreamer1.0-${PN} = "\ >> - ${libdir}/gstreamer-1.0/* \ >> -" >> - >> -CONFFILES_${PN} = "\ >> - ${sysconfdir}/pipewire/pipewire.conf \ >> -" >> -- >> 2.25.1 >> >> >> >> >> >> >> [-- Attachment #2: Type: text/html, Size: 16678 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [oe] [meta-multimedia][PATCH 2/2] pipewire: Rework 0.3 recipe and upgrade to 0.3.22 2021-03-04 16:51 ` Carlos Rafael Giani @ 2021-03-06 11:06 ` Johannes Pointner 0 siblings, 0 replies; 10+ messages in thread From: Johannes Pointner @ 2021-03-06 11:06 UTC (permalink / raw) To: openembedded-devel On Thu, Mar 4, 2021 at 5:51 PM Carlos Rafael Giani via lists.openembedded.org <crg7475=mailbox.org@lists.openembedded.org> wrote: > > Version 0.3.23 just came out. I'd rather upgrade the recipe to that one, and if others here are OK with it, migrate it to oe-core. That's even better. Cheers, Hannes > > On 03.03.21 20:22, Johannes Pointner wrote: > > Hello Carlos, > > On Wed, Mar 3, 2021 at 12:41 PM Carlos Rafael Giani via > lists.openembedded.org <crg7475=mailbox.org@lists.openembedded.org> > wrote: > > * Use a versioned recipe instead of _git > * Add more packageconfigs: alsa, docs, sdl2, sndfile, v4l2, > pipewire-alsa, pipewire-jack > * Split SPA and module packages dynamically to generate one package for > each SPA plugin and for each module > * Split pipewire library, shim PulseAudio daemon, main tools & SPA tools, > pipewire-alsa, pipewire-jack, ALSA card profiles, GStreamer plugin, > and example session manager into separate packages > * Set up a "pipewire" user and group to run the PipeWire daemon with that > user instead of root > > Could you please add the patch that fixes a crash of the pipewire-media-session: > https://bugzilla.redhat.com/show_bug.cgi?id=1931043 > https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/3673265ae20d7b59e89cad6c5238c232796731b2 > > Thx, > Hannes > > Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org> > --- > .../pipewire/pipewire_0.3.22.bb | 273 ++++++++++++++++++ > .../pipewire/pipewire_git.bb | 77 ----- > 2 files changed, 273 insertions(+), 77 deletions(-) > create mode 100644 meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.22.bb > delete mode 100644 meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb > > diff --git a/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.22.bb b/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.22.bb > new file mode 100644 > index 000000000..b54be7f89 > --- /dev/null > +++ b/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.22.bb > @@ -0,0 +1,273 @@ > +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" > +LIC_FILES_CHKSUM = " \ > + file://LICENSE;md5=e2c0b7d86d04e716a3c4c9ab34260e69 \ > + file://COPYING;md5=97be96ca4fab23e9657ffa590b931c1a \ > +" > +SECTION = "multimedia" > + > +DEPENDS = "dbus" > + > +SRCREV = "22d563720a7f6ba7bdf59950f8c14488d80dfa95" > +SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=master;protocol=https" > + > +S = "${WORKDIR}/git" > + > +inherit meson pkgconfig systemd manpages gettext useradd > + > +USERADD_PACKAGES = "${PN}" > + > +GROUPADD_PARAM_${PN} = "--system pipewire" > + > +USERADD_PARAM_${PN} = "--system --home / --no-create-home \ > + --comment 'PipeWire multimedia daemon' \ > + --gid pipewire --groups audio,video \ > + pipewire" > + > +# 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. > +EXTRA_OEMESON += " \ > + -Daudiotestsrc=true \ > + -Devl=false \ > + -Dsystemd-user-service=false \ > + -Dtests=false \ > + -Dudevrulesdir=${nonarch_base_libdir}/udev/rules.d/ \ > + -Dvideotestsrc=true \ > + -Dffmpeg=false \ > + -Dvulkan=false \ > + -Dlibcamera=false \ > +" > + > +PACKAGECONFIG ??= "\ > + ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \ > + ${@bb.utils.filter('DISTRO_FEATURES', 'alsa systemd', d)} \ > + gstreamer jack v4l2 \ > +" > + > +# "jack" and "pipewire-jack" packageconfigs cannot be both enabled, > +# since "jack" imports libjack, and "pipewire-jack" generates > +# libjack.so* files, thus colliding with the libpack package. This > +# is why these two are marked in their respective packageconfigs > +# as being in conflict. > + > +PACKAGECONFIG[alsa] = "-Dalsa=true,-Dalsa=false,alsa-lib udev" > +PACKAGECONFIG[bluez] = "-Dbluez5=true,-Dbluez5=false,bluez5 sbc" > +PACKAGECONFIG[docs] = "-Ddocs=true,-Ddocs=false,doxygen" > +PACKAGECONFIG[gstreamer] = "-Dgstreamer=true,-Dgstreamer=false,glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base" > +PACKAGECONFIG[jack] = "-Djack=true,-Djack=false,jack,,,pipewire-jack" > +PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxml-parser-perl-native" > +PACKAGECONFIG[sdl2] = "-Dsdl2=enabled,-Dsdl2=disabled,virtual/libsdl2" > +PACKAGECONFIG[sndfile] = "-Dsndfile=enabled,-Dsndfile=disabled,libsndfile1" > +PACKAGECONFIG[systemd] = "-Dsystemd=true -Dsystemd-system-service=true ,-Dsystemd=false -Dsystemd-system-service=false,systemd" > +PACKAGECONFIG[v4l2] = "-Dv4l2=true,-Dv4l2=false,udev" > +PACKAGECONFIG[pipewire-alsa] = "-Dpipewire-alsa=true,-Dpipewire-alsa=false,alsa-lib" > +PACKAGECONFIG[pipewire-jack] = "-Dpipewire-jack=true -Dlibjack-path=${libdir}/${PW_MODULE_SUBDIR}/jack,-Dpipewire-jack=false,jack,,,jack" > + > +PACKAGESPLITFUNCS_prepend = " split_dynamic_packages " > +PACKAGESPLITFUNCS_append = " set_dynamic_metapkg_rdepends " > + > +SPA_SUBDIR = "spa-0.2" > +PW_MODULE_SUBDIR = "pipewire-0.3" > + > +remove_unused_installed_files() { > + # jack.conf is used by pipewire-jack (not the JACK SPA plugin). > + # 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" > + fi > +} > + > +do_install[postfuncs] += "remove_unused_installed_files" > + > +python split_dynamic_packages () { > + # Create packages for each SPA plugin. These plugins are located > + # in individual subdirectories, so a recursive search is needed. > + spa_libdir = d.expand('${libdir}/${SPA_SUBDIR}') > + do_split_packages(d, spa_libdir, r'^libspa-(.*)\.so$', d.expand('${PN}-spa-plugins-%s'), 'PipeWire SPA plugin for %s', extra_depends='', recursive=True) > + > + # Create packages for each PipeWire module. > + pw_module_libdir = d.expand('${libdir}/${PW_MODULE_SUBDIR}') > + do_split_packages(d, pw_module_libdir, r'^libpipewire-module-(.*)\.so$', d.expand('${PN}-modules-%s'), 'PipeWire %s module', extra_depends='', recursive=False) > +} > + > +python set_dynamic_metapkg_rdepends () { > + import os > + import oe.utils > + > + # Go through all generated SPA plugin and PipeWire module packages > + # (excluding the main package and the -meta package itself) and > + # add them to the -meta package as RDEPENDS. > + > + base_pn = d.getVar('PN') > + > + spa_pn = base_pn + '-spa-plugins' > + spa_metapkg = spa_pn + '-meta' > + > + 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_' + pw_module_metapkg, "1") > + d.setVar('FILES_' + pw_module_metapkg, "") > + > + blacklist = [ spa_pn, spa_metapkg, pw_module_pn, pw_module_metapkg ] > + spa_metapkg_rdepends = [] > + pw_module_metapkg_rdepends = [] > + pkgdest = d.getVar('PKGDEST') > + > + for pkg in oe.utils.packages_filter_out_system(d): > + if pkg in blacklist: > + continue > + > + is_spa_pkg = pkg.startswith(spa_pn) > + is_pw_module_pkg = pkg.startswith(pw_module_pn) > + if not is_spa_pkg and not is_pw_module_pkg: > + continue > + > + if pkg in spa_metapkg_rdepends or pkg in pw_module_metapkg_rdepends: > + continue > + > + # See if the package is empty by looking at the contents of its > + # PKGDEST subdirectory. If this subdirectory is empty, then then > + # package is empty as well. Empty packages do not get added to > + # the meta package's RDEPENDS. > + pkgdir = os.path.join(pkgdest, pkg) > + if os.path.exists(pkgdir): > + dir_contents = os.listdir(pkgdir) or [] > + else: > + dir_contents = [] > + is_empty = len(dir_contents) == 0 > + if not is_empty: > + if is_spa_pkg: > + spa_metapkg_rdepends.append(pkg) > + 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_' + pw_module_metapkg, ' '.join(pw_module_metapkg_rdepends)) > + d.setVar('DESCRIPTION_' + pw_module_metapkg, pw_module_pn + ' meta package') > +} > + > +PACKAGES =+ "\ > + libpipewire \ > + ${PN}-tools \ > + ${PN}-pulse \ > + ${PN}-alsa \ > + ${PN}-jack \ > + ${PN}-media-session \ > + ${PN}-spa-plugins \ > + ${PN}-spa-plugins-meta \ > + ${PN}-spa-tools \ > + ${PN}-modules \ > + ${PN}-modules-meta \ > + ${PN}-alsa-card-profile \ > + gstreamer1.0-pipewire \ > +" > + > +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_user_unitdir}/pipewire.* \ > + ${bindir}/pipewire \ > +" > + > +FILES_${PN}-dev += " \ > + ${libdir}/${PW_MODULE_SUBDIR}/jack/libjack*.so \ > +" > + > +CONFFILES_libpipewire += "${sysconfdir}/pipewire/client.conf" > +FILES_libpipewire = " \ > + ${sysconfdir}/pipewire/client.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 += " \ > + ${PN}-modules-client-node \ > + ${PN}-modules-protocol-native \ > + ${PN}-spa-plugins-support \ > +" > + > +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 \ > + ${systemd_user_unitdir}/pipewire-pulse.* \ > + ${bindir}/pipewire-pulse \ > +" > +RDEPENDS_${PN}-pulse += " \ > + ${PN}-modules-protocol-pulse \ > +" > + > +# alsa plugin to redirect audio to pipewire > +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.* \ > +" > + > +# Example session manager. Not intended for use in production. > +CONFFILES_${PN}-media-session = "${sysconfdir}/pipewire/media-session.d/*" > +FILES_${PN}-media-session = " \ > + ${bindir}/pipewire-media-session \ > + ${sysconfdir}/pipewire/media-session.d/* \ > +" > +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-tools = " \ > + ${bindir}/spa-* \ > +" > + > +# Dynamic packages (see set_dynamic_metapkg_rdepends). > +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 \ > + " > + > +FILES_${PN}-alsa-card-profile = " \ > + ${datadir}/alsa-card-profile/* \ > + ${nonarch_base_libdir}/udev/rules.d/90-pipewire-alsa.rules \ > +" > + > +FILES_gstreamer1.0-pipewire = " \ > + ${libdir}/gstreamer-1.0/* \ > +" > diff --git a/meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb b/meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb > deleted file mode 100644 > index 173b695e1..000000000 > --- a/meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb > +++ /dev/null > @@ -1,77 +0,0 @@ > -SUMMARY = "Multimedia processing server for Linux" > -AUTHOR = "Wim Taymans <wtaymans@redhat.com>" > -HOMEPAGE = "https://pipewire.org" > -SECTION = "multimedia" > -LICENSE = "MIT" > -LIC_FILES_CHKSUM = " \ > - file://LICENSE;md5=e2c0b7d86d04e716a3c4c9ab34260e69 \ > - file://COPYING;md5=97be96ca4fab23e9657ffa590b931c1a \ > -" > -DEPENDS = "alsa-lib dbus udev" > -SRCREV = "74a1632f0720886d5b3b6c23ee8fcd6c03ca7aac" > -PV = "0.3.1" > - > -SRC_URI = "git://github.com/PipeWire/pipewire" > - > -S = "${WORKDIR}/git" > - > -inherit meson pkgconfig systemd manpages > - > -PACKAGECONFIG ??= "\ > - ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \ > - ${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio systemd vulkan', d)} \ > - jack gstreamer \ > -" > - > -PACKAGECONFIG[bluez] = "-Dbluez5=true,-Dbluez5=false,bluez5 sbc" > -PACKAGECONFIG[jack] = "-Djack=true,-Djack=false,jack" > -PACKAGECONFIG[gstreamer] = "-Dgstreamer=true,-Dgstreamer=false,glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base" > -PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxml-parser-perl-native" > -PACKAGECONFIG[pulseaudio] = "-Dpipewire-pulseaudio=true,-Dpipewire-pulseaudio=false,pulseaudio" > -PACKAGECONFIG[systemd] = "-Dsystemd=true,-Dsystemd=false,systemd" > -PACKAGECONFIG[vulkan] = "-Dvulkan=true,-Dvulkan=false,vulkan-loader" > - > -LDFLAGS_append_mipsarch = " -latomic" > -LDFLAGS_append_x86 = " -latomic" > -LDFLAGS_append_riscv32 = " -latomic" > - > -PACKAGES =+ "\ > - ${PN}-spa-plugins \ > - ${PN}-alsa \ > - ${PN}-config \ > - gstreamer1.0-${PN} \ > - lib${PN} \ > - lib${PN}-modules \ > - lib${PN}-jack \ > -" > - > -RDEPENDS_lib${PN} += "lib${PN}-modules ${PN}-spa-plugins" > - > -FILES_${PN} = "\ > - ${sysconfdir}/pipewire/pipewire.conf \ > - ${bindir}/pw-* \ > - ${bindir}/pipewire* \ > - ${systemd_user_unitdir}/* \ > -" > -FILES_lib${PN} = "\ > - ${libdir}/libpipewire-*.so.* \ > - ${libdir}/libjack-*.so.* \ > - ${libdir}/libpulse-*.so.* \ > -" > -FILES_lib${PN}-modules = "\ > - ${libdir}/pipewire-*/* \ > -" > -FILES_${PN}-spa-plugins = "\ > - ${bindir}/spa-* \ > - ${libdir}/spa-*/* \ > -" > -FILES_${PN}-alsa = "\ > - ${libdir}/alsa-lib/* \ > -" > -FILES_gstreamer1.0-${PN} = "\ > - ${libdir}/gstreamer-1.0/* \ > -" > - > -CONFFILES_${PN} = "\ > - ${sysconfdir}/pipewire/pipewire.conf \ > -" > -- > 2.25.1 > > > > > > > > > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [oe] [meta-multimedia][PATCH 1/2] pipewire: Move to meta-multimedia 2021-03-03 11:41 [meta-multimedia][PATCH 1/2] pipewire: Move to meta-multimedia Carlos Rafael Giani 2021-03-03 11:41 ` [meta-multimedia][PATCH 2/2] pipewire: Rework 0.3 recipe and upgrade to 0.3.22 Carlos Rafael Giani @ 2021-03-03 21:01 ` Andreas Müller 2021-03-04 13:12 ` Carlos Rafael Giani 1 sibling, 1 reply; 10+ messages in thread From: Andreas Müller @ 2021-03-03 21:01 UTC (permalink / raw) To: Carlos Rafael Giani; +Cc: openembeded-devel, quentin.schulz, George Kiagiadakis On Wed, Mar 3, 2021 at 12:41 PM Carlos Rafael Giani via lists.openembedded.org <crg7475=mailbox.org@lists.openembedded.org> wrote: > > Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org> > --- > .../recipes-multimedia/pipewire/pipewire-0.2_git.bb | 0 > .../recipes-multimedia/pipewire/pipewire_git.bb | 0 > 2 files changed, 0 insertions(+), 0 deletions(-) > rename {meta-oe => meta-multimedia}/recipes-multimedia/pipewire/pipewire-0.2_git.bb (100%) > rename {meta-oe => meta-multimedia}/recipes-multimedia/pipewire/pipewire_git.bb (100%) > > diff --git a/meta-oe/recipes-multimedia/pipewire/pipewire-0.2_git.bb b/meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb > similarity index 100% > rename from meta-oe/recipes-multimedia/pipewire/pipewire-0.2_git.bb > rename to meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb > diff --git a/meta-oe/recipes-multimedia/pipewire/pipewire_git.bb b/meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb > similarity index 100% > rename from meta-oe/recipes-multimedia/pipewire/pipewire_git.bb > rename to meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb > -- > 2.25.1 > To be honest: I'd prefer the other way: Add it to oe-core (of course not this old version). Haven't found the time to check more on details but it is a drop in replacement for at least pulseaudio and jack. Andreas ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [oe] [meta-multimedia][PATCH 1/2] pipewire: Move to meta-multimedia 2021-03-03 21:01 ` [oe] [meta-multimedia][PATCH 1/2] pipewire: Move to meta-multimedia Andreas Müller @ 2021-03-04 13:12 ` Carlos Rafael Giani 2021-03-04 17:02 ` Khem Raj 0 siblings, 1 reply; 10+ messages in thread From: Carlos Rafael Giani @ 2021-03-04 13:12 UTC (permalink / raw) To: Andreas Müller; +Cc: openembeded-devel, quentin.schulz, George Kiagiadakis Well, fine by me, though I'd like to ask others as well what they think about moving this to oe-core? On 03.03.21 22:01, Andreas Müller wrote: > On Wed, Mar 3, 2021 at 12:41 PM Carlos Rafael Giani via > lists.openembedded.org <crg7475=mailbox.org@lists.openembedded.org> > wrote: >> Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org> >> --- >> .../recipes-multimedia/pipewire/pipewire-0.2_git.bb | 0 >> .../recipes-multimedia/pipewire/pipewire_git.bb | 0 >> 2 files changed, 0 insertions(+), 0 deletions(-) >> rename {meta-oe => meta-multimedia}/recipes-multimedia/pipewire/pipewire-0.2_git.bb (100%) >> rename {meta-oe => meta-multimedia}/recipes-multimedia/pipewire/pipewire_git.bb (100%) >> >> diff --git a/meta-oe/recipes-multimedia/pipewire/pipewire-0.2_git.bb b/meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb >> similarity index 100% >> rename from meta-oe/recipes-multimedia/pipewire/pipewire-0.2_git.bb >> rename to meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb >> diff --git a/meta-oe/recipes-multimedia/pipewire/pipewire_git.bb b/meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb >> similarity index 100% >> rename from meta-oe/recipes-multimedia/pipewire/pipewire_git.bb >> rename to meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb >> -- >> 2.25.1 >> > To be honest: I'd prefer the other way: Add it to oe-core (of course > not this old version). Haven't found the time to check more on details > but it is a drop in replacement for at least pulseaudio and jack. > > Andreas ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [oe] [meta-multimedia][PATCH 1/2] pipewire: Move to meta-multimedia 2021-03-04 13:12 ` Carlos Rafael Giani @ 2021-03-04 17:02 ` Khem Raj 2021-03-04 17:17 ` Carlos Rafael Giani 0 siblings, 1 reply; 10+ messages in thread From: Khem Raj @ 2021-03-04 17:02 UTC (permalink / raw) To: crg7475, Andreas Müller Cc: openembeded-devel, quentin.schulz, George Kiagiadakis On 3/4/21 5:12 AM, Carlos Rafael Giani via lists.openembedded.org wrote: > Well, fine by me, though I'd like to ask others as well what they think > about moving this to oe-core? I think its a good idea and perhaps if we can make it an easy replacement for PA via a packagegroup or feature ( like init systems ) then it will be a good thing to have in core > > On 03.03.21 22:01, Andreas Müller wrote: >> On Wed, Mar 3, 2021 at 12:41 PM Carlos Rafael Giani via >> lists.openembedded.org <crg7475=mailbox.org@lists.openembedded.org> >> wrote: >>> Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org> >>> --- >>> .../recipes-multimedia/pipewire/pipewire-0.2_git.bb | 0 >>> .../recipes-multimedia/pipewire/pipewire_git.bb | 0 >>> 2 files changed, 0 insertions(+), 0 deletions(-) >>> rename {meta-oe => >>> meta-multimedia}/recipes-multimedia/pipewire/pipewire-0.2_git.bb (100%) >>> rename {meta-oe => >>> meta-multimedia}/recipes-multimedia/pipewire/pipewire_git.bb (100%) >>> >>> diff --git a/meta-oe/recipes-multimedia/pipewire/pipewire-0.2_git.bb >>> b/meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb >>> similarity index 100% >>> rename from meta-oe/recipes-multimedia/pipewire/pipewire-0.2_git.bb >>> rename to >>> meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb >>> diff --git a/meta-oe/recipes-multimedia/pipewire/pipewire_git.bb >>> b/meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb >>> similarity index 100% >>> rename from meta-oe/recipes-multimedia/pipewire/pipewire_git.bb >>> rename to meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb >>> -- >>> 2.25.1 >>> >> To be honest: I'd prefer the other way: Add it to oe-core (of course >> not this old version). Haven't found the time to check more on details >> but it is a drop in replacement for at least pulseaudio and jack. >> >> Andreas > > > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [oe] [meta-multimedia][PATCH 1/2] pipewire: Move to meta-multimedia 2021-03-04 17:02 ` Khem Raj @ 2021-03-04 17:17 ` Carlos Rafael Giani 2021-03-04 17:19 ` Khem Raj 0 siblings, 1 reply; 10+ messages in thread From: Carlos Rafael Giani @ 2021-03-04 17:17 UTC (permalink / raw) To: Khem Raj, Andreas Müller Cc: openembeded-devel, quentin.schulz, George Kiagiadakis I see three steps then: 1. Upgrade the recipe to 0.3.23 that was released today 2. Migrate it to oe-core 3. Establish a packagegroup feature to be able to easily replace PA with it I think steps 1 and 2 can be combined, but 3 should remain separate. That is, once it is in oe-core, we can start thinking about establishing that packagegroup feature. On 04.03.21 18:02, Khem Raj wrote: > > > On 3/4/21 5:12 AM, Carlos Rafael Giani via lists.openembedded.org wrote: >> Well, fine by me, though I'd like to ask others as well what they >> think about moving this to oe-core? > > > I think its a good idea and perhaps if we can make it an easy > replacement for PA via a packagegroup or feature ( like init systems ) > then it will be a good thing to have in core > >> >> On 03.03.21 22:01, Andreas Müller wrote: >>> On Wed, Mar 3, 2021 at 12:41 PM Carlos Rafael Giani via >>> lists.openembedded.org <crg7475=mailbox.org@lists.openembedded.org> >>> wrote: >>>> Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org> >>>> --- >>>> .../recipes-multimedia/pipewire/pipewire-0.2_git.bb | 0 >>>> .../recipes-multimedia/pipewire/pipewire_git.bb | 0 >>>> 2 files changed, 0 insertions(+), 0 deletions(-) >>>> rename {meta-oe => >>>> meta-multimedia}/recipes-multimedia/pipewire/pipewire-0.2_git.bb >>>> (100%) >>>> rename {meta-oe => >>>> meta-multimedia}/recipes-multimedia/pipewire/pipewire_git.bb (100%) >>>> >>>> diff --git >>>> a/meta-oe/recipes-multimedia/pipewire/pipewire-0.2_git.bb >>>> b/meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb >>>> similarity index 100% >>>> rename from meta-oe/recipes-multimedia/pipewire/pipewire-0.2_git.bb >>>> rename to >>>> meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb >>>> diff --git a/meta-oe/recipes-multimedia/pipewire/pipewire_git.bb >>>> b/meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb >>>> similarity index 100% >>>> rename from meta-oe/recipes-multimedia/pipewire/pipewire_git.bb >>>> rename to meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb >>>> -- >>>> 2.25.1 >>>> >>> To be honest: I'd prefer the other way: Add it to oe-core (of course >>> not this old version). Haven't found the time to check more on details >>> but it is a drop in replacement for at least pulseaudio and jack. >>> >>> Andreas >> >> >> >> ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [oe] [meta-multimedia][PATCH 1/2] pipewire: Move to meta-multimedia 2021-03-04 17:17 ` Carlos Rafael Giani @ 2021-03-04 17:19 ` Khem Raj 0 siblings, 0 replies; 10+ messages in thread From: Khem Raj @ 2021-03-04 17:19 UTC (permalink / raw) To: Carlos Rafael Giani, Andreas Müller Cc: openembeded-devel, quentin.schulz, George Kiagiadakis On 3/4/21 9:17 AM, Carlos Rafael Giani wrote: > I see three steps then: > > 1. Upgrade the recipe to 0.3.23 that was released today > 2. Migrate it to oe-core > 3. Establish a packagegroup feature to be able to easily replace PA with it > > I think steps 1 and 2 can be combined, but 3 should remain separate. > That is, once it is in oe-core, we can start thinking about establishing > that packagegroup feature. > since we already have it in meta-oe for now. you can submit 1 and 2 firsy and let it soak while you work on 3 > On 04.03.21 18:02, Khem Raj wrote: >> >> >> On 3/4/21 5:12 AM, Carlos Rafael Giani via lists.openembedded.org wrote: >>> Well, fine by me, though I'd like to ask others as well what they >>> think about moving this to oe-core? >> >> >> I think its a good idea and perhaps if we can make it an easy >> replacement for PA via a packagegroup or feature ( like init systems ) >> then it will be a good thing to have in core >> >>> >>> On 03.03.21 22:01, Andreas Müller wrote: >>>> On Wed, Mar 3, 2021 at 12:41 PM Carlos Rafael Giani via >>>> lists.openembedded.org <crg7475=mailbox.org@lists.openembedded.org> >>>> wrote: >>>>> Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org> >>>>> --- >>>>> .../recipes-multimedia/pipewire/pipewire-0.2_git.bb | 0 >>>>> .../recipes-multimedia/pipewire/pipewire_git.bb | 0 >>>>> 2 files changed, 0 insertions(+), 0 deletions(-) >>>>> rename {meta-oe => >>>>> meta-multimedia}/recipes-multimedia/pipewire/pipewire-0.2_git.bb >>>>> (100%) >>>>> rename {meta-oe => >>>>> meta-multimedia}/recipes-multimedia/pipewire/pipewire_git.bb (100%) >>>>> >>>>> diff --git >>>>> a/meta-oe/recipes-multimedia/pipewire/pipewire-0.2_git.bb >>>>> b/meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb >>>>> similarity index 100% >>>>> rename from meta-oe/recipes-multimedia/pipewire/pipewire-0.2_git.bb >>>>> rename to >>>>> meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb >>>>> diff --git a/meta-oe/recipes-multimedia/pipewire/pipewire_git.bb >>>>> b/meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb >>>>> similarity index 100% >>>>> rename from meta-oe/recipes-multimedia/pipewire/pipewire_git.bb >>>>> rename to meta-multimedia/recipes-multimedia/pipewire/pipewire_git.bb >>>>> -- >>>>> 2.25.1 >>>>> >>>> To be honest: I'd prefer the other way: Add it to oe-core (of course >>>> not this old version). Haven't found the time to check more on details >>>> but it is a drop in replacement for at least pulseaudio and jack. >>>> >>>> Andreas >>> >>> >>> >>> ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2021-03-06 11:06 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-03-03 11:41 [meta-multimedia][PATCH 1/2] pipewire: Move to meta-multimedia Carlos Rafael Giani 2021-03-03 11:41 ` [meta-multimedia][PATCH 2/2] pipewire: Rework 0.3 recipe and upgrade to 0.3.22 Carlos Rafael Giani 2021-03-03 19:22 ` [oe] " Johannes Pointner 2021-03-04 16:51 ` Carlos Rafael Giani 2021-03-06 11:06 ` Johannes Pointner 2021-03-03 21:01 ` [oe] [meta-multimedia][PATCH 1/2] pipewire: Move to meta-multimedia Andreas Müller 2021-03-04 13:12 ` Carlos Rafael Giani 2021-03-04 17:02 ` Khem Raj 2021-03-04 17:17 ` Carlos Rafael Giani 2021-03-04 17:19 ` Khem Raj
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.