Skip to content

Releases: bmoczulski/yocache

v0.1.10

Choose a tag to compare

@github-actions github-actions released this 08 Aug 12:08

Changed

  • Documentation site moves from bmoczulski.github.io/yocache to
    yocache.dev. Old GitHub Pages URLs redirect
    automatically.

Added

  • YOCACHE_BLOCK_RECIPES now propagates downstream: a recipe that
    transitively DEPENDS on 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 (previously bb.note for the direct case) naming the
    responsible upstream recipe(s).

Full Changelog: v0.1.9...v0.1.10

v0.1.9

Choose a tag to compare

@github-actions github-actions released this 19 Jul 13:25

Removed

  • yocache.bbclass no 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-report endpoint 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 with YOCACHE_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): a report whose 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/.sig sidecars 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

Choose a tag to compare

@github-actions github-actions released this 18 Jul 21:35

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:gid override.

Full Changelog: v0.1.7...v0.1.8

v0.1.7

Choose a tag to compare

@github-actions github-actions released this 18 Jul 20:19

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 to main that
    touches site/, 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 speak ws://. Point
    BB_HASHSERVE at host:6767 to 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), and hashequiv_outhashes (recorded outhash records).
  • meta-yocache now declares every Yocto release from dunfell through
    wrynose in LAYERSERIES_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-dir pointing 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

Choose a tag to compare

@github-actions github-actions released this 15 Jul 10:13

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, since do_compile itself is never a
    cache-eligible task in a typical build.

Full Changelog: v0.1.5...v0.1.6

v0.1.5

Choose a tag to compare

@github-actions github-actions released this 13 Jul 12:22

Added

  • meta-yocache now declares kirkstone in LAYERSERIES_COMPAT_yocache.

Full Changelog: v0.1.4...v0.1.5

v0.1.4

Choose a tag to compare

@github-actions github-actions released this 13 Jul 06:17

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

Choose a tag to compare

@github-actions github-actions released this 12 Jul 19:31

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 (default 720h, ~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

Choose a tag to compare

@github-actions github-actions released this 12 Jul 14:39

Fixed

  • Release workflow now actually publishes the curated CHANGELOG.md section
    as GitHub Release notes. changelog.disable: true in .goreleaser.yaml was
    skipping the whole changelog/release-notes pipe, so --release-notes was
    silently ignored and v0.1.1 shipped with an empty release body.

Full Changelog: v0.1.1...v0.1.2

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 12 Jul 11:37
v0.1.1