Conversation
The receiver build script unconditionally copied libSDL3.dylib into the app bundle and exited 1 when it was missing. That assumes Homebrew's `sdl2` alias resolved to sdl2-compat, which dlopens SDL3 at runtime. On a machine with the genuine `sdl2` keg installed (no `sdl3` keg), the bundled SDL2 has no SDL3 dependency, but the script still aborted before the icon, Info.plist and signing steps, so the .app never got built. Check the SDL2 that actually landed in Contents/Frameworks for a libSDL3 reference and require SDL3 only then. Machines using sdl2-compat keep the existing hard failure, so a release build there still cannot silently ship without the SDL3 runtime. Verified on an Intel iMac (macOS 14, genuine sdl2 2.32.10): the bundle now builds, `codesign --verify --deep --strict` passes, `otool -L` shows no non-system dylibs outside the bundle, and the app launches and listens. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
DrDavidL
force-pushed
the
fix/build-script-optional-sdl3
branch
from
August 29, 2026 02:36
f4de28c to
84b3a3d
Compare
Owner
|
Thank you for identifying and validating this Intel SDL2 packaging issue. The compatible solution is now merged in #189: it supports both native SDL2 and sdl2-compat, and validates that the completed bundle has no Homebrew dependencies. Closing this PR as superseded by the unified maintenance fix. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
TargetBridge-Receiver/scripts/build_tbreceiver_c_app.shunconditionally copieslibSDL3.dylibinto the app bundle, andexit 1s when it is not found:As the surrounding comment explains, this exists because Homebrew's
sdl2alias now resolves to sdl2-compat, which loads SDL3 at runtime viadlopen— a dependencydylibbundlercannot discover.That is not true everywhere. On a machine where the genuine
sdl2keg is installed (Cellar/sdl2/2.32.10, nosdl3keg), the bundledlibSDL2-2.0.0.dylibhas no SDL3 dependency at all, butbrew --prefix sdl3still prints a path for the uninstalled formula, so the file check fails and the script aborts — before the icon,Info.plist,PkgInfoand signing steps. The result is no.appat all, even though the binary compiled fine.Fix
Inspect the SDL2 that actually landed in
Contents/Frameworksand require SDL3 only when that library really references it:The check keys off the artifact rather than the Homebrew formula name, so it stays correct if the
sdl2alias changes again.Behavior on sdl2-compat machines is unchanged: the shim's dylib does reference
libSDL3, so the hard failure still fires and a release build there cannot silently ship without the SDL3 runtime.Verification
Built from this branch (
maint-3.5+ this commit) on an Intel iMac, macOS 14 (OCLP), genuinesdl22.32.10, ffmpeg 8.1.1, x86_64:make clean && make— clean compile of 3.5.1, including the newlibswscale/SystemConfigurationdeps (only the pre-existing macOS-11.0-vs-14.0lddeployment-target warnings)make test— all three suites pass:test_net_parser67 checks,test_input_queue562 checks / 0 failures,test_receiver_profile13 checks./scripts/build_tbreceiver_c_app.sh— buildsTargetBridge Receiver.app3.5.1; previously aborted at the SDL3 check before producing any bundleotool -Lon the bundled executable — no non-system dylibs outside the bundle;libswscale.9.5.101.dylibbundled correctlycodesign --verify --deep --strict— passespanel=5120x2880 mode=2560x1440 hidpi=1 name=iMacon the 5K iMacNot verified by me: the sdl2-compat path, since this machine has no
sdl3keg to bundle. That branch is byte-for-byte the original code, just nested under the new condition.🤖 Generated with Claude Code