| Summary: | [WebKit] Enable InstallAPI for macOS/tvOS/watchOS | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Elliott Williams <emw> |
| Component: | WebKit2 | Assignee: | Elliott Williams <emw> |
| Status: | RESOLVED FIXED | ||
| Severity: | Normal | CC: | kkinnunen, webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
|
Description
Elliott Williams
2023-05-31 12:50:47 PDT
Pull request: https://github.com/WebKit/WebKit/pull/14608 Committed 264993@main (110ccc3202f3): <https://commits.webkit.org/264993@main> Reviewed commits have been landed. Closing PR #14608 and removing active labels. Committed 265005@main (e32ba22bd31f): <https://commits.webkit.org/265005@main> Reviewed commits have been landed. Closing PR #14801 and removing active labels. Re-opening for pull request https://github.com/WebKit/WebKit/pull/14826 Committed 265074@main (5ddcda389f55): <https://commits.webkit.org/265074@main> Reviewed commits have been landed. Closing PR #14826 and removing active labels. Committed 265078@main (39ba36f985d0): <https://commits.webkit.org/265078@main> Reviewed commits have been landed. Closing PR #14874 and removing active labels. Re-opening for pull request https://github.com/WebKit/WebKit/pull/15031 We need to build fix this for Mac Catalyst, due to the way that TAPI handles symbols in reexported frameworks.
In the catalyst build:
- WebCore implements WKRetain/WKRelease as part of the WAK library. The symbols are hidden (but present in the debug build's symbol table).
- WebKit implements its own WKRetain/WKRelease, which is exported. It also reexports WebCore, which it only does on macOS.
- During the InstallAPI verification phase, TAPI ignores any symbols from headers that are implemented from a reexported framework. This means that even though it parses WebKit's WKRetain/WKRelease declarations, it refuses to use them, failing with
error: no declaration found for exported symbol '_WKRelease' in dynamic library
error: no declaration found for exported symbol '_WKRetain' in dynamic library
This doesn't happen in production builds, because they stubify WebCore before WebKit begins building, so TAPI only reads re-exported symbols from WebCore.tbd.
Catalyst WebKit re-exporting WebCore, when all other iOS-like platforms do not, is probably an oversight, but it's too risky to fix now. The easiest thing we can do is just rename the hidden symbol.
Committed 265255@main (159993b61597): <https://commits.webkit.org/265255@main> Reviewed commits have been landed. Closing PR #15031 and removing active labels. |