diff --git a/community/pipewire/APKBUILD b/community/pipewire/APKBUILD index 314ef90b811fe489f1dfe8d53467a8dfbb10507c..ea5237b2b12811c8310a85139667ecdd3bd6da2c 100644 --- a/community/pipewire/APKBUILD +++ b/community/pipewire/APKBUILD @@ -10,20 +10,50 @@ license="LGPL-2.1-or-later" # The launch script /usr/libexec/pipewire-launcher uses an argument that is unsupported by Busybox's pkill # So we use pkill provided by procps instead depends="procps" -makedepends="meson alsa-lib-dev libx11-dev sdl2-dev ffmpeg-dev eudev-dev dbus-dev - glib-dev gstreamer-dev gst-plugins-base-dev sbc-dev doxygen xmltoman graphviz - bluez-dev jack-dev vulkan-loader-dev pulseaudio-dev libfreeaptx-dev avahi-dev - libldac-dev libusb-dev bash ncurses-dev fdk-aac-dev" +makedepends=" + alsa-lib-dev + avahi-dev + bash + bluez-dev + dbus-dev + doxygen + eudev-dev + fdk-aac-dev + ffmpeg-dev + glib-dev + graphviz + gst-plugins-base-dev + gstreamer-dev + jack-dev + libfreeaptx-dev + libldac-dev + libusb-dev + libx11-dev + meson + ncurses-dev + pulseaudio-dev + sbc-dev + sdl2-dev + vulkan-loader-dev + xmltoman + " subpackages=" $pkgname-dev $pkgname-doc + $pkgname-alsa $pkgname-pulse $pkgname-jack $pkgname-media-session:media_session gst-plugin-pipewire:gst_plugin $pkgname-zeroconf + $pkgname-spa-bluez + $pkgname-spa-ffmpeg + $pkgname-spa-vulkan + $pkgname-tools + $pkgname-spa-tools:spa_tools $pkgname-lang " +install="$pkgname.post-upgrade" source="https://gitlab.freedesktop.org/PipeWire/pipewire/-/archive/$pkgver/pipewire-$pkgver.tar.gz $pkgname-media-session-don-t-remove-default.configured-when-devices-go-away.patch::https://github.com/PipeWire/pipewire/commit/4840fd3da8b7271f3f2a6bc0accd8bc71a273d65.patch $pkgname-acp-compare-HW-volume-against-stored-HW-volume.patch::https://github.com/PipeWire/pipewire/commit/35d7ad55293066be4390f78b70e9a1e1f414eb68.patch @@ -34,6 +64,14 @@ source="https://gitlab.freedesktop.org/PipeWire/pipewire/-/archive/$pkgver/pipew pipewire-launcher.sh " +case "$CARCH" in + # Limited by webrtc-audio-processing-dev + x86 | x86_64 | aarch64) + makedepends="$makedepends webrtc-audio-processing-dev" + subpackages="$subpackages $pkgname-echo-cancel:echo_cancel" + ;; +esac + build() { abuild-meson \ -Ddocs=disabled \ @@ -42,6 +80,7 @@ build() { -Dexamples=enabled \ -Dffmpeg=enabled \ -Dsystemd=disabled \ + -Dvulkan=enabled \ . output meson compile ${JOBS:+-j ${JOBS}} -C output } @@ -53,10 +92,26 @@ check() { package() { DESTDIR="$pkgdir" meson install --no-rebuild -C output + touch "$pkgdir"/usr/share/pipewire/media-session.d/with-alsa + install -Dm644 "$srcdir"/pipewire.desktop -t "$pkgdir"/etc/xdg/autostart/ install -Dm755 "$srcdir"/pipewire-launcher.sh "$pkgdir"/usr/libexec/pipewire-launcher } +alsa() { + pkgdesc="ALSA support for pipewire" + replaces="$pkgname" # for backward compatibility + + amove usr/lib/alsa-lib + amove usr/share/alsa/alsa.conf.d + amove usr/share/pipewire/media-session.d/with-alsa + + cd "$subpkgdir" + + mkdir -p etc/alsa + cp -r usr/share/alsa/alsa.conf.d etc/alsa/ +} + pulse() { pkgdesc="Pulseaudio support for pipewire" depends="$pkgname-media-session" @@ -97,6 +152,13 @@ gst_plugin() { amove usr/lib/gstreamer-1.0 } +echo_cancel() { + pkgdesc="WebRTC-based echo canceller module for PipeWire" + depends="$pkgname=$pkgver-r$pkgrel" + + amove usr/lib/pipewire-${pkgver%.*}/libpipewire-module-echo-cancel.so +} + zeroconf() { pkgdesc="$pkgdesc - Zeroconf support" depends="" @@ -106,6 +168,45 @@ zeroconf() { amove usr/lib/pipewire-${pkgver%.*}/libpipewire-module-zeroconf-discover.so } +bluez() { + pkgdesc="PipeWire BlueZ5 SPA plugin (Bluetooth)" + depends="" + replaces="$pkgname" # for backward compatibility + + amove usr/lib/spa-*/bluez5 +} + +ffmpeg() { + pkgdesc="PipeWire FFmpeg SPA plugin" + depends="" + replaces="$pkgname" # for backward compatibility + + amove usr/lib/spa-*/ffmpeg +} + +vulkan() { + pkgdesc="PipeWire Vulkan SPA plugin" + depends="" + + amove usr/lib/spa-*/vulkan +} + +tools() { + pkgdesc="PipeWire tools" + depends="$pkgname=$pkgver-r$pkgrel" + replaces="$pkgname" # for backward compatibility + + amove usr/bin/pw-* +} + +spa_tools() { + pkgdesc="PipeWire SPA tools" + depends="" + replaces="$pkgname" # for backward compatibility + + amove usr/bin/spa-* +} + sha512sums=" bc3d5658d6fda11dd55f22ba5293b4ff6c3e9a8d083b0cf7b3356bc18f4f65967557602a0d6603a2a2a548ecb42c6b7fbb9d315ed0fce435f4bb884ab4dd263b pipewire-0.3.33.tar.gz 9b82b15ec24f13684b2d034a14da54e0a6a16e1e6bdf15c5d066db05ec1ca61f965a1b0cc40b922987c4d141460ff44d8f8a94606a814bffe8b22efb0803f406 pipewire-media-session-don-t-remove-default.configured-when-devices-go-away.patch diff --git a/community/pipewire/pipewire.post-upgrade b/community/pipewire/pipewire.post-upgrade new file mode 100644 index 0000000000000000000000000000000000000000..9dc5691bc7c22ceb60d967bf7ddea3af3d435c9b --- /dev/null +++ b/community/pipewire/pipewire.post-upgrade @@ -0,0 +1,14 @@ +#!/bin/sh + +ver_old="$2" + +if [ "$(apk version -t "$ver_old" '0.3.33-r3')" = '<' ]; then + cat >&2 <<-EOF + * + * Pipewire bluez5 (Bluetooth) and FFmpeg SPA plugins, ALSA support, pw-* and + * spa-* tools have been moved to subpackages. If you use them, install + * pipewire-spa-bluez, pipewire-spa-ffmpeg, pipewire-alsa, pipewire-tools and/or + * pipewire-spa-tools, repsectively. + * + EOF +fi