Skip to content

Re-pin ffmpeg to a build that still exists - #48

Merged
revtex merged 1 commit into
mainfrom
fix-ffmpeg-pin
Sep 1, 2026
Merged

Re-pin ffmpeg to a build that still exists#48
revtex merged 1 commit into
mainfrom
fix-ffmpeg-pin

Conversation

@revtex

@revtex revtex commented Sep 1, 2026

Copy link
Copy Markdown
Owner

v0.2.0 failed at the Package step. Nothing in the repository had changed: BtbN deletes its
autobuild releases after roughly two weeks, so the asset the digest pins was gone and the download
404ed. The pin rots on a timer whether or not anyone cuts a release.

asset  (new): 200      https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-08-31-13-27/ffmpeg-n8.1.2-50-g1a748fe2cd-win64-lgpl-8.1.zip
source (new): 200      https://github.com/FFmpeg/FFmpeg/archive/1a748fe2cd43e3ead22fafb1b5b7d77f153898a8.tar.gz
asset  (old): 404      autobuild-2026-08-14-13-16

Refreshed to the newest autobuild on the same ffmpeg branchn8.1.2-40-g852b0552f0
n8.1.2-50-g1a748fe2cd, ten upstream commits on 8.1, not a move to 9.0. A broken link is not a
reason to change encoder branches.

Re-pinning needed no 146 MB download: GitHub's releases API carries a digest per asset, so the
sha256 came from the API, and the asset's short commit resolved against FFmpeg/FFmpeg gives
sourceCommit and the source archive the release is obliged to attach. The digest check in
fetch-ffmpeg.ps1 is untouched and still fails loudly on a mismatch.

Why nothing caught it

CI runs the encode tests against gyan.dev — a different distributor, with durable versioned
URLs — and CI's installer job stages a stand-in ffmpeg/ffmpeg.exe on purpose, because it is
testing the packaging layout rather than a large download. So fetch-ffmpeg.ps1 is the one step in
the pipeline that only runs for real at tag time. workflow_dispatch with a -dev version builds
everything and publishes nothing, and is the cheap way to find this without spending a version
number. Both facts are now a Phase 8 finding, and the manifest carries a comment on how to re-pin.

no-changelog

The bundled ffmpeg moves ten commits along the same stable branch; no Offstream behaviour changes,
and the release notes state the exact ffmpeg version automatically from the manifest, so the fact
reaches users without the changelog repeating it.

🤖 Generated with Claude Code

Cutting 0.2.0 failed at Package. Nothing in the repository had changed:
BtbN deletes its autobuild releases after roughly two weeks, so the asset
the digest pins had simply gone and the download 404ed. The pin rots on a
timer whether or not anyone cuts a release.

Refreshed to the newest autobuild on the same ffmpeg branch —
n8.1.2-40-g852b0552f0 to n8.1.2-50-g1a748fe2cd, ten upstream commits on
8.1, not a move to 9.0. A broken link is not a reason to change encoder
branches, and the conservative refresh is the one that keeps the shipped
build close to what was tested.

Re-pinning needed no 146 MB download. GitHub's releases API carries a
digest per asset, so the sha256 came straight out of the API, and the
asset's short commit resolved against FFmpeg/FFmpeg gives sourceCommit
and the source archive the release is obliged to attach. Verified both
new URLs return 200 and the old asset returns 404, so the diagnosis is
the whole story rather than a guess that happened to work.

The manifest now says all of that in its own comment block, because the
next 404 should cost a minute rather than an afternoon, and because the
tempting fix — switching branches, or deleting the digest check — is the
wrong one twice over.

Why no test caught it: CI runs the encode tests against gyan.dev, a
different distributor with durable versioned URLs, and CI's installer job
stages a stand-in ffmpeg.exe on purpose, since it is testing the
packaging layout rather than a large download. fetch-ffmpeg.ps1 is
therefore the only step in the pipeline that runs for real just once per
release. Recorded as a Phase 8 finding, along with the dispatch build
that would have found it without spending a version number.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@revtex revtex added the no-changelog This PR changes nothing a user would see, so CHANGELOG.md stays as it is label Sep 1, 2026
@revtex
revtex merged commit 9998e3d into main Sep 1, 2026
6 checks passed
@revtex
revtex deleted the fix-ffmpeg-pin branch September 1, 2026 01:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-changelog This PR changes nothing a user would see, so CHANGELOG.md stays as it is

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant