Bug 190036 - [GStreamer][MSE] Ubuntu LTS build broken since r236409
Summary: [GStreamer][MSE] Ubuntu LTS build broken since r236409
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Platform (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Adrian Perez
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2018-09-27 06:36 PDT by Philippe Normand
Modified: 2018-10-02 02:40 PDT (History)
6 users (show)

See Also:


Attachments
Patch (1.62 KB, patch)
2018-10-02 00:29 PDT, Philippe Normand
mcatanzaro: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Philippe Normand 2018-09-27 06:36:51 PDT
FAILED: /usr/lib/ccache/clang++   -DBUILDING_GTK__=1 -DBUILDING_WEBKIT -DBUILDING_WITH_CMAKE=1 -DBUILDING_WebCore -DENABLE_OPENTYPE_MATH=1 -DGETTEXT_PACKAGE=\"WebKit2GTK-4.0\" -DHAVE_CONFIG_H=1 -DJSC_GLIB_API_ENABLED -DSTATICALLY_LINKED_WITH_PAL=1 -DWEBKITGTK_API_VERSION_STRING=\"4.0\" -I. -I../../Source/WebCore -I../../Source/WebCore/Modules/airplay -I../../Source/WebCore/Modules/beacon -I../../Source/WebCore/Modules/applepay -I../../Source/WebCore/Modules/applepay/paymentrequest -I../../Source/WebCore/Modules/cache -I../../Source/WebCore/Modules/credentialmanagement -I../../Source/WebCore/Modules/encryptedmedia -I../../Source/WebCore/Modules/encryptedmedia/legacy -I../../Source/WebCore/Modules/entriesapi -I../../Source/WebCore/Modules/fetch -I../../Source/WebCore/Modules/geolocation -I../../Source/WebCore/Modules/indexeddb -I../../Source/WebCore/Modules/indexeddb/client -I../../Source/WebCore/Modules/indexeddb/server -I../../Source/WebCore/Modules/indexeddb/shared -I../../Source/WebCore/Modules/mediacapabilities -I../../Source/WebCore/Modules/mediacontrols -I../../Source/WebCore/Modules/mediasession -I../../Source/WebCore/Modules/mediasource -I../../Source/WebCore/Modules/mediastream -I../../Source/WebCore/Modules/navigatorcontentutils -I../../Source/WebCore/Modules/notifications -I../../Source/WebCore/Modules/paymentrequest -I../../Source/WebCore/Modules/plugins -I../../Source/WebCore/Modules/quota -I../../Source/WebCore/Modules/speech -I../../Source/WebCore/Modules/streams -I../../Source/WebCore/Modules/webaudio -I../../Source/WebCore/Modules/webauthn -I../../Source/WebCore/Modules/webdatabase -I../../Source/WebCore/Modules/webdriver -I../../Source/WebCore/Modules/websockets -I../../Source/WebCore/Modules/webvr -I../../Source/WebCore/accessibility -I../../Source/WebCore/animation -I../../Source/WebCore/bindings -I../../Source/WebCore/bindings/js -I../../Source/WebCore/bridge -I../../Source/WebCore/bridge/c -I../../Source/WebCore/bridge/jsc -I../../Source/WebCore/contentextensions -I../../Source/WebCore/crypto -I../../Source/WebCore/crypto/algorithms -I../../Source/WebCore/crypto/keys -I../../Source/WebCore/crypto/parameters -I../../Source/WebCore/css -I../../Source/WebCore/css/parser -I../../Source/WebCore/cssjit -I../../Source/WebCore/dom -I../../Source/WebCore/dom/default -I../../Source/WebCore/dom/messageports -I../../Source/WebCore/domjit -I../../Source/WebCore/editing -I../../Source/WebCore/fileapi -I../../Source/WebCore/history -I../../Source/WebCore/html -I../../Source/WebCore/html/canvas -I../../Source/WebCore/html/forms -I../../Source/WebCore/html/parser -I../../Source/WebCore/html/shadow -I../../Source/WebCore/html/track -I../../Source/WebCore/inspector -I../../Source/WebCore/inspector/agents -I../../Source/WebCore/inspector/agents/page -I../../Source/WebCore/inspector/agents/worker -I../../Source/WebCore/loader -I../../Source/WebCore/loader/appcache -I../../Source/WebCore/loader/archive -I../../Source/WebCore/loader/archive/mhtml -I../../Source/WebCore/loader/cache -I../../Source/WebCore/loader/icon -I../../Source/WebCore/mathml -I../../Source/WebCore/page -I../../Source/WebCore/page/animation -I../../Source/WebCore/page/csp -I../../Source/WebCore/page/scrolling -I../../Source/WebCore/platform -I../../Source/WebCore/platform/animation -I../../Source/WebCore/platform/audio -I../../Source/WebCore/platform/crypto -I../../Source/WebCore/platform/encryptedmedia -I../../Source/WebCore/platform/gamepad -I../../Source/WebCore/platform/graphics -I../../Source/WebCore/platform/graphics/cpu/arm -I../../Source/WebCore/platform/graphics/cpu/arm/filters -I../../Source/WebCore/platform/graphics/displaylists -I../../Source/WebCore/platform/graphics/filters -I../../Source/WebCore/platform/graphics/harfbuzz -I../../Source/WebCore/platform/graphics/harfbuzz/ng -I../../Source/WebCore/platform/graphics/iso -I../../Source/WebCore/platform/graphics/opentype -I../../Source/WebCore/platform/graphics/transforms -I../../Source/WebCore/platform/mediastream -I../../Source/WebCore/platform/mediastream/libwebrtc -I../../Source/WebCore/platform/mock -I../../Source/WebCore/platform/mock/mediasource -I../../Source/WebCore/platform/network -I../../Source/WebCore/platform/sql -I../../Source/WebCore/platform/text -I../../Source/WebCore/platform/text/icu -I../../Source/WebCore/platform/vr -I../../Source/WebCore/plugins -I../../Source/WebCore/rendering -I../../Source/WebCore/rendering/line -I../../Source/WebCore/rendering/mathml -I../../Source/WebCore/rendering/shapes -I../../Source/WebCore/rendering/style -I../../Source/WebCore/rendering/svg -I../../Source/WebCore/rendering/updating -I../../Source/WebCore/replay -I../../Source/WebCore/storage -I../../Source/WebCore/style -I../../Source/WebCore/svg -I../../Source/WebCore/svg/animation -I../../Source/WebCore/svg/graphics -I../../Source/WebCore/svg/graphics/filters -I../../Source/WebCore/svg/properties -I../../Source/WebCore/websockets -I../../Source/WebCore/workers -I../../Source/WebCore/workers/service -I../../Source/WebCore/workers/service/context -I../../Source/WebCore/workers/service/server -I../../Source/WebCore/xml -I../../Source/WebCore/xml/parser -IDerivedSources/WebCore -IDerivedSources/ForwardingHeaders/ANGLE -I../../Source/WebCore/platform/graphics/gpu -I../../Source/ThirdParty/xdgmime/src -I../../Source/WebCore/platform/graphics/cairo -I../../Source/WebCore/platform/graphics/freetype -I../../Source/WebCore/platform/graphics/gstreamer -I../../Source/WebCore/platform/graphics/gstreamer/mse -I../../Source/WebCore/platform/graphics/gstreamer/eme -I../../Source/WebCore/platform/audio/gstreamer -I../../Source/WebCore/platform/image-decoders -I../../Source/WebCore/platform/image-decoders/bmp -I../../Source/WebCore/platform/image-decoders/gif -I../../Source/WebCore/platform/image-decoders/ico -I../../Source/WebCore/platform/image-decoders/jpeg -I../../Source/WebCore/platform/image-decoders/png -I../../Source/WebCore/platform/image-decoders/webp -I../../Source/WebCore/platform/graphics/texmap -I../../Source/WebCore/page/scrolling/coordinatedgraphics -I../../Source/WebCore/platform/graphics/texmap/coordinated -I../../Source/WebCore/platform/graphics/nicosia -I../../Source/WebCore/platform/graphics/nicosia/cairo -I../../Source/WebCore/platform/graphics/nicosia/texmap -I../../Source/ThirdParty/ANGLE -I../../Source/ThirdParty/ANGLE/include/KHR -I../../Source/WebCore/accessibility/atk -I../../Source/WebCore/editing/atk -I../../Source/WebCore/page/gtk -I../../Source/WebCore/platform/geoclue -I../../Source/WebCore/platform/gtk -I../../Source/WebCore/platform/graphics/egl -I../../Source/WebCore/platform/graphics/glx -I../../Source/WebCore/platform/graphics/gtk -I../../Source/WebCore/platform/graphics/opengl -I../../Source/WebCore/platform/graphics/wayland -I../../Source/WebCore/platform/graphics/x11 -I../../Source/WebCore/platform/mediacapabilities -I../../Source/WebCore/platform/mediastream/gtk -I../../Source/WebCore/platform/mediastream/gstreamer -I../../Source/WebCore/platform/network/gtk -I../../Source/WebCore/platform/network/soup -I../../Source/WebCore/platform/text/gtk -I../../Source/WebCore/bindings/gobject -isystem /usr/include/libxml2 -isystem /usr/include/cairo -isystem /usr/include/freetype2 -isystem /usr/include/x86_64-linux-gnu/freetype2 -isystem /usr/include/harfbuzz -isystem /usr/include/gstreamer-1.0 -isystem /usr/lib/x86_64-linux-gnu/gstreamer-1.0/include -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -isystem /usr/include/atk-1.0 -isystem /usr/include/enchant -isystem /usr/include/gio-unix-2.0 -isystem /usr/include/libsecret-1 -isystem /usr/include/libsoup-2.4 -IDerivedSources/ForwardingHeaders -I../../Source/bmalloc -IDerivedSources -I../../Source/ThirdParty -fdiagnostics-color=always -fcolor-diagnostics -Wno-parentheses-equality -Qunused-arguments -Wwrite-strings -Wundef -Wpointer-arith -Wmissing-format-attribute -Wformat-security -Wcast-align -Wextra -Wall  -fno-strict-aliasing -fno-exceptions -fno-rtti -std=c++14 -O3 -DNDEBUG -fPIC -MMD -MT Source/WebCore/CMakeFiles/WebCore.dir/platform/graphics/gstreamer/mse/AppendPipeline.cpp.o -MF Source/WebCore/CMakeFiles/WebCore.dir/platform/graphics/gstreamer/mse/AppendPipeline.cpp.o.d -o Source/WebCore/CMakeFiles/WebCore.dir/platform/graphics/gstreamer/mse/AppendPipeline.cpp.o -c ../../Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp
../../Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:745:32: error: use of undeclared identifier 'gst_app_sink_try_pull_sample'; did you mean 'gst_app_src_push_sample'?
    while ((sample = adoptGRef(gst_app_sink_try_pull_sample(((((GstAppSink*) g_type_check_instance_cast ((GTypeInstance*) ((m_appsink.get())), ((gst_app_sink_get_type())))))), 0)))) {
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
                               gst_app_src_push_sample
/usr/include/gstreamer-1.0/gst/app/gstappsrc.h:146:15: note: 'gst_app_src_push_sample' declared here
GstFlowReturn gst_app_src_push_sample (GstAppSrc *appsrc, GstSample *sample);
              ^
../../Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:745:61: error: cannot initialize a parameter of type 'GstAppSrc *' (aka '_GstAppSrc *') with an rvalue of type 'GstAppSink *' (aka '_GstAppSink *')
    while ((sample = adoptGRef(gst_app_sink_try_pull_sample(((((GstAppSink*) g_type_check_instance_cast ((GTypeInstance*) ((m_appsink.get())), ((gst_app_sink_get_type())))))), 0)))) {
                                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/gstreamer-1.0/gst/app/gstappsrc.h:146:51: note: passing argument to parameter 'appsrc' here
GstFlowReturn gst_app_src_push_sample (GstAppSrc *appsrc, GstSample *sample);
                                                  ^
2 errors generated.
../../Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:541:75: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
    if ((__builtin_expect (__extension__ ({ int _g_boolean_var_; if ((ret == GST_STATE_CHANGE_FAILURE)) _g_boolean_var_ = 1; else _g_boolean_var_ = 0; _g_boolean_var_; }), 0))) {
                                                                      ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
../../Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:541:75: note: remove extraneous parentheses around the comparison to silence this warning
    if ((__builtin_expect (__extension__ ({ int _g_boolean_var_; if ((ret == GST_STATE_CHANGE_FAILURE)) _g_boolean_var_ = 1; else _g_boolean_var_ = 0; _g_boolean_var_; }), 0))) {
                                                                     ~    ^                          ~
../../Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:541:75: note: use '=' to turn this equality comparison into an assignment
    if ((__builtin_expect (__extension__ ({ int _g_boolean_var_; if ((ret == GST_STATE_CHANGE_FAILURE)) _g_boolean_var_ = 1; else _g_boolean_var_ = 0; _g_boolean_var_; }), 0))) {
                                                                          ^~
                                                                          =
1 warning generated.
ninja: build stopped: subcommand failed.
Comment 1 Philippe Normand 2018-09-27 06:38:05 PDT
gst_app_sink_try_pull_sample was added in gst 1.10, a GST_CHECK_VERSION ifdef is needed around... If gst 1.10 isn't found at build time then another approach should be used to pull samples from the sink...
Comment 2 Philippe Normand 2018-09-27 07:11:34 PDT
After discussion in Matrix, the only viable solution seems to make MSE an experimental feature again and interrupt the build early if GStreamer >= 1.10 was not found.
Comment 3 Philippe Normand 2018-10-02 00:29:14 PDT
Created attachment 351351 [details]
Patch
Comment 4 Michael Catanzaro 2018-10-02 00:41:40 PDT
Comment on attachment 351351 [details]
Patch

Add to https://trac.webkit.org/wiki/WebKitGTK/2.22.x after landing
Comment 5 Philippe Normand 2018-10-02 01:02:50 PDT
Committed r236716: <https://trac.webkit.org/changeset/236716>
Comment 6 Radar WebKit Bug Importer 2018-10-02 01:03:28 PDT
<rdar://problem/44932787>
Comment 7 Olivier Blin 2018-10-02 02:28:26 PDT
Your comments and the GStreamer doc mention GStreamer 1.10 for gst_app_sink_try_pull_sample(), but your patch requires 1.14.

Could we lower the requirement to 1.10?
Comment 8 Philippe Normand 2018-10-02 02:40:55 PDT
(In reply to Olivier Blin from comment #7)
> Your comments and the GStreamer doc mention GStreamer 1.10 for
> gst_app_sink_try_pull_sample(), 

Right

> but your patch requires 1.14.
> 
> Could we lower the requirement to 1.10?

I'm afraid not. While the MSE backend would still compile, I don't think it would work at runtime, due to MSE bugs that were fixed in 1.14.