Configure Qt for WebAssembly seems to be stuck at 'Info: creating stash file' forever.



  • I am interested to learn about Qt WebAssembly and stared going through the steps from the Qt for WebAssembly. I have configured the emscrripten properly and able to build the helloworld example per the emsdk documentation.

    I have pulled the source code for Qt5.12 modules below, in to a directory.
    git clone https://code.qt.io/qt/qtbase.git
    git clone https://code.qt.io/qt/qtdeclarative.git
    git clone https://code.qt.io/qt/qtwebsockets.git

    I have setup the emsdk environment and tried to configure the Qt for wasm platform as mentioned in the document. the process seems to be stuck at Creating Stash file for a long period of time, as shown below in the logs.

    $ ./configure -no-warnings-are-errors -xplatform wasm-emscripten -platform win32-g++ -nomake examples -prefix output
    
    <srcbase> = c:/GIT/Build_Qt_Webassembly/qtwebassembly/qtbase
    <bldbase> = c:/GIT/Build_Qt_Webassembly/qtwebassembly/qtbase
    <outbase> = c:/GIT/Build_Qt_Webassembly/qtwebassembly/qtbase
    QtCore: created fwd-include header(s) for <srcbase>/src/corelib/animation/ { qabstractanimation.h (1), qabstractanimation_p.h (1), qanimationgroup.h (1), qanimationgroup_p.h (1), qparallelanimationgroup.h (1), qparallelanimationgroup_p.h (1), qpauseanimation.h (1), qpropertyanimation.h (1), qpropertyanimation_p.h (1), qsequentialanimationgroup.h (1), qsequentialanimationgroup_p.h (1), qvariantanimation.h (1), qvariantanimation_p.h (1) }
    QtCore: created fwd-include header(s) for <srcbase>/src/corelib/codecs/ { cp949codetbl_p.h (1), qbig5codec_p.h (1), qeucjpcodec_p.h (1), qeuckrcodec_p.h (1), qgb18030codec_p.h (1), qiconvcodec_p.h (1), qicucodec_p.h (1), qisciicodec_p.h (1), qjiscodec_p.h (1), qjpunicode_p.h (1), qlatincodec_p.h (1), qsimplecodec_p.h (1), qsjiscodec_p.h (1), qtextcodec.h (1), qtextcodec_p.h (1), qtsciicodec_p.h (1), qutfcodec_p.h (1), qwindowscodec_p.h (1) }
    QtCore: created fwd-include header(s) for <srcbase>/src/corelib/global/ { minimum-linux_p.h (1), qcompilerdetection.h (1), qconfig-bootstrapped.h (1), qendian.h (2), qendian_p.h (1), qflags.h (1), qfloat16.h (1), qfloat16_p.h (1), qglobal.h (2), qglobal_p.h (1), qglobalstatic.h (1), qhooks_p.h (1), qisenum.h (1), qlibraryinfo.h (1), qlogging.h (1), qlogging_p.h (1), qnamespace.h (2), qnumeric.h (2), qnumeric_p.h (1), qoperatingsystemversion.h (1), qoperatingsystemversion_p.h (1), qoperatingsystemversion_win_p.h (1), qprocessordetection.h (1), qrandom.h (1), qrandom_p.h (1), qsysinfo.h (1), qsystemdetection.h (1), qt_pch.h (1), qt_windows.h (1), qtrace_p.h (1), qtypeinfo.h (1), qtypetraits.h (1), qversiontagging.h (1) }
    QtCore: created fwd-include header(s) for <srcbase>/src/corelib/io/ { qabstractfileengine_p.h (1), qbuffer.h (1), qdataurl_p.h (1), qdebug.h (2), qdebug_p.h (1), qdir.h (1), qdir_p.h (1), qdiriterator.h (1), qfile.h (1), qfile_p.h (1), qfiledevice.h (1), qfiledevice_p.h (1), qfileinfo.h (1), qfileinfo_p.h (1), qfileselector.h (1), qfileselector_p.h (1), qfilesystemengine_p.h (1), qfilesystementry_p.h (1), qfilesystemiterator_p.h (1), qfilesystemmetadata_p.h (1), qfilesystemwatcher.h (1), qfilesystemwatcher_fsevents_p.h (1), qfilesystemwatcher_inotify_p.h (1), qfilesystemwatcher_kqueue_p.h (1), qfilesystemwatcher_p.h (1), qfilesystemwatcher_polling_p.h (1), qfilesystemwatcher_win_p.h (1), qfsfileengine_iterator_p.h (1), qfsfileengine_p.h (1), qiodevice.h (1), qiodevice_p.h (1), qipaddress_p.h (1), qlockfile.h (1), qlockfile_p.h (1), qloggingcategory.h (1), qloggingregistry_p.h (1), qnoncontiguousbytedevice_p.h (1), qprocess.h (1), qprocess_p.h (1), qresource.h (1), qresource_iterator_p.h (1), qresource_p.h (1), qsavefile.h (1), qsavefile_p.h (1), qsettings.h (1), qsettings_p.h (1), qstandardpaths.h (1), qstorageinfo.h (1), qstorageinfo_p.h (1), qtemporarydir.h (1), qtemporaryfile.h (1), qtemporaryfile_p.h (1), qtldurl_p.h (1), qurl.h (1), qurl_p.h (1), qurlquery.h (1), qurltlds_p.h (1), qwindowspipereader_p.h (1), qwindowspipewriter_p.h (1) }
    QtCore: created fwd-include header(s) for <srcbase>/src/corelib/itemmodels/ { qabstractitemmodel.h (1), qabstractitemmodel_p.h (1), qabstractproxymodel.h (1), qabstractproxymodel_p.h (1), qidentityproxymodel.h (1), qitemselectionmodel.h (1), qitemselectionmodel_p.h (1), qsortfilterproxymodel.h (1), qstringlistmodel.h (1) }
    QtCore: created fwd-include header(s) for <srcbase>/src/corelib/kernel/ { qabstracteventdispatcher.h (1), qabstracteventdispatcher_p.h (1), qabstractnativeeventfilter.h (1), qbasictimer.h (1), qcfsocketnotifier_p.h (1), qcore_mac_p.h (1), qcore_unix_p.h (1), qcoreapplication.h (1), qcoreapplication_p.h (1), qcorecmdlineargs_p.h (1), qcoreevent.h (1), qcoreglobaldata_p.h (1), qdeadlinetimer.h (1), qdeadlinetimer_p.h (1), qelapsedtimer.h (1), qeventdispatcher_cf_p.h (1), qeventdispatcher_glib_p.h (1), qeventdispatcher_unix_p.h (1), qeventdispatcher_win_p.h (1), qeventdispatcher_winrt_p.h (1), qeventloop.h (1), qeventloop_p.h (1), qfunctions_fake_env_p.h (1), qfunctions_nacl.h (1), qfunctions_p.h (1), qfunctions_vxworks.h (1), qfunctions_winrt.h (1), qjni_p.h (1), qjnihelpers_p.h (1), qmath.h (1), qmetaobject.h (1), qmetaobject_moc_p.h (1), qmetaobject_p.h (1), qmetaobjectbuilder_p.h (1), qmetatype.h (1), qmetatype_p.h (1), qmetatypeswitcher_p.h (1), qmimedata.h (1), qobject.h (1), qobject_impl.h (1), qobject_p.h (1), qobjectcleanuphandler.h (1), qobjectdefs.h (1), qobjectdefs_impl.h (1), qpointer.h (1), qpoll_p.h (1), qppsattribute_p.h (1), qppsattributeprivate_p.h (1), qppsobject_p.h (1), qppsobjectprivate_p.h (1), qsharedmemory.h (1), qsharedmemory_p.h (1), qsignalmapper.h (1), qsocketnotifier.h (1), qsystemerror_p.h (1), qsystemsemaphore.h (1), qsystemsemaphore_p.h (1), qtestsupport_core.h (1), qtimer.h (1), qtimerinfo_unix_p.h (1), qtranslator.h (1), qtranslator_p.h (1), qvariant.h (4), qvariant_p.h (1), qwineventnotifier.h (1), qwineventnotifier_p.h (1) }
    QtCore: created fwd-include header(s) for <srcbase>/src/corelib/mimetypes/ { qmimedatabase.h (1), qmimedatabase_p.h (1), qmimeglobpattern_p.h (1), qmimemagicrule_p.h (1), qmimemagicrulematcher_p.h (1), qmimeprovider_p.h (1), qmimetype.h (1), qmimetype_p.h (1), qmimetypeparser_p.h (1) }
    QtCore: created fwd-include header(s) for <srcbase>/src/corelib/plugin/ { qelfparser_p.h (1), qfactoryinterface.h (1), qfactoryloader_p.h (1), qlibrary.h (1), qlibrary_p.h (1), qmachparser_p.h (1), qplugin.h (2), qplugin_p.h (1), qpluginloader.h (1), qsystemlibrary_p.h (1), quuid.h (1) }
    QtCore: created fwd-include header(s) for <srcbase>/src/corelib/serialization/ { qcborarray.h (1), qcborcommon.h (1), qcbormap.h (1), qcborstream.h (1), qcborvalue.h (1), qcborvalue_p.h (1), qdatastream.h (1), qdatastream_p.h (1), qjson_p.h (1), qjsonarray.h (1), qjsondocument.h (1), qjsonobject.h (1), qjsonparser_p.h (1), qjsonvalue.h (1), qjsonwriter_p.h (1), qtextstream.h (1), qtextstream_p.h (1), qxmlstream.h (1), qxmlstream_p.h (1), qxmlutils_p.h (1) }
    QtCore: created fwd-include header(s) for <srcbase>/src/corelib/statemachine/ { qabstractstate.h (1), qabstractstate_p.h (1), qabstracttransition.h (1), qabstracttransition_p.h (1), qeventtransition.h (1), qeventtransition_p.h (1), qfinalstate.h (1), qfinalstate_p.h (1), qhistorystate.h (1), qhistorystate_p.h (1), qsignaleventgenerator_p.h (1), qsignaltransition.h (1), qsignaltransition_p.h (1), qstate.h (1), qstate_p.h (1), qstatemachine.h (1), qstatemachine_p.h (1) }
    QtCore: created fwd-include header(s) for <srcbase>/src/corelib/thread/ { qatomic.h (1), qatomic_bootstrap.h (1), qatomic_cxx11.h (1), qatomic_msvc.h (1), qbasicatomic.h (1), qexception.h (1), qfutex_p.h (1), qfuture.h (1), qfutureinterface.h (1), qfutureinterface_p.h (1), qfuturesynchronizer.h (1), qfuturewatcher.h (1), qfuturewatcher_p.h (1), qgenericatomic.h (1), qmutex.h (1), qmutex_p.h (1), qmutexpool_p.h (1), qorderedmutexlocker_p.h (1), qreadwritelock.h (1), qreadwritelock_p.h (1), qresultstore.h (1), qrunnable.h (1), qsemaphore.h (1), qthread.h (1), qthread_p.h (1), qthreadpool.h (1), qthreadpool_p.h (1), qthreadstorage.h (1), qwaitcondition.h (1) }
    QtCore: created fwd-include header(s) for <srcbase>/src/corelib/tools/ { qalgorithms.h (2), qarraydata.h (1), qarraydataops.h (1), qarraydatapointer.h (1), qbitarray.h (1), qbytearray.h (1), qbytearray_p.h (1), qbytearraylist.h (1), qbytearraymatcher.h (1), qbytedata_p.h (1), qcache.h (1), qchar.h (1), qcollator.h (1), qcollator_p.h (1), qcommandlineoption.h (1), qcommandlineparser.h (1), qcontainerfwd.h (2), qcontiguouscache.h (1), qcryptographichash.h (1), qdatetime.h (1), qdatetime_p.h (1), qdatetimeparser_p.h (1), qdoublescanprint_p.h (1), qeasingcurve.h (1), qfreelist_p.h (1), qharfbuzz_p.h (1), qhash.h (1), qhashfunctions.h (1), qiterator.h (1), qline.h (1), qlinkedlist.h (1), qlist.h (1), qlocale.h (1), qlocale_data_p.h (1), qlocale_p.h (1), qlocale_tools_p.h (1), qmakearray_p.h (1), qmap.h (1), qmargins.h (1), qmessageauthenticationcode.h (1), qpair.h (1), qpoint.h (1), qqueue.h (1), qrect.h (1), qrefcount.h (1), qregexp.h (1), qregularexpression.h (1), qringbuffer_p.h (1), qscopedpointer.h (1), qscopedpointer_p.h (1), qscopedvaluerollback.h (1), qscopeguard.h (1), qset.h (1), qshareddata.h (1), qsharedpointer.h (1), qsharedpointer_impl.h (1), qsimd_p.h (1), qsimd_x86_p.h (1), qsize.h (1), qstack.h (1), qstring.h (1), qstringalgorithms.h (1), qstringalgorithms_p.h (1), qstringbuilder.h (1), qstringiterator_p.h (1), qstringlist.h (1), qstringliteral.h (1), qstringmatcher.h (1), qstringview.h (1), qtextboundaryfinder.h (1), qtimeline.h (1), qtimezone.h (1), qtimezoneprivate_data_p.h (1), qtimezoneprivate_p.h (1), qtools_p.h (1), qunicodetables_p.h (1), qunicodetools_p.h (1), qvarlengtharray.h (1), qvector.h (1), qversionnumber.h (1) }
    Creating qmake...
    ..............................................................................................Done.
    Info: creating cache file C:\GIT\Build_Qt_Webassembly\qtwebassembly\qtbase\.qmake.cache
    Info: creating stash file C:\GIT\Build_Qt_Webassembly\qtwebassembly\qtbase\.qmake.stash
    

    Am I missing something here ?



  • Have you tried 5.13 branches?



  • Did you run the examples found here :
    https://github.com/msorvig/qt-webassembly-examples

    Please tell me how did you configure Qt.
    Normally qt build takes more than 10 hours , atleast for me.
    and your configuration command seems to miss modules
    ./init-repository -f --module-subset=qtbase,qtdeclarative,qtwebsockets,qtsvg,qtquickcontrols,qtquickcontrols2,qtgraphicaleffects
    ./configure -opensource -confirm-license -xplatform wasm-emscripten -release -static -no-feature-thread -nomake examples -no-dbus -no-ssl -no-qml-debug

    try this ..



  • @Izza I think you should take into consideration that @chaithubk is on Windows. I do not think your suggested configure command line will work in this case? Nevertheless, I find some of your options interesting. Too bad it takes so long to get a build done.



  • @lwallent Qt for webassembly works on windows subsystem for linux. linux or macOS .. So i think i gave him right suggestion.



  • @Izza I am aware that Qt for WebAssembly works on Windows. I was just trying to help out, by saying that the configure command will be different on Windows. At least the -platform win32-g++ should be added?



  • For Windows, the platform win32-g++ is required. You also need sed in your path.

    https://wiki.qt.io/Qt_for_WebAssembly

    As well, Qt versions need a specific version of emscripten, as the pace of emscripten features outpaces Qt, and using a newer emscripten often will not work.
    For Qt 5.12, emscripten 1.38.16 is recommended.


Log in to reply