From: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
To: Markus Volk <f_l_k@t-online.de>,
"openembedded-devel@lists.openembedded.org"
<openembedded-devel@lists.openembedded.org>
Subject: RE: [oe] [meta-multimedia][PATCHv7] pipewire: update to v0.3.56
Date: Sun, 21 Aug 2022 12:49:24 +0000 [thread overview]
Message-ID: <52f6ee030dbf4e88a86e3702a5303d57@axis.com> (raw)
In-Reply-To: <20220820191150.5699-1-f_l_k@t-online.de>
> -----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_l_k@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_l_k@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 <wtaymans@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
next prev parent reply other threads:[~2022-08-21 12:49 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-20 19:11 [meta-multimedia][PATCHv7] pipewire: update to v0.3.56 Markus Volk
2022-08-20 19:13 ` Markus Volk
2022-08-21 12:49 ` Peter Kjellerstedt [this message]
2022-08-21 14:01 ` [oe] " Markus Volk
2022-08-22 8:35 ` Peter Kjellerstedt
2022-08-22 14:14 ` Khem Raj
2022-08-22 15:48 ` Markus Volk
[not found] ` <170DB56ADBD007D9.17953@lists.openembedded.org>
2022-08-22 17:18 ` Markus Volk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52f6ee030dbf4e88a86e3702a5303d57@axis.com \
--to=peter.kjellerstedt@axis.com \
--cc=f_l_k@t-online.de \
--cc=openembedded-devel@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.