mirror of
https://github.com/kuhyx/diet-guard.git
synced 2026-11-11 14:07:40 +01:00
Some checks are pending
dependency freshness / dependencies on newest stable (push) Waiting to run
file-length / file length <= 250 lines (push) Waiting to run
md-naming / markdown naming convention (push) Waiting to run
pre-commit / pre-commit (push) Waiting to run
Tests / test (push) Waiting to run
release-apk / release (APK) (push) Waiting to run
Also bumps Flutter 3.47.3, flutter_secure_storage 11.1.0, idb_shim 2.9.9, mcp 2.2.0 and ruff 0.16.7 so the freshness gate lets this through. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AwtowrowDXx6ccmWVPkCaF
67 lines
2.7 KiB
Markdown
67 lines
2.7 KiB
Markdown
# AUR packaging
|
|
|
|
`PKGBUILD` here is the source of truth for the `diet-guard-app` AUR package.
|
|
The AUR checkout (`~/sdk/aur/diet-guard-app`) is a copy of this file plus a
|
|
generated `.SRCINFO`.
|
|
|
|
## Why the checksum can go stale
|
|
|
|
`source=` points at the GitHub tarball for tag `v$pkgver`, and `sha256sums`
|
|
is the hash of that tarball. A tarball contains this very file, so the
|
|
checksum for tag vX cannot be committed *before* vX is tagged. The copy here
|
|
is therefore a **template**: after pushing a new tag, run `updpkgsums` in the
|
|
AUR checkout to fill in the real hash, and copy the result back here.
|
|
|
|
## Tagging hazard (read before tagging)
|
|
|
|
This repo has grafted upstream Flutter SDK history, so the **local** clone
|
|
carries hundreds of tags (`flutter-N.N-candidate.N`, `vN.N.N-N.N.pre`, and a
|
|
`v1.16.3` that points at a 2020 `[flutter_tools]` commit) that do not belong to
|
|
this app. The remote has only a handful.
|
|
|
|
- **Never run `git push --tags` here.** It would publish all of them.
|
|
- Always push one tag explicitly: `git push origin v1.2.3`.
|
|
- Resolve the next free version with `git ls-remote --tags origin`, never with
|
|
the local `git tag`.
|
|
|
|
`v1.0.0` on the remote points at an older commit that predates the LICENSE, so
|
|
the first packageable tag was `v1.0.1`.
|
|
|
|
## Release flow
|
|
|
|
```bash
|
|
# 1. bump `version:` in app/pubspec.yaml, commit, push
|
|
# 2. tag and push the SINGLE tag
|
|
git tag v1.2.3 && git push origin v1.2.3
|
|
|
|
# 3. sync + checksum + build + verify
|
|
cp packaging/aur/PKGBUILD ~/sdk/aur/diet-guard-app/PKGBUILD
|
|
cd ~/sdk/aur/diet-guard-app
|
|
# bump pkgver to match the tag, then:
|
|
updpkgsums
|
|
makepkg -Cf
|
|
namcap ./*.pkg.tar.zst
|
|
sudo pacman -U ./diet-guard-app-*.pkg.tar.zst
|
|
diet-guard-app # must print: diet_guard desktop serving on http://localhost:8732
|
|
|
|
# 4. publish
|
|
makepkg --printsrcinfo > .SRCINFO
|
|
git add PKGBUILD .SRCINFO && git commit && git push # branch is `master`
|
|
```
|
|
|
|
## Notes
|
|
|
|
- The Flutter app lives in `app/`, so the tarball extracts as
|
|
`diet-guard-$pkgver/app/` while `LICENSE` sits at the repo root. `build()`
|
|
and `package()` `cd` into the subdir; the license is installed from an
|
|
absolute `$srcdir` path.
|
|
- `StartupWMClass` is `diet_guard_app` (underscores) while the icon name is
|
|
`diet-guard-app` (hyphens). They genuinely differ — the WM class must match
|
|
what Chrome gets from the wrapper's `--class` flag.
|
|
- `install_arch.sh` is deliberately **not** wired to this PKGBUILD. That script
|
|
builds the working tree for local development; this one builds a downloaded
|
|
release tarball. Merging them would destroy the dev loop.
|
|
- `options=('!strip')` is load-bearing — see the comment in the PKGBUILD.
|
|
- Building requires network access (`pub get`, plus a git fetch of the shared
|
|
`crdt_sync` dependency). The tracked `pubspec.lock` pins what gets resolved.
|