# Maintainer: David Runge # Maintainer: Jan Alexander Steffens (heftig) # Contributor: Jan de Groot # Euri Linux: patched artix-pipewire-launcher to support dinit pkgbase=pipewire pkgname=( pipewire libpipewire alsa-card-profiles pipewire-docs pipewire-libcamera 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 ) pkgver=1.6.7 pkgrel=1 epoch=1 pkgdesc="Low-latency audio/video router and processor (Euri Linux: dinit support in artix-pipewire-launcher)" url="https://pipewire.org" arch=(x86_64) license=(MIT) makedepends=( alsa-lib avahi bluez-libs dbus doxygen fftw git glib2 glib2-devel graphviz gst-plugins-base jack2 libcamera libcanberra libebur128 libfdk-aac libffado libfreeaptx libgcc liblc3 libldac libmysofa libpulse libsndfile libstdc++ libusb libx11 libxfixes lilv meson ncurses opus python-docutils python-packaging readline roc-toolkit rtkit sbc sdl2 spandsp valgrind webrtc-audio-processing-1 ) checkdepends=( desktop-file-utils openal ) source=( "git+https://gitlab.freedesktop.org/pipewire/pipewire.git#tag=$pkgver" systemd.patch artix-pipewire-launcher pipewire.desktop ) b2sums=('SKIP' 'SKIP' 'SKIP' 'SKIP') prepare() { cd pipewire patch -Np1 -i ../systemd.patch } build() { local meson_options=( -D bluez5-codec-lc3plus=disabled -D bluez5-codec-ldac-dec=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 snap=disabled -D udevrulesdir=/usr/lib/udev/rules.d -D rlimits-install=false -D logind-provider=libelogind ) artix-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 } _pwname=pipewire-0.3 _spaname=spa-0.2 package_pipewire() { license+=( # libspa-alsa LGPL-2.1-or-later ) depends=( "libpipewire=$epoch:$pkgver-$pkgrel" lib$_pwname.so dbus libdbus-1.so glib2 libglib-2.0.so glibc libgcc ncurses libncursesw.so readline libreadline.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-libcamera: Libcamera support' '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/{$_pwname,$_spaname} _pick lib usr/lib/$_spaname/libspa.so* _pick lib usr/lib/lib$_pwname.so* _pick lib usr/lib/pkgconfig/lib{$_pwname,$_spaname}.pc _pick acp usr/lib/udev _pick acp usr/share/alsa-card-profile _pick docs usr/share/doc _pick libcamera usr/lib/$_spaname/libcamera _pick audio usr/bin/pipewire-{aes67,avb} _pick audio usr/bin/pw-{cat,loopback,mididump,midi2play,midi2record,sysex} _pick audio usr/bin/pw-{dsd,enc,midi,}play _pick audio usr/bin/pw-{midi,}record _pick audio usr/bin/spa-{acp-tool,resample} _pick audio usr/lib/alsa-lib _pick audio usr/lib/$_pwname/libpipewire-module-avb.so _pick audio usr/lib/$_pwname/libpipewire-module-echo-cancel.so _pick audio usr/lib/$_pwname/libpipewire-module-fallback-sink.so _pick audio usr/lib/$_pwname/libpipewire-module-filter-chain*.so _pick audio usr/lib/$_pwname/libpipewire-module-loopback.so _pick audio usr/lib/$_pwname/libpipewire-module-netjack2*.so _pick audio usr/lib/$_pwname/libpipewire-module-parametric-equalizer.so _pick audio usr/lib/$_pwname/libpipewire-module-pipe-tunnel.so _pick audio usr/lib/$_pwname/libpipewire-module-protocol-simple.so _pick audio usr/lib/$_pwname/libpipewire-module-rtp-{sap,sink,source}.so _pick audio usr/lib/$_pwname/libpipewire-module-vban*.so _pick audio usr/lib/$_spaname/{aec,alsa,audio*,avb,bluez5,filter-graph} _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.7 _pick audio usr/share/man/man7/libpipewire-module-echo-cancel.7 _pick audio usr/share/man/man7/libpipewire-module-fallback-sink.7 _pick audio usr/share/man/man7/libpipewire-module-filter-chain*.7 _pick audio usr/share/man/man7/libpipewire-module-loopback.7 _pick audio usr/share/man/man7/libpipewire-module-netjack2*.7 _pick audio usr/share/man/man7/libpipewire-module-parametric-equalizer.7 _pick audio usr/share/man/man7/libpipewire-module-pipe-tunnel.7 _pick audio usr/share/man/man7/libpipewire-module-protocol-simple.7 _pick audio usr/share/man/man7/libpipewire-module-rtp-{sap,sink,source}.7 _pick audio usr/share/man/man7/libpipewire-module-vban*.7 _pick audio usr/share/pipewire/filter-chain* _pick audio usr/share/pipewire/pipewire-{aes67,avb}.conf _pick audio usr/share/$_spaname/bluez5 _pick ffado usr/lib/$_pwname/libpipewire-module-ffado*.so _pick ffado usr/share/man/man7/libpipewire-module-ffado-driver.7 _pick jack-client usr/lib/$_pwname/libpipewire-module-jack{-tunnel,dbus-detect}.so _pick jack-client usr/lib/$_spaname/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/$_pwname/libpipewire-module-protocol-pulse.so _pick pulse usr/lib/$_pwname/libpipewire-module-pulse-tunnel.so _pick pulse usr/share/glib-2.0/schemas/org.freedesktop.pulseaudio.gschema.xml _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/libpipewire-module-{protocol-pulse,pulse-tunnel}.7 _pick pulse usr/share/man/man7/pipewire-pulse*.7 _pick pulse usr/share/pipewire/pipewire-pulse.conf _pick roc usr/lib/$_pwname/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/$_pwname/libpipewire-module-{raop,zeroconf}-*.so _pick zeroconf usr/lib/$_pwname/libpipewire-module-rtp-session.so _pick zeroconf usr/lib/$_pwname/libpipewire-module-snapcast-discover.so _pick zeroconf usr/share/man/man7/libpipewire-module-{raop,zeroconf}-*.7 _pick zeroconf usr/share/man/man7/libpipewire-module-rtp-session.7 _pick zeroconf usr/share/man/man7/libpipewire-module-snapcast-discover.7 _pick v4l2 usr/bin/pw-v4l2 usr/lib/$_pwname/v4l2 _pick v4l2 usr/share/man/man1/pw-v4l2.1 _pick x11-bell usr/lib/$_pwname/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 install -Dm755 $srcdir/artix-pipewire-launcher $pkgdir/usr/bin install -Dm644 $srcdir/pipewire.desktop $pkgdir/etc/xdg/autostart/pipewire.desktop } package_libpipewire() { pkgdesc+=" - client library" depends=( glibc libgcc ) provides=(lib$_pwname.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-libcamera() { pkgdesc+=" - Libcamera support" depends=( glibc libcamera libcamera-base.so libcamera.so libgcc libstdc++ pipewire ) mv libcamera/* "$pkgdir" install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING } package_pipewire-audio() { pkgdesc+=" - Audio support" depends=( "libpipewire=$epoch:$pkgver-$pkgrel" lib$_pwname.so "pipewire=$epoch:$pkgver-$pkgrel" alsa-card-profiles alsa-lib libasound.so bluez-libs libbluetooth.so dbus libdbus-1.so fftw libfftw3f.so glib2 libg{lib,object,io}-2.0.so glibc libebur128 libfdk-aac libfdk-aac.so libfreeaptx libfreeaptx.so libgcc liblc3 liblc3.so libldac libldacBT_enc.so libmysofa libmysofa.so libsndfile libsndfile.so libstdc++ libusb libusb-1.0.so lilv liblilv-0.so opus libopus.so sbc libsbc.so spandsp libspandsp.so webrtc-audio-processing-1 libwebrtc-audio-processing-1.so ) provides=( ladspa-host lv2-host ) 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-audio=$epoch:$pkgver-$pkgrel" "pipewire=$epoch:$pkgver-$pkgrel" pipewire-session-manager ) 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=( "libpipewire=$epoch:$pkgver-$pkgrel" lib$_pwname.so "pipewire-audio=$epoch:$pkgver-$pkgrel" "pipewire=$epoch:$pkgver-$pkgrel" glibc libffado libffado.so ) mv ffado/* "$pkgdir" install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING } package_pipewire-jack-client() { pkgdesc+=" - PipeWire as JACK client" depends=( "libpipewire=$epoch:$pkgver-$pkgrel" lib$_pwname.so "pipewire-audio=$epoch:$pkgver-$pkgrel" "pipewire=$epoch:$pkgver-$pkgrel" dbus libdbus-1.so glibc jack libjack.so libgcc ) conflicts=(pipewire-jack) mv jack-client/* "$pkgdir" install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING } package_pipewire-jack() { pkgdesc+=" - JACK replacement" license+=( # libjackserver GPL-2.0-only LGPL-2.1-or-later ) depends=( "libpipewire=$epoch:$pkgver-$pkgrel" lib$_pwname.so "pipewire-audio=$epoch:$pkgver-$pkgrel" "pipewire=$epoch:$pkgver-$pkgrel" glibc 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 libjacknet.so libjackserver.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=( "libpipewire=$epoch:$pkgver-$pkgrel" lib$_pwname.so "pipewire-audio=$epoch:$pkgver-$pkgrel" "pipewire=$epoch:$pkgver-$pkgrel" avahi libavahi-{client,common}.so dbus libdbus-1.so dconf glib2 libg{lib,object,io}-2.0.so glibc libgcc libpulse libpulse.so pipewire-session-manager ) provides=(pulse-native-provider) conflicts=(pulseaudio) 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=( "libpipewire=$epoch:$pkgver-$pkgrel" lib$_pwname.so "pipewire-audio=$epoch:$pkgver-$pkgrel" "pipewire=$epoch:$pkgver-$pkgrel" glibc libgcc roc-toolkit libroc.so ) mv roc/* "$pkgdir" install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING } package_gst-plugin-pipewire() { pkgdesc="Multimedia graph framework - pipewire plugin" depends=( "libpipewire=$epoch:$pkgver-$pkgrel" lib$_pwname.so "pipewire-audio=$epoch:$pkgver-$pkgrel" "pipewire=$epoch:$pkgver-$pkgrel" glib2 libg{lib,object}-2.0.so glibc gst-plugins-base-libs gstreamer libgcc pipewire-session-manager ) mv gst/* "$pkgdir" install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING } package_pipewire-zeroconf() { pkgdesc+=" - Zeroconf support" depends=( "libpipewire=$epoch:$pkgver-$pkgrel" lib$_pwname.so "pipewire-audio=$epoch:$pkgver-$pkgrel" "pipewire=$epoch:$pkgver-$pkgrel" avahi libavahi-{client,common}.so glibc libgcc openssl libcrypto.so opus libopus.so ) mv zeroconf/* "$pkgdir" install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 pipewire/COPYING } package_pipewire-v4l2() { pkgdesc+=" - V4L2 interceptor" depends=( "libpipewire=$epoch:$pkgver-$pkgrel" lib$_pwname.so "pipewire=$epoch:$pkgver-$pkgrel" glibc 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=( "libpipewire=$epoch:$pkgver-$pkgrel" lib$_pwname.so "pipewire-audio=$epoch:$pkgver-$pkgrel" "pipewire=$epoch:$pkgver-$pkgrel" glibc libcanberra libcanberra.so libx11 libxfixes ) 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)" license=(CC0-1.0) depends=(wireplumber) } package_pulse-native-provider() { pkgdesc="PulseAudio sound server (default provider)" license=(CC0-1.0) depends=(pipewire-pulse) } # vim:set sw=2 sts=-1 et: