no luck with Qt 5.9.2
Jan Mulder
jlmulder at xs4all.nl
Tue Oct 24 06:48:42 PDT 2017
On 23-10-17 18:23, Jan Mulder wrote:
> On 23-10-17 17:44, Dirk Hohndel wrote:
>>
>>> On Oct 23, 2017, at 11:41 AM, Tomaz Canabrava <tcanabrava at kde.org
>>> <mailto:tcanabrava at kde.org>> wrote:
>>>
>>>
>>>
>>> On Mon, Oct 23, 2017 at 5:37 PM, Jan Mulder <jlmulder at xs4all.nl
>>> <mailto:jlmulder at xs4all.nl>> wrote:
>>>
>>> Unfortunately, very very limited progress. I found out
>>> that 2nd code fragment above does not tell the whole
>>> story. Obviously, it needs an "import QtQuick.Controls
>>> 2.2" the get the ApplicationWindow defined. However,
>>> adding "import org.kde.kirigami 2.0 as Kirigami" triggers
>>> the exit on the "can't create window object". So, its only
>>> one input that triggers the error of an almost empty
>>> main.qml
>>>
>>> The big question is now: is it Kirigami or Qt/QML? Of even
>>> a combination of both?
>>>
>>>
>>> Have you tried running this under strace to see if it tries to
>>> open some library that it can't find or something?
>>> I haven't been able to reproduce this on the desktop, only on
>>> iOS for some reason - and I have no idea how to run strace
>>> there :-(
>>>
>>> I even tried to compile mobile-on-desktop against the beta
>>> of Qt 5.10.0. No luck there, and the exact same behavior.
>>>
>>>
>>>
>>> Ok, again having some time after the release of 4.7.1, I
>>> investigated this issue further.
>>>
>>> First. I'm (still) very tempted to say that it is a Kirigami
>>> issue, that's why I put Marco in the to list.
>>>
>>> With commenting 1 line of code in Kirigami, the Subsurface code:
>>> engine.load(QUrl(QStringLiteral("qrc:///qml/main.qml"))) passes.
>>> That one line of code is:
>>>
>>>
>>> qmlRegisterSingletonType(componentUrl(QStringLiteral("Units.qml")), uri,
>>> 2, 0, "Units")
>>>
>>> from kirigamiplugin.cpp.
>>>
>>> Obviously, our code fails somewhere later, as we use the units
>>> extensively. Looked trough the git history of Kirigami and do not
>>> see anything obvious, so I am still not 100% sure that it is
>>> Kirigami, as there is also some relation to Qt 5.9.2.
>>>
>>> So, Marco, do you see any lead here what might be going on? I just
>>> do not understand enough with respect to qmlRegisterType stuff.
>>>
>>>
>>> This tries to register a C++ class into the Javascript engine that
>>> serves Qml, it will fail in runtime if it doesn't finds the Qt plugin
>>> for the type or if the string with the classname in the
>>> qmlRegisterType has a typo.
>>> can you check if your kirigami shared lib is $QT_PLUGIN_PATH ?
>>
>> We're building Kirigami as static library, right? Is something with
>> that broken?
>> See CMakeLists.txt
>
> The function where that one is commented out is
> KirigamiPlugin::registerTypes(). There are at least 20 qml files
> registered as type. Only the Units.qml poses a problem. There is no
> issue with not finding libs (and yes its static:
> add_definitions(-DKIRIGAMI_BUILD_TYPE_STATIC))
Ok, after again multiple hours of searching, trying, bisecting, etc, I
finally made some progress.
I found one commit that is in Qt 5.9.2 (and not in 5.9.1) called "Fix
qml cache invalidation when changing dependent C++ registered QML
singletons"
(commit 98358715930739ca8de172d88c5ce6941c275ff3 in qtdeclarative).
Related to QTBUG-62243.
The rationale of that commit is fully sane to me, but ... I reverted
this one, and my problem of unable to start Subsurface-mobile build with
5.9.2 (on desktop, for now) due to a silent failure of
engine.load("main.qml") is gone, and the mobile-on-desktop app runs
correctly as before.
So, now the big question is ... how to proceed? I still cannot rule out
that the whole issue is a result of some (still unknown) bug in
Subsurface itself, or Kirigami or ... But, building a tiny bug
demonstrator for Qt might be over my skill set :-)
For anyone that might wonder how I found this suspicious commit ... I
found earlier that the Kirigami file Units.qml was involved, and that is
a singleton type object. That made me search for singleton related code
changes in Qt.
--jan
More information about the subsurface
mailing list