Skip to content

chore(build): point the FFmpeg artifact at v0.3.0, and never rebuild a published one - #42

Merged
bilipp merged 1 commit into
mainfrom
chore/point-artifact-at-v0.3.0
Sep 29, 2026
Merged

bilipp merged 1 commit into
mainfrom
chore/point-artifact-at-v0.3.0

Conversation

@bilipp

@bilipp bilipp commented Sep 29, 2026

Copy link
Copy Markdown
Owner

Summary

Makes v0.3.0 itself resolve to its own FFmpeg artifact, the first build that links dav1d. Previously that would only have happened in a follow-up patch release, as with v0.2.0 → #36 → v0.2.1.

The checksum can only exist once the release job has built the artifact, so the drill is:

  1. ✅ tag v0.3.0 (done; the release job attached the xcframework);
  2. this PR: point Package.swift at that URL and checksum;
  3. merge, then move the v0.3.0 tag onto the merge commit.

The guard. Moving the tag re-runs the release job. Before this PR it would rebuild the xcframework, which is not bit-identical, and replace the published zip, breaking the checksum pinned here for everyone. The release job's new first step skips the whole job when the release already carries FFmpeg.xcframework.zip. That also protects every future release from an accidental re-push. AGENTS.md and CONTRIBUTING.md describe the drill.

Verification

The checksum was not copied from CI. The published zip was downloaded and run through swift package compute-checksum, which reproduces the attached FFmpeg.xcframework.zip.checksum exactly:

4aed787a0cf05067395bb5b07f1af96c25e1314a841bc1597e37964dd009b5b0

The artifact carries all ten architectures, and dav1d is linked into each:

ios-arm64                        arm64          dav1d symbols: 749
ios-arm64_x86_64-simulator       x86_64 arm64   dav1d symbols: 749
macos-arm64_x86_64               x86_64 arm64   dav1d symbols: 749
tvos-arm64                       arm64          dav1d symbols: 749
tvos-arm64_x86_64-simulator      x86_64 arm64   dav1d symbols: 749
xros-arm64                       arm64          dav1d symbols: 749
xros-arm64-simulator             arm64          dav1d symbols: 749

The URL path was exercised end to end with a fresh clone of this branch and no BinaryDependencies/ directory, which forces SwiftPM down binaryTarget(url:checksum:):

Downloading binary artifact https://github.com/bilipp/LumeEngine/releases/download/v0.3.0/FFmpeg.xcframework.zip
...
Test run with 1 test in 1 suite passed          # DecoderTests/av1Decode, on dav1d (M1 Pro, no AV1 hardware)

The guard itself can only be exercised by the tag move, since the job only runs on tags. I'll check that run and confirm the published zip and checksum are unchanged afterwards.

Also fixed: CONTRIBUTING's download size (~270 MB) was stale; it's ~125 MB.

…a published one

v0.3.0 is the first release whose xcframework links dav1d, and the
version itself should resolve to it — not only a later patch release.
The checksum can only exist once the release job has built the
artifact, so the drill is: tag, let the job attach the zip, point
Package.swift at it, then move the tag onto this commit.

The checksum was not copied from CI: the published zip was downloaded
and run through `swift package compute-checksum`, which reproduces the
attached FFmpeg.xcframework.zip.checksum exactly:

    4aed787a0cf05067395bb5b07f1af96c25e1314a841bc1597e37964dd009b5b0

The artifact carries all ten architectures (seven xcframework slices,
the macOS and iOS/tvOS simulator ones fat with x86_64), and dav1d is
linked into every one of them (749 exported dav1d symbols each).

Moving the tag re-runs the release job, which would rebuild — not
bit-identically — and replace the published zip, breaking the checksum
pinned here. The job now skips itself when the release already carries
FFmpeg.xcframework.zip. AGENTS.md and CONTRIBUTING.md describe the
drill; CONTRIBUTING's download size (~270 MB) was stale — it is ~125 MB.
@bilipp
bilipp merged commit 54ea60b into main Sep 29, 2026
4 checks passed
@bilipp
bilipp deleted the chore/point-artifact-at-v0.3.0 branch September 29, 2026 22:18
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