From 291685855151e8680d42a9bc90d51d8faeb173b1 Mon Sep 17 00:00:00 2001 From: BootIntel Agent Date: Mon, 28 Sep 2026 06:58:44 +0000 Subject: [PATCH] Move the tap to 0.8.0 and make it a release step The tap itself is already at 0.8.0 (BootIntel/homebrew-tap@eca8bf0), with the four checksums read out of the cli-v0.8.0 SHA256SUMS artifact and paired with each url line programmatically rather than transcribed. A wrong digest makes `brew install` fail with a checksum mismatch, which reads to a user like a compromised download. Two fixes here. The in-repo reference copy sat at 0.5.0 while 0.6.0, 0.6.1 and 0.7.0 shipped, so it was advertising checksums for archives nobody would install, under a header claiming it tracked the latest release. It is now byte-identical to the published formula from the class declaration onward, so a diff between the two is a real finding rather than noise. The cause was process, not carelessness: docs/releasing.md mentioned the tap only under one-time setup, never in the numbered list of things to do when cutting a release. It is now step 7, which is what stops this recurring. Co-Authored-By: Claude Opus 5 (1M context) --- docs/releasing.md | 11 +++++++++ packaging/homebrew/bootintel.rb | 43 +++++++++++++++++---------------- 2 files changed, 33 insertions(+), 21 deletions(-) diff --git a/docs/releasing.md b/docs/releasing.md index 23d6df2..6fc6487 100644 --- a/docs/releasing.md +++ b/docs/releasing.md @@ -67,6 +67,17 @@ having no brew line at all. both. 6. Publish the draft and mark it latest. That creates the tag on the released commit. +7. **Move the Homebrew tap.** Update `Formula/bootintel.rb` in + `BootIntel/homebrew-tap` with the new `version` and all four sha256 values, + read out of that release's `SHA256SUMS` rather than transcribed: a wrong + digest makes `brew install` fail with a checksum mismatch, which reads to a + user like a compromised download. Then sync + `packaging/homebrew/bootintel.rb` in this repo so the reference copy is not + claiming checksums that no longer exist. + + This step was missing from the list until 0.8.0, and the in-repo copy sat at + 0.5.0 while 0.6.0, 0.6.1 and 0.7.0 shipped as a result. The tap itself was + kept current each time, but only because someone remembered. ## Yanking a published version diff --git a/packaging/homebrew/bootintel.rb b/packaging/homebrew/bootintel.rb index 3c51104..f1a88b3 100644 --- a/packaging/homebrew/bootintel.rb +++ b/packaging/homebrew/bootintel.rb @@ -1,45 +1,44 @@ -# Template for the formula published at BootIntel/homebrew-tap. +# Reference copy of the formula published at BootIntel/homebrew-tap. # # The tap is what users install from: # # brew tap bootintel/tap # brew install bootintel # -# This file is the reference copy. When cutting a release, update the tap's -# Formula/bootintel.rb with the new version and all four sha256 values from -# that release's SHA256SUMS artifact. A stale formula is worse than a missing -# one: it installs an old binary while appearing to work. +# THE TAP IS THE ONE THAT MATTERS. This file is a copy for review and for +# bootstrapping the tap if it ever has to be recreated; nothing installs from +# it. It sat at 0.5.0 while 0.6.0, 0.6.1 and 0.7.0 shipped, because the release +# checklist did not name the tap as a step; that is now fixed in +# docs/releasing.md. A stale copy of a formula is worse than no copy: it invites +# someone to trust the checksums in it. # -# The version and checksums below track the latest release but are NOT what -# users get; the tap is. Verify the tap after every release. - +# Keep this byte-identical to the tap's Formula/bootintel.rb apart from this +# header, so a diff between them is a real finding rather than noise. class Bootintel < Formula - desc "Interactive UART capture + streaming boot-log analysis" + desc "Interactive UART capture and streaming boot-log analysis" homepage "https://bootintel.com" - version "0.5.0" + version "0.8.0" license "Apache-2.0" - # SHA256s pulled from the SHA256SUMS artifact of the v0.3.1 - # release cut on bootintel/cli. Regenerate on every version bump. on_macos do on_arm do - url "https://github.com/bootintel/cli/releases/download/cli-v#{version}/bootintel-v#{version}-aarch64-macos.tar.gz" - sha256 "3863ee56f86b43a1fd4f131d9e484713ebcb1550bece5ad7c2ee4de2c3ca77ce" + url "https://github.com/BootIntel/cli/releases/download/cli-v#{version}/bootintel-v#{version}-aarch64-macos.tar.gz" + sha256 "7952a953cf6ca61654375fd0077f1a2918db3f7cc058fbb770278a12476ea3b3" end on_intel do - url "https://github.com/bootintel/cli/releases/download/cli-v#{version}/bootintel-v#{version}-x86_64-macos.tar.gz" - sha256 "55cfe10f276b47e8843a670ba349c0add1f091e842a190fdd07229b646425c44" + url "https://github.com/BootIntel/cli/releases/download/cli-v#{version}/bootintel-v#{version}-x86_64-macos.tar.gz" + sha256 "6704ea35f8c6f1925784046c91dd3a11c6439600ab8fc71aa3665c7dbe6efe4a" end end on_linux do on_arm do - url "https://github.com/bootintel/cli/releases/download/cli-v#{version}/bootintel-v#{version}-aarch64-linux.tar.gz" - sha256 "0f91ffde24100bc8456aef39bda9493ba677d81b1589b2d59833be10d62ea4be" + url "https://github.com/BootIntel/cli/releases/download/cli-v#{version}/bootintel-v#{version}-aarch64-linux.tar.gz" + sha256 "1126fc60c68e1bb80e8607c2ad81ec77926f8a343c3c4247959d593455138158" end on_intel do - url "https://github.com/bootintel/cli/releases/download/cli-v#{version}/bootintel-v#{version}-x86_64-linux.tar.gz" - sha256 "1a2dc10499c8db658a698d45e47789b964843d806a0b5f7f51e439c1e05586ed" + url "https://github.com/BootIntel/cli/releases/download/cli-v#{version}/bootintel-v#{version}-x86_64-linux.tar.gz" + sha256 "8b225459d6e61be6523dc92a3882963dd464599bb09ea00c2de2976ffe7d74a8" end end @@ -48,6 +47,8 @@ def install end test do - assert_match "bootintel", shell_output("#{bin}/bootintel version") + # `version` is a real subcommand and prints the detector count, so this + # asserts the binary actually ran rather than just existing on disk. + assert_match "bootintel #{version}", shell_output("#{bin}/bootintel version") end end