RESOLVED FIXED 217128
[GTK] Build broken with ENABLE_MEDIA_STREAM enabled and ENABLE_WEB_RTC_DISABLED
https://bugs.webkit.org/show_bug.cgi?id=217128
Summary [GTK] Build broken with ENABLE_MEDIA_STREAM enabled and ENABLE_WEB_RTC_DISABLED
Joe
Reported 2020-09-30 09:12:51 PDT
Hi guys, I have a problem with compilation of the WebkitGTK. $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 19.10 Release: 19.10 Codename: eoan wget https://webkitgtk.org/releases/webkitgtk-2.30.1.tar.xz because ThirdParty folder is missing libwebrtc lib I downloaded current git version : https://github.com/WebKit/webkit and copy from there libwebrtc to ThirdParty folder. next cmake .. -DPORT="GTK" -DCMAKE_CXX_COMPILER=clang++-9 -DCMAKE_C_COMPILER=clang-9 -DCMAKE_CXX_FLAGS="-fsanitize=address" -DCMAKE_C_FLAGS="-fsanitize=address" -DCMAKE_BUILD_TYPE=Release -DUSE_WPE_RENDERER=OFF -DENABLE_MINIBROWSER=ON -DENABLE_BUBBLEWRAP_SANDBOX=OFF -DENABLE_MEDIA_SOURCE=OFF -DCMAKE_SKIP_RPATH=ON -DUSE_OPENJPEG=OFF -DENABLE_GTKDOC=OFF -DCMAKE_INSTALL_PREFIX=. -DLIB_INSTALL_DIR=./lib -DENABLE_MEDIA_STREAM=ON -DENABLE_WEB_AUDIO=ON make -j 1 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ [ 52%] Building CXX object Source/WebCore/CMakeFiles/WebCore.dir/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp.o In file included from /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:26: /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:50:50: error: expected class name class LibWebRTCDataChannelHandler final : public RTCDataChannelHandler, private webrtc::DataChannelObserver { ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:57:12: error: no template named 'Ref' static Ref<RTCDataChannelEvent> channelEvent(Document&, rtc::scoped_refptr<webrtc::DataChannelInterface>&&); ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:61:50: error: only virtual member functions can be marked 'final' void setClient(RTCDataChannelHandlerClient&) final; ^~~~~ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:63:31: error: unknown type name 'CString' bool sendStringData(const CString&) final; ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:64:43: error: only virtual member functions can be marked 'final' bool sendRawData(const char*, size_t) final; ^~~~~ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:65:18: error: only virtual member functions can be marked 'final' void close() final; ^~~~~ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:40:16: error: member access into incomplete type 'const WebCore::RTCDataChannelInit' if (options.ordered) ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:47:8: note: forward declaration of 'WebCore::RTCDataChannelInit' struct RTCDataChannelInit; ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:41:32: error: member access into incomplete type 'const WebCore::RTCDataChannelInit' init.ordered = *options.ordered; ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:47:8: note: forward declaration of 'WebCore::RTCDataChannelInit' struct RTCDataChannelInit; ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:42:16: error: member access into incomplete type 'const WebCore::RTCDataChannelInit' if (options.maxPacketLifeTime) ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:47:8: note: forward declaration of 'WebCore::RTCDataChannelInit' struct RTCDataChannelInit; ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:43:42: error: member access into incomplete type 'const WebCore::RTCDataChannelInit' init.maxRetransmitTime = *options.maxPacketLifeTime; ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:47:8: note: forward declaration of 'WebCore::RTCDataChannelInit' struct RTCDataChannelInit; ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:44:16: error: member access into incomplete type 'const WebCore::RTCDataChannelInit' if (options.maxRetransmits) ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:47:8: note: forward declaration of 'WebCore::RTCDataChannelInit' struct RTCDataChannelInit; ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:45:39: error: member access into incomplete type 'const WebCore::RTCDataChannelInit' init.maxRetransmits = *options.maxRetransmits; ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:47:8: note: forward declaration of 'WebCore::RTCDataChannelInit' struct RTCDataChannelInit; ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:46:28: error: member access into incomplete type 'const WebCore::RTCDataChannelInit' init.protocol = options.protocol.utf8().data(); ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:47:8: note: forward declaration of 'WebCore::RTCDataChannelInit' struct RTCDataChannelInit; ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:47:16: error: member access into incomplete type 'const WebCore::RTCDataChannelInit' if (options.negotiated) ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:47:8: note: forward declaration of 'WebCore::RTCDataChannelInit' struct RTCDataChannelInit; ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:48:35: error: member access into incomplete type 'const WebCore::RTCDataChannelInit' init.negotiated = *options.negotiated; ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:47:8: note: forward declaration of 'WebCore::RTCDataChannelInit' struct RTCDataChannelInit; ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:49:16: error: member access into incomplete type 'const WebCore::RTCDataChannelInit' if (options.id) ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:47:8: note: forward declaration of 'WebCore::RTCDataChannelInit' struct RTCDataChannelInit; ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:50:27: error: member access into incomplete type 'const WebCore::RTCDataChannelInit' init.id = *options.id; ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:47:8: note: forward declaration of 'WebCore::RTCDataChannelInit' struct RTCDataChannelInit; ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:64:24: error: variable has incomplete type 'WebCore::RTCDataChannelInit' RTCDataChannelInit init; ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:47:8: note: forward declaration of 'WebCore::RTCDataChannelInit' struct RTCDataChannelInit; ^ /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:73:20: error: use of undeclared identifier 'RTCDataChannel'; did you mean 'RTCDataChannelInit'? auto channel = RTCDataChannel::create(document, WTFMove(handler), fromStdString(label), WTFMove(init)); ^~~~~~~~~~~~~~ RTCDataChannelInit /home/joe/tools/fuzzing/browsers/WebKit/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:47:8: note: 'RTCDataChannelInit' declared here struct RTCDataChannelInit; ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. make[2]: *** [Source/WebCore/CMakeFiles/WebCore.dir/build.make:877: Source/WebCore/CMakeFiles/WebCore.dir/Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:1360: Source/WebCore/CMakeFiles/WebCore.dir/all] Error 2 make: *** [Makefile:152: all] Error 2 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ any ideas ? Thanks
Attachments
Patch (3.07 KB, patch)
2020-10-02 06:37 PDT, Adrian Perez
no flags
Patch for landing (3.12 KB, patch)
2020-10-02 07:55 PDT, Adrian Perez
no flags
Patch (20.87 KB, patch)
2020-10-02 15:28 PDT, Adrian Perez
no flags
Patch for landing (20.92 KB, patch)
2020-10-03 13:18 PDT, Adrian Perez
no flags
Adrian Perez
Comment 1 2020-10-01 13:08:37 PDT
Hello Joe! We do not support building WebKitGTK with WebRTC support enabled using tarballs—it's more complicated than copying the libwebrtc/ subdirectory. If you want to do such a build, I recommend you to make a checkout of the 2.30.1 tag from the Subversion repository and use that for the build: svn checkout \ https://trac.webkit.org/browser/webkit/releases/WebKitGTK/webkit-2.30.1 \ webkitgtk-2.30.1 (Be patient, this can take quite some time.) *VERY* important: be aware that if you build WebKitGTK with WebRTC enabled you must not link any program licensed under the GPL with that build, because the libwebrtc license is incompatible with the GPL. This is one of the reasons why we don't support building the WebRTC support from tarballs, to avoid letting people accidentally end up with licensing trouble.
Adrian Perez
Comment 2 2020-10-01 23:54:58 PDT
Closed, as this is not a bug by itself. Joe: I hope my previous comment helps you out, feel free to ask more questions, and remember that you can also ask in the Freenode #webkitgtk channel :)
Joe
Comment 3 2020-10-01 23:58:22 PDT
Thanks mate ;) Do you guys have something less old school to contact with you ? Like Discord channel ?
Joe
Comment 4 2020-10-02 01:09:16 PDT
BTW: svn checkout https://trac.webkit.org/browser/webkit/releases/WebKitGTK/webkit-2.30.1 svn: E170013: Unable to connect to a repository at URL 'https://trac.webkit.org/browser/webkit/releases/WebKitGTK/webkit-2.30.1' svn: E130005: XML Parsing failed: Unexpected root element 'html'
Adrian Perez
Comment 5 2020-10-02 01:11:18 PDT
(In reply to Joe from comment #4) > BTW: > > svn checkout > https://trac.webkit.org/browser/webkit/releases/WebKitGTK/webkit-2.30.1 > > svn: E170013: Unable to connect to a repository at URL > 'https://trac.webkit.org/browser/webkit/releases/WebKitGTK/webkit-2.30.1' > svn: E130005: XML Parsing failed: Unexpected root element 'html' Ouch, sorry about that. I shared the Trac URL instead of the one for the Subversion repository, it should be: https://svn.webkit.org/repository/webkit/releases/WebKitGTK/webkit-2.30.1
Adrian Perez
Comment 6 2020-10-02 01:15:02 PDT
(In reply to Joe from comment #3) > Thanks mate ;) > Do you guys have something less old school to contact with you ? Like > Discord channel ? We have a... mailing list: https://lists.webkit.org/mailman/listinfo/webkit-gtk There is also a Slack instance, you can find it linked from the “Getting Started” page of the website: https://webkit.org/getting-started/#staying-in-touch For questions related to WebKitGTK there is a #gtk channel there as well.
Joe
Comment 7 2020-10-02 04:38:34 PDT
Great, thank you.
Adrian Perez
Comment 8 2020-10-02 06:01:36 PDT
Chatting on Slack it is clearer that there is an issue here: we want a build with “-DENABLE_MEDIA_STREAM=ON -DENABLE_WEB_RTC=OFF” but then the build fails because enabling MEDIA_STREAM will try to use some libwebrtc types.
Adrian Perez
Comment 9 2020-10-02 06:03:27 PDT
Edited the bug title to make it clearer, and added the [GTK] tag. Probably the issue affects the WPE port as well, I'll check and add the tag later on if that is the case.
Adrian Perez
Comment 10 2020-10-02 06:06:25 PDT
For the record, I can reproduce this in trunk, so I will make a patch for that first and then we can backport it to the 2.30.x branch to be included in the next stable release :)
Adrian Perez
Comment 11 2020-10-02 06:37:16 PDT
Philippe Normand
Comment 12 2020-10-02 06:55:51 PDT
Comment on attachment 410319 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=410319&action=review > ChangeLog:10 > + build code that ises libwebrtc types when ENABLE_WEB_RTC is disabled but typo: ises
Adrian Perez
Comment 13 2020-10-02 07:55:43 PDT
Created attachment 410323 [details] Patch for landing
EWS
Comment 14 2020-10-02 08:54:53 PDT
Committed r267882: <https://trac.webkit.org/changeset/267882> All reviewed patches have been landed. Closing bug and clearing flags on attachment 410323 [details].
Adrian Perez
Comment 15 2020-10-02 14:21:27 PDT
It's still possible to get the following: In file included from DerivedSources/WebCore/unified-sources/UnifiedSource-3c72abbe-44.cpp:5: ../Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp: In static member function ‘static WebCore::CaptureSourceOrError WebCore::MockRealtimeAudioSource::create(WTF::String&&, WTF::String&&, WTF::String&&, const WebCore::MediaConstraints*)’: ../Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp:57:108: error: invalid new-expression of abstract class type ‘WebCore::MockRealtimeAudioSource’ 57 | auto source = adoptRef(*new MockRealtimeAudioSource(WTFMove(deviceID), WTFMove(name), WTFMove(hashSalt))); | ^ In file included from ../Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp:32, from DerivedSources/WebCore/unified-sources/UnifiedSource-3c72abbe-44.cpp:5: ../Source/WebCore/platform/mock/MockRealtimeAudioSource.h:43:7: note: because the following virtual functions are pure within ‘WebCore::MockRealtimeAudioSource’: 43 | class MockRealtimeAudioSource : public RealtimeMediaSource { | ^~~~~~~~~~~~~~~~~~~~~~~ ../Source/WebCore/platform/mock/MockRealtimeAudioSource.h:53:18: note: ‘virtual void WebCore::MockRealtimeAudioSource::render(WTF::Seconds)’ 53 | virtual void render(Seconds) = 0; | ^~~~~~ In file included from DerivedSources/WebCore/unified-sources/UnifiedSource-3c72abbe-44.cpp:7: ../Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp: In static member function ‘static WebCore::CaptureSourceOrError WebCore::MockRealtimeVideoSource::create(WTF::String&&, WTF::String&&, WTF::String&&, const WebCore::MediaConstraints*)’: ../Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp:62:108: error: invalid new-expression of abstract class type ‘WebCore::MockRealtimeVideoSource’ 62 | auto source = adoptRef(*new MockRealtimeVideoSource(WTFMove(deviceID), WTFMove(name), WTFMove(hashSalt))); | ^ In file included from ../Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.h:34, from ../Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp:39, from DerivedSources/WebCore/unified-sources/UnifiedSource-3c72abbe-44.cpp:5: ../Source/WebCore/platform/mock/MockRealtimeVideoSource.h:49:7: note: because the following virtual functions are pure within ‘WebCore::MockRealtimeVideoSource’: 49 | class MockRealtimeVideoSource : public RealtimeVideoCaptureSource, private OrientationNotifier::Observer { | ^~~~~~~~~~~~~~~~~~~~~~~ ../Source/WebCore/platform/mock/MockRealtimeVideoSource.h:58:18: note: ‘virtual void WebCore::MockRealtimeVideoSource::updateSampleBuffer()’ 58 | virtual void updateSampleBuffer() = 0; | ^~~~~~~~~~~~~~~~~~
Adrian Perez
Comment 16 2020-10-02 15:28:37 PDT
Philippe Normand
Comment 17 2020-10-03 01:45:53 PDT
Comment on attachment 410380 [details] Patch ../../Source/WebCore/platform/mediastream/gstreamer/GStreamerAudioCapturer.cpp:30:50: error: ‘LibWebRTCAudioFormat’ has not been declared
Adrian Perez
Comment 18 2020-10-03 13:18:02 PDT
Created attachment 410436 [details] Patch for landing
EWS
Comment 19 2020-10-03 14:32:50 PDT
Committed r267934: <https://trac.webkit.org/changeset/267934> All reviewed patches have been landed. Closing bug and clearing flags on attachment 410436 [details].
Note You need to log in before you can comment on or make changes to this bug.