82 lines
2.6 KiB
Markdown
82 lines
2.6 KiB
Markdown
# 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://[email protected]/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 <pkgver>-<pkgrel>"
|
|
```
|
|
|
|
## 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.
|