ADR-0017: A project names the tool baseline of its era¶
Status: accepted (extends ADR-0013) Date: 2026-09-21
Context¶
FunKey-OS pins the FunKey fork of Buildroot 2021.02. Its host packages predate glibc 2.34: host-m4 1.4.18 fails on any current host
(gnulib's SIGSTKSZ test), and Buildroot's own 2021.02.x stable series had to patch m4, bison and fakeroot for the same reason. The
golden build failed there on the cluster (ubuntu:24.04 worker image), and a wrapped Buck2 build would fail identically. Two ways out:
back-port host-package patches into the project (a global patch directory that every package action would have to see, which the
toolkit does not support, and a deviation from the project as published), or build the project with host tools of its own time.
Decision¶
- The worker image is built in variants from one Dockerfile (
BASE, and optionally a vendor SDK at its documented path):latest(ubuntu:24.04),ubuntu20.04(glibc 2.31, gcc 9) andfunkey(ubuntu:20.04 plus the released FunKey SDK at/opt/FunKey-sdk-2.1.0, whose.lafiles name that path), published by CI asbuckroot-worker:<tag>. - A project may name its baseline in
project.json("baseline": "funkey").br2then sends its remote actions to thelegacyworker pool (instance-name prefixlegacy/, workers running that image) and runs its golden Job in the same image, so golden and Buck2 builds still share one baseline (ADR-0013). Everything else is unchanged; no patches are applied to the project. - The chart's pools take a per-pool
worker.image; thelegacypool is enabled with zero replicas until a build needs it.
Consequences¶
- Old projects build as published; the "vanilla" property of the golden is kept.
- A second image to maintain, and a second scheduler/pool. A project's era is declared, not detected: a wrong baseline shows up as a build failure.
- The baseline is still not part of the action key (design note): two projects with different baselines must not share cache entries for the same action, which the instance-name prefix guarantees today only because the cache is keyed by content and the actions differ in inputs; the identity gap noted in ADR-0013 remains.