6.19.3 - A demo bundle that carries the libraries it loads
Packaging only. No library change: consumers pinning 6.19.2 get byte-identical engine code, and this release exists so CI rebuilds the macOS demo .dmg with the fix below.
The demo could not launch, and the guard was a comment
The 6.5.6 demo aborted immediately on a reporter's machine:
Termination Reason: Namespace DYLD, Code 1 Library missing
Library not loaded: @rpath/Libavcodec.framework/Versions/A/Libavcodec
Not machine specific and not architecture specific. The bundle shipped without any of the frameworks its binary loads, so no copy of that build could start.
FFmpeg, dav1d and the rest used to be linked statically, and Examples/DemoPlayerMac/Scripts/build-dmg.sh recorded that as a note ending "if FFmpegBuild ever switches to dynamic frameworks, this is where they'd be copied to". FFmpegBuild since did switch, because LGPL wants the libraries relinkable. A comment cannot notice that happening, so the bundle kept being assembled as though nothing had changed while the binary grew nine @rpath load commands.
What ships
build-dmg.sh copies the frameworks into Contents/Frameworks, adds the @executable_path/../Frameworks rpath the binary does not carry, and signs nested code inside out, because signing the .app seals whatever Frameworks/ already holds and an unsigned framework there fails both --strict verification and notarization.
The stale note is replaced by a check that fails the build when any @rpath dependency is missing from the bundle. Verified against a universal release build: eighteen unresolved dependencies before embedding, nine frameworks across two architecture slices, and none after, with the resulting bundle launching instead of aborting in dyld.
This only ever affected the demo. AetherPlayer and Sodalite build through xcodebuild archive, which embeds and signs SwiftPM frameworks on its own.
Reported through AetherPlayer#2, where the crash report carried the full diagnosis.
Dependencies
Unchanged from 6.19.2: FFmpegBuild 2.4.2, FFmpeg n8.1.2, four local patches.