# AUR packaging for beefy-player An AUR repository holds exactly two tracked files, `PKGBUILD` and `.SRCINFO`. This directory is the staging area for both; the rest of the project is irrelevant to the AUR. ## Build it locally ```bash cd aur makepkg -si # build, run the test suite, install ``` `makepkg -o && makepkg -e` skips the download/checksum phase, and `extra-x86_64-build` (devtools) builds in a clean chroot. The package builds with `base-devel` plus the `makedepends`/`checkdepends` listed in the `PKGBUILD`; every dependency comes from the official repositories, none from the AUR. ## Publish to the AUR ```bash git clone ssh://aur@aur.archlinux.org/beefy-player.git /tmp/aur-beefy-player cp PKGBUILD .SRCINFO /tmp/aur-beefy-player/ cd /tmp/aur-beefy-player git add PKGBUILD .SRCINFO git commit -m "Initial import: beefy-player 1.2.2-1" git push ``` ## Releasing a new version 1. Set `pkgver` in `PKGBUILD` and `pyproject.toml`, and reset `pkgrel=1`. 2. Point `_commit` at the commit carrying that version: ```bash git rev-parse HEAD # or the tag, once one exists ``` 3. Refresh the checksum: ```bash curl -fsSL "https://tildeforge.dev/beefcarver/beefy-player/archive/$_commit.tar.gz" | sha256sum ``` 4. Regenerate the metadata (on Arch, or inside a chroot): ```bash makepkg --printsrcinfo > .SRCINFO ``` 5. Push to the AUR with the conventional commit message: ```bash git commit -am "upgpkg: beefy-player -" ``` ## Why the source is a commit archive Upstream publishes no tags or releases, so the checksum in `sha256sums` belongs to the archive of a specific commit rather than of a `v$pkgver` tag. Forge archives of a commit are deterministic, so the checksum stays stable. Once `v$pkgver` is tagged, replace the `source` line with ```bash source=("$pkgname-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz") ``` ## Packaging notes - The wheel is built with `hatchling`; `theme.tcss` is force-included by `pyproject.toml`, so it ends up in `site-packages/beefy_player/`. - `check()` runs the real test suite. It is offline by design (station catalogues are fixtures and `mpv`/`parec` are faked), which makes it safe in a build chroot with no network. - `mpv`, `ffmpeg`, `libpulse` (`parec`/`pactl`) and `tmux` are `optdepends`, not `depends`: the player degrades gracefully without them and says so in the UI. Users who want sound need `mpv` (or `ffmpeg` for `ffplay`) and, for the output-synced spectrum, `libpulse`. - `license=('WTFPL')` is an SPDX identifier shipped by Arch's `licenses` package.