This document covers cutting a new clock8002 release.
The release artifact is the Trixie installer tarball, built from app/ on the master branch. Trixie is the only actively developed platform.
- Active release line:
v1.x— do not use inherited upstreamv4.xtags - Tag format:
v1.x.y(dropped thetrixie-prefix starting withv1.3.16, since Trixie is now the only actively developed platform). Releases before that usedtrixie-v1.x.y— those existing tags are historical and are not renamed.
Run the piClock test unit with shakemon.sh or manual monitoring for at least 12h.
6h checkpoint — record VmRSS, VmSwap, system swap, service PIDs, temp/throttle. If clean, continue soak.
12h checkpoint — repeat. Approve release only if:
VmSwapforsdl-clockis 0 or flat- All service PIDs stable (no restarts)
- No throttle events
If any metric is rising or unstable, hold release and investigate.
This is the primary release path. The master branch produces an installer tarball for Raspberry Pi OS / Debian Trixie (arm64).
- Tag format:
v1.x.y(starting withv1.3.16; earlier releases usedtrixie-v1.x.y) - Example:
v1.3.16 - These are published as normal (Latest) GitHub releases.
- Ensure the
masterbranch contains the desired code and HANDOFF.md is updated. - Tag before building. The Makefile falls back to
git describe --tags --abbrev=0 HEADwhenGIT_TAGisn't passed, which resolves to the nearest ancestor tag (e.g. a leftover-rc1/-rc2) if HEAD itself isn't tagged yet. Tagging first closes that trap:git tag -a vX.X.X -m "Clock 8002 release vX.X.X" git push origin vX.X.X - On an ARM64 Trixie builder —
pi@cm5.localpreferred,pi@pi5start.localas fallback when cm5 is unavailable:Passcd ~/clock8002 && git fetch --tags origin && git checkout vX.X.X rm -rf app/lib && cp -r ~/sdl3-build/sdl3-trixie-lib app/lib cd app make clean make release GIT_TAG=vX.X.X
GIT_TAGexplicitly even though HEAD is now tagged — belt and braces. - Verify the built binary reports the tag you expect before publishing, not just that the
build succeeded:
tar xzOf piClock-vX.X.X-linux-arm64.tar.gz piClock-vX.X.X-linux-arm64/alsa-ltc > /tmp/a && chmod +x /tmp/a && /tmp/a --version
- Publish directly from the builder (default).
cm5.localhasghinstalled and authenticated — publish the release from there rather than round-tripping the ~30 MB tarball through a laptop:Fallback (builder has nogh release create vX.X.X \ --title "Clock 8002 vX.X.X" \ --notes-file /tmp/vX.X.X-release-notes.md \ --latest \ piClock-vX.X.X-linux-arm64.tar.gzgh, orgh auth statusfails there):scpthe tarball to the Mac and rungh release createlocally instead. If you do this, verify the checksum on both ends before publishing — a truncatedscpproduces a corrupt but plausible-sized file, and only the checksum catches it:scp pi@cm5.local:~/clock8002/app/piClock-vX.X.X-linux-arm64.tar.gz /Users/jp/Desktop/ shasum -a 256 /Users/jp/Desktop/piClock-vX.X.X-linux-arm64.tar.gz # compare against sha256sum on the builder
- Release builds must use
make clean. Stale files from prior dev builds can persist otherwise. - Do not use
pkill -f sdl-clockin SSH commands — pattern matches can terminate the SSH session. Use/etc/init.d/S99clock stopinstead. - There is a single release variant (
default). Thegerryvariant was removed inv1.4.0— do not build or publish a-gerry-tarball.