todo-app/packaging/aur/README.md
Krzysztof kuhy Rudnicki a0d37c4df8
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
release-apk / release (APK) (push) Waiting to run
Re-point paths for the ~ reorganisation (home-tidy)
Also bumps Flutter 3.47.3, flutter_secure_storage 11.1.0, idb_shim 2.9.9,
sqflite_common_ffi 2.4.3, very_good_analysis 11 and mcp 2.2.0 so the
freshness gate lets this through; v11 adds async_return_with_no_await, so
the 18 flagged return sites now await explicitly.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AwtowrowDXx6ccmWVPkCaF
2026-09-11 19:49:03 +02:00

45 lines
1.6 KiB
Markdown

# AUR packaging
`PKGBUILD` here is the source of truth for the `todo-flutter` AUR package. The
AUR checkout (`~/sdk/aur/todo-flutter`) 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.
## Release flow
```bash
# 1. bump `version:` in pubspec.yaml, commit, push
# 2. tag and push the SINGLE tag (never `git push --tags`)
git tag v1.2.3 && git push origin v1.2.3
# 3. sync + checksum + build + verify
cp packaging/aur/PKGBUILD ~/sdk/aur/todo-flutter/PKGBUILD
cd ~/sdk/aur/todo-flutter
# bump pkgver to match the tag, then:
updpkgsums
makepkg -Cf
namcap ./*.pkg.tar.zst
sudo pacman -U ./todo-flutter-*.pkg.tar.zst
todo # must print: todo desktop serving on http://localhost:8730
# 4. publish
makepkg --printsrcinfo > .SRCINFO
git add PKGBUILD .SRCINFO && git commit && git push # branch is `master`
```
## Notes
- `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.