summaryrefslogtreecommitdiff
path: root/nonsystemd/pipewire/PKGBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'nonsystemd/pipewire/PKGBUILD')
-rw-r--r--nonsystemd/pipewire/PKGBUILD524
1 files changed, 524 insertions, 0 deletions
diff --git a/nonsystemd/pipewire/PKGBUILD b/nonsystemd/pipewire/PKGBUILD
new file mode 100644
index 000000000..756885621
--- /dev/null
+++ b/nonsystemd/pipewire/PKGBUILD
@@ -0,0 +1,524 @@
+# Maintainer: David P. <megver83@parabola.nu>
+# Maintainer (Arch): David Runge <dvzrv@archlinux.org>
+# Maintainer (Arch): Jan Alexander Steffens (heftig) <heftig@archlinux.org>
+# Contributor (Arch): Jan de Groot <jgc@archlinux.org>
+
+pkgbase=pipewire
+pkgname=(
+ pipewire
+ libpipewire
+ alsa-card-profiles
+ pipewire-docs
+ pipewire-audio
+ pipewire-alsa
+ pipewire-ffado
+ pipewire-jack-client
+ pipewire-jack
+ pipewire-pulse
+ pipewire-roc
+ gst-plugin-pipewire
+ pipewire-zeroconf
+ pipewire-v4l2
+ pipewire-x11-bell
+ pipewire-session-manager
+ pulse-native-provider
+)
+_commit=f2874ad1c2f7f0b9a1da05cc4f402b3ea3761ee6 # tags/1.0.4
+pkgver=1.0.4
+_so_ver=0.3
+pkgrel=3
+pkgrel+=.nonsystemd1
+epoch=1
+pkgdesc="Low-latency audio/video router and processor"
+url="https://pipewire.org"
+arch=(x86_64)
+arch+=(i686 armv7h)
+license=(MIT)
+makedepends=(
+ alsa-lib
+ avahi
+ bluez-libs
+ dbus
+ doxygen
+ git
+ glib2
+ graphviz
+ gst-plugins-base
+ jack2
+ libcamera
+ libcanberra
+ libfdk-aac
+ libffado
+ libfreeaptx
+ liblc3
+ libldac
+ libmysofa
+ libpulse
+ libsndfile
+ libusb
+ libx11
+ libxfixes
+ lilv
+ meson
+ ncurses
+ opus
+ python-docutils
+ python-packaging
+ readline
+ roc-toolkit
+ rtkit
+ sbc
+ sdl2
+ valgrind
+ webrtc-audio-processing-1
+)
+checkdepends=(
+ desktop-file-utils
+ openal
+)
+source=(
+ "git+https://gitlab.freedesktop.org/pipewire/pipewire.git#commit=$_commit"
+)
+b2sums=('a1a9905ec4b09fe7d24bdf08164d96a1b2ee285576b53b941b6c245bf4c63991295398cb14e22555e4ba2bdff8d16523ef27fa05f81a336df3991f2ac9d911e1')
+
+pkgver() {
+ cd pipewire
+ git describe --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g'
+}
+
+prepare() {
+ cd pipewire
+
+ # Gst plugin fixes
+ git cherry-pick -n \
+ f1b75fc6f803f866d2ed0f7d1366f56ef96f0610 \
+ 8a271a87b77e4508bb698f9b9e9fe3624884bfa6 \
+ 1a6bb994a502d95434e326a35a83a1fb5f4ebad8 \
+ 8848c7e7920618b97016243912bcb20c69a71960
+}
+
+build() {
+ local meson_options=(
+ -D bluez5-codec-lc3plus=disabled
+ -D docs=enabled
+ -D jack-devel=true
+ -D libjack-path=/usr/lib
+ -D man=enabled
+ -D rlimits-install=false
+ -D selinux=disabled
+ -D session-managers=[]
+ -D udevrulesdir=/usr/lib/udev/rules.d
+ -D systemd=disabled
+ )
+
+ arch-meson pipewire build "${meson_options[@]}"
+ meson compile -C build
+}
+
+check() {
+ meson test -C build --print-errorlogs
+}
+
+_pick() {
+ local p="$1" f d; shift
+ for f; do
+ d="$srcdir/$p/${f#$pkgdir/}"
+ mkdir -p "$(dirname "$d")"
+ mv "$f" "$d"
+ rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")"
+ done
+}
+
+package_pipewire() {
+ license+=(LGPL-2.1-or-later) # libspa-alsa
+ depends=(
+ gcc-libs
+ glibc
+ "libpipewire=$epoch:$pkgver-$pkgrel"
+ libcamera-base.so
+ libcamera.so
+ libdbus-1.so
+ libglib-2.0.so
+ libncursesw.so
+ libpipewire-$_so_ver.so
+ libreadline.so
+ libudev.so
+ )
+ optdepends=(
+ 'gst-plugin-pipewire: GStreamer plugin'
+ 'pipewire-alsa: ALSA configuration'
+ 'pipewire-audio: Audio support'
+ 'pipewire-docs: Documentation'
+ 'pipewire-ffado: FireWire support'
+ 'pipewire-jack-client: PipeWire as JACK client'
+ 'pipewire-jack: JACK replacement'
+ 'pipewire-pulse: PulseAudio replacement'
+ 'pipewire-roc: ROC streaming'
+ 'pipewire-session-manager: Session manager'
+ 'pipewire-v4l2: V4L2 interceptor'
+ 'pipewire-x11-bell: X11 bell'
+ 'pipewire-zeroconf: Zeroconf support'
+ 'realtime-privileges: realtime privileges with rt module'
+ 'rtkit: realtime privileges with rtkit module'
+ )
+
+ meson install -C build --destdir "$pkgdir"
+
+ (
+ cd "$pkgdir"
+
+ # Replace copies with symlinks
+ for _f in pipewire-{aes67,avb,pulse}; do
+ cmp usr/bin/pipewire usr/bin/$_f
+ ln -sf pipewire usr/bin/$_f
+ done
+
+ _pick lib usr/include/{pipewire-$_so_ver,spa-0.2}
+ _pick lib usr/lib/libpipewire-$_so_ver.so*
+ _pick lib usr/lib/pkgconfig/lib{pipewire-$_so_ver,spa-0.2}.pc
+
+ _pick acp usr/lib/udev
+ _pick acp usr/share/alsa-card-profile
+
+ _pick docs usr/share/doc
+
+ _pick audio usr/bin/pipewire-{aes67,avb}
+ _pick audio usr/bin/pw-{cat,{,enc}play,record,midi{play,record},dsdplay}
+ _pick audio usr/bin/pw-{loopback,mididump}
+ _pick audio usr/bin/spa-{acp-tool,resample}
+ _pick audio usr/lib/alsa-lib
+ _pick audio usr/lib/pipewire-$_so_ver/libpipewire-module-avb.so
+ _pick audio usr/lib/pipewire-$_so_ver/libpipewire-module-echo-cancel.so
+ _pick audio usr/lib/pipewire-$_so_ver/libpipewire-module-fallback-sink.so
+ _pick audio usr/lib/pipewire-$_so_ver/libpipewire-module-filter-chain*.so
+ _pick audio usr/lib/pipewire-$_so_ver/libpipewire-module-loopback.so
+ _pick audio usr/lib/pipewire-$_so_ver/libpipewire-module-netjack2*.so
+ _pick audio usr/lib/pipewire-$_so_ver/libpipewire-module-pipe-tunnel.so
+ _pick audio usr/lib/pipewire-$_so_ver/libpipewire-module-protocol-simple.so
+ _pick audio usr/lib/pipewire-$_so_ver/libpipewire-module-rtp-{sap,sink,source}.so
+ _pick audio usr/lib/pipewire-$_so_ver/libpipewire-module-vban*.so
+ _pick audio usr/lib/spa-0.2/{aec,alsa,audio*,avb,bluez5}
+ _pick audio usr/share/alsa
+ _pick audio usr/share/man/man1/pw-{cat,loopback,mididump}.1
+ _pick audio usr/share/man/man1/spa-{acp-tool,resample}.1
+ _pick audio usr/share/man/man5/pipewire-filter-chain.conf.5
+ _pick audio usr/share/man/man7/libpipewire-module-{avb,echo-cancel,fallback-sink,filter-chain*,loopback,netjack2*,pipe-tunnel,protocol-simple,rtp-{sap,sink,source},vban*}.7
+ _pick audio usr/share/pipewire/filter-chain*
+ _pick audio usr/share/pipewire/pipewire-{aes67,avb}.conf
+ _pick audio usr/share/spa-0.2/bluez5
+
+ _pick ffado usr/lib/pipewire-$_so_ver/libpipewire-module-ffado*.so
+ _pick ffado usr/share/man/man7/libpipewire-module-ffado-driver.7
+
+ _pick jack-client usr/lib/pipewire-$_so_ver/libpipewire-module-jack{-tunnel,dbus-detect}.so
+ _pick jack-client usr/lib/spa-0.2/jack
+ _pick jack-client usr/share/man/man7/libpipewire-module-jack{-tunnel,dbus-detect}.7
+
+ _pick jack usr/bin/pw-jack
+ _pick jack usr/include/jack
+ _pick jack usr/lib/libjack*
+ _pick jack usr/lib/pkgconfig/jack.pc
+ _pick jack usr/share/man/man1/pw-jack.1
+ _pick jack usr/share/man/man5/pipewire-jack.conf.5
+ _pick jack usr/share/pipewire/jack.conf
+
+ _pick pulse usr/bin/pipewire-pulse
+ _pick pulse usr/lib/pipewire-$_so_ver/libpipewire-module-protocol-pulse.so
+ _pick pulse usr/lib/pipewire-$_so_ver/libpipewire-module-pulse-tunnel.so
+ _pick pulse usr/share/man/man1/pipewire-pulse.1
+ _pick pulse usr/share/man/man5/pipewire-pulse.conf.5
+ _pick pulse usr/share/man/man7/pipewire-pulse*.7
+ _pick pulse usr/share/man/man7/libpipewire-module-{protocol-pulse,pulse-tunnel}.7
+ _pick pulse usr/share/pipewire/pipewire-pulse.conf
+
+ _pick roc usr/lib/pipewire-$_so_ver/libpipewire-module-roc*.so
+ _pick roc usr/share/man/man7/libpipewire-module-roc-{sink,source}.7
+
+ _pick gst usr/lib/gstreamer-1.0
+
+ _pick zeroconf usr/lib/pipewire-$_so_ver/libpipewire-module-{raop,zeroconf}-*.so
+ _pick zeroconf usr/lib/pipewire-$_so_ver/libpipewire-module-rtp-session.so
+ _pick zeroconf usr/share/man/man7/libpipewire-module-{raop-*,rtp-session,zeroconf*}.7
+
+ _pick v4l2 usr/bin/pw-v4l2 usr/lib/pipewire-$_so_ver/v4l2
+ _pick v4l2 usr/share/man/man1/pw-v4l2.1
+
+ _pick x11-bell usr/lib/pipewire-$_so_ver/libpipewire-module-x11-bell.so
+ _pick x11-bell usr/share/man/man7/libpipewire-module-x11-bell.7
+
+ # directories for overrides
+ mkdir -p etc/pipewire/{client-rt,client,minimal,pipewire}.conf.d
+ )
+
+ install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING
+}
+
+package_libpipewire() {
+ pkgdesc+=" - client library"
+ depends=(
+ glibc
+ gcc-libs
+ )
+ provides=(libpipewire-$_so_ver.so)
+
+ mv lib/* "$pkgdir"
+
+ install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING
+}
+
+package_alsa-card-profiles() {
+ pkgdesc+=" - ALSA card profiles"
+ license=(LGPL-2.1-or-later)
+
+ mv acp/* "$pkgdir"
+}
+
+package_pipewire-docs() {
+ pkgdesc+=" - documentation"
+
+ mv docs/* "$pkgdir"
+
+ install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING
+}
+
+package_pipewire-audio() {
+ pkgdesc+=" - Audio support"
+ depends=(
+ alsa-card-profiles
+ dbus
+ gcc-libs
+ glib2
+ glibc
+ libasound.so
+ libbluetooth.so
+ libfdk-aac.so
+ libfreeaptx.so
+ liblc3.so
+ libldacBT_enc.so
+ liblilv-0.so
+ libmysofa.so
+ libopus.so
+ libpipewire-$_so_ver.so
+ libsbc.so
+ libsndfile.so
+ libusb-1.0.so
+ libwebrtc-audio-processing-1.so
+ pipewire
+ )
+
+ mv audio/* "$pkgdir"
+
+ mkdir -p "$pkgdir/etc/alsa/conf.d"
+ ln -st "$pkgdir/etc/alsa/conf.d" \
+ /usr/share/alsa/alsa.conf.d/50-pipewire.conf
+
+ install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING
+}
+
+package_pipewire-alsa() {
+ pkgdesc+=" - ALSA configuration"
+ depends=(
+ pipewire
+ pipewire-audio
+ pipewire-session-manager
+ )
+ conflicts=(pulseaudio-alsa)
+ provides=(pulseaudio-alsa)
+
+ mkdir -p "$pkgdir/etc/alsa/conf.d"
+ ln -st "$pkgdir/etc/alsa/conf.d" \
+ /usr/share/alsa/alsa.conf.d/99-pipewire-default.conf
+
+ install -Dm644 /dev/null \
+ "$pkgdir/usr/share/pipewire/media-session.d/with-alsa"
+
+ install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING
+}
+
+package_pipewire-ffado() {
+ pkgdesc+=" - FireWire support"
+ depends=(
+ glibc
+ libffado.so
+ libpipewire-$_so_ver.so
+ pipewire
+ pipewire-audio
+ )
+
+ mv ffado/* "$pkgdir"
+
+ install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING
+}
+
+package_pipewire-jack-client() {
+ pkgdesc+=" - PipeWire as JACK client"
+ depends=(
+ glibc
+ libdbus-1.so
+ libjack.so
+ libpipewire-$_so_ver.so
+ pipewire
+ pipewire-audio
+ )
+ conflicts=(pipewire-jack)
+
+ mv jack-client/* "$pkgdir"
+
+ install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING
+}
+
+package_pipewire-jack() {
+ pkgdesc+=" - JACK replacement"
+ license+=(LGPL-2.1-or-later GPL-2.0-only) # libjackserver
+ depends=(
+ glibc
+ libpipewire-$_so_ver.so
+ pipewire
+ pipewire-audio
+ pipewire-session-manager
+ sh
+ )
+ optdepends=('jack-example-tools: for official JACK example-clients and tools')
+ conflicts=(jack jack2 pipewire-jack-client)
+ provides=(jack libjack.so libjackserver.so libjacknet.so)
+
+ mv jack/* "$pkgdir"
+
+ install -Dm644 /dev/null \
+ "$pkgdir/usr/share/pipewire/media-session.d/with-jack"
+
+ # directories for overrides
+ mkdir -p "$pkgdir/etc/pipewire/jack.conf.d"
+
+ install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING
+}
+
+package_pipewire-pulse() {
+ pkgdesc+=" - PulseAudio replacement"
+ depends=(
+ dbus
+ gcc-libs
+ glibc
+ libavahi-{client,common}.so
+ libglib-2.0.so
+ libpipewire-$_so_ver.so
+ libpulse.so
+ pipewire
+ pipewire-audio
+ pipewire-session-manager
+ )
+ provides=(
+ pulse-native-provider
+ pulseaudio
+ pulseaudio-bluetooth
+ )
+ conflicts=(
+ pulseaudio
+ pulseaudio-bluetooth
+ )
+
+ mv pulse/* "$pkgdir"
+
+ # directory for overrides
+ mkdir -p "$pkgdir/etc/pipewire/pipewire-pulse.conf.d"
+
+ install -Dm644 /dev/null \
+ "$pkgdir/usr/share/pipewire/media-session.d/with-pulseaudio"
+
+ install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING
+}
+
+package_pipewire-roc() {
+ pkgdesc+=" - ROC streaming support"
+ depends=(
+ glibc
+ libpipewire-$_so_ver.so
+ libroc.so
+ pipewire
+ pipewire-audio
+ roc-toolkit
+ )
+
+ mv roc/* "$pkgdir"
+
+ install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING
+}
+
+package_gst-plugin-pipewire() {
+ pkgdesc="Multimedia graph framework - pipewire plugin"
+ depends=(
+ glib2
+ glibc
+ gst-plugins-base-libs
+ gstreamer
+ libpipewire-$_so_ver.so
+ pipewire
+ pipewire-session-manager
+ )
+
+ mv gst/* "$pkgdir"
+
+ install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING
+}
+
+package_pipewire-zeroconf() {
+ pkgdesc+=" - Zeroconf support"
+ depends=(
+ gcc-libs
+ glibc
+ libavahi-{client,common}.so
+ libpipewire-$_so_ver.so
+ openssl
+ opus
+ pipewire
+ pipewire-audio
+ )
+
+ mv zeroconf/* "$pkgdir"
+
+ install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING
+}
+
+package_pipewire-v4l2() {
+ pkgdesc+=" - V4L2 interceptor"
+ depends=(
+ glibc
+ libpipewire-$_so_ver.so
+ pipewire
+ pipewire-session-manager
+ sh
+ )
+
+ mv v4l2/* "$pkgdir"
+
+ install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING
+}
+
+package_pipewire-x11-bell() {
+ pkgdesc+=" - X11 bell"
+ depends=(
+ glibc
+ libcanberra.so
+ libpipewire-$_so_ver.so
+ libx11
+ libxfixes
+ pipewire
+ pipewire-audio
+ )
+
+ mv x11-bell/* "$pkgdir"
+
+ install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING
+}
+
+package_pipewire-session-manager() {
+ pkgdesc="Session manager for PipeWire (default provider)"
+ depends=(wireplumber)
+}
+
+package_pulse-native-provider() {
+ pkgdesc="PulseAudio sound server (default provider)"
+ depends=(pipewire-pulse)
+}
+
+# vim:set sw=2 sts=-1 et: