summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarlos Rafael Giani <crg7475@mailbox.org>2022-02-08 17:34:39 +0100
committerKhem Raj <raj.khem@gmail.com>2022-02-08 09:00:19 -0800
commit687483235b5542401245711cb610ec327b33c403 (patch)
tree92682e8741a6b67b3a57a4eefb444e3fbc7667e9
parent887f69dde931f039b58eb0de3ecf9ffd2ab3dbfe (diff)
downloadmeta-openembedded-687483235b5542401245711cb610ec327b33c403.tar.gz
pipewire: Upgrade to 0.3.45
Recipe changes: * media-session is no longer built, since it is now a separate subproject, and it is considered obsolete; WirePlumber is the alternative that is recommended by upstream; see: https://gitlab.freedesktop.org/pipewire/media-session/-/blob/d2880ed23aa6e3df7038b311145f390e4f3428ef/README.md#pipewire-media-session * new pipewire-v4l2 package that provides a virtual V4L2; contains a new "pw-v4l2" script to LD_PRELOAD libpw-v4l2.so device which transmits media data from/to a PipeWire graph * pw-top needs ncurses, which is why this is added to DEPENDS * pw-tools contains individual binary names to be able to separate the pw-v4l2 script from pw-tools * libcamera and ffmpeg features are usable now * remove unnecessary EXTRA_OEMESON switches for enabling plugins that are already on by default * add avahi, libcanberra, webrtc-echo-cancelling, bluez-aac, libusb packageconfigs * fix systemd-system-dir path and explicitly set systemd-user-dir path Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org> Signed-off-by: Khem Raj <raj.khem@gmail.com>
-rw-r--r--meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.45.bb (renamed from meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.34.bb)117
1 files changed, 79 insertions, 38 deletions
diff --git a/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.34.bb b/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.45.bb
index 2abc64efb..31798e47c 100644
--- a/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.34.bb
+++ b/meta-multimedia/recipes-multimedia/pipewire/pipewire_0.3.45.bb
@@ -1,17 +1,19 @@
1SUMMARY = "Multimedia processing server for Linux" 1SUMMARY = "Multimedia processing server for Linux"
2DESCRIPTION = "Linux server for handling and routing audio and video streams between applications and multimedia I/O devices" 2DESCRIPTION = "Linux server for handling and routing audio and video streams between applications and multimedia I/O devices"
3HOMEPAGE = "https://pipewire.org/" 3HOMEPAGE = "https://pipewire.org/"
4BUGTRACKER = "https://gitlab.freedesktop.org/pipewire/pipewire/issues" 4BUGTRACKER = "https://gitlab.freedesktop.org/pipewire/pipewire/issues"
5AUTHOR = "Wim Taymans <wtaymans@redhat.com>"
6SECTION = "multimedia"
7
5LICENSE = "MIT & LGPL-2.1-or-later & GPL-2.0-only" 8LICENSE = "MIT & LGPL-2.1-or-later & GPL-2.0-only"
6LIC_FILES_CHKSUM = " \ 9LIC_FILES_CHKSUM = " \
7 file://LICENSE;md5=2158739e172e58dc9ab1bdd2d6ec9c72 \ 10 file://LICENSE;md5=2158739e172e58dc9ab1bdd2d6ec9c72 \
8 file://COPYING;md5=97be96ca4fab23e9657ffa590b931c1a \ 11 file://COPYING;md5=97be96ca4fab23e9657ffa590b931c1a \
9" 12"
10SECTION = "multimedia"
11 13
12DEPENDS = "dbus" 14DEPENDS = "dbus ncurses"
13 15
14SRCREV = "1924c2c29824955b5e763f1def6967f68e403c7c" 16SRCREV = "bdd407fe66cc9e46d4bc4dcc989d50679000482b"
15SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=master;protocol=https" 17SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=master;protocol=https"
16 18
17S = "${WORKDIR}/git" 19S = "${WORKDIR}/git"
@@ -27,36 +29,47 @@ USERADD_PARAM:${PN} = "--system --home / --no-create-home \
27 --gid pipewire --groups audio,video \ 29 --gid pipewire --groups audio,video \
28 pipewire" 30 pipewire"
29 31
30SYSTEMD_PACKAGES = "${PN} ${PN}-media-session" 32SYSTEMD_PACKAGES = "${PN}"
31 33
32# For "EVL", look up https://evlproject.org/ . It involves 34# For "EVL", look up https://evlproject.org/ . It involves
33# a specially prepared kernel, and is currently unavailable 35# a specially prepared kernel, and is currently unavailable
34# in Yocto. 36# in Yocto.
35# 37#
36# FFmpeg and Vulkan aren't really supported - at the current 38# Vulkan support is currently (as of version 0.3.44) not functional.
37# stage (version 0.3.22), these are just experiments, not
38# actual features.
39#
40# libcamera support currently does not build successfully.
41# 39#
42# manpage generation requires xmltoman, which is not available. 40# manpage generation requires xmltoman, which is not available.
41#
42# The session-managers list specifies which session managers Meson
43# shall download (via git clone) and build as subprojects. In OE,
44# this is not how a session manager should be built. Instead, they
45# should be integrated as separate OE recipes. To prevent PipeWire
46# from using this Meson feature, set an empty list.
47# This does not disable support or the need for session managers,
48# it just prevents this subproject feature.
49#
50# AptX and LDAC are not available in OE. Currently, neither
51# are lv2 and ROC.
43EXTRA_OEMESON += " \ 52EXTRA_OEMESON += " \
44 -Daudiotestsrc=enabled \
45 -Devl=disabled \ 53 -Devl=disabled \
46 -Dtests=disabled \ 54 -Dtests=disabled \
47 -Dudevrulesdir=${nonarch_base_libdir}/udev/rules.d/ \ 55 -Dudevrulesdir=${nonarch_base_libdir}/udev/rules.d/ \
48 -Dvideotestsrc=enabled \ 56 -Dsystemd-system-unit-dir=${systemd_system_unitdir} \
49 -Dffmpeg=disabled \ 57 -Dsystemd-user-unit-dir=${systemd_user_unitdir} \
50 -Dvulkan=disabled \ 58 -Dvulkan=disabled \
51 -Dlibcamera=disabled \
52 -Dman=disabled \ 59 -Dman=disabled \
60 -Dsession-managers='[]' \
61 -Dlv2=disabled \
62 -Droc=disabled \
63 -Dbluez5-codec-aptx=disabled \
64 -Dbluez5-codec-ldac=disabled \
53" 65"
54 66
55PACKAGECONFIG ??= "\ 67PACKAGECONFIG ??= "\
68 ${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)} \
56 ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \ 69 ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \
57 ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd systemd-system-service', '', d)} \ 70 ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd systemd-system-service', '', d)} \
58 ${@bb.utils.filter('DISTRO_FEATURES', 'alsa', d)} \ 71 ${@bb.utils.filter('DISTRO_FEATURES', 'alsa', d)} \
59 gstreamer jack sndfile pw-cat v4l2 \ 72 gstreamer jack libusb pw-cat raop sndfile v4l2 \
60" 73"
61 74
62# "jack" and "pipewire-jack" packageconfigs cannot be both enabled, 75# "jack" and "pipewire-jack" packageconfigs cannot be both enabled,
@@ -65,23 +78,31 @@ PACKAGECONFIG ??= "\
65# is why these two are marked in their respective packageconfigs 78# is why these two are marked in their respective packageconfigs
66# as being in conflict. 79# as being in conflict.
67PACKAGECONFIG[alsa] = "-Dalsa=enabled,-Dalsa=disabled,alsa-lib udev" 80PACKAGECONFIG[alsa] = "-Dalsa=enabled,-Dalsa=disabled,alsa-lib udev"
81PACKAGECONFIG[avahi] = "-Davahi=enabled,-Davahi=disabled,avahi"
68PACKAGECONFIG[bluez] = "-Dbluez5=enabled,-Dbluez5=disabled,bluez5 sbc" 82PACKAGECONFIG[bluez] = "-Dbluez5=enabled,-Dbluez5=disabled,bluez5 sbc"
69PACKAGECONFIG[docs] = "-Ddocs=enabled,-Ddocs=disabled,doxygen-native" 83PACKAGECONFIG[bluez-aac] = "-Dbluez5-codec-aac=enabled,-Dbluez5-codec-aac=disabled,fdk-aac"
84PACKAGECONFIG[docs] = "-Ddocs=enabled,-Ddocs=disabled,doxygen-native graphviz-native"
85PACKAGECONFIG[ffmpeg] = "-Dffmpeg=enabled,-Dffmpeg=disabled,ffmpeg"
70PACKAGECONFIG[gstreamer] = "-Dgstreamer=enabled,-Dgstreamer=disabled,glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base" 86PACKAGECONFIG[gstreamer] = "-Dgstreamer=enabled,-Dgstreamer=disabled,glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base"
71PACKAGECONFIG[jack] = "-Djack=enabled,-Djack=disabled,jack,,,pipewire-jack" 87PACKAGECONFIG[jack] = "-Djack=enabled,-Djack=disabled,jack,,,pipewire-jack"
88PACKAGECONFIG[libcamera] = "-Dlibcamera=enabled,-Dlibcamera=disabled,libcamera"
89PACKAGECONFIG[libcanberra] = "-Dlibcanberra=enabled,-Dlibcanberra=disabled,libcanberra"
90PACKAGECONFIG[libusb] = "-Dlibusb=enabled,-Dlibusb=disabled,libusb"
91PACKAGECONFIG[pipewire-alsa] = "-Dpipewire-alsa=enabled,-Dpipewire-alsa=disabled,alsa-lib"
92PACKAGECONFIG[pipewire-jack] = "-Dpipewire-jack=enabled -Dlibjack-path=${libdir}/${PW_MODULE_SUBDIR}/jack,-Dpipewire-jack=disabled,jack,,,jack"
93PACKAGECONFIG[pw-cat] = "-Dpw-cat=enabled,-Dpw-cat=disabled"
94PACKAGECONFIG[raop] = "-Draop=enabled,-Draop=disabled,openssl"
72PACKAGECONFIG[sdl2] = "-Dsdl2=enabled,-Dsdl2=disabled,virtual/libsdl2" 95PACKAGECONFIG[sdl2] = "-Dsdl2=enabled,-Dsdl2=disabled,virtual/libsdl2"
73PACKAGECONFIG[sndfile] = "-Dsndfile=enabled,-Dsndfile=disabled,libsndfile1" 96PACKAGECONFIG[sndfile] = "-Dsndfile=enabled,-Dsndfile=disabled,libsndfile1"
74PACKAGECONFIG[systemd] = "-Dsystemd=enabled,-Dsystemd=disabled,systemd" 97PACKAGECONFIG[systemd] = "-Dsystemd=enabled,-Dsystemd=disabled,systemd"
75PACKAGECONFIG[systemd-system-service] = "-Dsystemd-system-service=enabled,-Dsystemd-system-service=disabled,systemd" 98PACKAGECONFIG[systemd-system-service] = "-Dsystemd-system-service=enabled,-Dsystemd-system-service=disabled,systemd"
76# "systemd-user-service" packageconfig will only install service 99# "systemd-user-service" packageconfig will only install service
77# files to rootfs but not enable them as systemd.bbclass 100# files to rootfs but not enable them as systemd.bbclass
78# currently lacks the feature of enabling user services. 101# currently lacks the feature of enabling user services.
79PACKAGECONFIG[systemd-user-service] = "-Dsystemd-user-service=enabled,-Dsystemd-user-service=disabled,systemd" 102PACKAGECONFIG[systemd-user-service] = "-Dsystemd-user-service=enabled,-Dsystemd-user-service=disabled,systemd"
80# pw-cat needs sndfile packageconfig to be enabled 103# pw-cat needs sndfile packageconfig to be enabled
81PACKAGECONFIG[pw-cat] = "-Dpw-cat=enabled,-Dpw-cat=disabled"
82PACKAGECONFIG[v4l2] = "-Dv4l2=enabled,-Dv4l2=disabled,udev" 104PACKAGECONFIG[v4l2] = "-Dv4l2=enabled,-Dv4l2=disabled,udev"
83PACKAGECONFIG[pipewire-alsa] = "-Dpipewire-alsa=enabled,-Dpipewire-alsa=disabled,alsa-lib" 105PACKAGECONFIG[webrtc-echo-cancelling] = "-Decho-cancel-webrtc=enabled,-Decho-cancel-webrtc=disabled,webrtc-audio-processing"
84PACKAGECONFIG[pipewire-jack] = "-Dpipewire-jack=enabled -Dlibjack-path=${libdir}/${PW_MODULE_SUBDIR}/jack,-Dpipewire-jack=disabled,jack,,,jack"
85 106
86PACKAGESPLITFUNCS:prepend = " split_dynamic_packages " 107PACKAGESPLITFUNCS:prepend = " split_dynamic_packages "
87PACKAGESPLITFUNCS:append = " set_dynamic_metapkg_rdepends " 108PACKAGESPLITFUNCS:append = " set_dynamic_metapkg_rdepends "
@@ -93,8 +114,11 @@ remove_unused_installed_files() {
93 # jack.conf is used by pipewire-jack (not the JACK SPA plugin). 114 # jack.conf is used by pipewire-jack (not the JACK SPA plugin).
94 # Remove it if pipewire-jack is not built to avoid creating the 115 # Remove it if pipewire-jack is not built to avoid creating the
95 # pipewire-jack package. 116 # pipewire-jack package.
117 # minimal.conf is an example of how to minimally configure the
118 # daemon and is not meant to be used for production.
96 if ${@bb.utils.contains('PACKAGECONFIG', 'pipewire-jack', 'false', 'true', d)}; then 119 if ${@bb.utils.contains('PACKAGECONFIG', 'pipewire-jack', 'false', 'true', d)}; then
97 rm -f "${D}${datadir}/pipewire/jack.conf" 120 rm -f "${D}${datadir}/pipewire/jack.conf"
121 rm -f "${D}${datadir}/pipewire/minimal.conf"
98 fi 122 fi
99} 123}
100 124
@@ -179,13 +203,13 @@ PACKAGES =+ "\
179 ${PN}-pulse \ 203 ${PN}-pulse \
180 ${PN}-alsa \ 204 ${PN}-alsa \
181 ${PN}-jack \ 205 ${PN}-jack \
182 ${PN}-media-session \
183 ${PN}-spa-plugins \ 206 ${PN}-spa-plugins \
184 ${PN}-spa-plugins-meta \ 207 ${PN}-spa-plugins-meta \
185 ${PN}-spa-tools \ 208 ${PN}-spa-tools \
186 ${PN}-modules \ 209 ${PN}-modules \
187 ${PN}-modules-meta \ 210 ${PN}-modules-meta \
188 ${PN}-alsa-card-profile \ 211 ${PN}-alsa-card-profile \
212 ${PN}-v4l2 \
189 gstreamer1.0-pipewire \ 213 gstreamer1.0-pipewire \
190" 214"
191 215
@@ -195,6 +219,7 @@ SYSTEMD_SERVICE:${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'systemd-system-s
195CONFFILES:${PN} += "${datadir}/pipewire/pipewire.conf" 219CONFFILES:${PN} += "${datadir}/pipewire/pipewire.conf"
196FILES:${PN} = " \ 220FILES:${PN} = " \
197 ${datadir}/pipewire/pipewire.conf \ 221 ${datadir}/pipewire/pipewire.conf \
222 ${systemd_system_unitdir}/pipewire.* \
198 ${systemd_user_unitdir}/pipewire.* \ 223 ${systemd_user_unitdir}/pipewire.* \
199 ${bindir}/pipewire \ 224 ${bindir}/pipewire \
200" 225"
@@ -217,7 +242,23 @@ RDEPENDS:libpipewire += " \
217" 242"
218 243
219FILES:${PN}-tools = " \ 244FILES:${PN}-tools = " \
220 ${bindir}/pw-* \ 245 ${bindir}/pw-cat \
246 ${bindir}/pw-cli \
247 ${bindir}/pw-dot \
248 ${bindir}/pw-dsdplay \
249 ${bindir}/pw-dump \
250 ${bindir}/pw-link \
251 ${bindir}/pw-loopback \
252 ${bindir}/pw-metadata \
253 ${bindir}/pw-mididump \
254 ${bindir}/pw-midiplay \
255 ${bindir}/pw-midirecord \
256 ${bindir}/pw-mon \
257 ${bindir}/pw-play \
258 ${bindir}/pw-profiler \
259 ${bindir}/pw-record \
260 ${bindir}/pw-reserve \
261 ${bindir}/pw-top \
221" 262"
222 263
223# This is a shim daemon that is intended to be used as a 264# This is a shim daemon that is intended to be used as a
@@ -226,6 +267,7 @@ FILES:${PN}-tools = " \
226CONFFILES:${PN}-pulse += "${datadir}/pipewire/pipewire-pulse.conf" 267CONFFILES:${PN}-pulse += "${datadir}/pipewire/pipewire-pulse.conf"
227FILES:${PN}-pulse = " \ 268FILES:${PN}-pulse = " \
228 ${datadir}/pipewire/pipewire-pulse.conf \ 269 ${datadir}/pipewire/pipewire-pulse.conf \
270 ${systemd_system_unitdir}/pipewire-pulse.* \
229 ${systemd_user_unitdir}/pipewire-pulse.* \ 271 ${systemd_user_unitdir}/pipewire-pulse.* \
230 ${bindir}/pipewire-pulse \ 272 ${bindir}/pipewire-pulse \
231" 273"
@@ -233,39 +275,32 @@ RDEPENDS:${PN}-pulse += " \
233 ${PN}-modules-protocol-pulse \ 275 ${PN}-modules-protocol-pulse \
234" 276"
235 277
236# alsa plugin to redirect audio to pipewire 278# ALSA plugin to redirect audio to pipewire.
237FILES:${PN}-alsa = "\ 279FILES:${PN}-alsa = "\
238 ${libdir}/alsa-lib/* \ 280 ${libdir}/alsa-lib/* \
239 ${datadir}/alsa/alsa.conf.d/* \ 281 ${datadir}/alsa/alsa.conf.d/* \
240" 282"
241 283
242# jack drop-in libraries to redirect audio to pipewire 284# JACK drop-in libraries to redirect audio to pipewire.
243CONFFILES:${PN}-jack = "${datadir}/pipewire/jack.conf" 285CONFFILES:${PN}-jack = "${datadir}/pipewire/jack.conf"
244FILES:${PN}-jack = "\ 286FILES:${PN}-jack = "\
245 ${datadir}/pipewire/jack.conf \ 287 ${datadir}/pipewire/jack.conf \
246 ${libdir}/${PW_MODULE_SUBDIR}/jack/libjack*.so.* \ 288 ${libdir}/${PW_MODULE_SUBDIR}/jack/libjack*.so.* \
247" 289"
248 290
249# Example session manager. Not intended for use in production. 291# Dynamic SPA plugin packages (see set_dynamic_metapkg_rdepends).
250CONFFILES:${PN}-media-session = "${datadir}/pipewire/media-session.d/*"
251SYSTEMD_SERVICE:${PN}-media-session = "${@bb.utils.contains('PACKAGECONFIG', 'systemd-system-service', 'pipewire-media-session.service', '', d)}"
252FILES:${PN}-media-session = " \
253 ${bindir}/pipewire-media-session \
254 ${datadir}/pipewire/media-session.d/* \
255 ${systemd_system_unitdir}/pipewire-media-session.service \
256 ${systemd_user_unitdir}/pipewire-media-session.service \
257"
258RPROVIDES:${PN}-media-session = "virtual-pipewire-sessionmanager"
259
260# Dynamic packages (see set_dynamic_metapkg_rdepends).
261FILES:${PN}-spa-plugins = "" 292FILES:${PN}-spa-plugins = ""
262RRECOMMENDS:${PN}-spa-plugins += "${PN}-spa-plugins-meta" 293RRECOMMENDS:${PN}-spa-plugins += "${PN}-spa-plugins-meta"
263 294
295FILES:${PN}-spa-plugins-bluez5 += " \
296 ${datadir}/${SPA_SUBDIR}/bluez5/* \
297"
298
264FILES:${PN}-spa-tools = " \ 299FILES:${PN}-spa-tools = " \
265 ${bindir}/spa-* \ 300 ${bindir}/spa-* \
266" 301"
267 302
268# Dynamic packages (see set_dynamic_metapkg_rdepends). 303# Dynamic PipeWire module packages (see set_dynamic_metapkg_rdepends).
269FILES:${PN}-modules = "" 304FILES:${PN}-modules = ""
270RRECOMMENDS:${PN}-modules += "${PN}-modules-meta" 305RRECOMMENDS:${PN}-modules += "${PN}-modules-meta"
271 306
@@ -284,6 +319,12 @@ FILES:${PN}-alsa-card-profile = " \
284 ${nonarch_base_libdir}/udev/rules.d/90-pipewire-alsa.rules \ 319 ${nonarch_base_libdir}/udev/rules.d/90-pipewire-alsa.rules \
285" 320"
286 321
322# V4L2 interface emulator for sending/receiving data between PipeWire and V4L2 applications.
323FILES:${PN}-v4l2 += " \
324 ${bindir}/pw-v4l2 \
325 ${libdir}/${PW_MODULE_SUBDIR}/v4l2/libpw-v4l2.so \
326"
327
287FILES:gstreamer1.0-pipewire = " \ 328FILES:gstreamer1.0-pipewire = " \
288 ${libdir}/gstreamer-1.0/* \ 329 ${libdir}/gstreamer-1.0/* \
289" 330"