diff options
Diffstat (limited to 'nonsystemd/pipewire/PKGBUILD')
-rw-r--r-- | nonsystemd/pipewire/PKGBUILD | 524 |
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: |