Releases: bmoczulski/yocache
Releases · bmoczulski/yocache
Release list
v0.1.10
Changed
- Documentation site moves from
bmoczulski.github.io/yocacheto
yocache.dev. Old GitHub Pages URLs redirect
automatically.
Added
YOCACHE_BLOCK_RECIPESnow propagates downstream: a recipe that
transitivelyDEPENDSon a blocked recipe is skipped too, using
BB_TASKDEPDATA(bitbake's own recursive per-task dependency closure) to
find it — no separate graph walk needed. A blocked recipe's own build
output can be non-deterministic in ways its taskhash never reflects, so a
downstream consumer's sstate can silently inherit that same problem even
though its own taskhash looks stable across machines. Both the directly
blocked recipe and any downstream recipe skipped because of it now log a
bb.warn(previouslybb.notefor the direct case) naming the
responsible upstream recipe(s).
Full Changelog: v0.1.9...v0.1.10
v0.1.9
Removed
yocache.bbclassno longer POSTs a per-event build report to the server,
nor logs it locally — the server never persisted any of it (every payload
was decoded and discarded), so it was pure overhead: hundreds to thousands
of synchronous requests per build for no benefit.INHERIT += "toaster"and
INHERIT += "buildhistory"are also dropped from the recommended setup,
since their only purpose here was unlocking two of the now-removed events
(MissedSstate,TaskArtifacts). Removed variables:YOCACHE_SKIP_POST,
YOCACHE_REPORT_ENDPOINT,YOCACHE_LOG,YOCACHE_LOG_LIMIT,
YOCACHE_EVENTS,YOCACHE_METADATA_TYPES. The server's
POST /api/build-reportendpoint stays, unused, for a possible future
reinstatement with a real consumer. Mirror wiring and artifact upload are
unaffected.YOCACHE_SKIP_UPLOAD, the blanket dry-run flag, is gone — it was fully
redundant withYOCACHE_SKIP_UPLOAD_TYPES = "all", which already produces
the same "log what would be uploaded, send nothing" behavior.
Added
- Hash-equivalence now dedups across different taskhashes that produce the
same task output (cross-output equivalence): areportwhose outhash
matches an earlier taskhash's outhash unifies onto that taskhash's unihash,
mirroring bitbake's own hashserv (get_equivalent_for_outhash). Previously
every taskhash got its own unihash even when two machines' inputs differed
but their actual output matched, missing sstate reuse bitbake's reference
server would have found. - LRU eviction now evicts an sstate task's archive together with its
.siginfo/.sigsidecars as one unit, ordered by whichever sibling was
most recently accessed — a cold sidecar can no longer get evicted alone
and strand (or orphan) its still-cached archive. Once a group is fully
evicted, its hash-equivalence entries are deleted too, so a unihash never
outlives the blob it points at.
Full Changelog: v0.1.8...v0.1.9
v0.1.8
Added
- Multi-arch (linux/amd64, linux/arm64) Docker image, built and pushed on
every release to GHCR (ghcr.io/bmoczulski/yocache) and Docker Hub
(docker.io/moczulski/yocache). Runs as a non-root user by default, self-heals
bind-mount ownership on the data volume when started as root, and honors an
explicit--user uid:gidoverride.
Full Changelog: v0.1.7...v0.1.8
v0.1.7
Added
- Project website under
site/(Astro + Starlight): landing page plus
user-facing docs — getting started, why YoCache, server & client
configuration, FAQ. Published to GitHub Pages on every push tomainthat
touchessite/, independent of versioned releases. - Every server flag can now be set via a
YOCACHE_<FLAG>environment
variable (e.g.YOCACHE_DATA_DIR,YOCACHE_ADDR), with CLI flags still
taking precedence over env vars over compiled-in defaults — the config
path Docker and systemd deployments expect. --hashequiv-addr(default:6767, on by default) opens a second,
dedicated raw-TCP listener speaking bitbake's legacy OEHASHEQUIV wire
protocol directly (no WebSocket), for pre-Scarthgap bitbake (Dunfell and
earlier) whose hash-equivalence client can't speakws://. Point
BB_HASHSERVEathost:6767to use it instead of
ws://host:6768/hashequiv; pass--hashequiv-addr ""to disable it.GET /api/stats(and the startup "cache inventory" log line) now report
hash-equivalence store size:hashequiv_taskhashes(recorded
taskhash->unihash mappings),hashequiv_unihashes(distinct unihashes,
the dedup signal), andhashequiv_outhashes(recorded outhash records).meta-yocachenow declares every Yocto release fromdunfellthrough
wrynoseinLAYERSERIES_COMPAT_yocache, closing the gap between the
previously-declared dunfell/kirkstone/wrynose.
Changed
- Breaking: the five path flags (
--db,--downloads,--sstate,
--ledger,--access-log) are replaced by a single--data-dir(default
var, same on-disk layout underneath:yocache.db,downloads/,sstate/,
yocache.ledger.jsonl,yocache.access.jsonl). Anything passing the old
flags needs to switch to--data-dirpointing at one root — this also
clears the way for a single Docker volume mount instead of five.
Full Changelog: v0.1.6...v0.1.7
v0.1.6
Fixed
- sstate build-time attribution now credits upstream, non-sstate-cacheable
tasks (do_fetch/do_unpack/do_patch/do_configure/do_compile/
do_install) to whichever downstream sstate object also lets bitbake skip
them, instead of only reporting that object's own (typically sub-second)
packaging time. Previously a compile-heavy recipe's reported "time saved"
could be off by orders of magnitude, sincedo_compileitself is never a
cache-eligible task in a typical build.
Full Changelog: v0.1.5...v0.1.6
v0.1.5
Added
meta-yocachenow declareskirkstoneinLAYERSERIES_COMPAT_yocache.
Full Changelog: v0.1.4...v0.1.5
v0.1.4
Fixed
- Build-end cache-benefit summary line no longer pads in a misleading
"0 download object(s)" / "saving ~00:00:00" clause for a side (reused or
contributed) the build never actually touched.
Full Changelog: v0.1.3...v0.1.4
v0.1.3
Added
GET /api/stats— JSON cache inventory summary (file counts, deduplicated
sstate recipe count, cumulative size per category), computed live from the
inventory DB so it can be polled at will instead of only at startup.GET /api/build-stats/{buildname}— per-build cache-benefit summary: bytes
uploaded/downloaded and, for sstate, the build time contributed and saved
by reusing cache instead of rebuilding. yocache.bbclass now captures each
sstate task's wall-clock build time and uploads it alongside the artifact,
and prints a one-line "yocache helped you / you helped your teammates"
summary at the end of every build.--build-stats-ttl(default720h, ~1 month) controls how long per-build
download stats are retained before an in-process daily garbage collection
sweep prunes them.
Full Changelog: v0.1.2...v0.1.3
v0.1.2
Fixed
- Release workflow now actually publishes the curated
CHANGELOG.mdsection
as GitHub Release notes.changelog.disable: truein.goreleaser.yamlwas
skipping the whole changelog/release-notes pipe, so--release-noteswas
silently ignored and v0.1.1 shipped with an empty release body.
Full Changelog: v0.1.1...v0.1.2