A layer manifest records the fab version but not the commit #12
Description
bt-layer:214 records the builder in every layer manifest as a version
string and nothing else:
fab_version "$(fab --version)"
core.manifest on the mirror carries fab_version 1.1.1+keel1. That string
is provenance only if it resolves to a commit, and on 2026-09-27 it did not:
the package the build host runs was built at 17:14 from a commit that reached
the default branch at 19:58, and neither packaged version was tagged at all.
Keel-Linux/fab#9 fixes the tagging side, with bin/check-release-tags
enforcing that every released version names a commit, and the two historic
tags fab/1.1.1+keel1 and fab/1.1.1+keel2 now exist.
That makes version to commit a total function as long as no package is ever
built from an untagged or dirty tree. Recording the commit directly closes
the case the tag cannot.
What has to be true
- The manifest carries a
fab_commitfield besidefab_version. - Nothing in
keelhas to change.keel/docs/layers.md, "Optional
fields": a key that is not in the required table is kept as it was read and
written back unchanged, sobt-layercan record something new without that
code changing and without older manifests becoming unreadable. Absent means
none, as forunitsandbuild_units. - So the change is at
bt-layer:214and in this repository only.
Two other things in this repository that name the package fab
Both are consequences of Keel-Linux/fab#8, where the Debian package becomes
keel-fab while every command name stays exactly as it is.
bin/generate-buildenv:135and:156runfab --versionthe same way.
Unaffected by the rename once fab#9 lands, since that stopsfab --version
asking apt about a hard-coded package name, but worth reading together with
the above.bt-img:48and:113-118compareget_version fabagainstREQ_FAB_V=0.8
and fall back to downloadingfab_${REQ_FAB_V}_stretch_amd64.debfrom
upstream's releases. The path is dead on trixie, guarded by
HOST_VER -eq 10, but it assumes a.debfilename and a package name that
will both be wrong.bt-ec2:114-117has a related existing bug: its
get_versionawk pattern is the hard-coded literal
/[[:space:]]fab[[:space:]]/regardless of the package it was given.
Order
After Keel-Linux/fab#9, so that fab --version is truthful before anything
else reads it. Not urgent: the tag invariant and its CI job cover the layers
built from here on, and the two already-built layers are covered by the
historic tags.
Activity