From 3059d8cd5cd1ed3af409cab30110d3e81769470e Mon Sep 17 00:00:00 2001 From: ScreenTinker Date: Wed, 5 Aug 2026 11:46:06 -0500 Subject: [PATCH] Fix the stored-archive check: unzip's totals row is not an entry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The rc3 release failed on a correctly-built archive. `unzip -v` ends with a TOTALS row whose first field is also numeric, so "numeric $1" matched it and the check read the byte count as a compression method — reporting a fully stored archive as compressed. The same noise appeared in my local negative control as a phantom third entry and I read past it, which is why this reached CI. The method column must look like a method for the row to be an entry at all. Verified in both directions: a stored archive passes, a deflated one flags every member and nothing else. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01Uaeo9MvzKoyXuN6ZsbhtkL --- scripts/build-autorun-zip.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build-autorun-zip.sh b/scripts/build-autorun-zip.sh index 95edffd..e0bdcdf 100755 --- a/scripts/build-autorun-zip.sh +++ b/scripts/build-autorun-zip.sh @@ -103,7 +103,7 @@ if ! unzip -l "$OUT" | grep -qE ' autozip\.brs$'; then fi # Prove every entry is STORED. A single deflated member is enough to make the archive unopenable # on the player, and it is invisible until a deployment fails in the field. -if unzip -v "$OUT" | awk '$1 ~ /^[0-9]+$/ && $2 != "Stored" {print $2}' | grep -q .; then +if unzip -v "$OUT" | awk '$1 ~ /^[0-9]+$/ && $2 ~ /^[A-Za-z]/ && $2 != "Stored" {print $2}' | grep -q .; then echo "ERROR: archive contains compressed members; BrightSign needs it stored (zip -0)." >&2 unzip -v "$OUT" | sed 's/^/ /' >&2 exit 1