> -----Original Message-----
> From: openembedded-devel@lists.openembedded.org 
> <openembedded-devel@lists.openembedded.org> On Behalf Of Markus Volk
> Sent: den 20 augusti 2022 21:12
> To: openembedded-devel@lists.openembedded.org
> Cc: Markus Volk <f_...@t-online.de>
> Subject: [oe] [meta-multimedia][PATCHv7] pipewire: update to v0.3.56
> 
> Add the configuration to make pipewire work as a drop-in replacement for
> pulseaudio-server.
> 
> Add pipewire-media-session as a standalone recipe, since pipewire would fetch 
> the code as a
> subproject at do_configure.
> 
> Signed-off-by: Markus Volk <f_...@t-online.de>
> ---
>  .../pipewire/pipewire-media-session_0.4.1.bb  | 22 +++++++++
>  ...01-avb-fix-compilation-on-big-endian.patch | 27 +++++++++++
>  .../0001-spa-fix-c90-header-include.patch     | 47 -------------------
>  ...{pipewire_0.3.50.bb => pipewire_0.3.56.bb} | 43 ++++++++++++-----
>  4 files changed, 81 insertions(+), 58 deletions(-)
>  create mode 100644 
> meta-multimedia/recipes-multimedia/pipewire/pipewire-media-session_0.4.1.bb
>  create mode 100644 
> meta-multimedia/recipes-multimedia/pipewire/pipewire/0001-avb-fix-compilation-on-big-endian.patch
>  delete mode 100644 
> meta-multimedia/recipes-multimedia/pipewire/pipewire/0001-spa-fix-c90-header-include.patch
>  rename meta-multimedia/recipes-multimedia/pipewire/{pipewire_0.3.50.bb => 
> pipewire_0.3.56.bb} (87%)
> 
> diff --git 
> a/meta-multimedia/recipes-multimedia/pipewire/pipewire-media-session_0.4.1.bb 
> b/meta-multimedia/recipes-multimedia/pipewire/pipewire-media-session_0.4.1.bb
> new file mode 100644
> index 000000000..5dd1eb160
> --- /dev/null
> +++ b/meta-multimedia/recipes-multimedia/pipewire/pipewire-media-
> session_0.4.1.bb
> @@ -0,0 +1,22 @@
> +SUMMARY = "PipeWire Media Session is an example session manager for PipeWire"
> +HOMEPAGE = "https://gitlab.freedesktop.org/pipewire/media-session";
> +LICENSE = "MIT"
> +
> +LIC_FILES_CHKSUM = "file://COPYING;md5=97be96ca4fab23e9657ffa590b931c1a"
> +
> +DEPENDS = " \
> +     pipewire \
> +     alsa-lib \
> +     dbus \
> +"
> +
> +RRECOMMENDS:${PN} += "pipewire"

Runtime dependencies typically go at the end of the recipe.

> +
> +SRC_URI = 
> "git://gitlab.freedesktop.org/pipewire/media-session.git;protocol=https;branch=master"
> +
> +S = "${WORKDIR}/git"
> +SRCREV = "e5d5cf2404786af8bcc40bdb8a2962bef4ec18b6"
> +
> +inherit meson pkgconfig
> +
> +FILES:${PN} += "${libdir} ${datadir}"

These are very broad. It helps to be a bit more specific.

[cut]

> diff --git a/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.50.bb 
> b/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.56.bb
> similarity index 87%
> rename from meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.50.bb
> rename to meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.56.bb
> index c176c6eeb..421c18fa0 100644
> --- a/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.50.bb
> +++ b/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.56.bb
> @@ -6,6 +6,7 @@ AUTHOR      = "Wim Taymans <wtaym...@redhat.com>"
>  SECTION     = "multimedia"
> 
>  LICENSE = "MIT & LGPL-2.1-or-later & GPL-2.0-only"
> +LICENSE_FLAGS = "commercial"

AFAIU, this only applies if ffmpeg is used, so rather than doing this, 
you should check if "commercial" is in LICENSE_FLAGS_ACCEPTED before 
automatically adding ffmpeg to PACKAGECONFIGS, similar to what you do 
with BLUETOOTH_AAC below.

>  LIC_FILES_CHKSUM = " \
>      file://LICENSE;md5=2158739e172e58dc9ab1bdd2d6ec9c72 \
>      file://COPYING;md5=97be96ca4fab23e9657ffa590b931c1a \
> @@ -13,10 +14,10 @@ LIC_FILES_CHKSUM = " \
> 
>  DEPENDS = "dbus ncurses"
> 
> -SRCREV = "64cf5e80e6240284e6b757907b900507fe56f1b5"
> +SRCREV = "f274e53d25ee8f483ac6fce9e516bb1830abe88b"
>  SRC_URI = " \
> 
>       
> git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=master;protocol=https
>  \
> -     file://0001-spa-fix-c90-header-include.patch \
> +     file://0001-avb-fix-compilation-on-big-endian.patch \
>  "
> 
>  S = "${WORKDIR}/git"
> @@ -62,7 +63,6 @@ EXTRA_OEMESON += " \
>      -Dudevrulesdir=${nonarch_base_libdir}/udev/rules.d/ \
>      -Dsystemd-system-unit-dir=${systemd_system_unitdir} \
>      -Dsystemd-user-unit-dir=${systemd_user_unitdir} \
> -    -Dvulkan=disabled \
>      -Dman=disabled \
>      -Dsession-managers='[]' \
>      -Dlv2=disabled \
> @@ -72,12 +72,26 @@ EXTRA_OEMESON += " \
>      -Dlegacy-rtkit=false \
>  "
> 
> -PACKAGECONFIG:class-target ??= "\
> +# spa alsa plugin code uses typedef redefinition, which is officially a C11 
> feature.
> +# Pipewire builds with 'c_std=gnu99' by default. Recent versions of gcc 
> don't issue this warning in gnu99
> +# mode but it looks like clang still does
> +CFLAGS:append = " -Wno-typedef-redefinition"
> +
> +# According to wireplumber documentation only one session manager should be 
> installed at a time
> +# Possible options are media-session, which has fewer dependencies but is 
> very simple,
> +# or wireplumber, which is more powerful.
> +PIPEWIRE_SESSION_MANAGER ??= "media-session"
> +
> +BLUETOOTH_AAC = "${@bb.utils.contains('LICENSE_FLAGS_ACCEPTED', 
> 'commercial', 'bluez-aac', '', d)}"
> +
> +PACKAGECONFIG:class-target ??= " \
> +    ${@bb.utils.contains('DISTRO_FEATURES', 'gstreamer', 'gstreamer', 
> 'ffmpeg', d)} \

AFAIK, there are no current examples of "gstreamer" being used a 
distro feature. What is it supposed to mean? When is it supposed to 
be used? Why is it needed?

>      ${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)} \
> -    ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \
> -    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd 
> systemd-system-service', '', d)} \
> -    ${@bb.utils.filter('DISTRO_FEATURES', 'alsa', d)} \
> -    gstreamer jack libusb pw-cat raop sndfile v4l2 \
> +    ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez 
> ${BLUETOOTH_AAC}', '', d)} \
> +    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd 
> systemd-system-service systemd-user-service', '', d)} \
> +    ${@bb.utils.filter('DISTRO_FEATURES', 'alsa vulkan pulseaudio', d)} \
> +    ${PIPEWIRE_SESSION_MANAGER} \
> +    jack libusb pw-cat raop sndfile v4l2 udev volume \
>  "
> 
>  # "jack" and "pipewire-jack" packageconfigs cannot be both enabled,
> @@ -96,6 +110,8 @@ PACKAGECONFIG[jack] = 
> "-Djack=enabled,-Djack=disabled,jack,,,pipewire-jack"
>  PACKAGECONFIG[libcamera] = 
> "-Dlibcamera=enabled,-Dlibcamera=disabled,libcamera"
>  PACKAGECONFIG[libcanberra] = 
> "-Dlibcanberra=enabled,-Dlibcanberra=disabled,libcanberra"
>  PACKAGECONFIG[libusb] = "-Dlibusb=enabled,-Dlibusb=disabled,libusb"
> +PACKAGECONFIG[media-session] = ",,,pipewire-media-session"
> +PACKAGECONFIG[pulseaudio] = 
> "-Dlibpulse=enabled,-Dlibpulse=disabled,pulseaudio"
>  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[pw-cat] = "-Dpw-cat=enabled,-Dpw-cat=disabled"
> @@ -109,8 +125,12 @@ PACKAGECONFIG[systemd-system-service] = 
> "-Dsystemd-system-service=enabled,-Dsyst
>  # currently lacks the feature of enabling user services.
>  PACKAGECONFIG[systemd-user-service] = 
> "-Dsystemd-user-service=enabled,-Dsystemd-user-service=disabled,systemd"
>  # pw-cat needs sndfile packageconfig to be enabled
> +PACKAGECONFIG[udev] = "-Dudev=enabled,-Dudev=disabled,udev"
>  PACKAGECONFIG[v4l2] = "-Dv4l2=enabled,-Dv4l2=disabled,udev"
> +PACKAGECONFIG[volume] = "-Dvolume=enabled,-Dvolume=disabled"
> +PACKAGECONFIG[vulkan] = "-Dvulkan=enabled,-Dvulkan=disabled,vulkan-headers 
> vulkan-loader"
>  PACKAGECONFIG[webrtc-echo-cancelling] = 
> "-Decho-cancel-webrtc=enabled,-Decho-cancel-webrtc=disabled,webrtc-audio-processing"
> +PACKAGECONFIG[wireplumber] = ",,,wireplumber"
> 
>  PACKAGESPLITFUNCS:prepend = " split_dynamic_packages "
>  PACKAGESPLITFUNCS:append = " set_dynamic_metapkg_rdepends "
> @@ -227,10 +247,11 @@ PACKAGES_DYNAMIC = "^${PN}-spa-plugins.* 
> ^${PN}-modules.*"
>  SYSTEMD_SERVICE:${PN} = "${@bb.utils.contains('PACKAGECONFIG', 
> 'systemd-system-service', 'pipewire.service', '', d)}"
>  CONFFILES:${PN} += "${datadir}/pipewire/pipewire.conf"
>  FILES:${PN} = " \
> -    ${datadir}/pipewire/pipewire.conf \
> -    ${systemd_system_unitdir}/pipewire.* \
> -    ${systemd_user_unitdir}/pipewire.* \
> +    ${datadir}/pipewire \
> +    ${systemd_system_unitdir}/pipewire* \
> +    ${systemd_user_unitdir}/pipewire* \
>      ${bindir}/pipewire \
> +    ${bindir}/pipewire-avb \
>  "
> 
>  FILES:${PN}-dev += " \
> --
> 2.34.1

//Peter

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#98345): 
https://lists.openembedded.org/g/openembedded-devel/message/98345
Mute This Topic: https://lists.openembedded.org/mt/93149934/21656
Group Owner: openembedded-devel+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to