mirror of
https://github.com/openglow-org/forgefirm.git
synced 2026-09-27 08:41:13 -07:00
manifest-from-tree: forgeext is a component
forgeext ships from its own repository with its own recipe and pin, and 62 covers entries across the catalog name it - but the tree manifest the coverage lint runs on did not know the component existed, so every one of those entries selected nothing. The lint exits 1 on an empty entry, so the merge would have failed on it; worse, until then forgeext's sources were not coverage-checked at all. A pin nothing has been pushed to yet (SRCREV all zeros, which is how a work branch carries this component until the merge) names the component with no files instead of failing the whole manifest. The lint then reports its entries as empty and exits 1, which is what an unbumped pin should do, and the script stays usable in the meantime. Proof: the script names forgeext and says its pin is not set; with the component's file list stood in, the 31 empty (forgeext, ...) entries become zero, and the 32 that remain are forgectrl and grblHAL paths that do not exist at their pinned commits yet - the pre-push state the work branches are in.
This commit is contained in:
@@ -37,6 +37,7 @@ from forgetest import manifest as manifest_mod # noqa: E402
|
||||
RECIPES = [
|
||||
# (component, recipe path relative to the repo or meta-openglow, layer)
|
||||
("forgectrl", "meta-forgefirm/recipes-forgefirm/forgectrl/forgectrl.bb", "forgefirm"),
|
||||
("forgeext", "meta-forgefirm/recipes-forgefirm/forgeext/forgeext.bb", "forgefirm"),
|
||||
("grblhal-glowforge", "meta-forgefirm/recipes-forgefirm/grblhal-glowforge/grblhal-glowforge.bb", "forgefirm"),
|
||||
("forgefirm-app", "meta-forgefirm/recipes-forgefirm/forgefirm-app/forgefirm-app.inc", "forgefirm"),
|
||||
("kernel-module-glowforge", "meta-glowforge-bsp/recipes-kernel/kernel-modules/kernel-module-glowforge.bb", "meta-openglow"),
|
||||
@@ -201,12 +202,21 @@ def main(argv=None):
|
||||
base = REPO if layer == "forgefirm" else args.meta_openglow
|
||||
path = os.path.join(base, rel)
|
||||
url, rev = parse_recipe(path)
|
||||
repo = fetch(url, rev, args.cache)
|
||||
files = []
|
||||
ls_tree(repo, rev, url, args.cache, "", files)
|
||||
files.sort()
|
||||
if set(rev) == {"0"}:
|
||||
# A pin nothing has been pushed to yet, which is how a work
|
||||
# branch carries a component until the merge. The component is
|
||||
# named with no files, so the coverage lint reports its covers
|
||||
# entries as empty and fails - which is what a pin that has not
|
||||
# been bumped should do - rather than the manifest failing to
|
||||
# build at all.
|
||||
print("%s: the pin is not set (nothing pushed to it yet): no files" % name, file=sys.stderr)
|
||||
else:
|
||||
repo = fetch(url, rev, args.cache)
|
||||
ls_tree(repo, rev, url, args.cache, "", files)
|
||||
files.sort()
|
||||
print("%s: %s (%d files)" % (name, rev[:12], len(files)), file=sys.stderr)
|
||||
components[name] = {"srcrev": rev, "source": url, "files": files, "recipes": [os.path.basename(rel)]}
|
||||
print("%s: %s (%d files)" % (name, rev[:12], len(files)), file=sys.stderr)
|
||||
for name, rel, layer, recipe in FILE_COMPONENTS:
|
||||
base = REPO if layer == "forgefirm" else args.meta_openglow
|
||||
files = dir_files(os.path.join(base, rel))
|
||||
|
||||
Reference in New Issue
Block a user