mirror of
https://github.com/openglow-org/forgefirm.git
synced 2026-09-27 08:41:13 -07:00
manifest: component pins are not layer content
A component pin bump counted as a platform change: the layer content hash in the platform identity covered the recipe carrying the SRCREV, the platform is folded into every acceptance fingerprint, so every image that carried any component update invalidated the whole catalog (dev image 20260816191951: every test domain-changed after a one-line forgectrl bump; the two manifests differ only in platform.layers.meta-forgefirm). The component entry already identifies the pinned source file by file; the pin double-counted it. Component pins now live in <recipe>-pin.inc (SRCREV and the PV that moves with it, nothing else) - forgectrl, grblhal-glowforge and forgefirm-app here, the BSP components in meta-openglow - and forgefirm-image-manifest.bbclass leaves *-pin.inc out of the layer content (FORGEFIRM_MANIFEST_PIN_SUFFIX). Recipe bodies, patches, config fragments, init scripts and third-party pins with no manifest entry stay layer content; a pin written into a recipe body still hashes (the safe direction). manifest-from-tree.py mirrors the rule and reads pins through the recipe's requires; test_tree_manifest.py proves both (pin bump: hash unchanged; recipe body or inline pin: changed). Bitbake resolves the same SRCREV/PV for every pinned recipe. Docs: ACCEPTANCE.md (what layer content is), kas/README.md (the pin files in the push order), BRINGUP.md (the finding and the bench consequence: the first image built with the pin files is itself a platform change, so its campaign is a full one; pin bumps inherit after it). No catalog consequence: nothing in the image's behavior changes; the change is to the acceptance identity computation, proven by the unit tests and the CI lint on the tree manifest.
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
# forgectrl pin. Bump deliberately after pushing forgectrl changes; keep
|
||||
# only SRCREV and PV here - the image manifest leaves *-pin.inc out of the
|
||||
# layer content hash because the component entry already identifies the
|
||||
# pinned source (forgefirm-image-manifest.bbclass).
|
||||
SRCREV = "c8f655813ba2b9a44fdf032e84435d9454909d7c"
|
||||
PV = "0.1.0"
|
||||
@@ -5,11 +5,10 @@ LICENSE = "MIT"
|
||||
LIC_FILES_CHKSUM = "file://LICENSE;md5=19ed4e3e8c28a4311c16b0b2b91357ec"
|
||||
|
||||
PE = "1"
|
||||
PV = "0.1.0"
|
||||
|
||||
SRC_URI = "git://github.com/ScottW514/forgectrl.git;protocol=https;branch=main"
|
||||
# Pinned; bump deliberately after pushing forgectrl changes.
|
||||
SRCREV = "c8f655813ba2b9a44fdf032e84435d9454909d7c"
|
||||
# SRCREV and PV live in the pin file (forgefirm-image-manifest.bbclass).
|
||||
require forgectrl-pin.inc
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
# forgefirm-app pin (python3-gfhardware repository, forgefirm-app/ tree).
|
||||
# Bump deliberately (AUTOREV is not reproducible); keep only SRCREV and PV
|
||||
# here - the image manifest leaves *-pin.inc out of the layer content hash
|
||||
# because the component entry already identifies the pinned source
|
||||
# (forgefirm-image-manifest.bbclass). The python3-gfhardware recipe in
|
||||
# meta-glowforge-bsp pins the same repository; move both together.
|
||||
SRCREV = "a0a174d8e9a6b4b6e3abe63acc51018199df4202"
|
||||
|
||||
# Bump PV with every SRCREV move: the hash-derived package version is not
|
||||
# monotonic on its own and buildhistory QA fails the build when it sorts
|
||||
# backwards.
|
||||
PV = "0.1.6+git"
|
||||
@@ -10,13 +10,8 @@ LICENSE = "MIT"
|
||||
LIC_FILES_CHKSUM = "file://LICENSE;md5=62f8bb455fcc4bf177ecab380f71cd5d"
|
||||
|
||||
SRC_URI = "git://github.com/ScottW514/python3-gfhardware.git;protocol=https;branch=master"
|
||||
# Pinned; bump deliberately (AUTOREV is not reproducible).
|
||||
SRCREV = "a0a174d8e9a6b4b6e3abe63acc51018199df4202"
|
||||
|
||||
# Bump PV with every SRCREV move: the hash-derived package version is not
|
||||
# monotonic on its own and buildhistory QA fails the build when it sorts
|
||||
# backwards.
|
||||
PV = "0.1.6+git"
|
||||
# SRCREV and PV live in the pin file (forgefirm-image-manifest.bbclass).
|
||||
require forgefirm-app-pin.inc
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# grblHAL-glowforge pin. Bump deliberately after pushing grblHAL-glowforge
|
||||
# changes; keep only SRCREV and PV here - the image manifest leaves
|
||||
# *-pin.inc out of the layer content hash because the component entry
|
||||
# already identifies the pinned source (forgefirm-image-manifest.bbclass).
|
||||
SRCREV = "67d026d39ac03286937774f5e28946b88c44d490"
|
||||
PV = "0.1.0"
|
||||
@@ -4,14 +4,12 @@ HOMEPAGE = "https://github.com/ScottW514/grblHAL-glowforge"
|
||||
LICENSE = "GPL-3.0-or-later"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=3237e48bcef3455c7bea5c0ce16206f6"
|
||||
|
||||
PV = "0.1.0"
|
||||
|
||||
# gitsm: the grblHAL core rides as a submodule (ScottW514/core, branch
|
||||
# forgefirm = upstream master + the step_us_min buffer fix pending
|
||||
# upstream).
|
||||
SRC_URI = "gitsm://github.com/ScottW514/grblHAL-glowforge.git;protocol=https;branch=main"
|
||||
# Pinned; bump deliberately after pushing grblHAL-glowforge changes.
|
||||
SRCREV = "67d026d39ac03286937774f5e28946b88c44d490"
|
||||
# SRCREV and PV live in the pin file (forgefirm-image-manifest.bbclass).
|
||||
require grblhal-glowforge-pin.inc
|
||||
|
||||
SRC_URI += "file://grblhal.init"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user