RESOLVED FIXED 237112
[XCBuild] libwebrtc's headers are copied via rsync and do not emit task outputs
https://bugs.webkit.org/show_bug.cgi?id=237112
Summary [XCBuild] libwebrtc's headers are copied via rsync and do not emit task outputs
Elliott Williams
Reported 2022-02-23 14:20:22 PST
Attachments
Copy headers natively, add headers-only absl target (1.07 MB, patch)
2022-02-23 16:03 PST, Elliott Williams
no flags
Copy headers natively, add headers-only absl target r2 (1.07 MB, patch)
2022-02-23 16:17 PST, Elliott Williams
ews-feeder: commit-queue-
/usr/local/include diff for r2 (88.25 KB, text/plain)
2022-02-23 16:20 PST, Elliott Williams
no flags
Copy headers natively, add headers-only absl target r2 (1.24 MB, patch)
2022-02-23 21:19 PST, Elliott Williams
ews-feeder: commit-queue-
Copy headers natively, add headers-only absl target r3 (1.07 MB, patch)
2022-02-23 21:34 PST, Elliott Williams
no flags
Patch for relanding (1.07 MB, patch)
2022-03-08 16:28 PST, Elliott Williams
no flags
Patch (1.14 MB, patch)
2022-04-04 16:28 PDT, Elliott Williams
no flags
Elliott Williams
Comment 1 2022-02-23 16:03:45 PST
Created attachment 453043 [details] Copy headers natively, add headers-only absl target
Elliott Williams
Comment 2 2022-02-23 16:17:31 PST
Created attachment 453046 [details] Copy headers natively, add headers-only absl target r2
Elliott Williams
Comment 3 2022-02-23 16:20:47 PST
Created attachment 453047 [details] /usr/local/include diff for r2 The pbxproj changes are too messy to meaningfully review, because of all the untracked files I had to add. To help reviewers, here's a diff of /usr/local/include after building libwebrtc, before and after this patch. There are some header directories that I didn't bother adding to the project. I tried to limit this to directories that were obviously test-only or for non-Apple platforms. We'll see in testing if any of those headers *are* actually meaningful.
Elliott Williams
Comment 4 2022-02-23 21:19:08 PST
Created attachment 453069 [details] Copy headers natively, add headers-only absl target r2 Removing a directory which got accidentally added twice.
Elliott Williams
Comment 5 2022-02-23 21:34:46 PST
Created attachment 453072 [details] Copy headers natively, add headers-only absl target r3
Elliott Williams
Comment 6 2022-03-07 15:51:10 PST
Comment on attachment 453072 [details] Copy headers natively, add headers-only absl target r3 Just rebased and rebuilt locally, and this is still fresh. cq+
EWS
Comment 7 2022-03-07 17:27:43 PST
Committed r290966 (248146@main): <https://commits.webkit.org/248146@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 453072 [details].
Alex Christensen
Comment 8 2022-03-07 20:51:29 PST
After this change, doing a clean build on Monterey I hit this issue using the public SDK: /Users/alexchristensen/code/OpenSource/WebKitBuild/Debug/usr/local/include/webrtc/api/peer_connection_interface.h:78:10: fatal error: 'absl/base/attributes.h' file not found #include "absl/base/attributes.h" ^~~~~~~~~~~~~~~~~~~~~~~~ 1 error generated.
Alex Christensen
Comment 9 2022-03-07 20:53:53 PST
I see that header in WebKitBuild/Debug/usr/local/include/base/attributes.h
Elliott Williams
Comment 10 2022-03-07 21:31:29 PST
(In reply to Alex Christensen from comment #8) > After this change, doing a clean build on Monterey I hit this issue using > the public SDK: > > /Users/alexchristensen/code/OpenSource/WebKitBuild/Debug/usr/local/include/ > webrtc/api/peer_connection_interface.h:78:10: fatal error: > 'absl/base/attributes.h' file not found > #include "absl/base/attributes.h" > ^~~~~~~~~~~~~~~~~~~~~~~~ > 1 error generated. I can reproduce this too, looks like my testing was not sufficient. Reverting for now and will investigate more tomorrow. Thanks for letting me know!
WebKit Commit Bot
Comment 11 2022-03-07 21:33:16 PST
Re-opened since this is blocked by bug 237582
Alex Christensen
Comment 12 2022-03-07 22:41:49 PST
Reverted r290966 for reason: Broke ews and make Committed r290974 (248152@trunk): <https://commits.webkit.org/248152@trunk>
Elliott Williams
Comment 13 2022-03-08 16:28:37 PST
Created attachment 454171 [details] Patch for relanding libabsl.xcconfig was not setting PUBLIC_HEADERS_FOLDER_PATH, due to a bad copy-paste. This was causing build failures. I'm guessing I forgot to clean when I tested the patch yesterday, so I didn't notice the headers in the wrong location. This patch runs s/PREFIX/PATH/g on libabsl.xcconfig, which fixes the issue: diff --git a/Source/ThirdParty/libwebrtc/Configurations/libabsl.xcconfig b/Source/ThirdParty/libwebrtc/Configurations/libabsl.xcconfig index 896b098ddc7d..57d61fe0fd01 100644 --- a/Source/ThirdParty/libwebrtc/Configurations/libabsl.xcconfig +++ b/Source/ThirdParty/libwebrtc/Configurations/libabsl.xcconfig @@ -24,6 +24,6 @@ PRODUCT_NAME = absl; APPLY_RULES_IN_COPY_HEADERS = $(WK_USE_NEW_BUILD_SYSTEM); -PUBLIC_HEADERS_FOLDER_PREFIX = $(PUBLIC_HEADERS_FOLDER_PREFIX_$(WK_WHICH_BUILD_SYSTEM)); -PUBLIC_HEADERS_FOLDER_PREFIX_not_legacy = /usr/local/include/absl; -PUBLIC_HEADERS_FOLDER_PREFIX_legacy = /usr/local/include/absl_flattened; +PUBLIC_HEADERS_FOLDER_PATH = $(PUBLIC_HEADERS_FOLDER_PATH_$(WK_WHICH_BUILD_SYSTEM)); +PUBLIC_HEADERS_FOLDER_PATH_not_legacy = /usr/local/include/absl; +PUBLIC_HEADERS_FOLDER_PATH_legacy = /usr/local/include/absl_flattened;
EWS
Comment 14 2022-03-14 11:15:15 PDT
Committed r291239 (248394@main): <https://commits.webkit.org/248394@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 454171 [details].
Elliott Williams
Comment 15 2022-03-14 13:23:24 PDT
Reverted r291239 for reason: Some builds failing with "fatal error: 'absl/utility/utility.h' file not found" Committed r291249 (248402@trunk): <https://commits.webkit.org/248402@trunk>
Elliott Williams
Comment 16 2022-03-15 15:08:33 PDT
My understanding of the problem is that libwebrtc has many quote-style includes of absl headers. This is fine when webrtc *itself* is building, because it puts absl on its HEADER_SEARCH_PATHS, but it's a problem for *other* project which import webrtc through a bracket-style include. This causes WebCore to fail with an include trace like: In file included from Sources/WebKit/Source/WebCore/platform/graphics/cocoa/VP9UtilitiesCocoa.mm:32: In file included from Sources/WebKit/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.h:44: In file included from SDKs/iPhoneOS16.0.Internal.sdk/usr/local/include/webrtc/api/peer_connection_interface.h:79: /usr/local/include/absl/types/optional.h:39:10: fatal error: 'absl/utility/utility.h' file not found …because it doesn't have /usr/local/include on its include search path, only its *library* search path. As I understand it, this is really just a disagreement between the two projects as to how we differentiate between "project" and "library" headers. The right move is probably to add /usr/local/include to WebCore's HEADER_SEARCH_PATHS, or to add absl headers back to the `libwebrtc` target, so that Xcode puts them into the appropriate header map.
Elliott Williams
Comment 17 2022-04-04 16:28:01 PDT
Elliott Williams
Comment 18 2022-04-04 16:31:47 PDT
(In reply to Elliott Williams from comment #16) > My understanding of the problem is that libwebrtc has many quote-style > includes of absl headers. This is fine when webrtc *itself* is building, > because it puts absl on its HEADER_SEARCH_PATHS, but it's a problem for > *other* project which import webrtc through a bracket-style include. > > This causes WebCore to fail with an include trace like: > > In file included from > Sources/WebKit/Source/WebCore/platform/graphics/cocoa/VP9UtilitiesCocoa.mm: > 32: > In file included from > Sources/WebKit/Source/WebCore/platform/mediastream/libwebrtc/ > LibWebRTCProvider.h:44: > In file included from > SDKs/iPhoneOS16.0.Internal.sdk/usr/local/include/webrtc/api/ > peer_connection_interface.h:79: > /usr/local/include/absl/types/optional.h:39:10: fatal error: > 'absl/utility/utility.h' file not found > > …because it doesn't have /usr/local/include on its include search path, only > its *library* search path. This was incorrect: By default, HEADER_SEARCH_PATHS variables (and -I flags) apply to both quote and bracket style includes. The former _also_ search the local directory and -iquote flags, which is what makes them different. The real problem appears to be that I missed some headers which needed to be added, and didn't notice on engineering builds because of absl headers in the SDK.
Alexey Proskuryakov
Comment 19 2022-04-04 17:31:43 PDT
Comment on attachment 456646 [details] Patch Sounds like this is the same approach as before but with more headers, rs=me.
EWS
Comment 20 2022-04-05 12:47:13 PDT
Committed r292411 (249274@main): <https://commits.webkit.org/249274@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 456646 [details].
Note You need to log in before you can comment on or make changes to this bug.