mirror of
https://github.com/openglow-org/forgefirm.git
synced 2026-09-27 16:51:12 -07:00
Retire BRINGUP.md and CAMPAIGN-LOG.md
Every fact in the two documents is now on the documentation site, which is the single source of truth. This repository carries no project documentation any more: it is the build and release base plus the acceptance tool, the bench tools and the fixture firmware. BRINGUP.md was the runbook, the hardware facts bank and the open-work list. CAMPAIGN-LOG.md was the dated record of how each result was obtained. What replaces them: the site for present state, and the commit message for the record of what a change did and how it was proven, so the change and its record stay together. Local open work is the developer's own file at the tree root and is not tracked here. README.md becomes an index card: what this is, build, test, and where the documentation is. The release pipeline tags the documentation. Firmware on a machine needs the documentation that agrees with it, so release.sh now tags the forgefirm-docs checkout with the same v<version> as the release, and prints the command that pushes the tag with the release. The checkout must exist and be clean, which is a new gate before the signature. FORGEFIRM_DOCS_DIR names the checkout (default: the sibling one) and FORGEFIRM_DOCS_SKIP releases without a tag, loudly, and is never the default. The tag is made at staging and pushed with the release, never before: a documentation tag for a release that never shipped is worse than no tag. No catalog consequence. release.sh is host-side and is in no image. The commission.py change is one sentence of a test description, not behavior. accel_crash_probe.py and the kas header lose pointers to the retired files. Checks: bash -n and sh -n on release.sh, and the tracked trees carry no reference to either retired file.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
"""De-risk drill for the head-accelerometer crash detector (BRINGUP item 6).
|
||||
"""De-risk drill for the head-accelerometer crash detector.
|
||||
|
||||
The LIS2HH12 on the head bus (i2c-3 @0x1e) carries an on-chip interrupt
|
||||
generator: a per-axis high-event threshold (IG_THS_X1/Y1/Z1), a duration
|
||||
|
||||
@@ -30,6 +30,13 @@
|
||||
# bundle. The licenses of the software in the image
|
||||
# make source necessary, so this is never the
|
||||
# default.
|
||||
# FORGEFIRM_DOCS_DIR the forgefirm-docs checkout to tag with this
|
||||
# release (default: <repo>/../forgefirm-docs). The
|
||||
# firmware and the documentation that describes it
|
||||
# share a tag, so the documentation that agrees with
|
||||
# a machine can be found from its version.
|
||||
# FORGEFIRM_DOCS_SKIP set to 1 to release without tagging the
|
||||
# documentation. Never the default.
|
||||
#
|
||||
# The source bundle: a release build merges kas/source-bundle.yml, so the
|
||||
# build writes the source of every recipe of the image beside the image.
|
||||
@@ -309,6 +316,32 @@ fi
|
||||
( cd "$STAGE" && sha256sum $(echo "$ASSETS" | tr ' ' '\n' | grep -v '^sha256sums.txt$') > sha256sums.txt )
|
||||
ls -la "$STAGE"
|
||||
|
||||
# --- the documentation tag ----------------------------------------------------
|
||||
#
|
||||
# Firmware on a machine needs the documentation that agrees with it, so the
|
||||
# docs repository carries the same tag as the release. The tag is made here and
|
||||
# pushed with the release, never before: a tag on documentation that never
|
||||
# shipped is worse than no tag at all.
|
||||
DOCS_TAG_CMD=""
|
||||
if [ -n "${FORGEFIRM_DOCS_SKIP:-}" ]; then
|
||||
warn "docs tag SKIPPED by FORGEFIRM_DOCS_SKIP - this release ships no matching documentation tag"
|
||||
else
|
||||
DOCS_DIR="${FORGEFIRM_DOCS_DIR:-$REPO/../forgefirm-docs}"
|
||||
[ -d "$DOCS_DIR/.git" ] \
|
||||
|| die "no forgefirm-docs checkout at $DOCS_DIR (set FORGEFIRM_DOCS_DIR, or FORGEFIRM_DOCS_SKIP=1 to release without one)"
|
||||
[ -z "$(git -C "$DOCS_DIR" status --porcelain)" ] \
|
||||
|| die "forgefirm-docs has uncommitted changes; commit them before a release"
|
||||
if git -C "$DOCS_DIR" rev-parse -q --verify "refs/tags/v$VERSION" >/dev/null 2>&1; then
|
||||
echo "docs: tag v$VERSION already exists in $DOCS_DIR"
|
||||
else
|
||||
git -C "$DOCS_DIR" tag -a "v$VERSION" -m "ForgeFIRM v$VERSION" \
|
||||
|| die "cannot tag forgefirm-docs"
|
||||
echo "docs: tagged $DOCS_DIR at v$VERSION"
|
||||
fi
|
||||
echo "docs: v$VERSION -> $(git -C "$DOCS_DIR" rev-parse --short HEAD)"
|
||||
DOCS_TAG_CMD="git -C $DOCS_DIR push origin v$VERSION"
|
||||
fi
|
||||
|
||||
cat <<EOF
|
||||
|
||||
== release v$VERSION staged ==
|
||||
@@ -317,12 +350,16 @@ Pre-publish checklist (docs.forgefirm.org, Developers, "Release flow"):
|
||||
- meta-openglow pushed; kas config flipped to the pinned-remote block
|
||||
- kas lock refreshed
|
||||
- self-containment proven from a fresh clone
|
||||
- forgefirm-docs current for this release (the currency rule) and pushed
|
||||
|
||||
Publish (from a directory with an authenticated gh):
|
||||
cd "$STAGE"
|
||||
gh release create "v$VERSION" --repo openglow-org/forgefirm \\
|
||||
--title "ForgeFIRM v$VERSION" --generate-notes $PRERELEASE \\
|
||||
$ASSETS
|
||||
|
||||
Push the documentation tag with it:
|
||||
$DOCS_TAG_CMD
|
||||
EOF
|
||||
|
||||
if [ "$PUBLISH" = "1" ]; then
|
||||
|
||||
Reference in New Issue
Block a user