# Maintainer: Psychotoxic pkgname=psysonic pkgver=1.34.8 pkgrel=1 pkgdesc="Desktop music player for Subsonic API-compatible servers (Navidrome, Gonic, etc.)" arch=('x86_64') url="https://github.com/Psychotoxical/psysonic" license=('GPL-3.0-only') depends=( 'webkit2gtk-4.1' 'gtk3' 'openssl' 'alsa-lib' ) makedepends=( 'npm' 'rust' 'cargo' 'clang' 'nasm' ) source=("$pkgname-$pkgver.tar.gz::https://github.com/Psychotoxical/psysonic/archive/refs/tags/v$pkgver.tar.gz") sha256sums=('SKIP') build() { cd "psysonic-$pkgver" export CARGO_HOME="$srcdir/cargo-home" export npm_config_cache="$srcdir/npm-cache" # ring (used by reqwest → rustls-tls) ships C/asm objects whose # symbols (ring_core_*) lld cannot resolve. On Arch/CachyOS, -fuse-ld=lld # is hardcoded into rustc itself (not just makepkg.conf RUSTFLAGS), so a # string substitution is a no-op. Appending -C link-arg=-fuse-ld=bfd works # because the last -fuse-ld=* flag passed to cc wins. export RUSTFLAGS="${RUSTFLAGS} -C link-arg=-fuse-ld=bfd" # CachyOS sets -flto=auto in CFLAGS. ring compiles its C/asm objects via the # cc crate and picks up CFLAGS, producing fat-LTO objects. bfd cannot resolve # symbols from fat-LTO objects when linking against non-LTO Rust rlibs, causing # "undefined reference to ring_core_*" even though the symbols exist in the .a. # Strip CFLAGS/CXXFLAGS entirely so ring builds plain ELF objects. unset CFLAGS CXXFLAGS npm install npm run tauri:build -- --no-bundle } package() { cd "psysonic-$pkgver" # Binary (in /usr/lib to make room for the wrapper) install -Dm755 "src-tauri/target/release/psysonic" "$pkgdir/usr/lib/psysonic/psysonic" # Wrapper script that sets necessary env vars for WebKitGTK on Wayland install -Dm755 /dev/stdin "$pkgdir/usr/bin/psysonic" <