testsAndMisc/linux_configuration/scripts/single_use/feedback-appimage/PKGBUILD
Krzysztof kuhy Rudnicki 91061edc14 feedback: local-only pacman package build, and ignore build artifacts
fee[dB]ack has no AUR entry, so install_feedback.sh builds a local
package from the PKGBUILD tracked beside it, the same way
hypersomnia-appimage and jackify-bin are installed here. The script only
builds and then prints the `sudo pacman -U` line to run, since
interactive sudo prompts belong to the user rather than an agent.

The built .pkg.tar.zst is ~640 MB, so it is gitignored along with the
Bottles prefixes and the archwiki_rag vector index — all three are local
runtime state that is regenerable and must never enter the history (see
memories/binary-files.md). The PKGBUILD and the installer are the
source and stay tracked.

Exclude PKGBUILDs from shellcheck. A PKGBUILD is a makepkg manifest,
not a standalone script: it has no shebang by design, pkgname/pkgver/
source/sha512sums are read by makepkg, and pkgdir/srcdir are injected by
it, so shellcheck flags every one as unused or undefined. The same
reasoning already excludes zsh — the dialect is outside what shellcheck
can judge — and the alternative was a directive on nearly every line.

Also drops three stray files: a saved search-results page, a 0-byte file
from a mistyped redirect, and a June i3 config backup superseded by git.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YQLwdquDCNmWtvgi3Lk72J
2026-08-10 15:33:18 +02:00

51 lines
2.4 KiB
Bash

# Maintainer: kuhy (local-only package, not published to the AUR)
# fee[dB]ack has no AUR entry; this PKGBUILD packages the upstream GitHub
# release AppImage the same way hypersomnia-appimage/jackify-bin are
# packaged on this box: extracted into /opt, symlinked into /usr/bin, with
# a discovered (not hardcoded) .desktop entry and icon theme tree.
pkgname=feedback-appimage
pkgver=0.3.0.alpha1
pkgrel=1
pkgdesc="fee[dB]ack desktop app with integrated audio engine, VST hosting, and amp modeling"
arch=('x86_64')
url="https://got-feedback.org/"
license=('AGPL3')
depends=('fuse2')
options=(!strip) # stripping corrupts the AppImage's embedded ELF/squashfs layout
source=("https://github.com/got-feedback/feedBack-desktop/releases/download/v0.3.0-alpha.1/feedback-0.3.0-x86_64.AppImage")
# Pinned for real (unlike upstream examples that use SKIP) so a future
# pkgver bump that silently changes the release asset fails the build
# loudly instead of installing an unverified binary.
sha512sums=('d4c664ed5fe2052635dd6741579a19f521cb22e6b5c88edf5ac5c4e22226656113d7e613a996bd5ed59f05a229a07dbad421b6ac18212bcd94073a818efd3953')
_filename="feedback-0.3.0-x86_64.AppImage"
_install_path="/opt/feedback/feedback"
package() {
chmod +x "${_filename}"
./"${_filename}" --appimage-extract >/dev/null 2>&1
# Discover the bundled .desktop file rather than hardcode its name -
# upstream's internal AppImage layout isn't a stable contract across releases.
local desktop_file
desktop_file=$(find squashfs-root -maxdepth 1 -iname '*.desktop' | head -1)
[[ -n "$desktop_file" ]] || { echo "feedback-appimage: no bundled .desktop file found in AppImage" >&2; return 1; }
install -Dm755 "${_filename}" "${pkgdir}${_install_path}"
install -dm755 "${pkgdir}/usr/bin"
ln -s "${_install_path}" "${pkgdir}/usr/bin/feedback"
install -Dm644 "$desktop_file" "${pkgdir}/usr/share/applications/feedback-appimage.desktop"
# Bundled Exec points at the AppImage's own AppRun wrapper; point it at
# the installed symlink instead, keeping the upstream --no-sandbox flag.
sed -i 's|^Exec=.*|Exec=feedback --no-sandbox %U|' "${pkgdir}/usr/share/applications/feedback-appimage.desktop"
if [[ -d squashfs-root/usr/share/icons/hicolor ]]; then
install -dm755 "${pkgdir}/usr/share/icons"
cp -a squashfs-root/usr/share/icons/hicolor "${pkgdir}/usr/share/icons/"
find "${pkgdir}/usr/share/icons/hicolor" -type d -exec chmod 755 {} \;
find "${pkgdir}/usr/share/icons/hicolor" -type f -exec chmod 644 {} \;
fi
}