meta-forgefirm: the image manifest (/etc/forgefirm-manifest.json)

Every image records the identity of its build inputs. forgefirm-manifest.bbclass
gives a component recipe a per-file source fingerprint (git ls-tree blob ids,
submodules recursed; file:// sources hashed with git hash-object); the kernel
and glowforge.ko publish theirs through do_deploy because kernel-module-split
leaves the module recipe's main package empty. forgefirm-image-manifest.bbclass
assembles the entries with the platform identity - machine, modules directory,
device tree hashes, layer content hashes (meta-forgefirm and the meta-openglow
layers by content, the kas-managed layers by revision) - into
/etc/forgefirm-manifest.json and deploys a copy next to the image. Layer
revisions and dirty flags stay outside the identity, so a rebuild from an
unchanged tree keeps its content hash and the release and dev images of one
build share it. The acceptance tool and the release gate read this file.
This commit is contained in:
ScottW514
2026-08-15 15:57:10 -04:00
parent da3725c6de
commit 9b5558dfbc
10 changed files with 348 additions and 2 deletions
@@ -13,7 +13,7 @@ SRCREV = "b4e01c5b24c75d09d6784c690d1c10654bc46da3"
S = "${WORKDIR}/git"
inherit cmake update-rc.d
inherit cmake update-rc.d forgefirm-manifest
DEPENDS += "ulfius jpeg"
# media-ctl / v4l2-ctl configure the imx-media pipeline at runtime;
@@ -19,3 +19,8 @@ SRCREV = "a0a174d8e9a6b4b6e3abe63acc51018199df4202"
PV = "0.1.6+git"
S = "${WORKDIR}/git"
# One image-manifest component for the three app recipes (same repository,
# same pinned revision): the entries merge in the image manifest.
inherit forgefirm-manifest
FORGEFIRM_MANIFEST_NAME = "forgefirm-app"
@@ -17,7 +17,7 @@ SRC_URI += "file://grblhal.init"
S = "${WORKDIR}/git"
inherit cmake update-rc.d
inherit cmake update-rc.d forgefirm-manifest
INITSCRIPT_NAME = "grblhal"
# stop 80 < forgectrl's 90: at runlevel 0/6 the controller goes down
@@ -1,5 +1,9 @@
require recipes-glowforge/images/glowforge-image.bb
# /etc/forgefirm-manifest.json: the build-input identity the acceptance tool
# and the release gate compare (forgefirm-image-manifest.bbclass).
inherit forgefirm-image-manifest
DESCRIPTION = "OpenGlow/ForgeFIRM image for Glowforge"
# ForgeFIRM cuts the cloud dependency: drop the Glowforge cloud client