brew upgrade ward fails: 'ArgumentError: no time information in ""' (blocks all releases) #116

Closed
opened 2026-06-17 21:24:13 +00:00 by coilysiren · 0 comments
Owner

brew upgrade ward fails for every release since v0.29.0 - the tap is at v0.32.0 but the installed binary is stuck at v0.29.0 (v0.30, v0.31, v0.32 all undeployed).

Symptom

==> Upgrading coilyco-flight-deck/tap/ward 0.29.0 -> 0.32.0
==> Fetching downloads for: ward
Error: An exception occurred within a child process:
  ArgumentError: no time information in ""

Exit 1, binary unchanged. Reproduces with HOMEBREW_NO_INSTALL_FROM_API=1, after a download-cache clear, and on a current Homebrew (6.0.2).

Root cause

Homebrew's GitDownloadStrategy#source_modified_time reads the commit time from the staged checkout, but the formula pins a git source:

url "...ward.git", tag: "v0.32.0", revision: "d248889..."

During staging Homebrew moves .git out of the unpack dir, then its git show -s --format=%ct returns empty -> Time.at(Integer("")) raises. Plain git show -s --format=%ct HEAD on a fresh --depth 1 --branch v0.32.0 clone returns a valid timestamp, so the source is fine; it's Homebrew's git-strategy interaction with the Forgejo tag:+revision: form.

Proposed fix (bump-tap-formula job in .forgejo/workflows/release.yml)

Generate the formula with a tarball url instead of the git strategy - Forgejo serves .../archive/<tag>.tar.gz:

url "$FORGEJO_BASE_URL/coilyco-flight-deck/ward/archive/v#{version}.tar.gz"
sha256 "<computed>"

Tarball downloads don't compute source_modified_time from git, sidestepping the bug. Same fix applies to any cli-guard-triple formula using git tag+revision.

Impact / not a regression

Independent of the value-source migration (#115, which is verified working live). This is standing release infra: it has blocked ward brew deploys for three releases.

`brew upgrade ward` fails for every release since v0.29.0 - the tap is at v0.32.0 but the installed binary is stuck at v0.29.0 (v0.30, v0.31, v0.32 all undeployed). ## Symptom ``` ==> Upgrading coilyco-flight-deck/tap/ward 0.29.0 -> 0.32.0 ==> Fetching downloads for: ward Error: An exception occurred within a child process: ArgumentError: no time information in "" ``` Exit 1, binary unchanged. Reproduces with `HOMEBREW_NO_INSTALL_FROM_API=1`, after a download-cache clear, and on a current Homebrew (6.0.2). ## Root cause Homebrew's `GitDownloadStrategy#source_modified_time` reads the commit time from the staged checkout, but the formula pins a git source: ```ruby url "...ward.git", tag: "v0.32.0", revision: "d248889..." ``` During staging Homebrew moves `.git` out of the unpack dir, then its `git show -s --format=%ct` returns empty -> `Time.at(Integer(""))` raises. Plain `git show -s --format=%ct HEAD` on a fresh `--depth 1 --branch v0.32.0` clone returns a valid timestamp, so the source is fine; it's Homebrew's git-strategy interaction with the Forgejo `tag:`+`revision:` form. ## Proposed fix (bump-tap-formula job in .forgejo/workflows/release.yml) Generate the formula with a **tarball** url instead of the git strategy - Forgejo serves `.../archive/<tag>.tar.gz`: ```ruby url "$FORGEJO_BASE_URL/coilyco-flight-deck/ward/archive/v#{version}.tar.gz" sha256 "<computed>" ``` Tarball downloads don't compute source_modified_time from git, sidestepping the bug. Same fix applies to any cli-guard-triple formula using git tag+revision. ## Impact / not a regression Independent of the value-source migration (#115, which is verified working live). This is standing release infra: it has blocked ward brew deploys for three releases.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
coilyco-flight-deck/ward#116
No description provided.