Skip to content

feat(packaging): multi-target releases with target selection and same-commit verification#59

Open
dakejahl wants to merge 2 commits intomainfrom
fix-flash-package-target-selection
Open

feat(packaging): multi-target releases with target selection and same-commit verification#59
dakejahl wants to merge 2 commits intomainfrom
fix-flash-package-target-selection

Conversation

@dakejahl
Copy link
Copy Markdown
Collaborator

Summary

Before: a release contained one MFI per publish run (based on LAST_BUILT_TARGET), and flash_from_package.sh blindly downloaded every asset. Result: a PAB_V3-only release (0.0.6) gets flashed onto PAB or JAJ hardware, writing PAB_V3 device trees on non-V3 carriers.

After:

  • flash_from_package.sh detects which carriers are in the release (pab, pab-v3, jaj), prompts interactively when more than one is present, and downloads only the selected carrier's assets. Each (version, target) caches separately under ~/.ark-jetson-cache/<version>/<target>/.
  • generate_flash_package.sh writes a sidecar BUILD_INFO.txt next to each package so publish_release.sh can verify same-commit across targets without decompressing multi-GB tarballs.
  • publish_release.sh requires all three carriers (pab, pab-v3, jaj) and verifies every sidecar reports the same commit before tagging and uploading. Release notes describe the three-carrier layout and embed the build commit.
  • README + packaging/README.md updated to document the build → generate cycle per target.

Follow-up to #58 (temporary README removal). Once this lands and a release ships all three carriers, the prebuilt flow is safe again; the second commit here restores the README section with a note about the prompt.

@dakejahl dakejahl force-pushed the fix-flash-package-target-selection branch from c4f6c0d to dc7d51c Compare April 23, 2026 22:56
…-commit verification

Before: `generate_flash_package.sh` produces one MFI per run (based on
LAST_BUILT_TARGET), and `publish_release.sh` just uploads whatever is in
the project root. `flash_from_package.sh` blindly downloads every asset
in the release. Result: a release built for one carrier (e.g. 0.0.6,
PAB_V3 only) will be downloaded and flashed onto any carrier, even
though carrier DTBs (pinmux, pad voltages, peripherals) are baked in at
build time and are not cross-compatible.

After:
- `flash_from_package.sh` detects which carrier targets are in the
  release (pab, pab-v3, jaj), prompts interactively when more than one
  is present, and downloads only assets matching the chosen target.
  Each (version, target) caches separately under
  ~/.ark-jetson-cache/<version>/<target>/.
- `generate_flash_package.sh` writes a sidecar BUILD_INFO.txt next to
  each package (or inside the _split/ dir) with the commit hash, for
  publish-time verification without decompressing multi-GB tarballs.
- `publish_release.sh` requires all three targets (pab, pab-v3, jaj)
  and verifies every sidecar reports the same commit before tagging
  and uploading. Release notes mention the three-carrier layout and
  embed the build commit.
- packaging/README.md documents the build -> generate cycle per
  target and the new verification.
flash_from_package.sh now prompts for PAB / PAB_V3 / JAJ when the
release contains multiple carriers. Call that out in the top-level
README so users aren't surprised.
@dakejahl dakejahl force-pushed the fix-flash-package-target-selection branch from dc7d51c to 402c851 Compare April 23, 2026 23:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant