mac: Incremental build fails to run due to API hash mismatch or missing Framework symlinks
Opened this issue · 3 comments
Describe the bug
The CEF sample apps sometimes fail to run when building incrementally after modifying the CEF API. For example, they fail due to API hash mismatches. This can be fixed by manually deleting the *.app and *.framework artifacts to force a full repackaging of the sample apps. However, this does not recreate the Framework symlinks that exist with a new/clean build (e.g. the symlink from ceftests.app/Contents/Frameworks/Chromium Embedded Framework.framework
to ceftests.app/Contents/Frameworks/Chromium Embedded Framework.framework/Versions/A/Chromium Embedded Framework
).
To Reproduce
Steps to reproduce the behavior:
- Create a CEF master build.
- Delete
out/Debug_GN_x64/*.app
andout/Debug_GN_x64/Chromium Embedded Framework.framework
directories and rebuild. - Sample apps (cefclient, ceftests, etc) fail to launch.
Expected behavior
Sample apps should launch successfully.
Versions (please complete the following information):
- OS: MacOS 15.0.1 (24A348)
- CEF Version: M131 (master)
The frameworks symlinks are created in //build/config/mac/rules.gni.
Running touch out/Debug_GN_arm64/obj/cef/cef_framework.toc
and then rebuilding causes the Framework symlinks to be recreated.
The CEF sample apps sometimes fail to run when building incrementally after modifying the CEF API. For example, they fail due to API hash mismatches.
This causal issue doesn't reproduce consistently (e.g. I can't reproduce it currently just by modifying cef_api_hash.h
and rebuilding). I suspect that ninja is occasionally failing to update binaries in the app bundle when the Framework is rebuilt.