Bug 254506 - [WPE] [2.40.0] Fails to build in mipsel: invalid use of incomplete type 'class JSC::GenericTypedArrayView<JSC::Float32Adaptor>'
Summary: [WPE] [2.40.0] Fails to build in mipsel: invalid use of incomplete type 'clas...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WPE WebKit (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Adrian Perez
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-03-27 02:20 PDT by Alberto Garcia
Modified: 2023-04-20 08:08 PDT (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alberto Garcia 2023-03-27 02:20:33 PDT
WebKitGTK 2.40.0 works fine however, this is only a problem with WPE WebKit.

The full build log is here (note: 16MB): https://buildd.debian.org/status/fetch.php?pkg=wpewebkit&arch=mipsel&ver=2.40.0-1&stamp=1679502401&raw=0

This is the error itself:

                                      ---------------------------------------------------------
In file included from wpewebkit-2.40.0/obj-mipsel-linux-gnu/WTF/Headers/wtf/HashFunctions.h:26,
                 from wpewebkit-2.40.0/obj-mipsel-linux-gnu/WTF/Headers/wtf/CompactPtr.h:32,
                 from wpewebkit-2.40.0/obj-mipsel-linux-gnu/WTF/Headers/wtf/text/StringImpl.h:29,
                 from wpewebkit-2.40.0/obj-mipsel-linux-gnu/WTF/Headers/wtf/text/WTFString.h:28,
                 from wpewebkit-2.40.0/Source/WebCore/dom/Exception.h:30,
                 from wpewebkit-2.40.0/Source/WebCore/dom/ExceptionOr.h:29,
                 from wpewebkit-2.40.0/Source/WebCore/Modules/webaudio/AudioBuffer.h:33,
                 from wpewebkit-2.40.0/Source/WebCore/Modules/webaudio/AudioBufferSourceOptions.h:29,
                 from wpewebkit-2.40.0/obj-mipsel-linux-gnu/WebCore/DerivedSources/JSAudioBufferSourceOptions.h:25,
                 from wpewebkit-2.40.0/obj-mipsel-linux-gnu/WebCore/DerivedSources/JSAudioBufferSourceOptions.cpp:25:
wpewebkit-2.40.0/obj-mipsel-linux-gnu/WTF/Headers/wtf/RefPtr.h: In instantiation of 'static void WTF::DefaultRefDerefTraits< <template-parameter-1-1> >::derefIfNotNull(T*) [with T = JSC::GenericTypedArrayView<JSC::Float32Adaptor>]':
wpewebkit-2.40.0/obj-mipsel-linux-gnu/WTF/Headers/wtf/RefPtr.h:74:61:   required from 'WTF::RefPtr<T, <template-parameter-1-2>, <template-parameter-1-3> >::~RefPtr() [with T = JSC::GenericTypedArrayView<JSC::Float32Adaptor>; _PtrTraits = WTF::RawPtrTraits<JSC::GenericTypedArrayView<JSC::Float32Adaptor> >; _RefDerefTraits = WTF::DefaultRefDerefTraits<JSC::GenericTypedArrayView<JSC::Float32Adaptor> >]'
wpewebkit-2.40.0/obj-mipsel-linux-gnu/WTF/Headers/wtf/Vector.h:69:20:   required from 'static void WTF::VectorDestructor<true, T>::destruct(T*, T*) [with T = WTF::RefPtr<JSC::GenericTypedArrayView<JSC::Float32Adaptor> >]'
wpewebkit-2.40.0/obj-mipsel-linux-gnu/WTF/Headers/wtf/Vector.h:252:81:   required from 'static void WTF::VectorTypeOperations<T>::destruct(T*, T*) [with T = WTF::RefPtr<JSC::GenericTypedArrayView<JSC::Float32Adaptor> >]'
wpewebkit-2.40.0/obj-mipsel-linux-gnu/WTF/Headers/wtf/TrailingArray.h:84:42:   required from 'WTF::TrailingArray<Derived, T>::~TrailingArray() [with Derived = WTF::EmbeddedFixedVector<WTF::RefPtr<JSC::GenericTypedArrayView<JSC::Float32Adaptor> > >; T = WTF::RefPtr<JSC::GenericTypedArrayView<JSC::Float32Adaptor> >]'
wpewebkit-2.40.0/obj-mipsel-linux-gnu/WTF/Headers/wtf/EmbeddedFixedVector.h:38:7:   required from 'void std::default_delete<_Tp>::operator()(_Tp*) const [with _Tp = WTF::EmbeddedFixedVector<WTF::RefPtr<JSC::GenericTypedArrayView<JSC::Float32Adaptor> > >]'
/usr/include/c++/12/bits/unique_ptr.h:396:17:   required from 'std::unique_ptr<_Tp, _Dp>::~unique_ptr() [with _Tp = WTF::EmbeddedFixedVector<WTF::RefPtr<JSC::GenericTypedArrayView<JSC::Float32Adaptor> > >; _Dp = std::default_delete<WTF::EmbeddedFixedVector<WTF::RefPtr<JSC::GenericTypedArrayView<JSC::Float32Adaptor> > > >]'
wpewebkit-2.40.0/obj-mipsel-linux-gnu/WTF/Headers/wtf/FixedVector.h:33:7:   required from 'void std::default_delete<_Tp>::operator()(_Tp*) const [with _Tp = WebCore::AudioBuffer]'
wpewebkit-2.40.0/obj-mipsel-linux-gnu/WTF/Headers/wtf/RefCounted.h:190:22:   required from 'void WTF::RefCounted<T, Deleter>::deref() const [with T = WebCore::AudioBuffer; Deleter = std::default_delete<WebCore::AudioBuffer>]'
wpewebkit-2.40.0/obj-mipsel-linux-gnu/WTF/Headers/wtf/Ref.h:61:23:   required from 'WTF::Ref<T, <template-parameter-1-2> >::~Ref() [with T = WebCore::AudioBuffer; Traits = WTF::RawPtrTraits<WebCore::AudioBuffer>]'
wpewebkit-2.40.0/obj-mipsel-linux-gnu/WebCore/DerivedSources/JSAudioBuffer.h:93:228:   required from here
wpewebkit-2.40.0/obj-mipsel-linux-gnu/WTF/Headers/wtf/RefPtr.h:42:18: error: invalid use of incomplete type 'class JSC::GenericTypedArrayView<JSC::Float32Adaptor>'
   42 |             ptr->deref();
      |             ~~~~~^~~~~
In file included from wpewebkit-2.40.0/obj-mipsel-linux-gnu/JavaScriptCore/PrivateHeaders/JavaScriptCore/Forward.h:29,
                 from wpewebkit-2.40.0/Source/WebCore/Modules/webaudio/AudioBuffer.h:35:
wpewebkit-2.40.0/obj-mipsel-linux-gnu/JavaScriptCore/PrivateHeaders/JavaScriptCore/TypedArrayAdaptersForwardDeclarations.h:42:34: note: declaration of 'class JSC::GenericTypedArrayView<JSC::Float32Adaptor>'
   42 | template<typename Adaptor> class GenericTypedArrayView;
      |                                  ^~~~~~~~~~~~~~~~~~~~~
                                      ---------------------------------------------------------
Comment 1 Adrian Perez 2023-04-05 04:10:24 PDT
I have managed to reproduce this build issue on x86_64 as well, using
CMake directly instead of build-webkit, like this:

 % CC=gcc CXX=g++ LDFLAGS=-fuse-ld=bfd \
   cmake -S. -Bbuild -DPORT=WPE \
     -DCMAKE_C_FLAGS_RELEASE='' \
     -DCMAKE_C_FLAGS_DEBUG='' \
     -DCMAKE_CXX_FLAGS_DEBUG='' \
     -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
     -DENABLE_WPE_QT_API=OFF \
     -DENABLE_MINIBROWSER=ON \
     -DUSE_SOUP2=OFF \
     -DDEBUG_FISSION=OFF \
     -DENABLE_WEBGL=OFF \
     -DENABLE_UNIFIED_BUILDS=OFF \
     -DENABLE_DOCUMENTATION=OFF \
     -DENABLE_INTROSPECTION=OFF \
     -DCMAKE_BUILD_TYPE=Release \
     -DENABLE_BUBBLEWRAP_SANDBOX=ON \
     -GNinja
 % ninja -Cbuild

The error looks similar to another I fixed in one of my non-unified build
patches some weeks back. I'll try to solve this one as well.
Comment 2 Adrian Perez 2023-04-20 08:08:56 PDT
(In reply to Adrian Perez from comment #1)
> I have managed to reproduce this build issue on x86_64 as well, using
> CMake directly instead of build-webkit, like this:
> 
>  % CC=gcc CXX=g++ LDFLAGS=-fuse-ld=bfd \
>    cmake -S. -Bbuild -DPORT=WPE \
>      -DCMAKE_C_FLAGS_RELEASE='' \
>      -DCMAKE_C_FLAGS_DEBUG='' \
>      -DCMAKE_CXX_FLAGS_DEBUG='' \
>      -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
>      -DENABLE_WPE_QT_API=OFF \
>      -DENABLE_MINIBROWSER=ON \
>      -DUSE_SOUP2=OFF \
>      -DDEBUG_FISSION=OFF \
>      -DENABLE_WEBGL=OFF \
>      -DENABLE_UNIFIED_BUILDS=OFF \
>      -DENABLE_DOCUMENTATION=OFF \
>      -DENABLE_INTROSPECTION=OFF \
>      -DCMAKE_BUILD_TYPE=Release \
>      -DENABLE_BUBBLEWRAP_SANDBOX=ON \
>      -GNinja
>  % ninja -Cbuild
> 
> The error looks similar to another I fixed in one of my non-unified build
> patches some weeks back. I'll try to solve this one as well.

Fixed in the webkitglib/2.40 branch in this commit:

  https://github.com/WebKit/WebKit/commit/988cb56ec61c140431d9b93c7d9699eb5fa7925b